x86: make x86_64 accept the max_cpus parameter
authorGlauber Costa <gcosta@redhat.com>
Mon, 3 Mar 2008 17:13:08 +0000 (14:13 -0300)
committerIngo Molnar <mingo@elte.hu>
Thu, 17 Apr 2008 15:40:56 +0000 (17:40 +0200)
The parameter passing parsing is done in the common smpboot.c

Signed-off-by: Glauber Costa <gcosta@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/mpparse_64.c
arch/x86/kernel/smpboot.c
arch/x86/kernel/smpboot_32.c

index 72ab1403fed7b8d471023d6632d64d8c6e67ad41..2a1f7881c75bf6591d7b176cd9965f523c74ce95 100644 (file)
@@ -32,6 +32,7 @@
 
 /* Have we found an MP table */
 int smp_found_config;
+unsigned int __cpuinitdata maxcpus = NR_CPUS;
 
 /*
  * Various Linux-internal data structures created from the
@@ -115,6 +116,12 @@ static void __cpuinit MP_processor_info(struct mpc_config_processor *m)
                return;
        }
 
+       if (num_processors >= maxcpus) {
+               printk(KERN_WARNING "WARNING: maxcpus limit of %i reached."
+                       " Processor ignored.\n", maxcpus);
+               return;
+       }
+
        num_processors++;
        cpus_complement(tmp_map, cpu_present_map);
        cpu = first_cpu(tmp_map);
index c35cd319d1ed3dcda873adbbee4d8c729b1c0a4e..34c31178041b21d4fb830bbef58c2efeade44931 100644 (file)
@@ -268,3 +268,15 @@ void __cpu_die(unsigned int cpu)
 }
 #endif
 
+/*
+ * If the BIOS enumerates physical processors before logical,
+ * maxcpus=N at enumeration-time can be used to disable HT.
+ */
+static int __init parse_maxcpus(char *arg)
+{
+       extern unsigned int maxcpus;
+
+       maxcpus = simple_strtoul(arg, NULL, 0);
+       return 0;
+}
+early_param("maxcpus", parse_maxcpus);
index 00b1b59cd560dd8d7a59b3b9f4b9546eef0da14c..3236e843a9ad76baac11428f7863dbe67f406740 100644 (file)
@@ -1113,16 +1113,3 @@ void __init smp_intr_init(void)
        /* IPI for generic function call */
        set_intr_gate(CALL_FUNCTION_VECTOR, call_function_interrupt);
 }
-
-/*
- * If the BIOS enumerates physical processors before logical,
- * maxcpus=N at enumeration-time can be used to disable HT.
- */
-static int __init parse_maxcpus(char *arg)
-{
-       extern unsigned int maxcpus;
-
-       maxcpus = simple_strtoul(arg, NULL, 0);
-       return 0;
-}
-early_param("maxcpus", parse_maxcpus);