summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn Guo <shawn.guo@linaro.org>2012-10-04 17:12:23 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-10-13 05:28:03 +0900
commitfaaeea39363ad54b3dfe23cc982e484f6e54aa5a (patch)
treee339b7a93b25a8ebe3e12ab30feadf9e0f61093e
parent7151b69f69f84e66c550b3033f4e2cc301b66f86 (diff)
downloadlinux-stable-faaeea39363ad54b3dfe23cc982e484f6e54aa5a.tar.gz
linux-stable-faaeea39363ad54b3dfe23cc982e484f6e54aa5a.tar.bz2
linux-stable-faaeea39363ad54b3dfe23cc982e484f6e54aa5a.zip
kernel/sys.c: call disable_nonboot_cpus() in kernel_restart()
commit f96972f2dc6365421cf2366ebd61ee4cf060c8d5 upstream. As kernel_power_off() calls disable_nonboot_cpus(), we may also want to have kernel_restart() call disable_nonboot_cpus(). Doing so can help machines that require boot cpu be the last alive cpu during reboot to survive with kernel restart. This fixes one reboot issue seen on imx6q (Cortex-A9 Quad). The machine requires that the restart routine be run on the primary cpu rather than secondary ones. Otherwise, the secondary core running the restart routine will fail to come to online after reboot. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--kernel/sys.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/sys.c b/kernel/sys.c
index f88dadc80186..dd29555462c3 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -334,6 +334,7 @@ void kernel_restart_prepare(char *cmd)
void kernel_restart(char *cmd)
{
kernel_restart_prepare(cmd);
+ disable_nonboot_cpus();
if (!cmd)
printk(KERN_EMERG "Restarting system.\n");
else