diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-03-26 16:39:17 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-03-27 12:28:43 -0400 |
commit | 6e15cf04860074ad032e88c306bea656bbdd0f22 (patch) | |
tree | c346383bb7563e8d66b2f4a502f875b259c34870 /arch/x86/kernel/cpu/intel.c | |
parent | be0ea69674ed95e1e98cb3687a241badc756d228 (diff) | |
parent | 60db56422043aaa455ac7f858ce23c273220f9d9 (diff) |
Merge branch 'core/percpu' into percpu-cpumask-x86-for-linus-2
Conflicts:
arch/parisc/kernel/irq.c
arch/x86/include/asm/fixmap_64.h
arch/x86/include/asm/setup.h
kernel/irq/handle.c
Semantic merge:
arch/x86/include/asm/fixmap.h
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/cpu/intel.c')
-rw-r--r-- | arch/x86/kernel/cpu/intel.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c index 5fff00c70de0..1a89a2b68d15 100644 --- a/arch/x86/kernel/cpu/intel.c +++ b/arch/x86/kernel/cpu/intel.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #ifdef CONFIG_X86_LOCAL_APIC | 25 | #ifdef CONFIG_X86_LOCAL_APIC |
26 | #include <asm/mpspec.h> | 26 | #include <asm/mpspec.h> |
27 | #include <asm/apic.h> | 27 | #include <asm/apic.h> |
28 | #include <mach_apic.h> | ||
29 | #endif | 28 | #endif |
30 | 29 | ||
31 | static void __cpuinit early_init_intel(struct cpuinfo_x86 *c) | 30 | static void __cpuinit early_init_intel(struct cpuinfo_x86 *c) |
@@ -69,6 +68,18 @@ static void __cpuinit early_init_intel(struct cpuinfo_x86 *c) | |||
69 | sched_clock_stable = 1; | 68 | sched_clock_stable = 1; |
70 | } | 69 | } |
71 | 70 | ||
71 | /* | ||
72 | * There is a known erratum on Pentium III and Core Solo | ||
73 | * and Core Duo CPUs. | ||
74 | * " Page with PAT set to WC while associated MTRR is UC | ||
75 | * may consolidate to UC " | ||
76 | * Because of this erratum, it is better to stick with | ||
77 | * setting WC in MTRR rather than using PAT on these CPUs. | ||
78 | * | ||
79 | * Enable PAT WC only on P4, Core 2 or later CPUs. | ||
80 | */ | ||
81 | if (c->x86 == 6 && c->x86_model < 15) | ||
82 | clear_cpu_cap(c, X86_FEATURE_PAT); | ||
72 | } | 83 | } |
73 | 84 | ||
74 | #ifdef CONFIG_X86_32 | 85 | #ifdef CONFIG_X86_32 |
@@ -141,10 +152,10 @@ static void __cpuinit intel_workarounds(struct cpuinfo_x86 *c) | |||
141 | */ | 152 | */ |
142 | if ((c->x86 == 15) && (c->x86_model == 1) && (c->x86_mask == 1)) { | 153 | if ((c->x86 == 15) && (c->x86_model == 1) && (c->x86_mask == 1)) { |
143 | rdmsr(MSR_IA32_MISC_ENABLE, lo, hi); | 154 | rdmsr(MSR_IA32_MISC_ENABLE, lo, hi); |
144 | if ((lo & (1<<9)) == 0) { | 155 | if ((lo & MSR_IA32_MISC_ENABLE_PREFETCH_DISABLE) == 0) { |
145 | printk (KERN_INFO "CPU: C0 stepping P4 Xeon detected.\n"); | 156 | printk (KERN_INFO "CPU: C0 stepping P4 Xeon detected.\n"); |
146 | printk (KERN_INFO "CPU: Disabling hardware prefetching (Errata 037)\n"); | 157 | printk (KERN_INFO "CPU: Disabling hardware prefetching (Errata 037)\n"); |
147 | lo |= (1<<9); /* Disable hw prefetching */ | 158 | lo |= MSR_IA32_MISC_ENABLE_PREFETCH_DISABLE; |
148 | wrmsr (MSR_IA32_MISC_ENABLE, lo, hi); | 159 | wrmsr (MSR_IA32_MISC_ENABLE, lo, hi); |
149 | } | 160 | } |
150 | } | 161 | } |