PEIM shadowing is optional, but the PCD PEIM does so explicitly, seemingly without a functional need. So make this behavior dependent on the existing PCD, which is generally (and by default) set to TRUE, whereas some systems (such as ARM virtual machines) may prefer to disable shadowing.
Signed-off-by: Ard Biesheuvel <a...@kernel.org> --- MdeModulePkg/Universal/PCD/Pei/Pcd.c | 112 ++++++++++---------- MdeModulePkg/Universal/PCD/Pei/Pcd.inf | 1 + 2 files changed, 58 insertions(+), 55 deletions(-) diff --git a/MdeModulePkg/Universal/PCD/Pei/Pcd.c b/MdeModulePkg/Universal/PCD/Pei/Pcd.c index c51ac96a32e3..632254f1c5fa 100644 --- a/MdeModulePkg/Universal/PCD/Pei/Pcd.c +++ b/MdeModulePkg/Universal/PCD/Pei/Pcd.c @@ -346,73 +346,75 @@ PcdPeimInit ( { EFI_STATUS Status; - Status = PeiServicesRegisterForShadow (FileHandle); - if (Status == EFI_ALREADY_STARTED) { - // - // This is now starting in memory, the second time starting. - // - EFI_PEI_PPI_DESCRIPTOR *OldPpiList; - EFI_PEI_PPI_DESCRIPTOR *OldPpiList2; - VOID *Ppi; - VOID *Ppi2; + if (PcdGetBool (PcdShadowPeimOnBoot)) { + Status = PeiServicesRegisterForShadow (FileHandle); + if (Status == EFI_ALREADY_STARTED) { + // + // This is now starting in memory, the second time starting. + // + EFI_PEI_PPI_DESCRIPTOR *OldPpiList; + EFI_PEI_PPI_DESCRIPTOR *OldPpiList2; + VOID *Ppi; + VOID *Ppi2; - OldPpiList = NULL; - Status = PeiServicesLocatePpi ( - &gPcdPpiGuid, - 0, - &OldPpiList, - &Ppi - ); - ASSERT_EFI_ERROR (Status); - - if (OldPpiList != NULL) { - Status = PeiServicesReInstallPpi (OldPpiList, &mPpiList[0]); + OldPpiList = NULL; + Status = PeiServicesLocatePpi ( + &gPcdPpiGuid, + 0, + &OldPpiList, + &Ppi + ); ASSERT_EFI_ERROR (Status); - } - OldPpiList2 = NULL; - Status = PeiServicesLocatePpi ( - &gGetPcdInfoPpiGuid, - 0, - &OldPpiList2, - &Ppi2 - ); - ASSERT_EFI_ERROR (Status); + if (OldPpiList != NULL) { + Status = PeiServicesReInstallPpi (OldPpiList, &mPpiList[0]); + ASSERT_EFI_ERROR (Status); + } - if (OldPpiList2 != NULL) { - Status = PeiServicesReInstallPpi (OldPpiList2, &mPpiList2[0]); + OldPpiList2 = NULL; + Status = PeiServicesLocatePpi ( + &gGetPcdInfoPpiGuid, + 0, + &OldPpiList2, + &Ppi2 + ); ASSERT_EFI_ERROR (Status); - } - OldPpiList = NULL; - Status = PeiServicesLocatePpi ( - &gEfiPeiPcdPpiGuid, - 0, - &OldPpiList, - &Ppi - ); - ASSERT_EFI_ERROR (Status); + if (OldPpiList2 != NULL) { + Status = PeiServicesReInstallPpi (OldPpiList2, &mPpiList2[0]); + ASSERT_EFI_ERROR (Status); + } - if (OldPpiList != NULL) { - Status = PeiServicesReInstallPpi (OldPpiList, &mPpiList[1]); + OldPpiList = NULL; + Status = PeiServicesLocatePpi ( + &gEfiPeiPcdPpiGuid, + 0, + &OldPpiList, + &Ppi + ); ASSERT_EFI_ERROR (Status); - } - OldPpiList2 = NULL; - Status = PeiServicesLocatePpi ( - &gEfiGetPcdInfoPpiGuid, - 0, - &OldPpiList2, - &Ppi2 - ); - ASSERT_EFI_ERROR (Status); + if (OldPpiList != NULL) { + Status = PeiServicesReInstallPpi (OldPpiList, &mPpiList[1]); + ASSERT_EFI_ERROR (Status); + } - if (OldPpiList2 != NULL) { - Status = PeiServicesReInstallPpi (OldPpiList2, &mPpiList2[1]); + OldPpiList2 = NULL; + Status = PeiServicesLocatePpi ( + &gEfiGetPcdInfoPpiGuid, + 0, + &OldPpiList2, + &Ppi2 + ); ASSERT_EFI_ERROR (Status); - } - return Status; + if (OldPpiList2 != NULL) { + Status = PeiServicesReInstallPpi (OldPpiList2, &mPpiList2[1]); + ASSERT_EFI_ERROR (Status); + } + + return Status; + } } BuildPcdDatabase (FileHandle); diff --git a/MdeModulePkg/Universal/PCD/Pei/Pcd.inf b/MdeModulePkg/Universal/PCD/Pei/Pcd.inf index 7152a7d53b7d..a820ace70ec2 100644 --- a/MdeModulePkg/Universal/PCD/Pei/Pcd.inf +++ b/MdeModulePkg/Universal/PCD/Pei/Pcd.inf @@ -343,6 +343,7 @@ [Pcd] gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPcdCallBackNumberPerPcdEntry ## SOMETIMES_CONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdNvStoreDefaultValueBuffer ## SOMETIMES_CONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdSetNvStoreDefaultId ## CONSUMES + gEfiMdeModulePkgTokenSpaceGuid.PcdShadowPeimOnBoot ## CONSUMES [Depex] TRUE -- 2.39.2 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#101126): https://edk2.groups.io/g/devel/message/101126 Mute This Topic: https://groups.io/mt/97586027/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-