linux/drivers/watchdog
Rasmus Villemoes c2eac35bc2 watchdog: make the device time out at open_deadline when open_timeout is used
When the watchdog device is not open by userspace, the kernel takes
care of pinging it. When the open_timeout feature is in use, we should
ensure that the hardware fires close to open_timeout seconds after the
kernel has assumed responsibility for the device.

To do this, simply reuse the logic that is already in place for
ensuring the same thing when userspace is responsible for regularly
pinging the device:

- When watchdog_active(wdd), this patch doesn't change anything.

- When !watchdog_active(wdd), the "virtual timeout" should be taken to
be ->open_deadline". When the open_timeout feature is not used or the
device has been opened at least once, ->open_deadline is KTIME_MAX,
and the arithmetic ends up returning keepalive_interval as we used to.

This has been tested on a Wandboard with various combinations of
open_timeout and timeout-sec properties for the on-board watchdog by
booting with 'init=/bin/sh', timestamping the lines on the serial
console, and comparing the timestamp of the 'imx2-wdt 20bc000.wdog:
timeout nnn sec' line with the timestamp of the 'U-Boot SPL ...'
line (which appears just after reset).

Suggested-by: Guenter Roeck <linux@roeck-us.net>
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
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
at91sam9_wdt.h
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
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
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
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
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-mid_wdt.c watchdog: intel-mid_wdt: drop warning after registering device 2019-07-08 15:13:08 +02: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
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.h
iTCO_vendor_support.c
iTCO_wdt.c
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: introduce CONFIG_WATCHDOG_OPEN_TIMEOUT 2019-07-08 20:04:13 +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
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
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
octeon-wdt-nmi.S
of_xilinx_wdt.c watchdog: of_xilinx_wdt: drop warning after registering device 2019-07-08 15:13:12 +02:00
omap_wdt.c
omap_wdt.h
orion_wdt.c
pc87413_wdt.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
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
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
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
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
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: make the device time out at open_deadline when open_timeout is used 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
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
wdt.c *: convert stream-like files from nonseekable_open -> stream_open 2019-05-06 17:46:41 +03: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
wm831x_wdt.c watchdog: wm831x_wdt: drop warning after registering device 2019-07-08 15:13:18 +02:00
wm8350_wdt.c
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