x86: fix 2.6.27rc1 cannot boot more than 8CPUs
Jeff Chua reported that booting a !bigsmp kernel on a 16-way box hangs silently. this is a long-standing issue, smp start AP cpu could check the apic id >=8 etc before trying to start it. achieve this by moving the def_to_bigsmp check later and skip the apicid id > 8 [ mingo@elte.hu: clean up the message that is printed. ] Reported-by: "Jeff Chua" <jeff.chua.linux@gmail.com> Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> arch/x86/kernel/setup.c | 6 ------ arch/x86/kernel/smpboot.c | 10 ++++++++++ 2 files changed, 10 insertions(+), 6 deletions(-)
This commit is contained in:
parent
48d97cb65e
commit
b74548e76a
|
@ -861,12 +861,6 @@ void __init setup_arch(char **cmdline_p)
|
|||
init_apic_mappings();
|
||||
ioapic_init_mappings();
|
||||
|
||||
#if defined(CONFIG_SMP) && defined(CONFIG_X86_PC) && defined(CONFIG_X86_32)
|
||||
if (def_to_bigsmp)
|
||||
printk(KERN_WARNING "More than 8 CPUs detected and "
|
||||
"CONFIG_X86_PC cannot handle it.\nUse "
|
||||
"CONFIG_X86_GENERICARCH or CONFIG_X86_BIGSMP.\n");
|
||||
#endif
|
||||
kvm_guest_init();
|
||||
|
||||
e820_reserve_resources();
|
||||
|
|
|
@ -994,7 +994,17 @@ int __cpuinit native_cpu_up(unsigned int cpu)
|
|||
flush_tlb_all();
|
||||
low_mappings = 1;
|
||||
|
||||
#ifdef CONFIG_X86_PC
|
||||
if (def_to_bigsmp && apicid > 8) {
|
||||
printk(KERN_WARNING
|
||||
"More than 8 CPUs detected - skipping them.\n"
|
||||
"Use CONFIG_X86_GENERICARCH and CONFIG_X86_BIGSMP.\n");
|
||||
err = -1;
|
||||
} else
|
||||
err = do_boot_cpu(apicid, cpu);
|
||||
#else
|
||||
err = do_boot_cpu(apicid, cpu);
|
||||
#endif
|
||||
|
||||
zap_low_mappings();
|
||||
low_mappings = 0;
|
||||
|
|
Loading…
Reference in New Issue