2006-02-24 01:41:21

by Dave Jones

[permalink] [raw]
Subject: Make SMP x86-64 kernels boot on more UP systems.

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));


2006-02-24 01:45:36

by Andi Kleen

[permalink] [raw]
Subject: Re: Make SMP x86-64 kernels boot on more UP systems.

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

2006-02-24 02:11:29

by Dave Jones

[permalink] [raw]
Subject: Re: Make SMP x86-64 kernels boot on more UP systems.

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