Message ID | 20220212021033.2344-1-eduval@amazon.com |
---|---|
State | New |
Headers | show |
Series | [1/1] watchdog: aspeed: add nowayout support | expand |
On 2/11/22 18:10, Eduardo Valentin wrote: > Add support for not stopping the watchdog > when the userspace application quits. At > closing of the device, the driver cannot > determine if this was a graceful closure > or if the app crashed. If the support > of nowayout on this driver, the system integrator > can select the behaviour by setting the kernel > config and enabling it. > > Cc: Wim Van Sebroeck <wim@linux-watchdog.org> (maintainer:WATCHDOG DEVICE DRIVERS) > Cc: Guenter Roeck <linux@roeck-us.net> (maintainer:WATCHDOG DEVICE DRIVERS) > Cc: Joel Stanley <joel@jms.id.au> (supporter:ARM/ASPEED MACHINE SUPPORT) > Cc: Andrew Jeffery <andrew@aj.id.au> (reviewer:ARM/ASPEED MACHINE SUPPORT) > Cc: linux-watchdog@vger.kernel.org (open list:WATCHDOG DEVICE DRIVERS) > Cc: linux-arm-kernel@lists.infradead.org (moderated list:ARM/ASPEED MACHINE SUPPORT) > Cc: linux-aspeed@lists.ozlabs.org (moderated list:ARM/ASPEED MACHINE SUPPORT) > Cc: linux-kernel@vger.kernel.org (open list) > Signed-off-by: Eduardo Valentin <eduval@amazon.com> > Signed-off-by: Eduardo Valentin <evalenti@kernel.org> Reviewed-by: Guenter Roeck <linux@roeck-us.net> > --- > drivers/watchdog/aspeed_wdt.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/watchdog/aspeed_wdt.c b/drivers/watchdog/aspeed_wdt.c > index 436571b6fc79..bd06622813eb 100644 > --- a/drivers/watchdog/aspeed_wdt.c > +++ b/drivers/watchdog/aspeed_wdt.c > @@ -13,6 +13,11 @@ > #include <linux/platform_device.h> > #include <linux/watchdog.h> > > +static bool nowayout = WATCHDOG_NOWAYOUT; > +module_param(nowayout, bool, 0); > +MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=" > + __MODULE_STRING(WATCHDOG_NOWAYOUT) ")"); > + > struct aspeed_wdt { > struct watchdog_device wdd; > void __iomem *base; > @@ -266,6 +271,8 @@ static int aspeed_wdt_probe(struct platform_device *pdev) > wdt->wdd.timeout = WDT_DEFAULT_TIMEOUT; > watchdog_init_timeout(&wdt->wdd, 0, dev); > > + watchdog_set_nowayout(&wdt->wdd, nowayout); > + > np = dev->of_node; > > ofdid = of_match_node(aspeed_wdt_of_table, np);
diff --git a/drivers/watchdog/aspeed_wdt.c b/drivers/watchdog/aspeed_wdt.c index 436571b6fc79..bd06622813eb 100644 --- a/drivers/watchdog/aspeed_wdt.c +++ b/drivers/watchdog/aspeed_wdt.c @@ -13,6 +13,11 @@ #include <linux/platform_device.h> #include <linux/watchdog.h> +static bool nowayout = WATCHDOG_NOWAYOUT; +module_param(nowayout, bool, 0); +MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=" + __MODULE_STRING(WATCHDOG_NOWAYOUT) ")"); + struct aspeed_wdt { struct watchdog_device wdd; void __iomem *base; @@ -266,6 +271,8 @@ static int aspeed_wdt_probe(struct platform_device *pdev) wdt->wdd.timeout = WDT_DEFAULT_TIMEOUT; watchdog_init_timeout(&wdt->wdd, 0, dev); + watchdog_set_nowayout(&wdt->wdd, nowayout); + np = dev->of_node; ofdid = of_match_node(aspeed_wdt_of_table, np);