Should someone boot an SMP kernel on UP hardware on some systems,
strange things happen, such as..
SMP: Allowing 0 CPUs.
We blow up shortly afterwards.
Signed-off-by: Dave Jones <[email protected]>
--- linux-2.6.15.noarch/arch/x86_64/kernel/smpboot.c~ 2006-02-20 21:59:56.000000000 -0500
+++ linux-2.6.15.noarch/arch/x86_64/kernel/smpboot.c 2006-02-20 22:01:57.000000000 -0500
@@ -975,6 +975,11 @@ __init void prefill_possible_map(void)
if (possible > NR_CPUS)
possible = NR_CPUS;
+ if (possible == 0) { /* Could be SMP kernel on UP hw with broken BIOS */
+ possible = 1;
+ printk (KERN_DEBUG "BIOS never enumerated boot CPU, fixing.\n");
+ }
+
printk(KERN_INFO "SMP: Allowing %d CPUs, %d hotplug CPUs\n",
possible,
max_t(int, possible - num_processors, 0));
On Friday 24 February 2006 02:41, Dave Jones wrote:
> Should someone boot an SMP kernel on UP hardware on some systems,
> strange things happen, such as..
Boot logs?
> SMP: Allowing 0 CPUs.
>
> We blow up shortly afterwards.
>
> Signed-off-by: Dave Jones <[email protected]>
>
> --- linux-2.6.15.noarch/arch/x86_64/kernel/smpboot.c~ 2006-02-20 21:59:56.000000000 -0500
> +++ linux-2.6.15.noarch/arch/x86_64/kernel/smpboot.c 2006-02-20 22:01:57.000000000 -0500
> @@ -975,6 +975,11 @@ __init void prefill_possible_map(void)
> if (possible > NR_CPUS)
> possible = NR_CPUS;
>
> + if (possible == 0) { /* Could be SMP kernel on UP hw with broken BIOS */
> + possible = 1;
> + printk (KERN_DEBUG "BIOS never enumerated boot CPU, fixing.\n");
> + }
It's the wrong place to handle this. Better would be in mpparse.c
-Andi
On Fri, Feb 24, 2006 at 02:45:00AM +0100, Andi Kleen wrote:
> On Friday 24 February 2006 02:41, Dave Jones wrote:
> > Should someone boot an SMP kernel on UP hardware on some systems,
> > strange things happen, such as..
> Boot logs?
https://bugzilla.redhat.com/bugzilla/attachment.cgi?id=124341
> > SMP: Allowing 0 CPUs.
> >
> > We blow up shortly afterwards.
> >
> > Signed-off-by: Dave Jones <[email protected]>
revisiting the bug, I'm not 100% sure my patch was the actual
fix or just something cosmetic, as I changed other things
too in subsequent kernels. I'll get the user to double check it.
Dave