2022-04-26 04:29:41

by Liu Xinpeng

[permalink] [raw]
Subject: [PATCH v3 1/4] watchdog: wdat_wdg: Using the existed function to check parameter 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 <[email protected]>
---
drivers/watchdog/wdat_wdt.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

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;
--
2.23.0


2022-04-26 08:45:11

by Guenter Roeck

[permalink] [raw]
Subject: Re: [PATCH v3 1/4] watchdog: wdat_wdg: Using the existed function to check parameter timeout

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/[email protected]/#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

2022-04-26 08:50:34

by Tzung-Bi Shih

[permalink] [raw]
Subject: Re: [PATCH v3 1/4] watchdog: wdat_wdg: Using the existed function to check parameter timeout

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/[email protected]/#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)?