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

In Tcg driver, when MigratedFvInfo hob is detected, existing code logic
is assuming FV raw data is already copied, and raw data base address is
also recorded. Due to the new PeiCore change, the platform can publish
hob to indicate raw data need be copied or not along with FV migration.

Two cases need be considered to skip copy for boot performance: The first
case is FV is not expected to be measured in post-mem phase, we should
use MeasurementExcludedPpiGuid to skip measurement. The second case is
FV raw data has no need to do rebase operation after migration, then
measurement should calculate hash directly from FV base address.

Cc: Liming Gao <gaolim...@byosoft.com.cn>
Cc: Rahul Kumar <rahul1.ku...@intel.com>
Cc: Jian J Wang <jian.j.w...@intel.com>
Signed-off-by: Fan Wang <fan.w...@intel.com>
---
 SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c | 7 +++++--
 SecurityPkg/Tcg/TcgPei/TcgPei.c   | 7 +++++--
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c 
b/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c
index 1caaa4e319bc..daaf49e644b2 100644
--- a/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c
+++ b/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c
@@ -726,8 +726,11 @@ MeasureFvImage (
       //
       // Found the migrated FV info
       //
-      FvOrgBase  = (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvOrgBase;
-      FvDataBase = (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvDataBase;
+      FvOrgBase = (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvOrgBase;
+      if (MigratedFvInfo->FvDataBase != 0) {
+        FvDataBase = (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvDataBase;
+      }
+
       break;
     }
 
diff --git a/SecurityPkg/Tcg/TcgPei/TcgPei.c b/SecurityPkg/Tcg/TcgPei/TcgPei.c
index 5aa80511aa81..d35c2ad0bc55 100644
--- a/SecurityPkg/Tcg/TcgPei/TcgPei.c
+++ b/SecurityPkg/Tcg/TcgPei/TcgPei.c
@@ -463,8 +463,11 @@ MeasureFvImage (
       //
       // Found the migrated FV info
       //
-      FvOrgBase  = (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvOrgBase;
-      FvDataBase = (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvDataBase;
+      FvOrgBase = (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvOrgBase;
+      if (MigratedFvInfo->FvDataBase != 0) {
+        FvDataBase = (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvDataBase;
+      }
+
       break;
     }
 
-- 
2.29.2.windows.2



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#112532): https://edk2.groups.io/g/devel/message/112532
Mute This Topic: https://groups.io/mt/103169824/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to