]> xenbits.xensource.com Git - xen.git/commitdiff
x86: fix boot time APIC mode detection
authorJan Beulich <jbeulich@suse.com>
Fri, 31 May 2013 10:27:52 +0000 (12:27 +0200)
committerJan Beulich <jbeulich@suse.com>
Fri, 31 May 2013 10:27:52 +0000 (12:27 +0200)
current_cpu_data becomes valid only relatively late in the boot
process, so looking there for a particular feature early in the game
would generally give the appearance of the feature being unavailable.

Getting this wrong means that at kexec time the system would get
returned to xAPIC mode, causing disconnect_bsp_APIC() to try to access
the APIC page, which on systems with x2APIC pre-enabled will never get
set up.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
master commit: 234c4dde2fd4f1182fe1a6bea6bced83fe363007
master date: 2013-05-23 13:08:32 +0200

xen/arch/x86/apic.c

index 2845d23b0191678c14e40b429b05dde0d506279a..903a9ce7a3f1fc036d2793bfdd4caaf32c6c5b5e 100644 (file)
@@ -1565,7 +1565,7 @@ enum apic_mode current_local_apic_mode(void)
 
     /* Reading EXTD bit from the MSR is only valid if CPUID
      * says so, else reserved */
-    if ( cpu_has(&current_cpu_data, X86_FEATURE_X2APIC)
+    if ( boot_cpu_has(X86_FEATURE_X2APIC)
          && (msr_contents & MSR_IA32_APICBASE_EXTD) )
         return APIC_MODE_X2APIC;