a0a3b4
From f69cd051ab85fb01ddf00aadd3c559e85d8980f0 Mon Sep 17 00:00:00 2001
a0a3b4
From: Pratyush Anand <panand@redhat.com>
a0a3b4
Date: Wed, 16 Mar 2016 09:16:24 +0530
a0a3b4
Subject: [PATCH] watchdog: ensure that module is loaded as early as possible
a0a3b4
a0a3b4
It is expected that a watchdog module will disable an active watchdog when
a0a3b4
its probe is called ie, when it is loaded. So an early load of the module
a0a3b4
will help to disable it earlier.
a0a3b4
This can be helpful in some corner cases where kdump and watchdog daemon
a0a3b4
both are active.
a0a3b4
a0a3b4
Testing:
a0a3b4
    -- When watchdog kernel modules were added
a0a3b4
	# dracut --no-hostonly initramfs-test.img -a watchdog
a0a3b4
	# lsinitrd initramfs-test.img -f etc/cmdline.d/00-watchdog.conf
a0a3b4
 	rd.driver.pre=iTCO_wdt,lpc_ich,
a0a3b4
a0a3b4
Signed-off-by: Pratyush Anand <panand@redhat.com>
a0a3b4
Cc: Dave Young <dyoung@redhat.com>
a0a3b4
Cc: Don Zickus <dzickus@redhat.com>
a0a3b4
Cc: Harald Hoyer <harald@redhat.com>
a0a3b4
---
a0a3b4
 modules.d/04watchdog/module-setup.sh | 5 +++++
a0a3b4
 1 file changed, 5 insertions(+)
a0a3b4
a0a3b4
diff --git a/modules.d/04watchdog/module-setup.sh b/modules.d/04watchdog/module-setup.sh
1755ca
index 4680936f..6b35f9f5 100755
a0a3b4
--- a/modules.d/04watchdog/module-setup.sh
a0a3b4
+++ b/modules.d/04watchdog/module-setup.sh
a0a3b4
@@ -33,6 +33,7 @@ install() {
a0a3b4
 
a0a3b4
 installkernel() {
a0a3b4
     [[ -d /sys/class/watchdog/ ]] || return
a0a3b4
+    wdtcmdline=""
a0a3b4
     for dir in /sys/class/watchdog/*; do
a0a3b4
 	    [[ -d "$dir" ]] || continue
a0a3b4
 	    [[ -f "$dir/state" ]] || continue
a0a3b4
@@ -46,6 +47,7 @@ installkernel() {
a0a3b4
 	    # represented by modalias
a0a3b4
 	    wdtdrv=$(modprobe -R $wdtdrv)
a0a3b4
 	    instmods $wdtdrv
a0a3b4
+	    wdtcmdline="$wdtcmdline$(echo $wdtdrv | tr " " ","),"
a0a3b4
 	    # however in some cases, we also need to check that if there is
a0a3b4
 	    # a specific driver for the parent bus/device.  In such cases
a0a3b4
 	    # we also need to enable driver for parent bus/device.
a0a3b4
@@ -55,7 +57,10 @@ installkernel() {
a0a3b4
 		    wdtpdrv=$(< "$wdtppath/modalias")
a0a3b4
 		    wdtpdrv=$(modprobe -R $wdtpdrv)
a0a3b4
 		    instmods $wdtpdrv
a0a3b4
+		    wdtcmdline="$wdtcmdline$(echo $wdtpdrv | tr " " ","),"
a0a3b4
 		    wdtppath=$(readlink -f "$wdtppath/..")
a0a3b4
 	    done
a0a3b4
     done
a0a3b4
+    # ensure that watchdog module is loaded as early as possible
a0a3b4
+    [[ $wdtcmdline = "" ]] || echo "rd.driver.pre=$wdtcmdline" > ${initdir}/etc/cmdline.d/00-watchdog.conf
a0a3b4
 }