public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] MIPS: Provide fallback reboot/poweroff/halt implementations
@ 2015-03-04 23:59 Andrew Bresticker
  2015-03-06 11:08 ` Maciej W. Rozycki
  2015-03-24 14:22 ` James Hogan
  0 siblings, 2 replies; 5+ messages in thread
From: Andrew Bresticker @ 2015-03-04 23:59 UTC (permalink / raw)
  To: Ralf Baechle; +Cc: linux-mips, linux-kernel, Andrew Bresticker

If a machine-specific hook is not implemented for restart, poweroff,
or halt, fall back to halting secondary CPUs, disabling interrupts,
and spinning.  In the case of restart, attempt to restart the system
via do_kernel_restart() (which will call any registered restart
handlers) before halting.

Signed-off-by: Andrew Bresticker <abrestic@chromium.org>
---
 arch/mips/kernel/reset.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/arch/mips/kernel/reset.c b/arch/mips/kernel/reset.c
index 07fc524..87b1f08 100644
--- a/arch/mips/kernel/reset.c
+++ b/arch/mips/kernel/reset.c
@@ -29,16 +29,36 @@ void machine_restart(char *command)
 {
 	if (_machine_restart)
 		_machine_restart(command);
+
+#ifdef CONFIG_SMP
+	smp_send_stop();
+#endif
+	do_kernel_restart(command);
+	pr_emerg("Reboot failed -- System halted\n");
+	local_irq_disable();
+	while (1);
 }
 
 void machine_halt(void)
 {
 	if (_machine_halt)
 		_machine_halt();
+
+#ifdef CONFIG_SMP
+	smp_send_stop();
+#endif
+	local_irq_disable();
+	while (1);
 }
 
 void machine_power_off(void)
 {
 	if (pm_power_off)
 		pm_power_off();
+
+#ifdef CONFIG_SMP
+	smp_send_stop();
+#endif
+	local_irq_disable();
+	while (1);
 }
-- 
2.2.0.rc0.207.ga3a616c


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-03-25  6:12 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-03-04 23:59 [PATCH] MIPS: Provide fallback reboot/poweroff/halt implementations Andrew Bresticker
2015-03-06 11:08 ` Maciej W. Rozycki
2015-03-24 14:22 ` James Hogan
2015-03-24 16:30   ` Andrew Bresticker
2015-03-25  6:12   ` Andrew Bresticker

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox