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@XenSource.com>
This commit is contained in:
Ian.Campbell@xensource.com committed 2006-01-13 14:09:39 +00:00
1 parent dd38458519
commit 8ffaf9c238
2 files changed
+15 -8

No files matched your search

+1 -2
View File
@@ -451,8 +451,7 @@ void __init setup_local_APIC (void)
printk("No ESR for 82489DX.\n");
}
if (nmi_watchdog == NMI_LOCAL_APIC)
setup_apic_nmi_watchdog();
setup_apic_nmi_watchdog();
}
/*
+14 -6
View File
@@ -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 @@ void __pminit setup_apic_nmi_watchdog(void)
{
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:
@@ -352,10 +364,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)
{
unsigned long flags;
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.