]> nv-tegra.nvidia Code Review - linux-2.6.git/blobdiff - arch/i386/mach-generic/probe.c
[PATCH] x86: sutomatically enable bigsmp when we have more than 8 CPUs
[linux-2.6.git] / arch / i386 / mach-generic / probe.c
index 5497c65a8790bfd0175564aed83b7129f5f5ceb2..cea5b3ce4b5766c9747294090542e4eb063b75eb 100644 (file)
@@ -30,6 +30,25 @@ struct genapic *apic_probe[] __initdata = {
        NULL,
 };
 
+static int cmdline_apic;
+
+void __init generic_bigsmp_probe(void)
+{
+       /*
+        * This routine is used to switch to bigsmp mode when
+        * - There is no apic= option specified by the user
+        * - generic_apic_probe() has choosen apic_default as the sub_arch
+        * - we find more than 8 CPUs in acpi LAPIC listing with xAPIC support
+        */
+
+       if (!cmdline_apic && genapic == &apic_default)
+               if (apic_bigsmp.probe()) {
+                       genapic = &apic_bigsmp;
+                       printk(KERN_INFO "Overriding APIC driver with %s\n",
+                              genapic->name);
+               }
+}
+
 void __init generic_apic_probe(char *command_line) 
 { 
        char *s;
@@ -52,6 +71,7 @@ void __init generic_apic_probe(char *command_line)
                if (!changed)
                        printk(KERN_ERR "Unknown genapic `%s' specified.\n", s);
                *p = old;
+               cmdline_apic = changed;
        } 
        for (i = 0; !changed && apic_probe[i]; i++) { 
                if (apic_probe[i]->probe()) {