|
|
@@ -721,18 +721,14 @@ int __cpu_up(unsigned int cpu, struct task_struct *tidle)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static int __init setup_possible_cpus(char *s)
|
|
|
-{
|
|
|
- int max, cpu;
|
|
|
+static unsigned int setup_possible_cpus __initdata;
|
|
|
|
|
|
- if (kstrtoint(s, 0, &max) < 0)
|
|
|
- return 0;
|
|
|
- init_cpu_possible(cpumask_of(0));
|
|
|
- for (cpu = 1; cpu < max && cpu < nr_cpu_ids; cpu++)
|
|
|
- set_cpu_possible(cpu, true);
|
|
|
+static int __init _setup_possible_cpus(char *s)
|
|
|
+{
|
|
|
+ get_option(&s, &setup_possible_cpus);
|
|
|
return 0;
|
|
|
}
|
|
|
-early_param("possible_cpus", setup_possible_cpus);
|
|
|
+early_param("possible_cpus", _setup_possible_cpus);
|
|
|
|
|
|
#ifdef CONFIG_HOTPLUG_CPU
|
|
|
|
|
|
@@ -775,6 +771,17 @@ void __noreturn cpu_die(void)
|
|
|
|
|
|
#endif /* CONFIG_HOTPLUG_CPU */
|
|
|
|
|
|
+void __init smp_fill_possible_mask(void)
|
|
|
+{
|
|
|
+ unsigned int possible, cpu;
|
|
|
+
|
|
|
+ possible = setup_possible_cpus;
|
|
|
+ if (!possible)
|
|
|
+ possible = MACHINE_IS_VM ? 64 : nr_cpu_ids;
|
|
|
+ for (cpu = 0; cpu < possible && cpu < nr_cpu_ids; cpu++)
|
|
|
+ set_cpu_possible(cpu, true);
|
|
|
+}
|
|
|
+
|
|
|
void __init smp_prepare_cpus(unsigned int max_cpus)
|
|
|
{
|
|
|
/* request the 0x1201 emergency signal external interrupt */
|