x86/intel: Fix CPUID leaf 7 detection
authorYang, Wei <wei.y.yang@intel.com>
Sat, 28 May 2011 07:57:12 +0000 (08:57 +0100)
committerYang, Wei <wei.y.yang@intel.com>
Sat, 28 May 2011 07:57:12 +0000 (08:57 +0100)
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/arch/x86/cpu/common.c

index 5e60a8e1e914ac9b031521d59e9d61f1cfd3965a..1a2062b5b2ea9777439c94038ac5927eca5ee13d 100644 (file)
@@ -262,9 +262,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;
+               cpuid_count(0x00000007, 0, &dummy, &ebx, &dummy, &dummy);
+               c->x86_capability[X86_FEATURE_FSGSBASE / 32] = ebx;
+       }
 
        early_intel_workaround(c);