UefiCpuPkg/PiSmmCpuDxeSmm: Use public MSR_IA32_MISC_ENABLE definition

Use the MSR MSR_IA32_MISC_ENABLE definition defined in UefiCpuPkg/Include and
remove the local definition.

Cc: Michael Kinney <michael.d.kinney@intel.com>
Cc: Jiewen Yao <jiewen.yao@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: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: Michael Kinney <michael.d.kinney@intel.com>
Regression-tested-by: Laszlo Ersek <lersek@redhat.com>
This commit is contained in:
Jeff Fan 2016-04-08 13:55:14 +08:00 committed by Michael Kinney
parent 846704334c
commit f85d3ce2ef
4 changed files with 23 additions and 21 deletions

View File

@ -1020,6 +1020,7 @@ SmiRendezvous (
UINTN Index; UINTN Index;
UINTN Cr2; UINTN Cr2;
BOOLEAN XdDisableFlag; BOOLEAN XdDisableFlag;
MSR_IA32_MISC_ENABLE_REGISTER MiscEnableMsr;
// //
// Save Cr2 because Page Fault exception in SMM may override its value // Save Cr2 because Page Fault exception in SMM may override its value
@ -1083,9 +1084,11 @@ SmiRendezvous (
// //
XdDisableFlag = FALSE; XdDisableFlag = FALSE;
if (mXdSupported) { if (mXdSupported) {
if ((AsmReadMsr64 (MSR_IA32_MISC_ENABLE) & B_XD_DISABLE_BIT) != 0) { MiscEnableMsr.Uint64 = AsmReadMsr64 (MSR_IA32_MISC_ENABLE);
if (MiscEnableMsr.Bits.XD == 1) {
XdDisableFlag = TRUE; XdDisableFlag = TRUE;
AsmMsrAnd64 (MSR_IA32_MISC_ENABLE, ~B_XD_DISABLE_BIT); MiscEnableMsr.Bits.XD = 0;
AsmWriteMsr64 (MSR_IA32_MISC_ENABLE, MiscEnableMsr.Uint64);
} }
ActivateXd (); ActivateXd ();
} }
@ -1176,7 +1179,9 @@ SmiRendezvous (
// Restore XD // Restore XD
// //
if (XdDisableFlag) { if (XdDisableFlag) {
AsmMsrOr64 (MSR_IA32_MISC_ENABLE, B_XD_DISABLE_BIT); MiscEnableMsr.Uint64 = AsmReadMsr64 (MSR_IA32_MISC_ENABLE);
MiscEnableMsr.Bits.XD = 1;
AsmWriteMsr64 (MSR_IA32_MISC_ENABLE, MiscEnableMsr.Uint64);
} }
} }

View File

@ -1,7 +1,7 @@
/** @file /** @file
Agent Module to load other modules to deploy SMM Entry Vector for X86 CPU. Agent Module to load other modules to deploy SMM Entry Vector for X86 CPU.
Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR> Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at which accompanies this distribution. The full text of the license may be found at
@ -53,6 +53,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <CpuHotPlugData.h> #include <CpuHotPlugData.h>
#include <Register/Cpuid.h> #include <Register/Cpuid.h>
#include <Register/Msr.h>
#include "CpuService.h" #include "CpuService.h"
#include "SmmProfile.h" #include "SmmProfile.h"

View File

@ -936,6 +936,7 @@ CheckFeatureSupported (
{ {
UINT32 RegEax; UINT32 RegEax;
UINT32 RegEdx; UINT32 RegEdx;
MSR_IA32_MISC_ENABLE_REGISTER MiscEnableMsr;
if (mXdSupported) { if (mXdSupported) {
AsmCpuid (CPUID_EXTENDED_FUNCTION, &RegEax, NULL, NULL, NULL); AsmCpuid (CPUID_EXTENDED_FUNCTION, &RegEax, NULL, NULL, NULL);
@ -966,9 +967,10 @@ CheckFeatureSupported (
// BTINT bits in the MSR_DEBUGCTLA MSR. // BTINT bits in the MSR_DEBUGCTLA MSR.
// 2. The IA32_DS_AREA MSR can be programmed to point to the DS save area. // 2. The IA32_DS_AREA MSR can be programmed to point to the DS save area.
// //
if (AsmMsrBitFieldRead64 (MSR_IA32_MISC_ENABLE, 11, 11) == 1) { MiscEnableMsr.Uint64 = AsmReadMsr64 (MSR_IA32_MISC_ENABLE);
if (MiscEnableMsr.Bits.BTS == 1) {
// //
// BTS facilities is not supported if MSR_IA32_MISC_ENABLE BIT11 is set. // BTS facilities is not supported if MSR_IA32_MISC_ENABLE.BTS bit is set.
// //
mBtsSupported = FALSE; mBtsSupported = FALSE;
} }

View File

@ -17,12 +17,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include "SmmProfileInternal.h" #include "SmmProfileInternal.h"
///
/// MSR Register Index
///
#define MSR_IA32_MISC_ENABLE 0x1A0
#define B_XD_DISABLE_BIT BIT34
// //
// External functions // External functions
// //