REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2439

Report EV_EFI_HANDOFF_TABLES2 if the platform chooses PFP >= 105.

Cc: Jian J Wang <jian.j.w...@intel.com>
Cc: Hao A Wu <hao.a...@intel.com>
Cc: Dandan Bi <dandan...@intel.com>
Cc: Star Zeng <star.z...@intel.com>
Signed-off-by: Jiewen Yao <jiewen....@intel.com>
---
 .../SmbiosMeasurementDxe.c                    | 35 +++++++++++++++++--
 .../SmbiosMeasurementDxe.inf                  |  3 ++
 2 files changed, 35 insertions(+), 3 deletions(-)

diff --git a/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.c 
b/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.c
index 5ec2aca095..a5839c09f1 100644
--- a/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.c
+++ b/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.c
@@ -108,6 +108,18 @@ SMBIOS_FILTER_STRUCT  
mSmbiosFilterStandardTableBlackList[] = {
 EFI_SMBIOS_PROTOCOL *mSmbios;
 UINTN               mMaxLen;
 
+#pragma pack (1)
+
+#define SMBIOS_HANDOFF_TABLE_DESC  "SmbiosTable"
+typedef struct {
+  UINT8                             TableDescriptionSize;
+  UINT8                             
TableDescription[sizeof(SMBIOS_HANDOFF_TABLE_DESC)];
+  UINT64                            NumberOfTables;
+  EFI_CONFIGURATION_TABLE           TableEntry[1];
+} SMBIOS_HANDOFF_TABLE_POINTERS2;
+
+#pragma pack ()
+
 /**
 
   This function dump raw data.
@@ -460,6 +472,10 @@ MeasureSmbiosTable (
 {
   EFI_STATUS                        Status;
   EFI_HANDOFF_TABLE_POINTERS        HandoffTables;
+  SMBIOS_HANDOFF_TABLE_POINTERS2    SmbiosHandoffTables2;
+  UINT32                            EventType;
+  VOID                              *EventLog;
+  UINT32                            EventLogSize;
   SMBIOS_TABLE_ENTRY_POINT          *SmbiosTable;
   SMBIOS_TABLE_3_0_ENTRY_POINT      *Smbios3Table;
   VOID                              *SmbiosTableAddress;
@@ -569,11 +585,24 @@ MeasureSmbiosTable (
       CopyGuid (&(HandoffTables.TableEntry[0].VendorGuid), 
&gEfiSmbiosTableGuid);
       HandoffTables.TableEntry[0].VendorTable = SmbiosTable;
     }
+    EventType = EV_EFI_HANDOFF_TABLES;
+    EventLog = &HandoffTables;
+    EventLogSize = sizeof (HandoffTables);
+
+    if (PcdGet32(PcdTcgPfpMeasurementRevision) >= 
TCG_EfiSpecIDEventStruct_SPEC_ERRATA_TPM2_REV_105) {
+      SmbiosHandoffTables2.TableDescriptionSize = 
sizeof(SmbiosHandoffTables2.TableDescription);
+      CopyMem (SmbiosHandoffTables2.TableDescription, 
SMBIOS_HANDOFF_TABLE_DESC, sizeof(SmbiosHandoffTables2.TableDescription));
+      SmbiosHandoffTables2.NumberOfTables = HandoffTables.NumberOfTables;
+      CopyMem (&(SmbiosHandoffTables2.TableEntry[0]), 
&(HandoffTables.TableEntry[0]), sizeof(SmbiosHandoffTables2.TableEntry[0]));
+      EventType = EV_EFI_HANDOFF_TABLES2;
+      EventLog = &SmbiosHandoffTables2;
+      EventLogSize = sizeof (SmbiosHandoffTables2);
+    }
     Status = TpmMeasureAndLogData (
                1,                       // PCRIndex
-               EV_EFI_HANDOFF_TABLES,   // EventType
-               &HandoffTables,          // EventLog
-               sizeof (HandoffTables),  // LogLen
+               EventType,               // EventType
+               EventLog,                // EventLog
+               EventLogSize,            // LogLen
                TableAddress,            // HashData
                TableLength              // HashDataLen
                );
diff --git 
a/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.inf 
b/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.inf
index a074044c84..81d3655dc7 100644
--- a/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.inf
+++ b/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.inf
@@ -57,6 +57,9 @@
   gEfiSmbiosTableGuid                               ## SOMETIMES_CONSUMES ## 
SystemTable
   gEfiSmbios3TableGuid                              ## SOMETIMES_CONSUMES ## 
SystemTable
 
+[Pcd]
+  gEfiMdeModulePkgTokenSpaceGuid.PcdTcgPfpMeasurementRevision            ## 
CONSUMES
+
 [Depex]
   gEfiSmbiosProtocolGuid
 
-- 
2.19.2.windows.1


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#52628): https://edk2.groups.io/g/devel/message/52628
Mute This Topic: https://groups.io/mt/69344972/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to