diff options
author | Jeff Fan <jeff.fan@intel.com> | 2016-07-02 11:55:58 +0800 |
---|---|---|
committer | Michael Kinney <michael.d.kinney@intel.com> | 2016-07-14 08:57:59 -0700 |
commit | a46a4c90d33dc7397b0f6f187008cbc385a1e051 (patch) | |
tree | 23bc7969ff4f72effc32d7437ed9f86710f34a84 /UefiCpuPkg | |
parent | 70a7493d65ddd302cc791013a34f264217a6e475 (diff) | |
download | edk2-a46a4c90d33dc7397b0f6f187008cbc385a1e051.tar.gz edk2-a46a4c90d33dc7397b0f6f187008cbc385a1e051.tar.bz2 edk2-a46a4c90d33dc7397b0f6f187008cbc385a1e051.zip |
UefiCpuPkg/PiSmmCpuDxeSmm: Check XD/BTS features in SMM relocation
CheckProcessorFeature() invokes MpService->StartupAllAps() to detect
XD/BTS features on normal boot path. It's not necessary and may cause
performance impact, because INIT-SIPI-SIPI must be sent to APs if APs
are in hlt-loop mode. XD/BTS feature detection is moved to
SmmInitHandler() in SMM relocation during normal boot path.
Cc: Michael Kinney <michael.d.kinney@intel.com>
Cc: Feng Tian <feng.tian@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jeff Fan <jeff.fan@intel.com>
Reviewed-by: Feng Tian <feng.tian@intel.com>
Reviewed-by: Michael Kinney <michael.d.kinney@intel.com>
Regression-tested-by: Laszlo Ersek <lersek@redhat.com>
Diffstat (limited to 'UefiCpuPkg')
-rw-r--r-- | UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c | 12 | ||||
-rw-r--r-- | UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c | 4 |
2 files changed, 9 insertions, 7 deletions
diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c index db36a0ad3c..50059e4241 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c @@ -355,6 +355,13 @@ SmmInitHandler ( &mCpuHotPlugData
);
+ if (!mSmmS3Flag) {
+ //
+ // Check XD and BTS features on each processor on normal boot
+ //
+ CheckFeatureSupported (NULL);
+ }
+
if (mIsBsp) {
//
// BSP rebase is already done above.
@@ -1192,11 +1199,6 @@ PiCpuSmmEntry ( }
//
- // Check XD and BTS features
- //
- CheckProcessorFeature ();
-
- //
// Initialize SMM Profile feature
//
InitSmmProfile (Cr3);
diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c index f9cea55d9d..d315194dfc 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c @@ -32,7 +32,7 @@ UINTN mMsrDsAreaSize = SMM_PROFILE_DTS_SIZE; //
// The flag indicates if execute-disable is supported by processor.
//
-BOOLEAN mXdSupported = FALSE;
+BOOLEAN mXdSupported = TRUE;
//
// The flag indicates if execute-disable is enabled on processor.
@@ -42,7 +42,7 @@ BOOLEAN mXdEnabled = FALSE; //
// The flag indicates if BTS is supported by processor.
//
-BOOLEAN mBtsSupported = FALSE;
+BOOLEAN mBtsSupported = TRUE;
//
// The flag indicates if SMM profile starts to record data.
|