]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
x86: apic - unify disable_local_APIC
authorCyrill Gorcunov <gorcunov@gmail.com>
Mon, 18 Aug 2008 16:45:51 +0000 (20:45 +0400)
committerIngo Molnar <mingo@elte.hu>
Tue, 19 Aug 2008 00:07:13 +0000 (02:07 +0200)
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/apic_32.c
arch/x86/kernel/apic_64.c

index 80db3e0426c4c176087a993cdd58c0a48a3b7fbb..13c4b79441da07e54cf9682940308bc69e5a6804 100644 (file)
@@ -796,7 +796,7 @@ void clear_local_APIC(void)
  */
 void disable_local_APIC(void)
 {
-       unsigned long value;
+       unsigned int value;
 
        clear_local_APIC();
 
@@ -808,6 +808,7 @@ void disable_local_APIC(void)
        value &= ~APIC_SPIV_APIC_ENABLED;
        apic_write(APIC_SPIV, value);
 
+#ifdef CONFIG_X86_32
        /*
         * When LAPIC was disabled by the BIOS and enabled by the kernel,
         * restore the disabled state.
@@ -819,6 +820,7 @@ void disable_local_APIC(void)
                l &= ~MSR_IA32_APICBASE_ENABLE;
                wrmsr(MSR_IA32_APICBASE, l, h);
        }
+#endif
 }
 
 /*
index 46acb9b47ae7e3fa0261d2d26a8b98ac580a6599..4fb903b2fc39ef672af945b0f87fc8e86ed28cab 100644 (file)
@@ -691,6 +691,20 @@ void disable_local_APIC(void)
        value = apic_read(APIC_SPIV);
        value &= ~APIC_SPIV_APIC_ENABLED;
        apic_write(APIC_SPIV, value);
+
+#ifdef CONFIG_X86_32
+       /*
+        * When LAPIC was disabled by the BIOS and enabled by the kernel,
+        * restore the disabled state.
+        */
+       if (enabled_via_apicbase) {
+               unsigned int l, h;
+
+               rdmsr(MSR_IA32_APICBASE, l, h);
+               l &= ~MSR_IA32_APICBASE_ENABLE;
+               wrmsr(MSR_IA32_APICBASE, l, h);
+       }
+#endif
 }
 
 void lapic_shutdown(void)