Commit 487e4e08 authored by Rasmus Villemoes's avatar Rasmus Villemoes Committed by Wim Van Sebroeck
Browse files

watchdog: introduce CONFIG_WATCHDOG_OPEN_TIMEOUT



This allows setting a default value for the watchdog.open_timeout
commandline parameter via Kconfig.

Some BSPs allow remote updating of the kernel image and root file
system, but updating the bootloader requires physical access. Hence, if
one has a firmware update that requires relaxing the
watchdog.open_timeout a little, the value used must be baked into the
kernel image itself and cannot come from the u-boot environment via the
kernel command line.

Being able to set the initial value in .config doesn't change the fact
that the value on the command line, if present, takes precedence, and is
of course immensely useful for development purposes while one has
console acccess, as well as usable in the cases where one can make a
permanent update of the kernel command line.

Signed-off-by: default avatarRasmus Villemoes <rasmus.villemoes@prevas.dk>
Reviewed-by: default avatarGuenter Roeck <linux@roeck-us.net>
Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
Signed-off-by: default avatarWim Van Sebroeck <wim@linux-watchdog.org>
parent 4d1c6a0e
Loading
Loading
Loading
Loading
+4 −4
Original line number Original line Diff line number Diff line
@@ -11,10 +11,10 @@ modules.
The watchdog core parameter watchdog.open_timeout is the maximum time,
The watchdog core parameter watchdog.open_timeout is the maximum time,
in seconds, for which the watchdog framework will take care of pinging
in seconds, for which the watchdog framework will take care of pinging
a running hardware watchdog until userspace opens the corresponding
a running hardware watchdog until userspace opens the corresponding
/dev/watchdogN device. A value of 0 (the default) means an infinite
/dev/watchdogN device. A value of 0 means an infinite timeout. Setting
timeout. Setting this to a non-zero value can be useful to ensure that
this to a non-zero value can be useful to ensure that either userspace
either userspace comes up properly, or the board gets reset and allows
comes up properly, or the board gets reset and allows fallback logic
fallback logic in the bootloader to try something else.
in the bootloader to try something else.




-------------------------------------------------
-------------------------------------------------
+9 −0
Original line number Original line Diff line number Diff line
@@ -58,6 +58,15 @@ config WATCHDOG_HANDLE_BOOT_ENABLED
	  the watchdog on its own. Thus if your userspace does not start fast
	  the watchdog on its own. Thus if your userspace does not start fast
	  enough your device will reboot.
	  enough your device will reboot.


config WATCHDOG_OPEN_TIMEOUT
	int "Timeout value for opening watchdog device"
	default 0
	help
	  The maximum time, in seconds, for which the watchdog framework takes
	  care of pinging a hardware watchdog.  A value of 0 means infinite. The
	  value set here can be overridden by the commandline parameter
	  "watchdog.open_timeout".

config WATCHDOG_SYSFS
config WATCHDOG_SYSFS
	bool "Read different watchdog information through sysfs"
	bool "Read different watchdog information through sysfs"
	help
	help
+3 −2
Original line number Original line Diff line number Diff line
@@ -88,7 +88,7 @@ static struct kthread_worker *watchdog_kworker;
static bool handle_boot_enabled =
static bool handle_boot_enabled =
	IS_ENABLED(CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED);
	IS_ENABLED(CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED);


static unsigned open_timeout;
static unsigned open_timeout = CONFIG_WATCHDOG_OPEN_TIMEOUT;


static bool watchdog_past_open_deadline(struct watchdog_core_data *data)
static bool watchdog_past_open_deadline(struct watchdog_core_data *data)
{
{
@@ -1214,4 +1214,5 @@ MODULE_PARM_DESC(handle_boot_enabled,


module_param(open_timeout, uint, 0644);
module_param(open_timeout, uint, 0644);
MODULE_PARM_DESC(open_timeout,
MODULE_PARM_DESC(open_timeout,
	"Maximum time (in seconds, 0 means infinity) for userspace to take over a running watchdog (default=0)");
	"Maximum time (in seconds, 0 means infinity) for userspace to take over a running watchdog (default="
	__MODULE_STRING(CONFIG_WATCHDOG_OPEN_TIMEOUT) ")");