Re: [2/5] watchdog: octeon: Handle the FROZEN hot plug notifier actions.
From: Guenter Roeck
Date: Thu Apr 07 2016 - 09:19:29 EST
On Fri, Mar 18, 2016 at 10:26:08PM +0100, Richard Cochran wrote:
> When performing a suspend operation, the kernel brings all of the
> non-boot CPUs offline, calling the hot plug notifiers with the flag,
> CPU_TASKS_FROZEN, set in the action code. Similarly, during resume,
> the CPUs are brought back online, but again the notifiers have the
> FROZEN flag set.
>
> While some very few drivers really need to treat suspend/resume
> specially, this driver unintentionally ignores the notifications.
>
> This patch changes the driver to disable the watchdog interrupt
> whenever the CPU goes offline, and to enable it whenever the CPU goes
> back online. As a result, the suspended state is no longer a special
> case that leaves the watchdog active.
>
> Cc: Wim Van Sebroeck <wim@xxxxxxxxx>
> Cc: Guenter Roeck <linux@xxxxxxxxxxxx>
> Cc: linux-watchdog@xxxxxxxxxxxxxxx
> Signed-off-by: Richard Cochran <rcochran@xxxxxxxxxxxxx>
Reviewed-by: Guenter Roeck <linux@xxxxxxxxxxxx>
> ---
> drivers/watchdog/octeon-wdt-main.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/watchdog/octeon-wdt-main.c b/drivers/watchdog/octeon-wdt-main.c
> index 14521c8..b55981f 100644
> --- a/drivers/watchdog/octeon-wdt-main.c
> +++ b/drivers/watchdog/octeon-wdt-main.c
> @@ -431,7 +431,7 @@ static int octeon_wdt_cpu_callback(struct notifier_block *nfb,
> {
> unsigned int cpu = (unsigned long)hcpu;
>
> - switch (action) {
> + switch (action & ~CPU_TASKS_FROZEN) {
> case CPU_DOWN_PREPARE:
> octeon_wdt_disable_interrupt(cpu);
> break;