From 4b1f9ac19de8775b484c2b16d3050cd279249477 Mon Sep 17 00:00:00 2001 From: Jeff Fan Date: Tue, 5 Apr 2016 14:28:49 +0800 Subject: [PATCH] UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile: Fix BTS support check bug SmmProfile feature depends on BTS feature to get the invoker IP (in SMM) from last branch record. If this feature is not supported, SmmProfile cannot get the invoker IP (in SMM). Per IA-32 Architectures Software Developer's Manual, BTS feature is detected by IA32_MISC_ENABLE. If BIT11 of IA32_MISC_ENABLE is set, BTS is not supported. But current implementation check BIT11 opposite. Also, BTS feature does not depends on PEBS feature if supported or not. Cc: Michael Kinney Cc: Jiewen Yao Cc: Feng Tian Cc: Shifflett, Joseph Contributed-under: TianoCore Contribution Agreement 1.0 Reported-by: Shifflett, Joseph Signed-off-by: Jeff Fan Reviewed-by: Shifflett, Joseph Reviewed-by: Jiewen Yao Reviewed-by: Michael Kinney Regression-tested-by: Laszlo Ersek --- UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c index 71fff0e5b0..0b75020425 100644 --- a/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c @@ -966,10 +966,9 @@ CheckFeatureSupported ( // BTINT bits in the MSR_DEBUGCTLA MSR. // 2. The IA32_DS_AREA MSR can be programmed to point to the DS save area. // - if ((AsmMsrBitFieldRead64 (MSR_IA32_MISC_ENABLE, 11, 11) == 0) && - (AsmMsrBitFieldRead64 (MSR_IA32_MISC_ENABLE, 12, 12) == 0)) { + if (AsmMsrBitFieldRead64 (MSR_IA32_MISC_ENABLE, 11, 11) == 1) { // - // BTS facilities is supported. + // BTS facilities is not supported if MSR_IA32_MISC_ENABLE BIT11 is set. // mBtsSupported = FALSE; } -- 2.39.2