@param[in, out] Table The TPM item in ACPI table.\r
@param[in] IrqBuffer Input new IRQ buffer.\r
@param[in] IrqBuffserSize Input new IRQ buffer size.\r
+ @param[out] IsShortFormPkgLength If _PRS returns Short length Package(ACPI spec 20.2.4).\r
\r
@return patch status.\r
\r
**/\r
EFI_STATUS\r
UpdatePossibleResource (\r
- EFI_ACPI_DESCRIPTION_HEADER *Table,\r
- UINT32 *IrqBuffer,\r
- UINT32 IrqBuffserSize\r
+ IN EFI_ACPI_DESCRIPTION_HEADER *Table,\r
+ IN UINT32 *IrqBuffer,\r
+ IN UINT32 IrqBuffserSize,\r
+ OUT BOOLEAN *IsShortFormPkgLength\r
)\r
{\r
UINT8 *DataPtr;\r
//\r
// Notify _PRS to report short formed ResourceTemplate\r
//\r
- mTcgNvs->IsShortFormPkgLength = TRUE;\r
+ *IsShortFormPkgLength = TRUE;\r
\r
break;\r
}\r
//\r
// Notify _PRS to report long formed ResourceTemplate\r
//\r
- mTcgNvs->IsShortFormPkgLength = FALSE;\r
+ *IsShortFormPkgLength = FALSE;\r
break;\r
}\r
}\r
UINTN TableSize;\r
UINT32 *PossibleIrqNumBuf;\r
UINT32 PossibleIrqNumBufSize;\r
+ BOOLEAN IsShortFormPkgLength;\r
+\r
+ IsShortFormPkgLength = FALSE;\r
\r
Status = GetSectionFromFv (\r
&gEfiCallerIdGuid,\r
PossibleIrqNumBufSize = (UINT32)PcdGetSize(PcdTpm2PossibleIrqNumBuf);\r
\r
if (PossibleIrqNumBufSize <= MAX_PRS_INT_BUF_SIZE && (PossibleIrqNumBufSize % sizeof(UINT32)) == 0) {\r
- Status = UpdatePossibleResource(Table, PossibleIrqNumBuf, PossibleIrqNumBufSize);\r
+ Status = UpdatePossibleResource(Table, PossibleIrqNumBuf, PossibleIrqNumBufSize, &IsShortFormPkgLength);\r
DEBUG ((\r
DEBUG_INFO,\r
"UpdatePossibleResource status - %x. TPM2 service may not ready in OS.\n",\r
mTcgNvs = AssignOpRegion (Table, SIGNATURE_32 ('T', 'N', 'V', 'S'), (UINT16) sizeof (TCG_NVS));\r
ASSERT (mTcgNvs != NULL);\r
mTcgNvs->TpmIrqNum = PcdGet32(PcdTpm2CurrentIrqNum);\r
- mTcgNvs->IsShortFormPkgLength = FALSE;\r
+ mTcgNvs->IsShortFormPkgLength = IsShortFormPkgLength;\r
\r
//\r
// Publish the TPM ACPI table. Table is re-checksumed.\r