|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] NMI: Command line parameter for watchdog timeout
# HG changeset patch
# User Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
# Date 1331198607 0
# Node ID 2487f63339c00a91cf80c1a4598c10fdcaac0464
# Parent 322300fd2ebd7857b536531ccb79ceed5f799a36
NMI: Command line parameter for watchdog timeout
Introduce a command parameter to set the watchtog timeout. Manually
specifying "watchdog_timeout=<seconds>" on the command line will also
turn the watchdog on. For consistency, move opt_watchdog into nmi.c
along with opt_watchdog_timeout.
Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Committed-by: Keir Fraser <keir@xxxxxxx>
---
diff -r 322300fd2ebd -r 2487f63339c0 docs/misc/xen-command-line.markdown
--- a/docs/misc/xen-command-line.markdown Thu Mar 08 09:17:21 2012 +0000
+++ b/docs/misc/xen-command-line.markdown Thu Mar 08 09:23:27 2012 +0000
@@ -391,7 +391,17 @@
### watchdog
> `= <boolean>`
-Run an NMI watchdog on each processor. Defaults to disabled.
+> Default: `false`
+
+Run an NMI watchdog on each processor. If a processor is stuck for longer
than the watchdog\_timeout, a panic occurs.
+
+### watchdog\_timeout
+> `= <integer>`
+
+> Default: `5`
+
+Set the NMI watchdog timeout in seconds. Specifying `0` will turn off the
watchdog.
+
### x2apic
### x2apic\_phys
### xencons
diff -r 322300fd2ebd -r 2487f63339c0 xen/arch/x86/nmi.c
--- a/xen/arch/x86/nmi.c Thu Mar 08 09:17:21 2012 +0000
+++ b/xen/arch/x86/nmi.c Thu Mar 08 09:23:27 2012 +0000
@@ -40,6 +40,19 @@
static DEFINE_PER_CPU(struct timer, nmi_timer);
static DEFINE_PER_CPU(unsigned int, nmi_timer_ticks);
+/* opt_watchdog: If true, run a watchdog NMI on each processor. */
+bool_t __initdata opt_watchdog = 0;
+boolean_param("watchdog", opt_watchdog);
+
+/* opt_watchdog_timeout: Number of seconds to wait before panic. */
+static unsigned int opt_watchdog_timeout = 5;
+static void parse_watchdog_timeout(char * s)
+{
+ opt_watchdog_timeout = simple_strtoull(s, NULL, 0);
+ opt_watchdog = !!opt_watchdog_timeout;
+}
+custom_param("watchdog_timeout", parse_watchdog_timeout);
+
/*
* lapic_nmi_owner tracks the ownership of the lapic NMI hardware:
* - it may be reserved by some other driver, or not
@@ -425,11 +438,11 @@
!atomic_read(&watchdog_disable_count) )
{
/*
- * Ayiee, looks like this CPU is stuck ... wait a few IRQs (5 seconds)
+ * Ayiee, looks like this CPU is stuck ... wait for the timeout
* before doing the oops ...
*/
this_cpu(alert_counter)++;
- if ( this_cpu(alert_counter) == 5*nmi_hz )
+ if ( this_cpu(alert_counter) == opt_watchdog_timeout*nmi_hz )
{
console_force_unlock();
printk("Watchdog timer detects that CPU%d is stuck!\n",
diff -r 322300fd2ebd -r 2487f63339c0 xen/arch/x86/setup.c
--- a/xen/arch/x86/setup.c Thu Mar 08 09:17:21 2012 +0000
+++ b/xen/arch/x86/setup.c Thu Mar 08 09:23:27 2012 +0000
@@ -45,6 +45,7 @@
#include <asm/mach-generic/mach_apic.h> /* for generic_apic_probe */
#include <asm/setup.h>
#include <xen/cpu.h>
+#include <asm/nmi.h>
/* opt_nosmp: If true, secondary processors are ignored. */
static bool_t __initdata opt_nosmp;
@@ -54,10 +55,6 @@
static unsigned int __initdata max_cpus;
integer_param("maxcpus", max_cpus);
-/* opt_watchdog: If true, run a watchdog NMI on each processor. */
-static bool_t __initdata opt_watchdog;
-boolean_param("watchdog", opt_watchdog);
-
/* smep: Enable/disable Supervisor Mode Execution Protection (default on). */
static bool_t __initdata disable_smep;
invbool_param("smep", disable_smep);
diff -r 322300fd2ebd -r 2487f63339c0 xen/include/asm-x86/nmi.h
--- a/xen/include/asm-x86/nmi.h Thu Mar 08 09:17:21 2012 +0000
+++ b/xen/include/asm-x86/nmi.h Thu Mar 08 09:23:27 2012 +0000
@@ -5,6 +5,9 @@
#include <public/nmi.h>
struct cpu_user_regs;
+
+/* Watchdog boolean from the command line */
+extern bool_t opt_watchdog;
typedef int (*nmi_callback_t)(struct cpu_user_regs *regs, int cpu);
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |