aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/cpu/amd.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kernel/cpu/amd.c')
-rw-r--r--arch/x86/kernel/cpu/amd.c30
1 files changed, 0 insertions, 30 deletions
diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
index e76b49e7a916..acc891ae5901 100644
--- a/arch/x86/kernel/cpu/amd.c
+++ b/arch/x86/kernel/cpu/amd.c
@@ -24,31 +24,6 @@
24extern void vide(void); 24extern void vide(void);
25__asm__(".align 4\nvide: ret"); 25__asm__(".align 4\nvide: ret");
26 26
27#ifdef CONFIG_X86_LOCAL_APIC
28
29/* AMD systems with C1E don't have a working lAPIC timer. Check for that. */
30static __cpuinit int amd_apic_timer_broken(struct cpuinfo_x86 *c)
31{
32 u32 lo, hi;
33
34 if (c->x86 < 0x0F)
35 return 0;
36
37 /* Family 0x0f models < rev F do not have this MSR */
38 if (c->x86 == 0x0f && c->x86_model < 0x40)
39 return 0;
40
41 rdmsr(MSR_K8_INT_PENDING_MSG, lo, hi);
42 if (lo & K8_INTP_C1E_ACTIVE_MASK) {
43 if (smp_processor_id() != boot_cpu_physical_apicid)
44 printk(KERN_INFO "AMD C1E detected late. "
45 "Force timer broadcast.\n");
46 return 1;
47 }
48 return 0;
49}
50#endif
51
52int force_mwait __cpuinitdata; 27int force_mwait __cpuinitdata;
53 28
54static void __cpuinit early_init_amd(struct cpuinfo_x86 *c) 29static void __cpuinit early_init_amd(struct cpuinfo_x86 *c)
@@ -285,11 +260,6 @@ static void __cpuinit init_amd(struct cpuinfo_x86 *c)
285 num_cache_leaves = 3; 260 num_cache_leaves = 3;
286 } 261 }
287 262
288#ifdef CONFIG_X86_LOCAL_APIC
289 if (amd_apic_timer_broken(c))
290 local_apic_timer_disabled = 1;
291#endif
292
293 /* K6s reports MCEs but don't actually have all the MSRs */ 263 /* K6s reports MCEs but don't actually have all the MSRs */
294 if (c->x86 < 6) 264 if (c->x86 < 6)
295 clear_cpu_cap(c, X86_FEATURE_MCE); 265 clear_cpu_cap(c, X86_FEATURE_MCE);