Re: [PATCH 0/8] watchdog: Add support for keepalives triggered by infrastructure

From: Guenter Roeck
Date: Tue Aug 04 2015 - 20:49:45 EST


On 08/04/2015 04:43 PM, PÃdraig Brady wrote:
On 04/08/15 03:13, Guenter Roeck wrote:
The watchdog infrastructure is currently purely passive, meaning
it only passes information from user space to drivers and vice versa.

Since watchdog hardware tends to have its own quirks, this can result
in quite complex watchdog drivers. A number of scanarios are especially common.

- A watchdog is always active and can not be disabled, or can not be disabled
once enabled. To support such hardware, watchdog drivers have to implement
their own timers and use those timers to trigger watchdog keepalives while
the watchdog device is not or not yet opened.
- A variant of this is the desire to enable a watchdog as soon as its driver
has been instantiated, to protect the system while it is still booting up,
but the watchdog daemon is not yet running.

Just mentioning that patting the watchdog in the boot loader
(by patching grub etc.) can be a more general solution here as it
avoids hangs if the kernel crashes before it runs the watchdog driver,
which is especially true if PXE loaded across the net for example.
Also this tends to be better spaced between boot start and user space loading.


I understand. However, that is not always sufficient, and it may not work
well since grub would need to know about the actual watchdog hardware.
Also, there are systems where the time between "watchdog driver instantiated"
and "watchdog daemon started" is just too large for the maximum watchdog
hardware timeout.

The point here is that there _are_ many drivers which implement this
functionality in the driver code. Not counting the drivers I converted as an
exercise, "git grep mod_timer | cut -f1 -d: | sort -u | wc" in drivers/watchdog
suggests that there are 20 more drivers implementing their own heartbeat
management. With that, it just makes sense to move the functionality to
the infrastructure.

Thanks,
Guenter

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/