aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/nmi.c
diff options
context:
space:
mode:
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2005-06-29 17:12:12 +0000
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2005-06-29 17:12:12 +0000
commit79e1decf57682817f32e869dbff61606e6eac981 (patch)
treecc3f25846847611b08cf1399b05f0e52e5e61568 /xen/arch/x86/nmi.c
parent3cd648a5b1f3fbd64e1102c8d24580c4e6f9ffb8 (diff)
downloadxen-79e1decf57682817f32e869dbff61606e6eac981.tar.gz
xen-79e1decf57682817f32e869dbff61606e6eac981.tar.bz2
xen-79e1decf57682817f32e869dbff61606e6eac981.zip
bitkeeper revision 1.1770 (42c2d66cG6YTU0WhG1b97E-InSNWWA)
Ensure global variables required by get_s_time() are initialised before first use. Rejuggle bootstrap code slightly. Signed-off-by: Keir Fraser <keir@xensource.com>
Diffstat (limited to 'xen/arch/x86/nmi.c')
-rw-r--r--xen/arch/x86/nmi.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/xen/arch/x86/nmi.c b/xen/arch/x86/nmi.c
index 0e03b6a674..a0b11f9e1f 100644
--- a/xen/arch/x86/nmi.c
+++ b/xen/arch/x86/nmi.c
@@ -240,7 +240,6 @@ void __pminit setup_apic_nmi_watchdog(void)
}
init_ac_timer(&nmi_timer[cpu], nmi_timer_fn, NULL, cpu);
- nmi_timer_fn(NULL);
nmi_pm_init();
}
@@ -257,18 +256,33 @@ static unsigned int watchdog_on;
void watchdog_disable(void)
{
unsigned long flags;
+
spin_lock_irqsave(&watchdog_lock, flags);
+
if ( watchdog_disable_count++ == 0 )
watchdog_on = 0;
+
spin_unlock_irqrestore(&watchdog_lock, flags);
}
void watchdog_enable(void)
{
+ unsigned int cpu;
unsigned long flags;
+
spin_lock_irqsave(&watchdog_lock, flags);
+
if ( --watchdog_disable_count == 0 )
+ {
watchdog_on = 1;
+ /*
+ * Ensure periodic heartbeats are active. We cannot do this earlier
+ * during setup because the timer infrastructure is not available.
+ */
+ for_each_online_cpu ( cpu )
+ set_ac_timer(&nmi_timer[cpu], NOW());
+ }
+
spin_unlock_irqrestore(&watchdog_lock, flags);
}