Message ID | 1650944120-30954-2-git-send-email-liuxp11@chinatelecom.cn (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Some Impovements about watchdog | expand |
On Tue, Apr 26, 2022 at 11:35:17AM +0800, Liu Xinpeng wrote: > The module arguement timeout is a configured timeout value. > “separate minimum and maximum HW timeouts and configured timeout value.” > (patch v1 is explained by Guenter Roeck) > > So using watchdog_timeout_invalid to check timeout invalid is more justified. The v3 commit message doesn't help too much for understanding the patch. You could see [1] for some reference sentences. See also [2]. [1]: https://patchwork.kernel.org/project/linux-watchdog/patch/1650874932-18407-2-git-send-email-liuxp11@chinatelecom.cn/#24831418 [2]: https://elixir.bootlin.com/linux/v5.18-rc4/source/Documentation/watchdog/watchdog-kernel-api.rst#L95 > @@ -14,6 +14,7 @@ > #include <linux/watchdog.h> > > #define MAX_WDAT_ACTIONS ACPI_WDAT_ACTION_RESERVED > +#define WDAT_TIMEOUT_MIN 1 To be consistent, would MIN_WDAT_TIMEOUT be a better name? > @@ -344,6 +345,7 @@ static int wdat_wdt_probe(struct platform_device *pdev) > wdat->period = tbl->timer_period; > wdat->wdd.min_hw_heartbeat_ms = wdat->period * tbl->min_count; > wdat->wdd.max_hw_heartbeat_ms = wdat->period * tbl->max_count; > + wdat->wdd.min_timeout = WDAT_TIMEOUT_MIN; Does it really need to configure the `min_timeout`? What if leave it as is (i.e. 0)?
On 4/25/22 23:10, Tzung-Bi Shih wrote: > On Tue, Apr 26, 2022 at 11:35:17AM +0800, Liu Xinpeng wrote: >> The module arguement timeout is a configured timeout value. >> “separate minimum and maximum HW timeouts and configured timeout value.” >> (patch v1 is explained by Guenter Roeck) >> >> So using watchdog_timeout_invalid to check timeout invalid is more justified. > > The v3 commit message doesn't help too much for understanding the patch. You > could see [1] for some reference sentences. See also [2]. > > [1]: https://patchwork.kernel.org/project/linux-watchdog/patch/1650874932-18407-2-git-send-email-liuxp11@chinatelecom.cn/#24831418 > [2]: https://elixir.bootlin.com/linux/v5.18-rc4/source/Documentation/watchdog/watchdog-kernel-api.rst#L95 > >> @@ -14,6 +14,7 @@ >> #include <linux/watchdog.h> >> >> #define MAX_WDAT_ACTIONS ACPI_WDAT_ACTION_RESERVED >> +#define WDAT_TIMEOUT_MIN 1 > > To be consistent, would MIN_WDAT_TIMEOUT be a better name? > Should just have set it to 1 below without using a define. >> @@ -344,6 +345,7 @@ static int wdat_wdt_probe(struct platform_device *pdev) >> wdat->period = tbl->timer_period; >> wdat->wdd.min_hw_heartbeat_ms = wdat->period * tbl->min_count; >> wdat->wdd.max_hw_heartbeat_ms = wdat->period * tbl->max_count; >> + wdat->wdd.min_timeout = WDAT_TIMEOUT_MIN; > > Does it really need to configure the `min_timeout`? What if leave it as is > (i.e. 0)? It is better to set it to 1. Otherwise "0" is considered a valid timeout, which doesn't make much sense. Guenter
diff --git a/drivers/watchdog/wdat_wdt.c b/drivers/watchdog/wdat_wdt.c index 195c8c004b69..3040a0554055 100644 --- a/drivers/watchdog/wdat_wdt.c +++ b/drivers/watchdog/wdat_wdt.c @@ -14,6 +14,7 @@ #include <linux/watchdog.h> #define MAX_WDAT_ACTIONS ACPI_WDAT_ACTION_RESERVED +#define WDAT_TIMEOUT_MIN 1 /** * struct wdat_instruction - Single ACPI WDAT instruction @@ -344,6 +345,7 @@ static int wdat_wdt_probe(struct platform_device *pdev) wdat->period = tbl->timer_period; wdat->wdd.min_hw_heartbeat_ms = wdat->period * tbl->min_count; wdat->wdd.max_hw_heartbeat_ms = wdat->period * tbl->max_count; + wdat->wdd.min_timeout = WDAT_TIMEOUT_MIN; wdat->stopped_in_sleep = tbl->flags & ACPI_WDAT_STOPPED; wdat->wdd.info = &wdat_wdt_info; wdat->wdd.ops = &wdat_wdt_ops; @@ -450,8 +452,7 @@ static int wdat_wdt_probe(struct platform_device *pdev) * watchdog properly after it has opened the device. In some cases * the BIOS default is too short and causes immediate reboot. */ - if (timeout * 1000 < wdat->wdd.min_hw_heartbeat_ms || - timeout * 1000 > wdat->wdd.max_hw_heartbeat_ms) { + if (watchdog_timeout_invalid(&wdat->wdd, timeout)) { dev_warn(dev, "Invalid timeout %d given, using %d\n", timeout, WDAT_DEFAULT_TIMEOUT); timeout = WDAT_DEFAULT_TIMEOUT;
The module arguement timeout is a configured timeout value. “separate minimum and maximum HW timeouts and configured timeout value.” (patch v1 is explained by Guenter Roeck) So using watchdog_timeout_invalid to check timeout invalid is more justified. Signed-off-by: Liu Xinpeng <liuxp11@chinatelecom.cn> --- drivers/watchdog/wdat_wdt.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)