linux/drivers/watchdog
Rasmus Villemoes 4d1c6a0ec2 watchdog: introduce watchdog.open_timeout commandline parameter
The watchdog framework takes care of feeding a hardware watchdog until
userspace opens /dev/watchdogN. If that never happens for some reason
(buggy init script, corrupt root filesystem or whatnot) but the kernel
itself is fine, the machine stays up indefinitely. This patch allows
setting an upper limit for how long the kernel will take care of the
watchdog, thus ensuring that the watchdog will eventually reset the
machine.

A value of 0 (the default) means infinite timeout, preserving the
current behaviour.

This is particularly useful for embedded devices where some fallback
logic is implemented in the bootloader (e.g., use a different root
partition, boot from network, ...).

There is already handle_boot_enabled serving a similar purpose. However,
such a binary choice is unsuitable if the hardware watchdog cannot be
programmed by the bootloader to provide a timeout long enough for
userspace to get up and running. Many of the embedded devices we see use
external (gpio-triggered) watchdogs with a fixed timeout of the order of
1-2 seconds.

The open timeout only applies for the first open from
userspace. Should userspace need to close the watchdog device, with
the intention of re-opening it shortly, the application can emulate
the open timeout feature by combining the nowayout feature with an
appropriate WDIOC_SETTIMEOUT immediately prior to closing the device.

Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
2019-07-08 20:04:13 +02:00
..
acquirewdt.c *: convert stream-like files from nonseekable_open -> stream_open 2019-05-06 17:46:41 +03:00
advantechwdt.c *: convert stream-like files from nonseekable_open -> stream_open 2019-05-06 17:46:41 +03:00
alim1535_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
alim7101_wdt.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
ar7_wdt.c *: convert stream-like files from nonseekable_open -> stream_open 2019-05-06 17:46:41 +03:00
armada_37xx_wdt.c watchdog: armada_37xx_wdt: Convert to use device managed functions and other improvements 2019-05-05 21:02:14 +02:00
asm9260_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 4 2019-05-21 11:28:40 +02:00
aspeed_wdt.c watchdog: aspeed_wdt: drop warning after registering device 2019-07-08 15:13:02 +02:00
at91rm9200_wdt.c *: convert stream-like files from nonseekable_open -> stream_open 2019-05-06 17:46:41 +03:00
at91sam9_wdt.c watchdog: Convert to use devm_platform_ioremap_resource 2019-05-05 21:02:12 +02:00
at91sam9_wdt.h watchdog: add SPDX identifiers for watchdog subsystem 2018-03-24 10:19:40 +01:00
ath79_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
atlas7_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 191 2019-05-30 11:29:21 -07:00
bcm47xx_wdt.c watchdog: add SPDX identifiers for watchdog subsystem 2018-03-24 10:19:40 +01:00
bcm63xx_wdt.c *: convert stream-like files from nonseekable_open -> stream_open 2019-05-06 17:46:41 +03:00
bcm2835_wdt.c watchdog: bcm2835_wdt: Fix module autoload 2019-07-08 16:08:32 +02:00
bcm7038_wdt.c watchdog: bcm7038_wdt: drop warning after registering device 2019-07-08 15:13:02 +02:00
bcm_kona_wdt.c watchdog: bcm_kona_wdt: drop warning after registering device 2019-07-08 15:13:03 +02:00
bd70528_wdt.c watchdog: bd70528: Initial support for ROHM BD70528 watchdog block 2019-05-05 21:02:10 +02:00
booke_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
cadence_wdt.c watchdog: cadence_wdt: drop warning after registering device 2019-07-08 15:13:04 +02:00
coh901327_wdt.c watchdog: coh901327: make it explicitly non-modular 2019-05-05 21:10:33 +02:00
cpu5wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
cpwd.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
da9052_wdt.c watchdog: da9052_wdt: drop warning after registering device 2019-07-08 15:13:04 +02:00
da9055_wdt.c watchdog: da9055_wdt: Use 'dev' instead of dereferencing it repeatedly 2019-05-05 21:02:16 +02:00
da9062_wdt.c watchdog: da9062_wdt: drop warning after registering device 2019-07-08 15:13:04 +02:00
da9063_wdt.c watchdog: da9063_wdt: parse DT for timeout value, too 2019-05-05 21:04:57 +02:00
davinci_wdt.c watchdog: davinci_wdt: drop warning after registering device 2019-07-08 15:13:05 +02:00
diag288_wdt.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
digicolor_wdt.c watchdog: digicolor_wdt: drop warning after registering device 2019-07-08 15:13:05 +02:00
dw_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
ebc-c384_wdt.c watchdog: ebc-c384_wdt: drop warning after calling watchdog_init_timeout 2019-05-05 21:05:00 +02:00
ep93xx_wdt.c watchdog: ep93xx_wdt: Use 'dev' instead of dereferencing it repeatedly 2019-05-05 21:02:19 +02:00
eurotechwdt.c *: convert stream-like files from nonseekable_open -> stream_open 2019-05-06 17:46:41 +03:00
f71808e_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
ftwdt010_wdt.c watchdog: ftwdt010_wdt: drop warning after registering device 2019-07-08 15:13:06 +02:00
gef_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
geodewdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
gpio_wdt.c watchdog: gpio: add support for nowayout option 2019-07-08 19:39:44 +02:00
hpwdt.c watchdog/hpwdt: Reflect changes 2019-07-08 16:10:10 +02:00
i6300esb.c watchdog: i6300esb: drop warning after registering device 2019-07-08 15:13:06 +02:00
ib700wdt.c *: convert stream-like files from nonseekable_open -> stream_open 2019-05-06 17:46:41 +03:00
ibmasr.c *: convert stream-like files from nonseekable_open -> stream_open 2019-05-06 17:46:41 +03:00
ie6xx_wdt.c watchdog: ie6xx_wdt: drop warning after registering device 2019-07-08 15:13:07 +02:00
imgpdc_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
imx2_wdt.c watchdog: imx2_wdt: drop warning after registering device 2019-07-08 15:13:07 +02:00
imx_sc_wdt.c watchdog: imx_sc: Add pretimeout support 2019-07-08 19:55:37 +02:00
indydog.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
intel_scu_watchdog.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 278 2019-06-05 17:36:36 +02:00
intel_scu_watchdog.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 278 2019-06-05 17:36:36 +02:00
intel-mid_wdt.c watchdog: intel-mid_wdt: drop warning after registering device 2019-07-08 15:13:08 +02:00
iop_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 320 2019-06-05 17:37:05 +02:00
it87_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
it8712f_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
iTCO_vendor_support.c watchdog: iTCO_wdt: Remove unused hooks 2018-10-02 13:32:25 +02:00
iTCO_vendor.h watchdog: iTCO_wdt: Remove unused hooks 2018-10-02 13:32:25 +02:00
iTCO_wdt.c watchdog: iTCO_wdt: Various improvements 2019-05-05 21:02:20 +02:00
ixp4xx_wdt.c ARM: SoC platform updates 2019-05-16 08:31:32 -07:00
jz4740_wdt.c watchdog: jz4740: Avoid starting watchdog in set_timeout 2019-07-08 16:10:11 +02:00
Kconfig watchdog: imx_sc: Add pretimeout support 2019-07-08 19:55:37 +02:00
kempld_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 294 2019-06-05 17:36:38 +02:00
ks8695_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
lantiq_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
loongson1_wdt.c watchdog: loongson1_wdt: drop warning after registering device 2019-07-08 15:13:08 +02:00
lpc18xx_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
m54xx_wdt.c *: convert stream-like files from nonseekable_open -> stream_open 2019-05-06 17:46:41 +03:00
machzwd.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
Makefile watchdog: imx_sc: Add i.MX system controller watchdog support 2019-05-05 21:02:11 +02:00
max63xx_wdt.c watchdog: max63xx_wdt: Convert to use device managed functions and other improvements 2019-05-05 21:02:22 +02:00
max77620_wdt.c watchdog: max77620_wdt: drop warning after registering device 2019-07-08 15:13:09 +02:00
mei_wdt.c watchdog: mei_wdt: drop warning after registering device 2019-07-08 15:13:09 +02:00
mena21_wdt.c watchdog: mena21_wdt: drop warning after registering device 2019-07-08 15:13:09 +02:00
menf21bmc_wdt.c watchdog: menf21bmc_wdt: drop warning after registering device 2019-07-08 15:13:10 +02:00
menz69_wdt.c watchdog: add driver for the MEN 16z069 IP-Core 2018-08-02 15:57:12 +02:00
meson_gxbb_wdt.c watchdog: meson_gxbb_wdt: Convert to use device managed functions and other improvements 2019-05-05 21:02:23 +02:00
meson_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
mixcomwd.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
mlx_wdt.c watchdog: mlx_wdt: Use 'dev' instead of dereferencing it repeatedly 2019-05-05 21:02:24 +02:00
moxart_wdt.c watchdog: moxart_wdt: Convert to use device managed functions and other improvements 2019-05-05 21:02:24 +02:00
mpc8xxx_wdt.c watchdog: mpc8xxx_wdt: drop warning after registering device 2019-07-08 15:13:10 +02:00
mt7621_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
mtk_wdt.c watchdog: mtk_wdt: Convert to use device managed functions and other improvements 2019-05-05 21:02:25 +02:00
mtx-1_wdt.c *: convert stream-like files from nonseekable_open -> stream_open 2019-05-06 17:46:41 +03:00
mv64x60_wdt.c *: convert stream-like files from nonseekable_open -> stream_open 2019-05-06 17:46:41 +03:00
ni903x_wdt.c watchdog: ni903x_wdt: drop warning after registering device 2019-07-08 15:13:10 +02:00
nic7018_wdt.c watchdog: nic7018_wdt: drop warning after registering device 2019-07-08 15:13:11 +02:00
npcm_wdt.c watchdog: npcm_wdt: drop warning after registering device 2019-07-08 15:13:11 +02:00
nuc900_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441 2019-06-05 17:37:17 +02:00
nv_tco.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
nv_tco.h
octeon-wdt-main.c watchdog: octeon-wdt: Add support for 78XX SOCs. 2017-09-04 21:19:03 +02:00
octeon-wdt-nmi.S watchdog: octeon-wdt: Remove old boot vector code. 2017-09-04 21:19:03 +02:00
of_xilinx_wdt.c watchdog: of_xilinx_wdt: drop warning after registering device 2019-07-08 15:13:12 +02:00
omap_wdt.c watchdog: Convert to use devm_platform_ioremap_resource 2019-05-05 21:02:12 +02:00
omap_wdt.h
orion_wdt.c watchdog: Convert to use devm_platform_ioremap_resource 2019-05-05 21:02:12 +02:00
pc87413_wdt.c *: convert stream-like files from nonseekable_open -> stream_open 2019-05-06 17:46:41 +03:00
pcwd_pci.c *: convert stream-like files from nonseekable_open -> stream_open 2019-05-06 17:46:41 +03:00
pcwd_usb.c *: convert stream-like files from nonseekable_open -> stream_open 2019-05-06 17:46:41 +03:00
pcwd.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pic32-dmt.c watchdog: pic32-dmt: drop warning after registering device 2019-07-08 15:13:12 +02:00
pic32-wdt.c watchdog: pic32-wdt: drop warning after registering device 2019-07-08 15:13:12 +02:00
pika_wdt.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pm8916_wdt.c watchdog: pm8916_wdt: Use 'dev' instead of dereferencing it repeatedly 2019-05-05 21:02:26 +02:00
pnx833x_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
pnx4008_wdt.c watchdog: pnx4008_wdt: drop warning after registering device 2019-07-08 15:13:13 +02:00
pretimeout_noop.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
pretimeout_panic.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
qcom-wdt.c watchdog: qcom-wdt: drop warning after registering device 2019-07-08 15:13:13 +02:00
rave-sp-wdt.c watchdog: rave-sp-wdt: drop warning after registering device 2019-07-08 15:13:14 +02:00
rc32434_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rdc321x_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
renesas_wdt.c watchdog: renesas_wdt: Add a few cycles delay 2019-07-08 19:39:44 +02:00
retu_wdt.c
riowd.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
rn5t618_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 446 2019-06-05 17:37:18 +02:00
rt2880_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
rtd119x_wdt.c watchdog: rtd119x: drop unused module.h include 2019-05-05 21:10:34 +02:00
rza_wdt.c watchdog: rza_wdt: Use 'dev' instead of dereferencing it repeatedly 2019-05-05 21:02:27 +02:00
s3c2410_wdt.c watchdog: s3c2410_wdt: drop warning after registering device 2019-07-08 15:13:14 +02:00
sa1100_wdt.c *: convert stream-like files from nonseekable_open -> stream_open 2019-05-06 17:46:41 +03:00
sama5d4_wdt.c watchdog: sama5d4: fix WDD value to be always set to max 2019-07-08 16:08:32 +02:00
sb_wdog.c linux-watchdog 5.2-rc1 tag 2019-05-13 09:20:42 -04:00
sbc60xxwdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
sbc7240_wdt.c *: convert stream-like files from nonseekable_open -> stream_open 2019-05-06 17:46:41 +03:00
sbc8360.c *: convert stream-like files from nonseekable_open -> stream_open 2019-05-06 17:46:41 +03:00
sbc_epx_c3.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
sbc_fitpc2_wdt.c *: convert stream-like files from nonseekable_open -> stream_open 2019-05-06 17:46:41 +03:00
sbsa_gwdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 294 2019-06-05 17:36:38 +02:00
sc520_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
sc1200wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
sch311x_wdt.c *: convert stream-like files from nonseekable_open -> stream_open 2019-05-06 17:46:41 +03:00
scx200_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
shwdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
sirfsoc_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 4 2019-05-21 11:28:40 +02:00
smsc37b787_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
softdog.c watchdog: softdog: fire watchdog even if softirqs do not get to run 2017-03-01 06:15:10 -08:00
sp805_wdt.c watchdog: sp805_wdt: drop warning after registering device 2019-07-08 15:13:15 +02:00
sp5100_tco.c watchdog: sp5100_tco: drop warning after registering device 2019-07-08 15:13:15 +02:00
sp5100_tco.h watchdog: sp5100_tco: Add support for recent FCH versions 2018-01-21 12:56:37 +01:00
sprd_wdt.c watchdog: sprd_wdt: drop warning after registering device 2019-07-08 15:13:16 +02:00
st_lpc_wdt.c watchdog: st_lpc_wdt: drop warning after registering device 2019-07-08 15:13:16 +02:00
stm32_iwdg.c watchdog: stm32_iwdg: drop warning after registering device 2019-07-08 15:13:16 +02:00
stmp3xxx_rtc_wdt.c watchdog: stmp3xxx_rtc_wdt: drop warning after registering device 2019-07-08 15:13:17 +02:00
stpmic1_wdt.c watchdog: stpmic1_wdt: Use 'dev' instead of dereferencing it repeatedly 2019-05-05 21:02:29 +02:00
sun4v_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
sunxi_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
tangox_wdt.c watchdog: tangox_wdt: Convert to use device managed functions and other improvements 2019-05-05 21:02:30 +02:00
tegra_wdt.c watchdog: tegra_wdt: drop warning after registering device 2019-07-08 15:13:17 +02:00
tqmx86_wdt.c watchdog: tqmx86_wdt: Use 'dev' instead of dereferencing it repeatedly 2019-05-05 21:02:31 +02:00
ts72xx_wdt.c watchdog: ts72xx_wdt: Use 'dev' instead of dereferencing it repeatedly 2019-05-05 21:02:32 +02:00
ts4800_wdt.c watchdog: ts4800_wdt: drop warning after registering device 2019-07-08 15:13:17 +02:00
twl4030_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
txx9wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
uniphier_wdt.c watchdog: uniphier_wdt: drop platform_set_drvdata 2019-05-05 21:02:32 +02:00
ux500_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 197 2019-05-30 11:29:22 -07:00
via_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 194 2019-05-30 11:29:22 -07:00
w83627hf_wdt.c watchdog: w83627hf_wdt: Add quirk for Inves system 2018-12-09 15:03:28 +01:00
w83877f_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
w83977f_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
wafer5823wdt.c *: convert stream-like files from nonseekable_open -> stream_open 2019-05-06 17:46:41 +03:00
watchdog_core.c watchdog: let core print error message when registering device fails 2019-07-08 15:13:01 +02:00
watchdog_core.h
watchdog_dev.c watchdog: introduce watchdog.open_timeout commandline parameter 2019-07-08 20:04:13 +02:00
watchdog_pretimeout.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
watchdog_pretimeout.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
wd501p.h
wdat_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
wdrtas.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 153 2019-05-30 11:26:32 -07:00
wdt285.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
wdt977.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
wdt_pci.c *: convert stream-like files from nonseekable_open -> stream_open 2019-05-06 17:46:41 +03:00
wdt.c *: convert stream-like files from nonseekable_open -> stream_open 2019-05-06 17:46:41 +03:00
wm831x_wdt.c watchdog: wm831x_wdt: drop warning after registering device 2019-07-08 15:13:18 +02:00
wm8350_wdt.c watchdog: add SPDX identifiers for watchdog subsystem 2018-03-24 10:19:40 +01:00
xen_wdt.c watchdog: xen_wdt: drop warning after registering device 2019-07-08 15:13:18 +02:00
ziirave_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
zx2967_wdt.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 194 2019-05-30 11:29:22 -07:00