summaryrefslogtreecommitdiffstats
path: root/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c
diff options
context:
space:
mode:
Diffstat (limited to 'UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c')
-rw-r--r--UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c36
1 files changed, 20 insertions, 16 deletions
diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c b/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c
index 9aa9908863..e988ce0542 100644
--- a/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c
+++ b/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c
@@ -645,15 +645,17 @@ BSPHandler (
MtrrSetAllMtrrs (&Mtrrs);
}
- //
- // Wait for all APs to complete their pending tasks including MTRR programming if needed.
- //
- SmmCpuSyncWaitForAPs (mSmmMpSyncData->SyncContext, ApCount, CpuIndex);
+ if (SmmCpuFeaturesNeedConfigureMtrrs () || mSmmDebugAgentSupport) {
+ //
+ // Wait for all APs to complete their pending tasks including MTRR programming if needed.
+ //
+ SmmCpuSyncWaitForAPs (mSmmMpSyncData->SyncContext, ApCount, CpuIndex);
- //
- // Signal APs to Reset states/semaphore for this processor
- //
- ReleaseAllAPs ();
+ //
+ // Signal APs to Reset states/semaphore for this processor
+ //
+ ReleaseAllAPs ();
+ }
if (mSmmDebugAgentSupport) {
//
@@ -896,15 +898,17 @@ APHandler (
MtrrSetAllMtrrs (&Mtrrs);
}
- //
- // Notify BSP the readiness of this AP to Reset states/semaphore for this processor
- //
- SmmCpuSyncReleaseBsp (mSmmMpSyncData->SyncContext, CpuIndex, BspIndex);
+ if (SmmCpuFeaturesNeedConfigureMtrrs () || mSmmDebugAgentSupport) {
+ //
+ // Notify BSP the readiness of this AP to Reset states/semaphore for this processor
+ //
+ SmmCpuSyncReleaseBsp (mSmmMpSyncData->SyncContext, CpuIndex, BspIndex);
- //
- // Wait for the signal from BSP to Reset states/semaphore for this processor
- //
- SmmCpuSyncWaitForBsp (mSmmMpSyncData->SyncContext, CpuIndex, BspIndex);
+ //
+ // Wait for the signal from BSP to Reset states/semaphore for this processor
+ //
+ SmmCpuSyncWaitForBsp (mSmmMpSyncData->SyncContext, CpuIndex, BspIndex);
+ }
//
// Reset states/semaphore for this processor