diff options
Diffstat (limited to 'arch/mips/kernel/setup.c')
| -rw-r--r-- | arch/mips/kernel/setup.c | 22 | 
1 files changed, 21 insertions, 1 deletions
diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c index a842154d57dc..7c1fe2b42d40 100644 --- a/arch/mips/kernel/setup.c +++ b/arch/mips/kernel/setup.c @@ -282,7 +282,7 @@ static unsigned long __init init_initrd(void)   * Initialize the bootmem allocator. It also setup initrd related data   * if needed.   */ -#ifdef CONFIG_SGI_IP27 +#if defined(CONFIG_SGI_IP27) || (defined(CONFIG_CPU_LOONGSON3) && defined(CONFIG_NUMA))  static void __init bootmem_init(void)  { @@ -729,6 +729,25 @@ static void __init resource_init(void)  	}  } +#ifdef CONFIG_SMP +static void __init prefill_possible_map(void) +{ +	int i, possible = num_possible_cpus(); + +	if (possible > nr_cpu_ids) +		possible = nr_cpu_ids; + +	for (i = 0; i < possible; i++) +		set_cpu_possible(i, true); +	for (; i < NR_CPUS; i++) +		set_cpu_possible(i, false); + +	nr_cpu_ids = possible; +} +#else +static inline void prefill_possible_map(void) {} +#endif +  void __init setup_arch(char **cmdline_p)  {  	cpu_probe(); @@ -752,6 +771,7 @@ void __init setup_arch(char **cmdline_p)  	resource_init();  	plat_smp_setup(); +	prefill_possible_map();  	cpu_cache_init();  }  |