#include <Guid/TcgEventHob.h>\r
#include <Guid/MeasuredFvHob.h>\r
#include <Guid/TpmInstance.h>\r
+#include <Guid/MigratedFvInfo.h>\r
\r
#include <Library/DebugLib.h>\r
#include <Library/BaseMemoryLib.h>\r
EDKII_PEI_FIRMWARE_VOLUME_INFO_PREHASHED_FV_PPI *PrehashedFvPpi;\r
HASH_INFO *PreHashInfo;\r
UINT32 HashAlgoMask;\r
+ EFI_PHYSICAL_ADDRESS FvOrgBase;\r
+ EFI_PHYSICAL_ADDRESS FvDataBase;\r
+ EFI_PEI_HOB_POINTERS Hob;\r
+ EDKII_MIGRATED_FV_INFO *MigratedFvInfo;\r
\r
//\r
// Check Excluded FV list\r
Instance++;\r
} while (!EFI_ERROR(Status));\r
\r
+ //\r
+ // Search the matched migration FV info\r
+ //\r
+ FvOrgBase = FvBase;\r
+ FvDataBase = FvBase;\r
+ Hob.Raw = GetFirstGuidHob (&gEdkiiMigratedFvInfoGuid);\r
+ while (Hob.Raw != NULL) {\r
+ MigratedFvInfo = GET_GUID_HOB_DATA (Hob);\r
+ if ((MigratedFvInfo->FvNewBase == (UINT32) FvBase) && (MigratedFvInfo->FvLength == (UINT32) FvLength)) {\r
+ //\r
+ // Found the migrated FV info\r
+ //\r
+ FvOrgBase = (EFI_PHYSICAL_ADDRESS) (UINTN) MigratedFvInfo->FvOrgBase;\r
+ FvDataBase = (EFI_PHYSICAL_ADDRESS) (UINTN) MigratedFvInfo->FvDataBase;\r
+ break;\r
+ }\r
+ Hob.Raw = GET_NEXT_HOB (Hob);\r
+ Hob.Raw = GetNextGuidHob (&gEdkiiMigratedFvInfoGuid, Hob.Raw);\r
+ }\r
+\r
//\r
// Init the log event for FV measurement\r
//\r
if (FvName != NULL) {\r
AsciiSPrint ((CHAR8 *)FvBlob2.BlobDescription, sizeof(FvBlob2.BlobDescription), "Fv(%g)", FvName);\r
}\r
- FvBlob2.BlobBase = FvBase;\r
+ FvBlob2.BlobBase = FvOrgBase;\r
FvBlob2.BlobLength = FvLength;\r
TcgEventHdr.PCRIndex = 0;\r
TcgEventHdr.EventType = EV_EFI_PLATFORM_FIRMWARE_BLOB2;\r
TcgEventHdr.EventSize = sizeof (FvBlob2);\r
EventData = &FvBlob2;\r
} else {\r
- FvBlob.BlobBase = FvBase;\r
+ FvBlob.BlobBase = FvOrgBase;\r
FvBlob.BlobLength = FvLength;\r
TcgEventHdr.PCRIndex = 0;\r
TcgEventHdr.EventType = EV_EFI_PLATFORM_FIRMWARE_BLOB;\r
Status = HashLogExtendEvent (\r
&mEdkiiTcgPpi,\r
0,\r
- (UINT8*) (UINTN) FvBase, // HashData\r
+ (UINT8*) (UINTN) FvDataBase, // HashData\r
(UINTN) FvLength, // HashDataLen\r
&TcgEventHdr, // EventHdr\r
EventData // EventData\r