aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/smpboot.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kernel/smpboot.c')
-rw-r--r--arch/x86/kernel/smpboot.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index f7a52f4a21a5..86f7edcd0438 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -243,6 +243,11 @@ static void __cpuinit smp_callin(void)
243 map_cpu_to_logical_apicid(); 243 map_cpu_to_logical_apicid();
244 244
245 notify_cpu_starting(cpuid); 245 notify_cpu_starting(cpuid);
246
247 /*
248 * Need to setup vector mappings before we enable interrupts.
249 */
250 __setup_vector_irq(smp_processor_id());
246 /* 251 /*
247 * Get our bogomips. 252 * Get our bogomips.
248 * 253 *
@@ -317,7 +322,6 @@ notrace static void __cpuinit start_secondary(void *unused)
317 */ 322 */
318 ipi_call_lock(); 323 ipi_call_lock();
319 lock_vector_lock(); 324 lock_vector_lock();
320 __setup_vector_irq(smp_processor_id());
321 set_cpu_online(smp_processor_id(), true); 325 set_cpu_online(smp_processor_id(), true);
322 unlock_vector_lock(); 326 unlock_vector_lock();
323 ipi_call_unlock(); 327 ipi_call_unlock();
@@ -1216,11 +1220,12 @@ __init void prefill_possible_map(void)
1216 1220
1217 total_cpus = max_t(int, possible, num_processors + disabled_cpus); 1221 total_cpus = max_t(int, possible, num_processors + disabled_cpus);
1218 1222
1219 if (possible > CONFIG_NR_CPUS) { 1223 /* nr_cpu_ids could be reduced via nr_cpus= */
1224 if (possible > nr_cpu_ids) {
1220 printk(KERN_WARNING 1225 printk(KERN_WARNING
1221 "%d Processors exceeds NR_CPUS limit of %d\n", 1226 "%d Processors exceeds NR_CPUS limit of %d\n",
1222 possible, CONFIG_NR_CPUS); 1227 possible, nr_cpu_ids);
1223 possible = CONFIG_NR_CPUS; 1228 possible = nr_cpu_ids;
1224 } 1229 }
1225 1230
1226 printk(KERN_INFO "SMP: Allowing %d CPUs, %d hotplug CPUs\n", 1231 printk(KERN_INFO "SMP: Allowing %d CPUs, %d hotplug CPUs\n",