diff mbox series

watchdog: imx_sc_wdt: Fix reboot on crash

Message ID 20200412230122.5601-1-festevam@gmail.com (mailing list archive)
State Accepted
Headers show
Series watchdog: imx_sc_wdt: Fix reboot on crash | expand

Commit Message

Fabio Estevam April 12, 2020, 11:01 p.m. UTC
Currently when running the samples/watchdog/watchdog-simple.c
application and forcing a kernel crash by doing:

# ./watchdog-simple &
# echo c > /proc/sysrq-trigger

The system does not reboot as expected.

Fix it by calling imx_sc_wdt_set_timeout() to configure the i.MX8QXP
watchdog with a proper timeout.

Cc: <stable@vger.kernel.org>
Fixes: 986857acbc9a ("watchdog: imx_sc: Add i.MX system controller watchdog support")
Reported-by: Breno Lima <breno.lima@nxp.com>
Signed-off-by: Fabio Estevam <festevam@gmail.com>
---
 drivers/watchdog/imx_sc_wdt.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Guenter Roeck April 13, 2020, 12:17 a.m. UTC | #1
On 4/12/20 4:01 PM, Fabio Estevam wrote:
> Currently when running the samples/watchdog/watchdog-simple.c
> application and forcing a kernel crash by doing:
> 
> # ./watchdog-simple &
> # echo c > /proc/sysrq-trigger
> 
> The system does not reboot as expected.
> 
> Fix it by calling imx_sc_wdt_set_timeout() to configure the i.MX8QXP
> watchdog with a proper timeout.
> 
> Cc: <stable@vger.kernel.org>
> Fixes: 986857acbc9a ("watchdog: imx_sc: Add i.MX system controller watchdog support")
> Reported-by: Breno Lima <breno.lima@nxp.com>
> Signed-off-by: Fabio Estevam <festevam@gmail.com>

Reviewed-by: Guenter Roeck <linux@roeck-us.net>

> ---
>  drivers/watchdog/imx_sc_wdt.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/watchdog/imx_sc_wdt.c b/drivers/watchdog/imx_sc_wdt.c
> index 60a32469f7de..e9ee22a7cb45 100644
> --- a/drivers/watchdog/imx_sc_wdt.c
> +++ b/drivers/watchdog/imx_sc_wdt.c
> @@ -175,6 +175,11 @@ static int imx_sc_wdt_probe(struct platform_device *pdev)
>  	wdog->timeout = DEFAULT_TIMEOUT;
>  
>  	watchdog_init_timeout(wdog, 0, dev);
> +
> +	ret = imx_sc_wdt_set_timeout(wdog, wdog->timeout);
> +	if (ret)
> +		return ret;
> +
>  	watchdog_stop_on_reboot(wdog);
>  	watchdog_stop_on_unregister(wdog);
>  
>
Breno Matheus Lima April 13, 2020, 1:19 p.m. UTC | #2
Hi Fabio,

Em dom., 12 de abr. de 2020 às 20:17, Guenter Roeck
<linux@roeck-us.net> escreveu:
>
> On 4/12/20 4:01 PM, Fabio Estevam wrote:
> > Currently when running the samples/watchdog/watchdog-simple.c
> > application and forcing a kernel crash by doing:
> >
> > # ./watchdog-simple &
> > # echo c > /proc/sysrq-trigger
> >
> > The system does not reboot as expected.
> >
> > Fix it by calling imx_sc_wdt_set_timeout() to configure the i.MX8QXP
> > watchdog with a proper timeout.
> >
> > Cc: <stable@vger.kernel.org>
> > Fixes: 986857acbc9a ("watchdog: imx_sc: Add i.MX system controller watchdog support")
> > Reported-by: Breno Lima <breno.lima@nxp.com>
> > Signed-off-by: Fabio Estevam <festevam@gmail.com>
>
> Reviewed-by: Guenter Roeck <linux@roeck-us.net>

Thanks for the fix.

Tested-by: Breno Lima <breno.lima@nxp.com>
diff mbox series

Patch

diff --git a/drivers/watchdog/imx_sc_wdt.c b/drivers/watchdog/imx_sc_wdt.c
index 60a32469f7de..e9ee22a7cb45 100644
--- a/drivers/watchdog/imx_sc_wdt.c
+++ b/drivers/watchdog/imx_sc_wdt.c
@@ -175,6 +175,11 @@  static int imx_sc_wdt_probe(struct platform_device *pdev)
 	wdog->timeout = DEFAULT_TIMEOUT;
 
 	watchdog_init_timeout(wdog, 0, dev);
+
+	ret = imx_sc_wdt_set_timeout(wdog, wdog->timeout);
+	if (ret)
+		return ret;
+
 	watchdog_stop_on_reboot(wdog);
 	watchdog_stop_on_unregister(wdog);