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.

Signed-off-by: Ray Ni <ray.ni@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Cc: Rahul Kumar <rahul1.kumar@intel.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Jiaxin Wu <jiaxin.wu@intel.com>
Reviewed-by: Eric Dong <eric.dong@intel.com>
This commit is contained in:
Ray Ni 2023-06-07 16:35:46 +08:00 committed by mergify[bot]
parent 2d3974a351
commit a87f5fdb3d
5 changed files with 21 additions and 3 deletions

View File

@ -784,7 +784,7 @@ BSPHandler (
// Any SMM MP performance logging after this point will be migrated in next SMI. // Any SMM MP performance logging after this point will be migrated in next SMI.
// //
PERF_CODE ( PERF_CODE (
MigrateMpPerf (gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus); MigrateMpPerf (gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus, CpuIndex);
); );
// //

View File

@ -128,6 +128,7 @@
gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmProfileRingBuffer ## CONSUMES gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmProfileRingBuffer ## CONSUMES
gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmFeatureControlMsrLock ## CONSUMES gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmFeatureControlMsrLock ## CONSUMES
gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode ## CONSUMES gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode ## CONSUMES
gUefiCpuPkgTokenSpaceGuid.PcdSmmApPerfLogEnable ## CONSUMES
[Pcd] [Pcd]
gUefiCpuPkgTokenSpaceGuid.PcdCpuMaxLogicalProcessorNumber ## SOMETIMES_CONSUMES gUefiCpuPkgTokenSpaceGuid.PcdCpuMaxLogicalProcessorNumber ## SOMETIMES_CONSUMES

View File

@ -38,16 +38,25 @@ InitializeMpPerf (
Migrate MP performance data to standardized performance database. Migrate MP performance data to standardized performance database.
@param NumberofCpus Number of processors in the platform. @param NumberofCpus Number of processors in the platform.
@param BspIndex The index of the BSP.
**/ **/
VOID VOID
MigrateMpPerf ( MigrateMpPerf (
UINTN NumberofCpus UINTN NumberofCpus,
UINTN BspIndex
) )
{ {
UINTN CpuIndex; UINTN CpuIndex;
UINTN MpProcecureId; UINTN MpProcecureId;
for (CpuIndex = 0; CpuIndex < NumberofCpus; CpuIndex++) { 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++) { for (MpProcecureId = 0; MpProcecureId < SMM_MP_PERF_PROCEDURE_ID (SmmMpProcedureMax); MpProcecureId++) {
if (mSmmMpProcedurePerformance[CpuIndex].Begin[MpProcecureId] != 0) { if (mSmmMpProcedurePerformance[CpuIndex].Begin[MpProcecureId] != 0) {
PERF_START (NULL, gSmmMpPerfProcedureName[MpProcecureId], NULL, mSmmMpProcedurePerformance[CpuIndex].Begin[MpProcecureId]); PERF_START (NULL, gSmmMpPerfProcedureName[MpProcecureId], NULL, mSmmMpProcedurePerformance[CpuIndex].Begin[MpProcecureId]);

View File

@ -48,10 +48,12 @@ InitializeMpPerf (
Migrate MP performance data to standardized performance database. Migrate MP performance data to standardized performance database.
@param NumberofCpus Number of processors in the platform. @param NumberofCpus Number of processors in the platform.
@param BspIndex The index of the BSP.
**/ **/
VOID VOID
MigrateMpPerf ( MigrateMpPerf (
UINTN NumberofCpus UINTN NumberofCpus,
UINTN BspIndex
); );
/** /**

View File

@ -175,6 +175,12 @@
# @Prompt Support SmmFeatureControl. # @Prompt Support SmmFeatureControl.
gUefiCpuPkgTokenSpaceGuid.PcdSmmFeatureControlEnable|TRUE|BOOLEAN|0x32132110 gUefiCpuPkgTokenSpaceGuid.PcdSmmFeatureControlEnable|TRUE|BOOLEAN|0x32132110
## 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|0x32132114
[PcdsFixedAtBuild] [PcdsFixedAtBuild]
## List of exception vectors which need switching stack. ## List of exception vectors which need switching stack.
# This PCD will only take into effect if PcdCpuStackGuard is enabled. # This PCD will only take into effect if PcdCpuStackGuard is enabled.