[edk2-devel] [PATCH] UefiCpuPkg/SmmCpu: Add PcdSmmApPerfLogEnable control AP perf-logging

Ni, Ray ray.ni at intel.com
Wed Jun 7 08:39:59 UTC 2023


This patch is based on patch series: https://edk2.groups.io/g/devel/message/105492.
I don't want to send a V3 for just including the additional patch.

> -----Original Message-----
> From: devel at edk2.groups.io <devel at edk2.groups.io> On Behalf Of Ni, Ray
> Sent: Wednesday, June 7, 2023 4:38 PM
> To: devel at edk2.groups.io
> Cc: Dong, Eric <eric.dong at intel.com>; Kumar, Rahul R
> <rahul.r.kumar at intel.com>; Gerd Hoffmann <kraxel at redhat.com>
> Subject: [edk2-devel] [PATCH] UefiCpuPkg/SmmCpu: Add
> PcdSmmApPerfLogEnable control AP perf-logging
> 
> When a platform has lots of CPU cores/threads, perf-logging on every
> AP produces lots of records. When this multiplies with number of SMIs
> during post, the records are even more.
> 
> So, this patch adds a new PCD PcdSmmApPerfLogEnable (default TRUE)
> to allow platform to turn off perf-logging on APs.
> 
> Cc: Eric Dong <eric.dong at intel.com>
> Cc: Rahul Kumar <rahul1.kumar at intel.com>
> Cc: Gerd Hoffmann <kraxel at redhat.com>
> ---
>  UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c        |  2 +-
>  UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf |  1 +
>  UefiCpuPkg/PiSmmCpuDxeSmm/SmmMpPerf.c        | 11 ++++++++++-
>  UefiCpuPkg/PiSmmCpuDxeSmm/SmmMpPerf.h        |  4 +++-
>  UefiCpuPkg/UefiCpuPkg.dec                    |  6 ++++++
>  5 files changed, 21 insertions(+), 3 deletions(-)
> 
> diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c
> b/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c
> index bcd90f0671..8364b73242 100644
> --- a/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c
> +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c
> @@ -784,7 +784,7 @@ BSPHandler (
>    // Any SMM MP performance logging after this point will be migrated in next
> SMI.
> 
>    //
> 
>    PERF_CODE (
> 
> -    MigrateMpPerf (gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus);
> 
> +    MigrateMpPerf (gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus,
> CpuIndex);
> 
>      );
> 
> 
> 
>    //
> 
> diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf
> b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf
> index 4864532c35..d864ae9101 100644
> --- a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf
> +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf
> @@ -128,6 +128,7 @@
>    gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmProfileRingBuffer             ##
> CONSUMES
> 
>    gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmFeatureControlMsrLock         ##
> CONSUMES
> 
>    gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode         ##
> CONSUMES
> 
> +  gUefiCpuPkgTokenSpaceGuid.PcdSmmApPerfLogEnable                  ##
> CONSUMES
> 
> 
> 
>  [Pcd]
> 
>    gUefiCpuPkgTokenSpaceGuid.PcdCpuMaxLogicalProcessorNumber        ##
> SOMETIMES_CONSUMES
> 
> diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmMpPerf.c
> b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmMpPerf.c
> index c13556af46..92c67f31bf 100644
> --- a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmMpPerf.c
> +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmMpPerf.c
> @@ -39,16 +39,25 @@ InitializeMpPerf (
>    Migrate MP performance data to standardized performance database.
> 
> 
> 
>    @param NumberofCpus    Number of processors in the platform.
> 
> +  @param BspIndex        The index of the BSP.
> 
>  **/
> 
>  VOID
> 
>  MigrateMpPerf (
> 
> -  UINTN  NumberofCpus
> 
> +  UINTN  NumberofCpus,
> 
> +  UINTN  BspIndex
> 
>    )
> 
>  {
> 
>    UINTN  CpuIndex;
> 
>    UINTN  MpProcecureId;
> 
> 
> 
>    for (CpuIndex = 0; CpuIndex < NumberofCpus; CpuIndex++) {
> 
> +    if ((CpuIndex != BspIndex) && !FeaturePcdGet (PcdSmmApPerfLogEnable)) {
> 
> +      //
> 
> +      // Skip migrating AP performance data if AP perf-logging is disabled.
> 
> +      //
> 
> +      continue;
> 
> +    }
> 
> +
> 
>      for (MpProcecureId = 0; MpProcecureId < SMM_MP_PERF_PROCEDURE_ID
> (SmmMpProcedureMax); MpProcecureId++) {
> 
>        if (mSmmMpProcedurePerformance[CpuIndex].Begin[MpProcecureId] != 0) {
> 
>          PERF_START (NULL, gSmmMpPerfProcedureName[MpProcecureId], NULL,
> mSmmMpProcedurePerformance[CpuIndex].Begin[MpProcecureId]);
> 
> diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmMpPerf.h
> b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmMpPerf.h
> index b148a99e86..5ad1734cc8 100644
> --- a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmMpPerf.h
> +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmMpPerf.h
> @@ -44,10 +44,12 @@ InitializeMpPerf (
>    Migrate MP performance data to standardized performance database.
> 
> 
> 
>    @param NumberofCpus    Number of processors in the platform.
> 
> +  @param BspIndex        The index of the BSP.
> 
>  **/
> 
>  VOID
> 
>  MigrateMpPerf (
> 
> -  UINTN  NumberofCpus
> 
> +  UINTN  NumberofCpus,
> 
> +  UINTN  BspIndex
> 
>    );
> 
> 
> 
>  /**
> 
> diff --git a/UefiCpuPkg/UefiCpuPkg.dec b/UefiCpuPkg/UefiCpuPkg.dec
> index d31c3b127c..5b0ac64e33 100644
> --- a/UefiCpuPkg/UefiCpuPkg.dec
> +++ b/UefiCpuPkg/UefiCpuPkg.dec
> @@ -175,6 +175,12 @@
>    # @Prompt Support SmmFeatureControl.
> 
> 
> gUefiCpuPkgTokenSpaceGuid.PcdSmmFeatureControlEnable|TRUE|BOOLEAN|0x
> 32132110
> 
> 
> 
> +  ## Indicates if SMM perf logging in APs will be enabled.<BR><BR>
> 
> +  #   TRUE  - SMM perf logging in APs will be enabled.<BR>
> 
> +  #   FALSE - SMM perf logging in APs will not be enabled.<BR>
> 
> +  # @Prompt Enable SMM perf logging in APs.
> 
> +
> gUefiCpuPkgTokenSpaceGuid.PcdSmmApPerfLogEnable|TRUE|BOOLEAN|0x321
> 32114
> 
> +
> 
>  [PcdsFixedAtBuild]
> 
>    ## List of exception vectors which need switching stack.
> 
>    #  This PCD will only take into effect if PcdCpuStackGuard is enabled.
> 
> --
> 2.39.1.windows.1
> 
> 
> 
> -=-=-=-=-=-=
> Groups.io Links: You receive all messages sent to this group.
> View/Reply Online (#105852): https://edk2.groups.io/g/devel/message/105852
> Mute This Topic: https://groups.io/mt/99380509/1712937
> Group Owner: devel+owner at edk2.groups.io
> Unsubscribe:
> https://edk2.groups.io/g/devel/leave/3759105/1712937/893644498/xyzzy
> [ray.ni at intel.com]
> -=-=-=-=-=-=
> 



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#105853): https://edk2.groups.io/g/devel/message/105853
Mute This Topic: https://groups.io/mt/99380509/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/leave/3943202/1813853/130120423/xyzzy [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-




More information about the edk2-devel-archive mailing list