Thread (7 messages) 7 messages, 2 authors, 2012-12-23
STALE4913d

[PATCH] kexec: disable non-boot CPUs

From: Stephen Warren <hidden>
Date: 2012-12-20 17:59:48
Also in: kexec, linux-tegra

On 12/20/2012 10:36 AM, Will Deacon wrote:
On Thu, Dec 20, 2012 at 05:21:56PM +0000, Stephen Warren wrote:
quoted
On 12/20/2012 03:49 AM, Will Deacon wrote:
quoted
If you do manage to get this merged, please can you follow up with a patch
to remove the smp_kill_cpus bits from arch/arm/kernel/smp.c please? It only
exists as a hook to do exactly this and currently nobody is using it afaict.
I originally implemented this in
arch/arm/kernel/process.c:machine_shutdown(), which currently is:

void machine_shutdown(void)
{
#ifdef CONFIG_SMP
	smp_send_stop();
#endif
}

and I changed it to something like:

void machine_shutdown(void)
{
#ifdef CONFIG_HOTPLUG_CPU
 	disable_nonboot_cpus();
#elifdef CONFIG_SMP
	smp_send_stop();
#endif
}

... but then figured that moving it up into the core kexec code would be
better, so that everything always worked the same way.
Hmmm, isn't this racy: requiring the secondaries to hit idle and notice
they're offline and call cpu_die before the primary has replace the kernel
image?
Isn't disable_nonboot_cpus() synchronous? If not, I imagine my original
patch wasn't any better in this respect, except that the hotunplug
happened earlier, and hence reduced the likelihood of actually seeing
any such issues.
quoted
Anyway, the change above addresses Eric's concern about isolating the
change to ARM. Does that seem like a reasonable thing for the ARM code
to do?
I think you're better off using what we currently have and hanging your code
off platform_cpu_kill.
OK, I'll look into that. Joseph Lo just posted patches to implement
cpu_kill() on Tegra, which was needed to fix some issues in our hotplug
code anyway. Perhaps that will remove the need for any other changes...
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help