Page 1 of 1

Unable to reset or refresh Watchdog Timer in Centos 8

Posted: 2020/06/23 05:42:55
by starbearer
I have a generic off-the-shelf PC with a Watchdog timer in ACPI settings. I wanted to use this timer, in case of a boot freeze or boot failure (maybe a kernel panic or kernel update failure etc).

I enabled the timer and sure enough, the PC did shut down when timer elapsed, but the same kept on happening even when the OS was actually booted and working fine. Digging around, I saw that it needs to be refreshed / tickled by a user service.

I checked and saw that I indeed had a
/dev/watchdog
, linking to
/dev/watchdog0
and identifying as
iTO_wdt
. I thought this would do the trick. So, I enabled watchdog refresh in systemd, and saw in status that it was indeed firing off or writing to the /dev/watchdog, but did not stop anything. The PC still kept on rebooting. I then decided to install the watchdog daemon from centos repositories, disabled systemd and enabled watchdog service by un-commenting -

Code: Select all

watchdog-device = /dev/watchdog
When I did

Code: Select all

systemctl status watchdog.service
I got the service as active, that it was looking at -

Code: Select all

alive=/dev/watchdog heartbeat=[none] to=root no_act=no force=no
hardware watchdog identity : iTCO_wdt
cannot set scheduler (errno=1 = 'Operation not permitted') //ERROR
No clue about the error. systemd is disabled, and no other service is feeding this watchdog.

In any event, it did not have any effect on the systen. The BIOS enabled watchdog still kept on rebooting.

I did a
lsmod | grep wdt
and got -

Code: Select all

iTCO_wdt 16384 1
iTCO_vendor_support 16384 1 iTCO_wdt
mei_wdt 16384 0
mei 110592 3 mei_wdt,mei_me
There is no /dev/watchdog1 or anything else, apart from /watchdog0, which identifies as iTCO_wdt.

Is it possible that BIOS is using mei_wdt for its enabled watchdog? If that's the case, why is there no driver initialized for it n CentOs. If this is also the case, what is it that I can do to refresh this timer?
The manufacturer wouldn't have just provided this watchdog without having made some provision to have this refreshed in user space...the time values go all the way from 30s to 30 min, it's also not an embedded or niche piece of hardware, just a standard board with a celeron CPU...At this stage, not even sure if what I have tried with WDT is correct...

After disabling both systemd and watchdog.service, if I try wdctl, sure enough it just says watchdog0 - iTCO_wdt. But all attempts to refresh iTCO_wdt have failed, or rather, it is possibly getting written to, but that's probably not the WDT which is being used by BIOS API watchdog.

Be grateful for any hint / directions...