From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753708AbbCDX72 (ORCPT ); Wed, 4 Mar 2015 18:59:28 -0500 Received: from mail-yh0-f74.google.com ([209.85.213.74]:33070 "EHLO mail-yh0-f74.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753366AbbCDX71 (ORCPT ); Wed, 4 Mar 2015 18:59:27 -0500 From: Andrew Bresticker To: Ralf Baechle Cc: linux-mips@linux-mips.org, linux-kernel@vger.kernel.org, Andrew Bresticker Subject: [PATCH] MIPS: Provide fallback reboot/poweroff/halt implementations Date: Wed, 4 Mar 2015 15:59:23 -0800 Message-Id: <1425513563-9897-1-git-send-email-abrestic@chromium.org> X-Mailer: git-send-email 2.2.0.rc0.207.ga3a616c Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 --- 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