Message ID | 20221221-wdat_wdt-timeleft-v1-1-8e8a314c36cc@weissschuh.net (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | watchdog: wdat_wdt: Avoid unimplemented get_timeleft | expand |
On Thu, Dec 22, 2022 at 11:43:31PM +0000, Thomas Weißschuh wrote: > As per the specification the action QUERY_COUNTDOWN_PERIOD is optional. > If the action is not implemented by the physical device the driver would > always report "0" from get_timeleft(). > Avoid confusing userspace by only providing get_timeleft() when > implemented by the hardware. > > Signed-off-by: Thomas Weißschuh <linux@weissschuh.net> Assuming that there can be only one of those watchdogs in the system, Reviewed-by: Guenter Roeck <linux@roeck-us.net> Guenter > --- > drivers/watchdog/wdat_wdt.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/watchdog/wdat_wdt.c b/drivers/watchdog/wdat_wdt.c > index ce7a4a9e4b03..0ba99bed59fc 100644 > --- a/drivers/watchdog/wdat_wdt.c > +++ b/drivers/watchdog/wdat_wdt.c > @@ -301,13 +301,12 @@ static const struct watchdog_info wdat_wdt_info = { > .identity = "wdat_wdt", > }; > > -static const struct watchdog_ops wdat_wdt_ops = { > +static struct watchdog_ops wdat_wdt_ops = { > .owner = THIS_MODULE, > .start = wdat_wdt_start, > .stop = wdat_wdt_stop, > .ping = wdat_wdt_ping, > .set_timeout = wdat_wdt_set_timeout, > - .get_timeleft = wdat_wdt_get_timeleft, > }; > > static int wdat_wdt_probe(struct platform_device *pdev) > @@ -436,6 +435,9 @@ static int wdat_wdt_probe(struct platform_device *pdev) > list_add_tail(&instr->node, instructions); > } > > + if (wdat->instructions[ACPI_WDAT_GET_CURRENT_COUNTDOWN]) > + wdat_wdt_ops.get_timeleft = wdat_wdt_get_timeleft; > + > wdat_wdt_boot_status(wdat); > wdat_wdt_set_running(wdat); > > > --- > base-commit: 0a924817d2ed9396401e0557c6134276d2e26382 > change-id: 20221221-wdat_wdt-timeleft-b38d0db39d9f > > Best regards, > -- > Thomas Weißschuh <linux@weissschuh.net>
diff --git a/drivers/watchdog/wdat_wdt.c b/drivers/watchdog/wdat_wdt.c index ce7a4a9e4b03..0ba99bed59fc 100644 --- a/drivers/watchdog/wdat_wdt.c +++ b/drivers/watchdog/wdat_wdt.c @@ -301,13 +301,12 @@ static const struct watchdog_info wdat_wdt_info = { .identity = "wdat_wdt", }; -static const struct watchdog_ops wdat_wdt_ops = { +static struct watchdog_ops wdat_wdt_ops = { .owner = THIS_MODULE, .start = wdat_wdt_start, .stop = wdat_wdt_stop, .ping = wdat_wdt_ping, .set_timeout = wdat_wdt_set_timeout, - .get_timeleft = wdat_wdt_get_timeleft, }; static int wdat_wdt_probe(struct platform_device *pdev) @@ -436,6 +435,9 @@ static int wdat_wdt_probe(struct platform_device *pdev) list_add_tail(&instr->node, instructions); } + if (wdat->instructions[ACPI_WDAT_GET_CURRENT_COUNTDOWN]) + wdat_wdt_ops.get_timeleft = wdat_wdt_get_timeleft; + wdat_wdt_boot_status(wdat); wdat_wdt_set_running(wdat);
As per the specification the action QUERY_COUNTDOWN_PERIOD is optional. If the action is not implemented by the physical device the driver would always report "0" from get_timeleft(). Avoid confusing userspace by only providing get_timeleft() when implemented by the hardware. Signed-off-by: Thomas Weißschuh <linux@weissschuh.net> --- drivers/watchdog/wdat_wdt.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) --- base-commit: 0a924817d2ed9396401e0557c6134276d2e26382 change-id: 20221221-wdat_wdt-timeleft-b38d0db39d9f Best regards,