diff options
Diffstat (limited to 'arch/x86/kernel/cpu/perfctr-watchdog.c')
| -rw-r--r-- | arch/x86/kernel/cpu/perfctr-watchdog.c | 16 | 
1 files changed, 10 insertions, 6 deletions
diff --git a/arch/x86/kernel/cpu/perfctr-watchdog.c b/arch/x86/kernel/cpu/perfctr-watchdog.c index f6c70a164e3..5c481f6205b 100644 --- a/arch/x86/kernel/cpu/perfctr-watchdog.c +++ b/arch/x86/kernel/cpu/perfctr-watchdog.c @@ -19,8 +19,8 @@  #include <linux/nmi.h>  #include <linux/kprobes.h> -#include <asm/genapic.h> -#include <asm/intel_arch_perfmon.h> +#include <asm/apic.h> +#include <asm/perf_counter.h>  struct nmi_watchdog_ctlblk {  	unsigned int cccr_msr; @@ -716,11 +716,15 @@ static void probe_nmi_watchdog(void)  		wd_ops = &k7_wd_ops;  		break;  	case X86_VENDOR_INTEL: -		/* -		 * Work around Core Duo (Yonah) errata AE49 where perfctr1 -		 * doesn't have a working enable bit. +		/* Work around where perfctr1 doesn't have a working enable +		 * bit as described in the following errata: +		 * AE49 Core Duo and Intel Core Solo 65 nm +		 * AN49 Intel Pentium Dual-Core +		 * AF49 Dual-Core Intel Xeon Processor LV  		 */ -		if (boot_cpu_data.x86 == 6 && boot_cpu_data.x86_model == 14) { +		if ((boot_cpu_data.x86 == 6 && boot_cpu_data.x86_model == 14) || +		    ((boot_cpu_data.x86 == 6 && boot_cpu_data.x86_model == 15 && +		     boot_cpu_data.x86_mask == 4))) {  			intel_arch_wd_ops.perfctr = MSR_ARCH_PERFMON_PERFCTR0;  			intel_arch_wd_ops.evntsel = MSR_ARCH_PERFMON_EVENTSEL0;  		}  |