diff options
Diffstat (limited to 'arch/i386/kernel/nmi.c')
| -rw-r--r-- | arch/i386/kernel/nmi.c | 11 | 
1 files changed, 7 insertions, 4 deletions
| diff --git a/arch/i386/kernel/nmi.c b/arch/i386/kernel/nmi.c index 2f89d000f954..2c0ee9c2d020 100644 --- a/arch/i386/kernel/nmi.c +++ b/arch/i386/kernel/nmi.c @@ -102,20 +102,21 @@ int nmi_active;  	(P4_CCCR_OVF_PMI0|P4_CCCR_THRESHOLD(15)|P4_CCCR_COMPLEMENT|	\  	 P4_CCCR_COMPARE|P4_CCCR_REQUIRED|P4_CCCR_ESCR_SELECT(4)|P4_CCCR_ENABLE) -int __init check_nmi_watchdog (void) +static int __init check_nmi_watchdog(void)  {  	unsigned int prev_nmi_count[NR_CPUS];  	int cpu; -	printk(KERN_INFO "testing NMI watchdog ... "); +	if (nmi_watchdog == NMI_NONE) +		return 0; + +	printk(KERN_INFO "Testing NMI watchdog ... ");  	for (cpu = 0; cpu < NR_CPUS; cpu++)  		prev_nmi_count[cpu] = per_cpu(irq_stat, cpu).__nmi_count;  	local_irq_enable();  	mdelay((10*1000)/nmi_hz); // wait 10 ticks -	/* FIXME: Only boot CPU is online at this stage.  Check CPUs -           as they come up. */  	for (cpu = 0; cpu < NR_CPUS; cpu++) {  #ifdef CONFIG_SMP  		/* Check cpu_callin_map here because that is set @@ -139,6 +140,8 @@ int __init check_nmi_watchdog (void)  	return 0;  } +/* This needs to happen later in boot so counters are working */ +late_initcall(check_nmi_watchdog);  static int __init setup_nmi_watchdog(char *str)  { | 
