Reviewed-by: Jian J Wang <jian.j.w...@intel.com> Regards, Jian
> -----Original Message----- > From: Yeh, GregX <gregx....@intel.com> > Sent: Monday, August 09, 2021 10:28 AM > To: devel@edk2.groups.io > Cc: Wang, Jian J <jian.j.w...@intel.com>; Wu, Hao A <hao.a...@intel.com>; > Bi, Dandan <dandan...@intel.com>; Liming Gao <gaolim...@byosoft.com.cn> > Subject: [PATCH] MdeModulePkg PCD: FSP NotifyPhase APIs caused 100ms delay > > 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 <gregx....@intel.com> > Cc: Jian J Wang <jian.j.w...@intel.com> > Cc: Hao A Wu <hao.a...@intel.com> > Cc: Dandan Bi <dandan...@intel.com> > Cc: Liming Gao <gaolim...@byosoft.com.cn> > --- > 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 (#79091): https://edk2.groups.io/g/devel/message/79091 Mute This Topic: https://groups.io/mt/84760812/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-