diff mbox

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

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

Commit Message

Guenter Roeck July 13, 2014, 3:30 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>
---
v4: No change.
v3: Use wrapper function to execute notifier call chain.
v2: Only call notifier call chain if arm_pm_restart is not set.
    Do not include linux/watchdog.h.

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

Comments

Catalin Marinas July 14, 2014, 2:55 p.m. UTC | #1
On Sun, Jul 13, 2014 at 04:30:26PM +0100, Guenter Roeck wrote:
> diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
> index 43b7c34..b2da6d5 100644
> --- a/arch/arm64/kernel/process.c
> +++ b/arch/arm64/kernel/process.c
> @@ -174,6 +174,8 @@ void machine_restart(char *cmd)
>  	/* Now call the architecture specific reboot code. */
>  	if (arm_pm_restart)
>  		arm_pm_restart(reboot_mode, cmd);
> +	else
> +		kernel_restart_notify(cmd);

There are couple of drivers specific to arm64, once they are converted
we can get rid of arm_pm_restart entirely here.
Guenter Roeck July 14, 2014, 3:01 p.m. UTC | #2
On 07/14/2014 07:55 AM, Catalin Marinas wrote:
> On Sun, Jul 13, 2014 at 04:30:26PM +0100, Guenter Roeck wrote:
>> diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
>> index 43b7c34..b2da6d5 100644
>> --- a/arch/arm64/kernel/process.c
>> +++ b/arch/arm64/kernel/process.c
>> @@ -174,6 +174,8 @@ void machine_restart(char *cmd)
>>   	/* Now call the architecture specific reboot code. */
>>   	if (arm_pm_restart)
>>   		arm_pm_restart(reboot_mode, cmd);
>> +	else
>> +		kernel_restart_notify(cmd);
>
> There are couple of drivers specific to arm64, once they are converted
> we can get rid of arm_pm_restart entirely here.
>

I thought you wanted to keep exporting arm_pm_restart. That logically implies
that you want to have the ability to write new drivers which use it, which
in turn implies that converting existing drivers would not make much sense.

Am I missing something ?

Guenter
Catalin Marinas July 14, 2014, 3:07 p.m. UTC | #3
On Mon, Jul 14, 2014 at 04:01:14PM +0100, Guenter Roeck wrote:
> On 07/14/2014 07:55 AM, Catalin Marinas wrote:
> > On Sun, Jul 13, 2014 at 04:30:26PM +0100, Guenter Roeck wrote:
> >> diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
> >> index 43b7c34..b2da6d5 100644
> >> --- a/arch/arm64/kernel/process.c
> >> +++ b/arch/arm64/kernel/process.c
> >> @@ -174,6 +174,8 @@ void machine_restart(char *cmd)
> >>   	/* Now call the architecture specific reboot code. */
> >>   	if (arm_pm_restart)
> >>   		arm_pm_restart(reboot_mode, cmd);
> >> +	else
> >> +		kernel_restart_notify(cmd);
> >
> > There are couple of drivers specific to arm64, once they are converted
> > we can get rid of arm_pm_restart entirely here.
> 
> I thought you wanted to keep exporting arm_pm_restart.

No, I just thought you don't want the restart mechanism implemented in
modules but the notifier registration still allows that, so I didn't
fully get the reasoning. But I agree on the race aspect.

> That logically implies
> that you want to have the ability to write new drivers which use it, which
> in turn implies that converting existing drivers would not make much sense.

If the new handler registration mechanism gives the functionality, I
don't see why we should keep arm_pm_restart around (for arm64 it's
easier since there aren't many drivers setting it).
diff mbox

Patch

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