]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
watchdog: ensure that module is loaded as early as possible 121/head
authorPratyush Anand <panand@redhat.com>
Wed, 16 Mar 2016 03:46:24 +0000 (09:16 +0530)
committerHarald Hoyer <harald@redhat.com>
Wed, 16 Mar 2016 04:05:51 +0000 (05:05 +0100)
It is expected that a watchdog module will disable an active watchdog when
its probe is called ie, when it is loaded. So an early load of the module
will help to disable it earlier.
This can be helpful in some corner cases where kdump and watchdog daemon
both are active.

Testing:
    -- When watchdog kernel modules were added
# dracut --no-hostonly initramfs-test.img -a watchdog
# lsinitrd initramfs-test.img -f etc/cmdline.d/00-watchdog.conf
  rd.driver.pre=iTCO_wdt,lpc_ich,

Signed-off-by: Pratyush Anand <panand@redhat.com>
Cc: Dave Young <dyoung@redhat.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Harald Hoyer <harald@redhat.com>
modules.d/04watchdog/module-setup.sh

index 0ffaa965850237f31e35de8a4340bde9c2301a19..c9da148275a97ac6a2687ce2ca380a6096b8e7f3 100755 (executable)
@@ -34,6 +34,7 @@ install() {
 
 installkernel() {
     [[ -d /sys/class/watchdog/ ]] || return
+    wdtcmdline=""
     for dir in /sys/class/watchdog/*; do
            [[ -d "$dir" ]] || continue
            [[ -f "$dir/state" ]] || continue
@@ -47,6 +48,7 @@ installkernel() {
            # represented by modalias
            wdtdrv=$(modprobe -R $wdtdrv)
            instmods $wdtdrv
+           wdtcmdline="$wdtcmdline$(echo $wdtdrv | tr " " ","),"
            # however in some cases, we also need to check that if there is
            # a specific driver for the parent bus/device.  In such cases
            # we also need to enable driver for parent bus/device.
@@ -56,7 +58,10 @@ installkernel() {
                    wdtpdrv=$(< "$wdtppath/modalias")
                    wdtpdrv=$(modprobe -R $wdtpdrv)
                    instmods $wdtpdrv
+                   wdtcmdline="$wdtcmdline$(echo $wdtpdrv | tr " " ","),"
                    wdtppath=$(readlink -f "$wdtppath/..")
            done
     done
+    # ensure that watchdog module is loaded as early as possible
+    [[ $wdtcmdline = "" ]] || echo "rd.driver.pre=$wdtcmdline" > ${initdir}/etc/cmdline.d/00-watchdog.conf
 }