diff options
author | Mark Brown <broonie@kernel.org> | 2015-06-09 18:35:46 +0100 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2015-06-09 18:35:46 +0100 |
commit | 6724af486903df57338c14424e02599e371cf563 (patch) | |
tree | 0e42ae32bbfe7e93ba9db11a1124aeb4378cbd71 /arch/mips/kernel/reset.c | |
parent | d2233325e5b7891914901867ca5355347d59df14 (diff) | |
parent | 9deef024a12ebae4965c89837f662905ac88944b (diff) |
Merge branch 'fix/fsl-dspi' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi into spi-fsl-dspi
Diffstat (limited to 'arch/mips/kernel/reset.c')
-rw-r--r-- | arch/mips/kernel/reset.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/arch/mips/kernel/reset.c b/arch/mips/kernel/reset.c index 07fc5244aed4..7c746d3458e7 100644 --- a/arch/mips/kernel/reset.c +++ b/arch/mips/kernel/reset.c @@ -11,6 +11,7 @@ #include <linux/pm.h> #include <linux/types.h> #include <linux/reboot.h> +#include <linux/delay.h> #include <asm/reboot.h> @@ -29,16 +30,40 @@ void machine_restart(char *command) { if (_machine_restart) _machine_restart(command); + +#ifdef CONFIG_SMP + preempt_disable(); + smp_send_stop(); +#endif + do_kernel_restart(command); + mdelay(1000); + pr_emerg("Reboot failed -- System halted\n"); + local_irq_disable(); + while (1); } void machine_halt(void) { if (_machine_halt) _machine_halt(); + +#ifdef CONFIG_SMP + preempt_disable(); + smp_send_stop(); +#endif + local_irq_disable(); + while (1); } void machine_power_off(void) { if (pm_power_off) pm_power_off(); + +#ifdef CONFIG_SMP + preempt_disable(); + smp_send_stop(); +#endif + local_irq_disable(); + while (1); } |