diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c b/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c index 25d058c5b9..b279f5dfcc 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c @@ -1953,6 +1953,16 @@ InitializeMpSyncData ( // Enable BSP election by setting BspIndex to -1 // mSmmMpSyncData->BspIndex = (UINT32)-1; + } else { + // + // Use NonSMM BSP as SMM BSP + // + for (CpuIndex = 0; CpuIndex < gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus; CpuIndex++) { + if (GetApicId () == gSmmCpuPrivate->ProcessorInfo[CpuIndex].ProcessorId) { + mSmmMpSyncData->BspIndex = (UINT32)CpuIndex; + break; + } + } } mSmmMpSyncData->EffectiveSyncMode = mCpuSmmSyncMode;