From: Domenico Andreoli <domenico.andreoli@xxxxxxxxx> Proof of concept: ARM as a consumer of the machine reset hooks. Cc: Russell King <linux@xxxxxxxxxxxxxxxx> Cc: Arnd Bergmann <arnd@xxxxxxxx> Cc: Olof Johansson <olof@xxxxxxxxx> Cc: Will Deacon <will.deacon@xxxxxxx> Cc: linux-arch@xxxxxxxxxxxxxxx Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx Signed-off-by: Domenico Andreoli <domenico.andreoli@xxxxxxxxx> --- arch/arm/kernel/process.c | 14 ++++++++------ kernel/power/Kconfig | 1 + 2 files changed, 9 insertions(+), 6 deletions(-) Index: b/arch/arm/kernel/process.c =================================================================== --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c @@ -33,6 +33,7 @@ #include <linux/cpuidle.h> #include <linux/leds.h> #include <linux/reboot.h> +#include <linux/machine_reset.h> #include <asm/cacheflush.h> #include <asm/idmap.h> @@ -114,17 +115,13 @@ void soft_restart(unsigned long addr) BUG(); } -static void null_restart(enum reboot_mode reboot_mode, const char *cmd) -{ -} - /* * Function pointers to optional machine specific functions */ void (*pm_power_off)(void); EXPORT_SYMBOL(pm_power_off); -void (*arm_pm_restart)(enum reboot_mode reboot_mode, const char *cmd) = null_restart; +void (*arm_pm_restart)(enum reboot_mode reboot_mode, const char *cmd); EXPORT_SYMBOL_GPL(arm_pm_restart); /* @@ -217,6 +214,8 @@ void machine_power_off(void) if (pm_power_off) pm_power_off(); + else + default_power_off(); } /* @@ -235,7 +234,10 @@ void machine_restart(char *cmd) local_irq_disable(); smp_send_stop(); - arm_pm_restart(reboot_mode, cmd); + if (arm_pm_restart) + arm_pm_restart(reboot_mode, cmd); + else + default_restart(reboot_mode, cmd); /* Give a grace period for failure to restart of 1s */ mdelay(1000); Index: b/kernel/power/Kconfig =================================================================== --- a/kernel/power/Kconfig +++ b/kernel/power/Kconfig @@ -297,3 +297,4 @@ config CPU_PM config MACHINE_RESET bool default n + depends on ARM -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html