mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-23 05:34:31 +02:00
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:
parent
2d3974a351
commit
a87f5fdb3d
@ -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);
|
||||||
);
|
);
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -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
|
||||||
|
@ -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]);
|
||||||
|
@ -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
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user