diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c b/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c index 80378a3faf..3e8b0936aa 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c @@ -412,15 +412,9 @@ BSPHandler ( AcquireSpinLockOrFail (&mSmmMpSyncData->CpuData[CpuIndex].Busy); // - // Restore SMM Configuration in S3 boot path. + // Perform the pre tasks // - if (mRestoreSmmConfigurationInS3) { - // - // Configure SMM Code Access Check feature if available. - // - ConfigSmmCodeAccessCheck (); - mRestoreSmmConfigurationInS3 = FALSE; - } + PerformPreTasks (); // // Invoke SMM Foundation EntryPoint with the processor information context. diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c index 532ac0974b..2489848c79 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c @@ -1437,3 +1437,25 @@ PerformRemainingTasks ( mSmmReadyToLock = FALSE; } } + +/** + Perform the pre tasks. + +**/ +VOID +PerformPreTasks ( + VOID + ) +{ + // + // Restore SMM Configuration in S3 boot path. + // + if (mRestoreSmmConfigurationInS3) { + // + // Configure SMM Code Access Check feature if available. + // + ConfigSmmCodeAccessCheck (); + + mRestoreSmmConfigurationInS3 = FALSE; + } +} diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h index 106e67465c..66d85d80e1 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h @@ -586,6 +586,15 @@ PerformRemainingTasks ( VOID ); +/** + Perform the pre tasks. + +**/ +VOID +PerformPreTasks ( + VOID + ); + /** Initialize MSR spin lock by MSR index.