\r
#include "PeilessStartupInternal.h"\r
\r
-#pragma pack(1)\r
-\r
-#define HANDOFF_TABLE_DESC "TdxTable"\r
-typedef struct {\r
- UINT8 TableDescriptionSize;\r
- UINT8 TableDescription[sizeof (HANDOFF_TABLE_DESC)];\r
- UINT64 NumberOfTables;\r
- EFI_CONFIGURATION_TABLE TableEntry[1];\r
-} TDX_HANDOFF_TABLE_POINTERS2;\r
-\r
-#pragma pack()\r
-\r
#define FV_HANDOFF_TABLE_DESC "Fv(XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)"\r
typedef PLATFORM_FIRMWARE_BLOB2_STRUCT CFV_HANDOFF_TABLE_POINTERS2;\r
\r
-/**\r
- Measure the Hoblist passed from the VMM.\r
-\r
- @param[in] VmmHobList The Hoblist pass the firmware\r
-\r
- @retval EFI_SUCCESS Fv image is measured successfully\r
- or it has been already measured.\r
- @retval Others Other errors as indicated\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-MeasureHobList (\r
- IN CONST VOID *VmmHobList\r
- )\r
-{\r
- EFI_PEI_HOB_POINTERS Hob;\r
- TDX_HANDOFF_TABLE_POINTERS2 HandoffTables;\r
- EFI_STATUS Status;\r
-\r
- if (!TdIsEnabled ()) {\r
- ASSERT (FALSE);\r
- return EFI_UNSUPPORTED;\r
- }\r
-\r
- Hob.Raw = (UINT8 *)VmmHobList;\r
-\r
- //\r
- // Parse the HOB list until end of list.\r
- //\r
- while (!END_OF_HOB_LIST (Hob)) {\r
- Hob.Raw = GET_NEXT_HOB (Hob);\r
- }\r
-\r
- //\r
- // Init the log event for HOB measurement\r
- //\r
-\r
- HandoffTables.TableDescriptionSize = sizeof (HandoffTables.TableDescription);\r
- CopyMem (HandoffTables.TableDescription, HANDOFF_TABLE_DESC, sizeof (HandoffTables.TableDescription));\r
- HandoffTables.NumberOfTables = 1;\r
- CopyGuid (&(HandoffTables.TableEntry[0].VendorGuid), &gUefiOvmfPkgTokenSpaceGuid);\r
- HandoffTables.TableEntry[0].VendorTable = (VOID *)VmmHobList;\r
-\r
- Status = TpmMeasureAndLogData (\r
- 1, // PCRIndex\r
- EV_EFI_HANDOFF_TABLES2, // EventType\r
- (VOID *)&HandoffTables, // EventData\r
- sizeof (HandoffTables), // EventSize\r
- (UINT8 *)(UINTN)VmmHobList, // HashData\r
- (UINTN)((UINT8 *)Hob.Raw - (UINT8 *)VmmHobList) // HashDataLen\r
- );\r
-\r
- if (EFI_ERROR (Status)) {\r
- ASSERT (FALSE);\r
- }\r
-\r
- return Status;\r
-}\r
-\r
/**\r
Get the FvName from the FV header.\r
\r