diff options
author | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2005-06-29 17:12:12 +0000 |
---|---|---|
committer | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2005-06-29 17:12:12 +0000 |
commit | 79e1decf57682817f32e869dbff61606e6eac981 (patch) | |
tree | cc3f25846847611b08cf1399b05f0e52e5e61568 /xen/arch/x86/nmi.c | |
parent | 3cd648a5b1f3fbd64e1102c8d24580c4e6f9ffb8 (diff) | |
download | xen-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.c | 16 |
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); } |