diff mbox

[v2,2/7] arm64: Support restart through restart notifier call chain

Message ID 1404689900-27421-3-git-send-email-linux@roeck-us.net (mailing list archive)
State New, archived
Headers show

Commit Message

Guenter Roeck July 6, 2014, 11:38 p.m. UTC
The kernel core now supports a notifier call chain to restart
the system. Call it if arm_pm_restart is not set.

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
---
v2: Only call notifier call chain if arm_pm_restart is not set
    Do not include linux/watchdog.h

 arch/arm64/kernel/process.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Andrew Morton July 7, 2014, 9:16 p.m. UTC | #1
On Sun,  6 Jul 2014 16:38:15 -0700 Guenter Roeck <linux@roeck-us.net> wrote:

> The kernel core now supports a notifier call chain to restart
> the system. Call it if arm_pm_restart is not set.
> 
> ...
>
> --- a/arch/arm64/kernel/process.c
> +++ b/arch/arm64/kernel/process.c
> @@ -174,6 +174,9 @@ void machine_restart(char *cmd)
>  	/* Now call the architecture specific reboot code. */
>  	if (arm_pm_restart)
>  		arm_pm_restart(reboot_mode, cmd);
> +	else
> +		blocking_notifier_call_chain(&restart_notifier_list,
> +					     reboot_mode, cmd);

It would be a bit neater to have a helper function to perform the call,
rather than directly accessing the notifier list.  Apart from anything
else, this hides the fact that the core code (presently!) uses the
blocking_ style notifiers.
Guenter Roeck July 8, 2014, 1:12 a.m. UTC | #2
On 07/07/2014 02:16 PM, Andrew Morton wrote:
> On Sun,  6 Jul 2014 16:38:15 -0700 Guenter Roeck <linux@roeck-us.net> wrote:
>
>> The kernel core now supports a notifier call chain to restart
>> the system. Call it if arm_pm_restart is not set.
>>
>> ...
>>
>> --- a/arch/arm64/kernel/process.c
>> +++ b/arch/arm64/kernel/process.c
>> @@ -174,6 +174,9 @@ void machine_restart(char *cmd)
>>   	/* Now call the architecture specific reboot code. */
>>   	if (arm_pm_restart)
>>   		arm_pm_restart(reboot_mode, cmd);
>> +	else
>> +		blocking_notifier_call_chain(&restart_notifier_list,
>> +					     reboot_mode, cmd);
>
> It would be a bit neater to have a helper function to perform the call,
> rather than directly accessing the notifier list.  Apart from anything
> else, this hides the fact that the core code (presently!) uses the
> blocking_ style notifiers.
>

Introduced kernel_restart_notify (proposals for better names welcome).
As a side effect, moved restart_notifier_list into kernel/reboot.c and
made it static.

Thanks,
Guenter
diff mbox

Patch

diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
index 43b7c34..585ebe2 100644
--- a/arch/arm64/kernel/process.c
+++ b/arch/arm64/kernel/process.c
@@ -174,6 +174,9 @@  void machine_restart(char *cmd)
 	/* Now call the architecture specific reboot code. */
 	if (arm_pm_restart)
 		arm_pm_restart(reboot_mode, cmd);
+	else
+		blocking_notifier_call_chain(&restart_notifier_list,
+					     reboot_mode, cmd);
 
 	/*
 	 * Whoops - the architecture was unable to reboot.