|
@@ -129,63 +129,6 @@ static char *static_command_line;
|
|
|
static char *execute_command;
|
|
|
static char *ramdisk_execute_command;
|
|
|
|
|
|
-#ifdef CONFIG_SMP
|
|
|
-/* Setup configured maximum number of CPUs to activate */
|
|
|
-unsigned int setup_max_cpus = NR_CPUS;
|
|
|
-EXPORT_SYMBOL(setup_max_cpus);
|
|
|
-
|
|
|
-
|
|
|
-/*
|
|
|
- * Setup routine for controlling SMP activation
|
|
|
- *
|
|
|
- * Command-line option of "nosmp" or "maxcpus=0" will disable SMP
|
|
|
- * activation entirely (the MPS table probe still happens, though).
|
|
|
- *
|
|
|
- * Command-line option of "maxcpus=<NUM>", where <NUM> is an integer
|
|
|
- * greater than 0, limits the maximum number of CPUs activated in
|
|
|
- * SMP mode to <NUM>.
|
|
|
- */
|
|
|
-
|
|
|
-void __weak arch_disable_smp_support(void) { }
|
|
|
-
|
|
|
-static int __init nosmp(char *str)
|
|
|
-{
|
|
|
- setup_max_cpus = 0;
|
|
|
- arch_disable_smp_support();
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-early_param("nosmp", nosmp);
|
|
|
-
|
|
|
-/* this is hard limit */
|
|
|
-static int __init nrcpus(char *str)
|
|
|
-{
|
|
|
- int nr_cpus;
|
|
|
-
|
|
|
- get_option(&str, &nr_cpus);
|
|
|
- if (nr_cpus > 0 && nr_cpus < nr_cpu_ids)
|
|
|
- nr_cpu_ids = nr_cpus;
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-early_param("nr_cpus", nrcpus);
|
|
|
-
|
|
|
-static int __init maxcpus(char *str)
|
|
|
-{
|
|
|
- get_option(&str, &setup_max_cpus);
|
|
|
- if (setup_max_cpus == 0)
|
|
|
- arch_disable_smp_support();
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-early_param("maxcpus", maxcpus);
|
|
|
-#else
|
|
|
-static const unsigned int setup_max_cpus = NR_CPUS;
|
|
|
-#endif
|
|
|
-
|
|
|
/*
|
|
|
* If set, this is an indication to the drivers that reset the underlying
|
|
|
* device before going ahead with the initialization otherwise driver might
|
|
@@ -362,7 +305,7 @@ static int __init rdinit_setup(char *str)
|
|
|
__setup("rdinit=", rdinit_setup);
|
|
|
|
|
|
#ifndef CONFIG_SMP
|
|
|
-
|
|
|
+static const unsigned int setup_max_cpus = NR_CPUS;
|
|
|
#ifdef CONFIG_X86_LOCAL_APIC
|
|
|
static void __init smp_init(void)
|
|
|
{
|
|
@@ -374,37 +317,6 @@ static void __init smp_init(void)
|
|
|
|
|
|
static inline void setup_nr_cpu_ids(void) { }
|
|
|
static inline void smp_prepare_cpus(unsigned int maxcpus) { }
|
|
|
-
|
|
|
-#else
|
|
|
-
|
|
|
-/* Setup number of possible processor ids */
|
|
|
-int nr_cpu_ids __read_mostly = NR_CPUS;
|
|
|
-EXPORT_SYMBOL(nr_cpu_ids);
|
|
|
-
|
|
|
-/* An arch may set nr_cpu_ids earlier if needed, so this would be redundant */
|
|
|
-static void __init setup_nr_cpu_ids(void)
|
|
|
-{
|
|
|
- nr_cpu_ids = find_last_bit(cpumask_bits(cpu_possible_mask),NR_CPUS) + 1;
|
|
|
-}
|
|
|
-
|
|
|
-/* Called by boot processor to activate the rest. */
|
|
|
-static void __init smp_init(void)
|
|
|
-{
|
|
|
- unsigned int cpu;
|
|
|
-
|
|
|
- /* FIXME: This should be done in userspace --RR */
|
|
|
- for_each_present_cpu(cpu) {
|
|
|
- if (num_online_cpus() >= setup_max_cpus)
|
|
|
- break;
|
|
|
- if (!cpu_online(cpu))
|
|
|
- cpu_up(cpu);
|
|
|
- }
|
|
|
-
|
|
|
- /* Any cleanup work */
|
|
|
- printk(KERN_INFO "Brought up %ld CPUs\n", (long)num_online_cpus());
|
|
|
- smp_cpus_done(setup_max_cpus);
|
|
|
-}
|
|
|
-
|
|
|
#endif
|
|
|
|
|
|
/*
|