]> err.no Git - linux-2.6/blobdiff - arch/x86/kernel/setup_64.c
x86: clean up init_amd()
[linux-2.6] / arch / x86 / kernel / setup_64.c
index a93300de4da96411a1dbbc046189008e0b96dd1a..c94464ab04bafed8a966e3d1e9b9dd965dcee72f 100644 (file)
@@ -72,7 +72,6 @@
 #include <asm/topology.h>
 #include <asm/trampoline.h>
 #include <asm/pat.h>
-#include <asm/mmconfig.h>
 
 #include <mach_apic.h>
 #ifdef CONFIG_PARAVIRT
@@ -302,6 +301,11 @@ void __init setup_arch(char **cmdline_p)
 
        parse_early_param();
 
+       if (acpi_mps_check()) {
+               disable_apic = 1;
+               clear_cpu_cap(&boot_cpu_data, X86_FEATURE_APIC);
+       }
+
 #ifdef CONFIG_PROVIDE_OHCI1394_DMA_INIT
        if (init_ohci1394_dma_early)
                init_ohci1394_dma_on_all_controllers();
@@ -469,9 +473,6 @@ void __init setup_arch(char **cmdline_p)
        conswitchp = &dummy_con;
 #endif
 #endif
-
-       /* do this before identify_cpu for boot cpu */
-       check_enable_amd_mmconf_dmi();
 }
 
 struct cpu_dev *cpu_devs[X86_VENDOR_NUM] = {};
@@ -723,6 +724,10 @@ static void __cpuinit early_identify_cpu(struct cpuinfo_x86 *c)
                cpu_devs[c->x86_vendor]->c_early_init(c);
 
        validate_pat_support(c);
+
+       /* early_param could clear that, but recall get it set again */
+       if (disable_apic)
+               clear_cpu_cap(c, X86_FEATURE_APIC);
 }
 
 /*