Hi Greg, I have added all the R-B for this patch and create a pull request for it. https://github.com/tianocore/edk2/pull/1898
Thanks, Dandan > -----Original Message----- > From: Yeh, GregX <[email protected]> > Sent: Thursday, August 12, 2021 3:22 PM > To: [email protected] > Cc: Wang, Jian J <[email protected]>; Wu, Hao A <[email protected]>; > Bi, Dandan <[email protected]>; Liming Gao <[email protected]> > Subject: [PATCH] MdeModulePkg PCD: Reinstall PCD service PPIS when > memory available > > https://bugzilla.tianocore.org/show_bug.cgi?id=3525 > > After PciSegmentLib using Dynamic PCD for Pcie base address such long delay > found in FSP. The root cause is some of the PCD service PPIs not shadowed > to memory and flash cache may have been disabled in NotifyPhase stage. > Solution is to shadow all PCD service PPIs to memory. > > Signed-off-by: GregX Yeh <[email protected]> > Cc: Jian J Wang <[email protected]> > Cc: Hao A Wu <[email protected]> > Cc: Dandan Bi <[email protected]> > Cc: Liming Gao <[email protected]> > Reviewed-by: Dandan Bi <[email protected]> > --- > MdeModulePkg/Universal/PCD/Pei/Pcd.c | 71 > +++++++++++++++++++++++++++- > 1 file changed, 70 insertions(+), 1 deletion(-) > > diff --git a/MdeModulePkg/Universal/PCD/Pei/Pcd.c > b/MdeModulePkg/Universal/PCD/Pei/Pcd.c > index 9c6346924f..f31e0be35f 100644 > --- a/MdeModulePkg/Universal/PCD/Pei/Pcd.c > +++ b/MdeModulePkg/Universal/PCD/Pei/Pcd.c > @@ -1,7 +1,7 @@ > /** @file All Pcd Ppi services are implemented here. -Copyright (c) 2006 - > 2018, Intel Corporation. All rights reserved.<BR>+Copyright (c) 2006 - 2021, > Intel Corporation. All rights reserved.<BR> (C) Copyright 2016 Hewlett > Packard Enterprise Development LP<BR> SPDX-License-Identifier: BSD-2- > Clause-Patent @@ -339,6 +339,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;++ OldPpiList = NULL;+ > Status = > PeiServicesLocatePpi (+ &gPcdPpiGuid,+ 0,+ > &OldPpiList,+ &Ppi+ );+ ASSERT_EFI_ERROR > (Status);++ if > (OldPpiList != NULL) {+ Status = PeiServicesReInstallPpi (OldPpiList, > &mPpiList[0]);+ ASSERT_EFI_ERROR (Status);+ }++ OldPpiList2 = > NULL;+ > Status = PeiServicesLocatePpi (+ &gGetPcdInfoPpiGuid,+ > 0,+ > &OldPpiList2,+ &Ppi2+ );+ ASSERT_EFI_ERROR > (Status);++ if > (OldPpiList2 != NULL) {+ Status = PeiServicesReInstallPpi (OldPpiList2, > &mPpiList2[0]);+ ASSERT_EFI_ERROR (Status);+ }++ OldPpiList = > NULL;+ > Status = PeiServicesLocatePpi (+ &gEfiPeiPcdPpiGuid,+ > 0,+ > &OldPpiList,+ &Ppi+ );+ ASSERT_EFI_ERROR > (Status);++ if > (OldPpiList != NULL) {+ Status = PeiServicesReInstallPpi (OldPpiList, > &mPpiList[1]);+ ASSERT_EFI_ERROR (Status);+ }++ OldPpiList2 = > NULL;+ > Status = PeiServicesLocatePpi (+ &gEfiGetPcdInfoPpiGuid,+ > 0,+ > &OldPpiList2,+ &Ppi2+ );+ ASSERT_EFI_ERROR > (Status);++ if > (OldPpiList2 != NULL) {+ Status = PeiServicesReInstallPpi (OldPpiList2, > &mPpiList2[1]);+ ASSERT_EFI_ERROR (Status);+ }++ return Status;+ > }+ > BuildPcdDatabase (FileHandle); //-- > 2.32.0.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#79222): https://edk2.groups.io/g/devel/message/79222 Mute This Topic: https://groups.io/mt/84835142/21656 Group Owner: [email protected] Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
