|
@@ -1424,7 +1424,7 @@ static inline void __x2apic_disable(void)
|
|
|
{
|
|
|
u64 msr;
|
|
|
|
|
|
- if (cpu_has_apic)
|
|
|
+ if (!cpu_has_apic)
|
|
|
return;
|
|
|
|
|
|
rdmsrl(MSR_IA32_APICBASE, msr);
|
|
@@ -1483,10 +1483,13 @@ void x2apic_setup(void)
|
|
|
|
|
|
static __init void x2apic_disable(void)
|
|
|
{
|
|
|
- u32 x2apic_id;
|
|
|
+ u32 x2apic_id, state = x2apic_state;
|
|
|
|
|
|
- if (x2apic_state != X2APIC_ON)
|
|
|
- goto out;
|
|
|
+ x2apic_mode = 0;
|
|
|
+ x2apic_state = X2APIC_DISABLED;
|
|
|
+
|
|
|
+ if (state != X2APIC_ON)
|
|
|
+ return;
|
|
|
|
|
|
x2apic_id = read_apic_id();
|
|
|
if (x2apic_id >= 255)
|
|
@@ -1494,9 +1497,6 @@ static __init void x2apic_disable(void)
|
|
|
|
|
|
__x2apic_disable();
|
|
|
register_lapic_address(mp_lapic_addr);
|
|
|
-out:
|
|
|
- x2apic_state = X2APIC_DISABLED;
|
|
|
- x2apic_mode = 0;
|
|
|
}
|
|
|
|
|
|
static __init void x2apic_enable(void)
|