Re: [PATCH]: convert ipmi_watchdog to also use module option nowayoutas it's done in other watchdog drivers

From: Corey Minyard
Date: Wed Jul 28 2004 - 09:17:07 EST




Convert ipmi_watchdog to also use module option ,,nowayout'' as it's done in other watchdog drivers.


The patch is good (same style as other watchdogs), but needs to have some documentation updated. I've tacked that on.


Signed-off-by: Arkadiusz Miskiewicz <arekm@xxxxxxxxxxxxx>
Signed-off-by: Corey Minyard <minyard@xxxxxxx>

Index: linux-ipmi/Documentation/IPMI.txt
===================================================================
--- linux-ipmi.orig/Documentation/IPMI.txt 2004-05-21 11:48:29.000000000 -0500
+++ linux-ipmi/Documentation/IPMI.txt 2004-07-28 09:12:42.000000000 -0500
@@ -442,6 +442,7 @@

modprobe ipmi_watchdog timeout=<t> pretimeout=<t> action=<action type>
preaction=<preaction type> preop=<preop type> start_now=x
+ nowayout=x

The timeout is the number of seconds to the action, and the pretimeout
is the amount of seconds before the reset that the pre-timeout panic will
@@ -472,6 +473,10 @@
If start_now is set to 1, the watchdog timer will start running as
soon as the driver is loaded.

+If nowayout is set to 1, the watchdog timer will not stop when the
+watchdog device is closed. The default value of nowayout is true
+if the CONFIG_WATCHDOG_NOWAYOUT option is enabled, or false if not.
+
When compiled into the kernel, the kernel command line is available
for configuring the watchdog:

@@ -480,6 +485,7 @@
ipmi_watchdog.preaction=<preaction type>
ipmi_watchdog.preop=<preop type>
ipmi_watchdog.start_now=x
+ ipmi_watchdog.nowayout=x

The options are the same as the module parameter options.

Index: linux-ipmi/drivers/char/ipmi/ipmi_watchdog.c
===================================================================
--- linux-ipmi.orig/drivers/char/ipmi/ipmi_watchdog.c 2004-07-28 09:09:25.000000000 -0500
+++ linux-ipmi/drivers/char/ipmi/ipmi_watchdog.c 2004-07-28 09:10:40.000000000 -0500
@@ -129,6 +129,12 @@
#define WDIOC_GET_PRETIMEOUT _IOW(WATCHDOG_IOCTL_BASE, 22, int)
#endif

+#ifdef CONFIG_WATCHDOG_NOWAYOUT
+static int nowayout = 1;
+#else
+static int nowayout = 0;
+#endif
+
static ipmi_user_t watchdog_user = NULL;

/* Default the timeout to 10 seconds. */
@@ -175,6 +181,8 @@
module_param(start_now, int, 0);
MODULE_PARM_DESC(start_now, "Set to 1 to start the watchdog as"
"soon as the driver is loaded.");
+module_param(nowayout, int, 0);
+MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=CONFIG_WATCHDOG_NOWAYOUT)");

/* Default state of the timer. */
static unsigned char ipmi_watchdog_state = WDOG_TIMEOUT_NONE;
@@ -707,10 +715,10 @@
{
if (iminor(ino)==WATCHDOG_MINOR)
{
-#ifndef CONFIG_WATCHDOG_NOWAYOUT
- ipmi_watchdog_state = WDOG_TIMEOUT_NONE;
- ipmi_set_timeout(IPMI_SET_TIMEOUT_NO_HB);
-#endif
+ if (!nowayout) {
+ ipmi_watchdog_state = WDOG_TIMEOUT_NONE;
+ ipmi_set_timeout(IPMI_SET_TIMEOUT_NO_HB);
+ }
ipmi_wdog_open = 0;
}