* [PATCH] ppc64: Fix cpu_up race
[not found] ` <20040729053011.GC6456@krispykreme>
@ 2004-07-30 5:24 ` Srivatsa Vaddagiri
2004-07-30 19:03 ` Joel Schopp
0 siblings, 1 reply; 2+ messages in thread
From: Srivatsa Vaddagiri @ 2004-07-30 5:24 UTC (permalink / raw)
To: Andrew Morton; +Cc: Nathan Lynch, anton, linux-kernel
On Thu, Jul 29, 2004 at 03:30:11PM +1000, Anton Blanchard wrote:
>
> > I think Anton pushed this to ameslab. I presume there should be some mechanism
> > for ameslab stuff to be included mainline. If there is such mechanism, then
> > I dont want to push the patch myself.
>
> It looks good, could you send it directly to akpm, ccing me?
Andrew,
Patch below fixes a cpu_up race in PPC64. Please apply.
Signed-off-by : Srivatsa Vaddagiri <vatsa@in.ibm.com>
Signed-off-by : Anton Blanchard <anton@samba.org>
---
linux-2.6.8-rc2-vatsa/arch/ppc64/kernel/smp.c | 10 +++++++++-
1 files changed, 9 insertions(+), 1 deletion(-)
diff -puN arch/ppc64/kernel/smp.c~ppc64_cpu_up_fix arch/ppc64/kernel/smp.c
--- linux-2.6.8-rc2/arch/ppc64/kernel/smp.c~ppc64_cpu_up_fix 2004-07-30 10:33:55.000000000 +0530
+++ linux-2.6.8-rc2-vatsa/arch/ppc64/kernel/smp.c 2004-07-30 10:34:02.000000000 +0530
@@ -927,7 +927,11 @@ int __devinit __cpu_up(unsigned int cpu)
if (smp_ops->give_timebase)
smp_ops->give_timebase();
- cpu_set(cpu, cpu_online_map);
+
+ /* Wait until cpu puts itself in the online map */
+ while (!cpu_online(cpu))
+ cpu_relax();
+
return 0;
}
@@ -963,6 +967,10 @@ int __devinit start_secondary(void *unus
#endif
#endif
+ spin_lock(&call_lock);
+ cpu_set(cpu, cpu_online_map);
+ spin_unlock(&call_lock);
+
local_irq_enable();
return cpu_idle(NULL);
_
--
Thanks and Regards,
Srivatsa Vaddagiri,
Linux Technology Center,
IBM Software Labs,
Bangalore, INDIA - 560017
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] ppc64: Fix cpu_up race
2004-07-30 5:24 ` [PATCH] ppc64: Fix cpu_up race Srivatsa Vaddagiri
@ 2004-07-30 19:03 ` Joel Schopp
0 siblings, 0 replies; 2+ messages in thread
From: Joel Schopp @ 2004-07-30 19:03 UTC (permalink / raw)
To: vatsa; +Cc: Andrew Morton, Nathan Lynch, anton, linux-kernel
I've tested this patch extensively and it does fix the race.
In more detail the race is that the cpu can be running before it is
marked in the cpu_online_map. While running it can go idle and the idle
loop checks cpu_online_map, sees that it is not set, and assumes that a
hotplug remove is in progress and that it should stop itself. By the
time the cpu is marked online it is stopped.
Srivatsa Vaddagiri wrote:
> On Thu, Jul 29, 2004 at 03:30:11PM +1000, Anton Blanchard wrote:
>
>>
>>
>>>I think Anton pushed this to ameslab. I presume there should be some mechanism
>>>for ameslab stuff to be included mainline. If there is such mechanism, then
>>>I dont want to push the patch myself.
>>
>>It looks good, could you send it directly to akpm, ccing me?
>
>
> Andrew,
> Patch below fixes a cpu_up race in PPC64. Please apply.
>
>
> Signed-off-by : Srivatsa Vaddagiri <vatsa@in.ibm.com>
> Signed-off-by : Anton Blanchard <anton@samba.org>
>
>
> ---
>
> linux-2.6.8-rc2-vatsa/arch/ppc64/kernel/smp.c | 10 +++++++++-
> 1 files changed, 9 insertions(+), 1 deletion(-)
>
> diff -puN arch/ppc64/kernel/smp.c~ppc64_cpu_up_fix arch/ppc64/kernel/smp.c
> --- linux-2.6.8-rc2/arch/ppc64/kernel/smp.c~ppc64_cpu_up_fix 2004-07-30 10:33:55.000000000 +0530
> +++ linux-2.6.8-rc2-vatsa/arch/ppc64/kernel/smp.c 2004-07-30 10:34:02.000000000 +0530
> @@ -927,7 +927,11 @@ int __devinit __cpu_up(unsigned int cpu)
>
> if (smp_ops->give_timebase)
> smp_ops->give_timebase();
> - cpu_set(cpu, cpu_online_map);
> +
> + /* Wait until cpu puts itself in the online map */
> + while (!cpu_online(cpu))
> + cpu_relax();
> +
> return 0;
> }
>
> @@ -963,6 +967,10 @@ int __devinit start_secondary(void *unus
> #endif
> #endif
>
> + spin_lock(&call_lock);
> + cpu_set(cpu, cpu_online_map);
> + spin_unlock(&call_lock);
> +
> local_irq_enable();
>
> return cpu_idle(NULL);
>
> _
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2004-07-30 19:04 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1091052774.24763.14.camel@pants.austin.ibm.com>
[not found] ` <20040729052716.GA24612@in.ibm.com>
[not found] ` <20040729053011.GC6456@krispykreme>
2004-07-30 5:24 ` [PATCH] ppc64: Fix cpu_up race Srivatsa Vaddagiri
2004-07-30 19:03 ` Joel Schopp
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.