diff options
author | Yang, Wei <wei.y.yang@intel.com> | 2011-05-28 09:22:55 +0100 |
---|---|---|
committer | Yang, Wei <wei.y.yang@intel.com> | 2011-05-28 09:22:55 +0100 |
commit | 688965a8c17bdc71787631cea0fc89cdaa4491c1 (patch) | |
tree | 5da1dcf8889a33e80a19797c623cb22b08cbba44 | |
parent | a4b9cae427bd3e398c12847d1268488be71b73e7 (diff) | |
download | xen-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.c | 8 |
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); |