From 1c7ffc32eaadfae3e7ab106359af0cf21b7e94c1 Mon Sep 17 00:00:00 2001 From: Guenter Roeck Date: Fri, 26 Sep 2014 00:03:16 +0000 Subject: arm64: support restart through restart handler call chain The kernel core now supports a restart handler call chain to restart the system. Call it if arm_pm_restart is not set. Signed-off-by: Guenter Roeck Acked-by: Catalin Marinas Acked-by: Heiko Stuebner Cc: Arnd Bergmann Cc: David Woodhouse Cc: Dmitry Eremin-Solenikov Cc: Ingo Molnar Cc: Jonas Jensen Cc: Maxime Ripard Cc: Randy Dunlap Cc: Russell King Cc: Steven Rostedt Cc: Tomasz Figa Cc: Will Deacon Cc: Wim Van Sebroeck Signed-off-by: Andrew Morton --- arch/arm64/kernel/process.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'arch') diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c index 1309d64aa926..0d3fb9fd0dca 100644 --- a/arch/arm64/kernel/process.c +++ b/arch/arm64/kernel/process.c @@ -180,6 +180,8 @@ void machine_restart(char *cmd) /* Now call the architecture specific reboot code. */ if (arm_pm_restart) arm_pm_restart(reboot_mode, cmd); + else + do_kernel_restart(cmd); /* * Whoops - the architecture was unable to reboot. -- cgit v1.2.3 From 1a9607a3be14a43868c5e6a35962e7f6be9bcfe1 Mon Sep 17 00:00:00 2001 From: Guenter Roeck Date: Fri, 26 Sep 2014 00:03:17 +0000 Subject: arm: support restart through restart handler call chain The kernel core now supports a restart handler call chain for system restart functions. With this change, the arm_pm_restart callback is now optional, so drop its initialization and check if it is set before calling it. Only call the kernel restart handler if arm_pm_restart is not set. Signed-off-by: Guenter Roeck Acked-by: Catalin Marinas Acked-by: Heiko Stuebner Cc: Arnd Bergmann Cc: David Woodhouse Cc: Dmitry Eremin-Solenikov Cc: Ingo Molnar Cc: Jonas Jensen Cc: Maxime Ripard Cc: Randy Dunlap Cc: Russell King Cc: Steven Rostedt Cc: Tomasz Figa Cc: Will Deacon Cc: Wim Van Sebroeck Signed-off-by: Andrew Morton --- arch/arm/kernel/process.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'arch') diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index 81ef686a91ca..ea279f7a8767 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c @@ -114,17 +114,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); /* @@ -230,7 +226,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 + do_kernel_restart(cmd); /* Give a grace period for failure to restart of 1s */ mdelay(1000); -- cgit v1.2.3 From 6cd6d94d96d9b1cd8a62da91aac44cf56e301e75 Mon Sep 17 00:00:00 2001 From: Guenter Roeck Date: Fri, 26 Sep 2014 00:03:17 +0000 Subject: arm/arm64: unexport restart handlers Implementing a restart handler in a module don't make sense as there would be no guarantee that the module is loaded when a restart is needed. Unexport arm_pm_restart to ensure that no one gets the idea to do it anyway. Signed-off-by: Guenter Roeck Acked-by: Catalin Marinas Acked-by: Heiko Stuebner Cc: Arnd Bergmann Cc: David Woodhouse Cc: Dmitry Eremin-Solenikov Cc: Ingo Molnar Cc: Jonas Jensen Cc: Maxime Ripard Cc: Randy Dunlap Cc: Russell King Cc: Steven Rostedt Cc: Tomasz Figa Cc: Will Deacon Cc: Wim Van Sebroeck Signed-off-by: Andrew Morton --- arch/arm/kernel/process.c | 1 - arch/arm64/kernel/process.c | 1 - 2 files changed, 2 deletions(-) (limited to 'arch') diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index ea279f7a8767..250b6f652afc 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c @@ -121,7 +121,6 @@ void (*pm_power_off)(void); EXPORT_SYMBOL(pm_power_off); void (*arm_pm_restart)(enum reboot_mode reboot_mode, const char *cmd); -EXPORT_SYMBOL_GPL(arm_pm_restart); /* * This is our default idle handler. diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c index 0d3fb9fd0dca..398ab05081b4 100644 --- a/arch/arm64/kernel/process.c +++ b/arch/arm64/kernel/process.c @@ -98,7 +98,6 @@ void (*pm_power_off)(void); EXPORT_SYMBOL_GPL(pm_power_off); void (*arm_pm_restart)(enum reboot_mode reboot_mode, const char *cmd); -EXPORT_SYMBOL_GPL(arm_pm_restart); /* * This is our default idle handler. -- cgit v1.2.3