x86, boot: Wait for boot cpu to show up if nr_cpus limit is about to hit
authorVivek Goyal <vgoyal@redhat.com>
Fri, 8 Jul 2011 17:19:26 +0000 (13:19 -0400)
committerH. Peter Anvin <hpa@linux.intel.com>
Fri, 8 Jul 2011 22:33:35 +0000 (15:33 -0700)
commit14cb6dcf0a023f5977461c94d8d5a163c937979b
tree5e05e51b0caed5485cf027a37878952e6aba3ab8
parentfe0d42203cb5616eeff68b14576a0f7e2dd56625
x86, boot: Wait for boot cpu to show up if nr_cpus limit is about to hit

nr_cpus allows one to specify number of possible cpus in the system.
Current assumption seems to be that first cpu to show up is boot cpu
and this assumption will be broken in kdump scenario where we can be
booting on a non boot cpu with nr_cpus=1.

It might happen that first cpu we parse is not the cpu we boot on and
later we ignore boot cpu. Though code later seems to recognize this
anomaly and forcibly sets boot cpu in physical cpu map with following
warning.

if (!physid_isset(hard_smp_processor_id(), phys_cpu_present_map)) {
        printk(KERN_WARNING
                "weird, boot CPU (#%d) not listed by the BIOS.\n",
                hard_smp_processor_id());

        physid_set(hard_smp_processor_id(), phys_cpu_present_map);
}

This patch waits for boot cpu to show up and starts ignoring the cpus
once we have hit (nr_cpus - 1) number of cpus. So effectively we are
reserving one slot out of nr_cpus for boot cpu explicitly.

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Acked-by: Yinghai Lu <yinghai@kernel.org>
Link: http://lkml.kernel.org/r/20110708171926.GF2930@redhat.com
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
arch/x86/kernel/apic/apic.c