lkml.org 
[lkml]   [2008]   [Oct]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: <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
>


\
 
 \ /
  Last update: 2008-10-05 00:33    [W:0.073 / U:0.708 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site