watchdog: core: Always set WDOG_HW_RUNNING when starting watchdog
authorGuenter Roeck <linux@roeck-us.net>
Sat, 4 Mar 2023 16:16:07 +0000 (08:16 -0800)
committerWim Van Sebroeck <wim@linux-watchdog.org>
Sat, 22 Apr 2023 10:53:38 +0000 (12:53 +0200)
commit12cee6efb7b94918747d09ba7488dd5cb1bbe2be
tree50fab9b6f5cc05d58a3815c598806a8f31888570
parent0ea0a825192efdd44af4c016faaab1a3d2073c78
watchdog: core: Always set WDOG_HW_RUNNING when starting watchdog

The use of WDOG_HW_RUNNING is currently inconsistent: If set by the
driver, it will remain set until the watchdog device is opened and then
closed. If set by the watchdog core, it is only set if the watchdog
can not be stopped when closed. Subsequenty it is always only set while
the watchdog is closed and the hardware watchdog is running.

This is both misleading and inconsistent: The API states that
watchdog_hw_running() indicates that the hardware watchdog is running.
This is currently not always the case. Set WDOG_HW_RUNNING whenever a
watchdog is successfully started for consistent behavior and to
accurately report its status.

This means that we no longer have to check for both watchdog_active()
and watchdog_hw_running() to check if the watchdog is running because
watchdog_hw_running() now implies watchdog_active(). Simplify the code
accordingly where warranted.

Cc: Wang Wensheng <wangwensheng4@huawei.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/r/20230304161607.1418952-1-linux@roeck-us.net
Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
drivers/watchdog/watchdog_core.c
drivers/watchdog/watchdog_dev.c