Re: <PING> Re: [patch x86/core] x86: allow number of additionalhotplug CPUs to be set at compile time

From: Chuck Ebbert
Date: Sat Oct 04 2008 - 18:31:36 EST


On Sat, 04 Oct 2008 18:52:06 +0200
Andi Kleen <andi@xxxxxxxxxxxxxx> wrote:

>
> Ping? Can you please test the patch? I think that's the correct fix.
>
> I see Ingo unfortunately merged your initial broken hack, but it's wrong
> and when actually used on a distribution will break real CPU hotplug there.
> Please don't enable that CONFIG option in Fedora. Ideally drop
> the CONFIG patch completely because it cannot do much good.
>
> It should be replaced with the appended patch, which should go into 2.6.27
> after it is confirmed to fix the problem.
>

Yes, it works and I don't see how it could cause any problems.

Ingo, can we get this in 2.6.27? You can drop my original patch.

Tested-by: Chuck Ebbert <cebbert@xxxxxxxxxx>

> > ---
> >
> > Take disabled cpus into account in alternative.c
> >
> > Otherwise an UP system with one hotplug CPU will not
> > go into UP mode.
> >
> > Signed-off-by: Andi Kleen <ak@xxxxxxxxxxxxxxx>
> >
> > Index: linux-2.6.27-rc4-misc/arch/x86/kernel/alternative.c
> > ===================================================================
> > --- linux-2.6.27-rc4-misc.orig/arch/x86/kernel/alternative.c
> > +++ linux-2.6.27-rc4-misc/arch/x86/kernel/alternative.c
> > @@ -454,7 +454,7 @@ void __init alternative_instructions(voi
> > _text, _etext);
> >
> > /* Only switch to UP mode if we don't immediately boot others */
> > - if (num_possible_cpus() == 1 || setup_max_cpus <= 1)
> > + if (num_possible_cpus() - additional_cpus == 1 || setup_max_cpus <= 1)
> > alternatives_smp_switch(0);
> > }
> > #endif
> > Index: linux-2.6.27-rc4-misc/arch/x86/kernel/smpboot.c
> > ===================================================================
> > --- linux-2.6.27-rc4-misc.orig/arch/x86/kernel/smpboot.c
> > +++ linux-2.6.27-rc4-misc/arch/x86/kernel/smpboot.c
> > @@ -1276,7 +1276,7 @@ static void remove_siblinginfo(int cpu)
> > cpu_clear(cpu, cpu_sibling_setup_map);
> > }
> >
> > -static int additional_cpus __initdata = -1;
> > +int additional_cpus = -1;
> >
> > static __init int setup_additional_cpus(char *s)
> > {
> > Index: linux-2.6.27-rc4-misc/include/asm-x86/smp.h
> > ===================================================================
> > --- linux-2.6.27-rc4-misc.orig/include/asm-x86/smp.h
> > +++ linux-2.6.27-rc4-misc/include/asm-x86/smp.h
> > @@ -204,5 +204,7 @@ static inline int hard_smp_processor_id(
> > extern void cpu_uninit(void);
> > #endif
> >
> > +extern int additional_cpus;
> > +
> > #endif /* __ASSEMBLY__ */
> > #endif
> > --
> > ak@xxxxxxxxxxxxxxx
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/