x86: apic: Fixmap apic address even if apic disabled
authorCyrill Gorcunov <gorcunov@gmail.com>
Mon, 11 May 2009 13:41:40 +0000 (17:41 +0400)
committerIngo Molnar <mingo@elte.hu>
Mon, 11 May 2009 13:50:58 +0000 (15:50 +0200)
In case if apic were disabled by boot option
we still need read_apic operation. So fixmap
a fake apic area if needed.

[ Impact: fix boot crash ]

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Cc: yinghai@kernel.org
Cc: eswierk@aristanetworks.com
LKML-Reference: <20090511134140.GH4624@lenovo>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/apic/apic.c

index 0e6543f..07cffc1 100644 (file)
@@ -1587,13 +1587,6 @@ void __init init_apic_mappings(void)
        } else
                apic_phys = mp_lapic_addr;
 
-       /* lets check if we may NOP'ify apic operations */
-       if (!cpu_has_apic) {
-               pr_info("APIC: disable apic facility\n");
-               apic_disable();
-               return;
-       }
-
        /*
         * acpi lapic path already maps that address in
         * acpi_register_lapic_address()
@@ -1602,7 +1595,15 @@ void __init init_apic_mappings(void)
                set_fixmap_nocache(FIX_APIC_BASE, apic_phys);
 
        apic_printk(APIC_VERBOSE, "mapped APIC to %08lx (%08lx)\n",
-                               APIC_BASE, apic_phys);
+                       APIC_BASE, apic_phys);
+
+       /* lets check if we may NOP'ify apic operations */
+       if (!cpu_has_apic) {
+               pr_info("APIC: disable apic facility\n");
+               apic_disable();
+               return;
+       }
+
        /*
         * Fetch the APIC ID of the BSP in case we have a
         * default configuration (or the MP table is broken).