Merge commit 'v2.6.26' into x86/core
[pandora-kernel.git] / arch / x86 / mach-generic / probe.c
index f410d3c..5a7e461 100644 (file)
@@ -1,8 +1,9 @@
-/* Copyright 2003 Andi Kleen, SuSE Labs. 
- * Subject to the GNU Public License, v.2 
- * 
+/*
+ * Copyright 2003 Andi Kleen, SuSE Labs.
+ * Subject to the GNU Public License, v.2
+ *
  * Generic x86 APIC driver probe layer.
- */  
+ */
 #include <linux/threads.h>
 #include <linux/cpumask.h>
 #include <linux/string.h>
@@ -15,6 +16,7 @@
 #include <asm/apicdef.h>
 #include <asm/genapic.h>
 
+extern struct genapic apic_numaq;
 extern struct genapic apic_summit;
 extern struct genapic apic_bigsmp;
 extern struct genapic apic_es7000;
@@ -23,9 +25,18 @@ extern struct genapic apic_default;
 struct genapic *genapic = &apic_default;
 
 static struct genapic *apic_probe[] __initdata = {
+#ifdef CONFIG_X86_NUMAQ
+       &apic_numaq,
+#endif
+#ifdef CONFIG_X86_SUMMIT
        &apic_summit,
-       &apic_bigsmp, 
+#endif
+#ifdef CONFIG_X86_BIGSMP
+       &apic_bigsmp,
+#endif
+#ifdef CONFIG_X86_ES7000
        &apic_es7000,
+#endif
        &apic_default,  /* must be last */
        NULL,
 };
@@ -53,6 +64,7 @@ early_param("apic", parse_apic);
 
 void __init generic_bigsmp_probe(void)
 {
+#ifdef CONFIG_X86_BIGSMP
        /*
         * This routine is used to switch to bigsmp mode when
         * - There is no apic= option specified by the user
@@ -66,10 +78,11 @@ void __init generic_bigsmp_probe(void)
                        printk(KERN_INFO "Overriding APIC driver with %s\n",
                               genapic->name);
                }
+#endif
 }
 
 void __init generic_apic_probe(void)
-{ 
+{
        if (!cmdline_apic) {
                int i;
                for (i = 0; apic_probe[i]; i++) {
@@ -83,40 +96,41 @@ void __init generic_apic_probe(void)
                        panic("Didn't find an APIC driver");
        }
        printk(KERN_INFO "Using APIC driver %s\n", genapic->name);
-} 
+}
 
 /* These functions can switch the APIC even after the initial ->probe() */
 
-int __init mps_oem_check(struct mp_config_table *mpc, char *oem, char *productid)
-{ 
+int __init mps_oem_check(struct mp_config_table *mpc, char *oem,
+                                char *productid)
+{
        int i;
-       for (i = 0; apic_probe[i]; ++i) { 
-               if (apic_probe[i]->mps_oem_check(mpc,oem,productid)) { 
+       for (i = 0; apic_probe[i]; ++i) {
+               if (apic_probe[i]->mps_oem_check(mpc, oem, productid)) {
                        if (!cmdline_apic) {
                                genapic = apic_probe[i];
                                printk(KERN_INFO "Switched to APIC driver `%s'.\n",
                                       genapic->name);
                        }
                        return 1;
-               } 
-       } 
+               }
+       }
        return 0;
-} 
+}
 
 int __init acpi_madt_oem_check(char *oem_id, char *oem_table_id)
 {
        int i;
-       for (i = 0; apic_probe[i]; ++i) { 
-               if (apic_probe[i]->acpi_madt_oem_check(oem_id, oem_table_id)) { 
+       for (i = 0; apic_probe[i]; ++i) {
+               if (apic_probe[i]->acpi_madt_oem_check(oem_id, oem_table_id)) {
                        if (!cmdline_apic) {
                                genapic = apic_probe[i];
                                printk(KERN_INFO "Switched to APIC driver `%s'.\n",
                                       genapic->name);
                        }
                        return 1;
-               } 
-       } 
-       return 0;       
+               }
+       }
+       return 0;
 }
 
 int hard_smp_processor_id(void)