[edk2-devel] [PATCH] MdeModulePkg PCD: FSP NotifyPhase APIs caused 100ms delay

GregX Yeh gregx.yeh at intel.com
Thu Aug 12 07:06:28 UTC 2021


Hi Dandan,

So I need create new patch file with new subject then send-email again?

Thanks,
Greg

-----Original Message-----
From: Bi, Dandan <dandan.bi at intel.com> 
Sent: Thursday, August 12, 2021 11:47 AM
To: Yeh, GregX <gregx.yeh at intel.com>; devel at edk2.groups.io
Cc: Wang, Jian J <jian.j.wang at intel.com>; Wu, Hao A <hao.a.wu at intel.com>; Liming Gao <gaoliming at byosoft.com.cn>
Subject: RE: [PATCH] MdeModulePkg PCD: FSP NotifyPhase APIs caused 100ms delay

Hi Greg,

One minor comment, could we update the subject to reflect what have done in this patch for PCD module before submitting the patch? 
With that addressed Reviewed-by: Dandan Bi <dandan.bi at intel.com>



Thanks,
Dandan

> -----Original Message-----
> From: Yeh, GregX <gregx.yeh at intel.com>
> Sent: Monday, August 9, 2021 10:28 AM
> To: devel at edk2.groups.io
> Cc: Wang, Jian J <jian.j.wang at intel.com>; Wu, Hao A 
> <hao.a.wu at intel.com>; Bi, Dandan <dandan.bi at intel.com>; Liming Gao 
> <gaoliming at 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.yeh at intel.com>
> Cc: Jian J Wang <jian.j.wang at intel.com>
> Cc: Hao A Wu <hao.a.wu at intel.com>
> Cc: Dandan Bi <dandan.bi at intel.com>
> Cc: Liming Gao <gaoliming at 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 (#79148): https://edk2.groups.io/g/devel/message/79148
Mute This Topic: https://groups.io/mt/84760812/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-






More information about the edk2-devel-archive mailing list