From patchwork Mon Aug 20 07:52:05 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [RFC] ARM: busy loop at the end of machine_power_off Date: Sun, 19 Aug 2012 21:52:05 -0000 From: =?utf-8?q?Uwe_Kleine-K=C3=B6nig_=3Cu=2Ekleine-koenig=40pengutronix=2E?= =?utf-8?b?ZGU+?= X-Patchwork-Id: 178698 Message-Id: <1345449125-23212-1-git-send-email-u.kleine-koenig@pengutronix.de> To: linux-arm-kernel@lists.infradead.org Cc: kernel@pengutronix.de When machine_power_off returns the kernel panics with Attempted to kill init! . So let machine_power_off busy loop as machine_halt does, too. Signed-off-by: Uwe Kleine-König --- This is triggered when issuing poweroff only if the machine sets the pm_power_off callback because the reboot system call does if ((cmd == LINUX_REBOOT_CMD_POWER_OFF) && !pm_power_off) cmd = LINUX_REBOOT_CMD_HALT; So it might even be safe to call pm_power_off unconditionally in machine_power_off. Best regards Uwe arch/arm/kernel/process.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index 693b744..eda0846 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c @@ -256,6 +256,8 @@ void machine_power_off(void) machine_shutdown(); if (pm_power_off) pm_power_off(); + local_irq_disable(); + while (1); } void machine_restart(char *cmd)