[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] Ensure watchdog remains disabled unless enabled on the command line.



# HG changeset patch
# User Ian.Campbell@xxxxxxxxxxxxx
# Node ID 956bf08c91c36e6734d9c38d2e481732c976d32b
# Parent  19f5ffa02154db55a4fa5a67201e763d8626868b
Ensure watchdog remains disabled unless enabled on the command line.

Bail out of setup_apic_nmi_watchdog() early if watchdog is not
enabled. Is the watchdog is disabled then increment
watchdog_disable_count to prevent it ever becoming enabled.

Unconditionally call setup_apic_nmi_watchdog() from setup_local_APIC()
so that the above is guaranteed to have occurred before the first call
of watchdog_enable().

Signed-off-by: Ian Campbell <Ian.Campbell@xxxxxxxxxxxxx>

diff -r 19f5ffa02154 -r 956bf08c91c3 xen/arch/x86/apic.c
--- a/xen/arch/x86/apic.c       Fri Jan 13 11:04:04 2006
+++ b/xen/arch/x86/apic.c       Fri Jan 13 14:09:39 2006
@@ -451,8 +451,7 @@
             printk("No ESR for 82489DX.\n");
     }
 
-    if (nmi_watchdog == NMI_LOCAL_APIC)
-        setup_apic_nmi_watchdog();
+    setup_apic_nmi_watchdog();
 }
 
 /*
diff -r 19f5ffa02154 -r 956bf08c91c3 xen/arch/x86/nmi.c
--- a/xen/arch/x86/nmi.c        Fri Jan 13 11:04:04 2006
+++ b/xen/arch/x86/nmi.c        Fri Jan 13 14:09:39 2006
@@ -31,6 +31,10 @@
 #include <asm/div64.h>
 
 unsigned int nmi_watchdog = NMI_NONE;
+static spinlock_t   watchdog_lock = SPIN_LOCK_UNLOCKED;
+static unsigned int watchdog_disable_count = 1;
+static unsigned int watchdog_on;
+
 static unsigned int nmi_hz = HZ;
 static unsigned int nmi_perfctr_msr;   /* the MSR to reset in NMI handler */
 static unsigned int nmi_p4_cccr_val;
@@ -310,8 +314,16 @@
 {
     int cpu = smp_processor_id();
 
-    if (!nmi_watchdog)
-        return;
+    if ( nmi_active < 0 )
+       return;
+
+    if ( !nmi_watchdog )
+    {
+       /* Force the watchdog to always be disabled. */
+       watchdog_disable_count++;
+       nmi_active = -1;
+       return;
+    }
 
     switch (boot_cpu_data.x86_vendor) {
     case X86_VENDOR_AMD:
@@ -351,10 +363,6 @@
 static unsigned int
 last_irq_sums [NR_CPUS],
     alert_counter [NR_CPUS];
-
-static spinlock_t   watchdog_lock = SPIN_LOCK_UNLOCKED;
-static unsigned int watchdog_disable_count = 1;
-static unsigned int watchdog_on;
 
 void watchdog_disable(void)
 {

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.