Commit af3312a8 authored by Arkadiusz Miskiewicz's avatar Arkadiusz Miskiewicz Committed by Linus Torvalds

[PATCH] convert ipmi_watchdog to use module option nowayout

Convert ipmi_watchdog to also use module option `nowayout' as is done in
other watchdog drivers.

From: Corey Minyard <cminyard@mvista.com>

   The patch is good (same style as other watchdogs), but needs to have
   some documentation updated.  I've tacked that on.
Signed-off-by: default avatarArkadiusz Miskiewicz <arekm@pld-linux.org>
Signed-off-by: default avatarCorey Minyard <minyard@acm.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 06ce8344
...@@ -442,6 +442,7 @@ used to control it: ...@@ -442,6 +442,7 @@ used to control it:
modprobe ipmi_watchdog timeout=<t> pretimeout=<t> action=<action type> modprobe ipmi_watchdog timeout=<t> pretimeout=<t> action=<action type>
preaction=<preaction type> preop=<preop type> start_now=x preaction=<preaction type> preop=<preop type> start_now=x
nowayout=x
The timeout is the number of seconds to the action, and the pretimeout 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 is the amount of seconds before the reset that the pre-timeout panic will
...@@ -472,6 +473,10 @@ the device, as well. ...@@ -472,6 +473,10 @@ the device, as well.
If start_now is set to 1, the watchdog timer will start running as If start_now is set to 1, the watchdog timer will start running as
soon as the driver is loaded. 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 When compiled into the kernel, the kernel command line is available
for configuring the watchdog: for configuring the watchdog:
...@@ -480,6 +485,7 @@ for configuring the watchdog: ...@@ -480,6 +485,7 @@ for configuring the watchdog:
ipmi_watchdog.preaction=<preaction type> ipmi_watchdog.preaction=<preaction type>
ipmi_watchdog.preop=<preop type> ipmi_watchdog.preop=<preop type>
ipmi_watchdog.start_now=x ipmi_watchdog.start_now=x
ipmi_watchdog.nowayout=x
The options are the same as the module parameter options. The options are the same as the module parameter options.
......
...@@ -129,6 +129,12 @@ ...@@ -129,6 +129,12 @@
#define WDIOC_GET_PRETIMEOUT _IOW(WATCHDOG_IOCTL_BASE, 22, int) #define WDIOC_GET_PRETIMEOUT _IOW(WATCHDOG_IOCTL_BASE, 22, int)
#endif #endif
#ifdef CONFIG_WATCHDOG_NOWAYOUT
static int nowayout = 1;
#else
static int nowayout;
#endif
static ipmi_user_t watchdog_user = NULL; static ipmi_user_t watchdog_user = NULL;
/* Default the timeout to 10 seconds. */ /* Default the timeout to 10 seconds. */
...@@ -175,6 +181,8 @@ MODULE_PARM_DESC(preop, "Pretimeout driver operation. One of: " ...@@ -175,6 +181,8 @@ MODULE_PARM_DESC(preop, "Pretimeout driver operation. One of: "
module_param(start_now, int, 0); module_param(start_now, int, 0);
MODULE_PARM_DESC(start_now, "Set to 1 to start the watchdog as" MODULE_PARM_DESC(start_now, "Set to 1 to start the watchdog as"
"soon as the driver is loaded."); "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. */ /* Default state of the timer. */
static unsigned char ipmi_watchdog_state = WDOG_TIMEOUT_NONE; static unsigned char ipmi_watchdog_state = WDOG_TIMEOUT_NONE;
...@@ -704,10 +712,10 @@ static int ipmi_close(struct inode *ino, struct file *filep) ...@@ -704,10 +712,10 @@ static int ipmi_close(struct inode *ino, struct file *filep)
{ {
if (iminor(ino)==WATCHDOG_MINOR) if (iminor(ino)==WATCHDOG_MINOR)
{ {
#ifndef CONFIG_WATCHDOG_NOWAYOUT if (!nowayout) {
ipmi_watchdog_state = WDOG_TIMEOUT_NONE; ipmi_watchdog_state = WDOG_TIMEOUT_NONE;
ipmi_set_timeout(IPMI_SET_TIMEOUT_NO_HB); ipmi_set_timeout(IPMI_SET_TIMEOUT_NO_HB);
#endif }
ipmi_wdog_open = 0; ipmi_wdog_open = 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment