[HowTo] Disable watchdogs (and silence "watchdog did not stop!")

Difficulty: ★★☆☆☆

There is already a pretty good Arch wiki article:
https://wiki.archlinux.org/title/Improving_performance#Watchdogs

Which already does a decent job explaining what it is and why we want to disable it:

As well as a few ways to disable the watchdog(s)

The problem is that this is not at all an exhaustive list of possible watchdog modules.
One appendix that can be useful is found here:
https://www.kernel.org/doc/Documentation/watchdog/watchdog-parameters.txt

But even that does not cover all possible watchdog modules.

So here I will attempt to provide a few steps to find and disable any watchdogs that just “arent like the other modules.”

You will notice there are some common features of watchdog modules - namely titles including some assortment of “TC”, “TCO”, “WD”, or “WDT”, in varying upper and lower cases.

My suggestion would be to query modules, sorting them by those clues:

lsmod | grep -i tc
lsmod | grep -i wd

Some modules may appear self-explanatory, and others less so.

See this example:

$ lsmod | grep wd

snd_hwdep              12288  1 snd_hda_codec
snd                   126976  19 snd_hda_codec_generic,snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_hda_codec_realtek,snd_timer,snd_pcm
wdat_wdt               16384  0

In this case wdat_wdt seems a likely candidate.
We can use modinfo to provide more details.

$ modinfo wdat_wdt

filename:       /lib/modules/6.5.4-AMD-znver3/kernel/drivers/watchdog/wdat_wdt.ko.xz
alias:          platform:wdat_wdt
license:        GPL v2
description:    ACPI Hardware Watchdog (WDAT) driver
author:         Mika Westerberg <mika.westerberg@linux.intel.com>
srcversion:     2D87893F9044A672B7B6A81
depends:        
retpoline:      Y
intree:         Y
name:           wdat_wdt
vermagic:       6.5.4-AMD-znver3 SMP preempt mod_unload modversions 
parm:           nowayout:Watchdog cannot be stopped once started (default=0) (bool)
parm:           timeout:Watchdog timeout in seconds (default=30) (int)

The extra information verifies this module as a watchdog, and thus, fit for blacklisting.

/etc/modprobe.d/blacklist-watchdog.conf

# watchdog
blacklist sp5100_tco
# extra watchdog 
blacklist wdat_wdt
10 Likes

At one time (at least on my machine) the wmi* and *wmi modules seemed to override NOWATCHDOG and the blacklisted watchdog modules, and activated some kind of watchdog.

After I blacklisted them as well, haven’t had a watchdog issue.

Oh, I think you are right.
Or … I dont think it was wmi itself … but something like dell_wmi if I recall.
But I cant find any documentation to support it.

1 Like

This has been my workaround to paralyse Watchdog for a few years now:

=> Add kernel parameter in/etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT=nowatchdog

=> Then blacklist the modules in /etc/modeprobe.d/blacklist.conf:

# Disable intel mei (including mei_watchdog).
blacklist intel_pmc_bxt
blacklist iTCO_vendor_support

# Do not load the 'iTCO_wdt' watchdog module on boot.
blacklist iTCO_wdt

At the moment I’m still using an intel processor, but when I switch to AMD soon, that will have to change.

Yes … that is roughly the approach outlined above.

(with the extra introductions and how to look for the modules, etc)

Though I am not familiar with the intel_pmc_bxt module. A quick look up shows something about