Messages in this thread | | | Date | Sat, 4 Oct 2008 18:30:14 -0400 | From | Chuck Ebbert <> | Subject | Re: <PING> Re: [patch x86/core] x86: allow number of additional hotplug CPUs to be set at compile time |
| |
On Sat, 04 Oct 2008 18:52:06 +0200 Andi Kleen <andi@firstfloor.org> 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@redhat.com>
> > --- > > > > 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@linux.intel.com> > > > > 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@linux.intel.com >
| |