aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYang, Wei <wei.y.yang@intel.com>2011-05-28 09:22:55 +0100
committerYang, Wei <wei.y.yang@intel.com>2011-05-28 09:22:55 +0100
commit688965a8c17bdc71787631cea0fc89cdaa4491c1 (patch)
tree5da1dcf8889a33e80a19797c623cb22b08cbba44
parenta4b9cae427bd3e398c12847d1268488be71b73e7 (diff)
downloadxen-688965a8c17bdc71787631cea0fc89cdaa4491c1.tar.gz
xen-688965a8c17bdc71787631cea0fc89cdaa4491c1.tar.bz2
xen-688965a8c17bdc71787631cea0fc89cdaa4491c1.zip
x86/intel: Fix CPUID leaf 7 detection
Must set subleaf to 0 (input ECX==0). Signed-off-by: Yang, Wei <wei.y.yang@intel.com> Signed-off-by: Li, Xin <xin.li@intel.com> xen-unstable changeset: 23436:f6ce871e5689 xen-unstable date: Sat May 28 08:57:12 2011 +0100
-rw-r--r--xen/arch/x86/cpu/common.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/xen/arch/x86/cpu/common.c b/xen/arch/x86/cpu/common.c
index 8c5ec06caf..6564bf555a 100644
--- a/xen/arch/x86/cpu/common.c
+++ b/xen/arch/x86/cpu/common.c
@@ -316,9 +316,11 @@ void __cpuinit generic_identify(struct cpuinfo_x86 * c)
}
/* Intel-defined flags: level 0x00000007 */
- if ( c->cpuid_level >= 0x00000007 )
- c->x86_capability[X86_FEATURE_FSGSBASE / 32]
- = cpuid_ebx(0x00000007);
+ if ( c->cpuid_level >= 0x00000007 ) {
+ u32 dummy, ebx;
+ cpuid_count(0x7, 0, &dummy, &ebx, &dummy, &dummy);
+ c->x86_capability[X86_FEATURE_FSGSBASE / 32] = ebx;
+ }
}
early_intel_workaround(c);