ipmi watchdog : add panic_wdt_timeout parameter
In order to allow panic actions to be processed, the ipmi watchdog driver sets a new timeout value on panic. The 255s timeout was designed to allow kdump and others actions on panic, as in http://lkml.iu.edu/hypermail/linux/kernel/0711.3/0258.html This is counter-intuitive for a end-user who sets watchdog timeout value to something like 30s and who expects BMC to reset the system within 30s of a panic. This commit allows user to configure the timeout on panic. Signed-off-by: Jean-Yves Faye <jean-yves.faye@c-s.fr> Signed-off-by: Corey Minyard <cminyard@mvista.com>hifive-unleashed-5.1
parent
66f4401830
commit
c7f42c6390
|
@ -587,7 +587,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 ifnum_to_use=n
|
nowayout=x ifnum_to_use=n panic_wdt_timeout=<t>
|
||||||
|
|
||||||
ifnum_to_use specifies which interface the watchdog timer should use.
|
ifnum_to_use specifies which interface the watchdog timer should use.
|
||||||
The default is -1, which means to pick the first one registered.
|
The default is -1, which means to pick the first one registered.
|
||||||
|
@ -597,7 +597,9 @@ is the amount of seconds before the reset that the pre-timeout panic will
|
||||||
occur (if pretimeout is zero, then pretimeout will not be enabled). Note
|
occur (if pretimeout is zero, then pretimeout will not be enabled). Note
|
||||||
that the pretimeout is the time before the final timeout. So if the
|
that the pretimeout is the time before the final timeout. So if the
|
||||||
timeout is 50 seconds and the pretimeout is 10 seconds, then the pretimeout
|
timeout is 50 seconds and the pretimeout is 10 seconds, then the pretimeout
|
||||||
will occur in 40 second (10 seconds before the timeout).
|
will occur in 40 second (10 seconds before the timeout). The panic_wdt_timeout
|
||||||
|
is the value of timeout which is set on kernel panic, in order to let actions
|
||||||
|
such as kdump to occur during panic.
|
||||||
|
|
||||||
The action may be "reset", "power_cycle", or "power_off", and
|
The action may be "reset", "power_cycle", or "power_off", and
|
||||||
specifies what to do when the timer times out, and defaults to
|
specifies what to do when the timer times out, and defaults to
|
||||||
|
@ -634,6 +636,7 @@ for configuring the watchdog:
|
||||||
ipmi_watchdog.preop=<preop type>
|
ipmi_watchdog.preop=<preop type>
|
||||||
ipmi_watchdog.start_now=x
|
ipmi_watchdog.start_now=x
|
||||||
ipmi_watchdog.nowayout=x
|
ipmi_watchdog.nowayout=x
|
||||||
|
ipmi_watchdog.panic_wdt_timeout=<t>
|
||||||
|
|
||||||
The options are the same as the module parameter options.
|
The options are the same as the module parameter options.
|
||||||
|
|
||||||
|
|
|
@ -153,6 +153,9 @@ static int timeout = 10;
|
||||||
/* The pre-timeout is disabled by default. */
|
/* The pre-timeout is disabled by default. */
|
||||||
static int pretimeout;
|
static int pretimeout;
|
||||||
|
|
||||||
|
/* Default timeout to set on panic */
|
||||||
|
static int panic_wdt_timeout = 255;
|
||||||
|
|
||||||
/* Default action is to reset the board on a timeout. */
|
/* Default action is to reset the board on a timeout. */
|
||||||
static unsigned char action_val = WDOG_TIMEOUT_RESET;
|
static unsigned char action_val = WDOG_TIMEOUT_RESET;
|
||||||
|
|
||||||
|
@ -293,6 +296,9 @@ MODULE_PARM_DESC(timeout, "Timeout value in seconds.");
|
||||||
module_param(pretimeout, timeout, 0644);
|
module_param(pretimeout, timeout, 0644);
|
||||||
MODULE_PARM_DESC(pretimeout, "Pretimeout value in seconds.");
|
MODULE_PARM_DESC(pretimeout, "Pretimeout value in seconds.");
|
||||||
|
|
||||||
|
module_param(panic_wdt_timeout, timeout, 0644);
|
||||||
|
MODULE_PARM_DESC(timeout, "Timeout value on kernel panic in seconds.");
|
||||||
|
|
||||||
module_param_cb(action, ¶m_ops_str, action_op, 0644);
|
module_param_cb(action, ¶m_ops_str, action_op, 0644);
|
||||||
MODULE_PARM_DESC(action, "Timeout action. One of: "
|
MODULE_PARM_DESC(action, "Timeout action. One of: "
|
||||||
"reset, none, power_cycle, power_off.");
|
"reset, none, power_cycle, power_off.");
|
||||||
|
@ -1189,7 +1195,7 @@ static int wdog_panic_handler(struct notifier_block *this,
|
||||||
/* Make sure we do this only once. */
|
/* Make sure we do this only once. */
|
||||||
panic_event_handled = 1;
|
panic_event_handled = 1;
|
||||||
|
|
||||||
timeout = 255;
|
timeout = panic_wdt_timeout;
|
||||||
pretimeout = 0;
|
pretimeout = 0;
|
||||||
panic_halt_ipmi_set_timeout();
|
panic_halt_ipmi_set_timeout();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue