Thread (4 messages) flat view 4 messages, 2 authors, 2012-08-30

[RFC/PATCH] ARM: smp: Fix cpu_up() racing with sys_reboot

From: Stephen Boyd <hidden>
Date: 2012-08-30 19:00:16
Also in: lkml

On 8/29/2012 4:53 PM, Russell King - ARM Linux wrote:
On Tue, Aug 21, 2012 at 09:03:49PM -0700, Stephen Boyd wrote:
quoted
Nothing stops a process from hotplugging in a CPU concurrently
with a sys_reboot() call. In such a situation we could have
ipi_cpu_stop() mark a cpu as 'offline' and _cpu_up() ignore the
fact that the CPU is not really offline and call the
CPU_UP_PREPARE notifier. When this happens stop_machine code will
complain that the cpu thread already exists and BUG_ON().
This puts us at odds with x86, which is a bad thing without first
investigating whether a generic solution which fixes all arches would
be more appropriate.
I went this way because it seems that we stop CPUs in architecture
specific code instead of doing it generically (although we have
smp_send_stop()?). It would be nice if we could generalize the cpu
stopping code so that reboot at the architectual level doesn't have to
do this.
A better solution may be to mark those CPUs as being not-present,
which will prevent them being hot-plugged back.
That sounds fine to me. I can s/active/present/ for v2 if we can get
some kind of consensus. I was also thinking we could stop using these
functions entirely and have some private stopped CPUs map that we check
instead.

-- 
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help