aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/cpu/intel.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kernel/cpu/intel.c')
-rw-r--r--arch/x86/kernel/cpu/intel.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
index cce0b6118d55..ccfd2047630c 100644
--- a/arch/x86/kernel/cpu/intel.c
+++ b/arch/x86/kernel/cpu/intel.c
@@ -41,6 +41,16 @@ static void __cpuinit early_init_intel(struct cpuinfo_x86 *c)
41 if (c->x86 == 15 && c->x86_cache_alignment == 64) 41 if (c->x86 == 15 && c->x86_cache_alignment == 64)
42 c->x86_cache_alignment = 128; 42 c->x86_cache_alignment = 128;
43#endif 43#endif
44
45 /*
46 * c->x86_power is 8000_0007 edx. Bit 8 is TSC runs at constant rate
47 * with P/T states and does not stop in deep C-states
48 */
49 if (c->x86_power & (1 << 8)) {
50 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC);
51 set_cpu_cap(c, X86_FEATURE_NONSTOP_TSC);
52 }
53
44} 54}
45 55
46#ifdef CONFIG_X86_32 56#ifdef CONFIG_X86_32
@@ -242,6 +252,13 @@ static void __cpuinit init_intel(struct cpuinfo_x86 *c)
242 252
243 intel_workarounds(c); 253 intel_workarounds(c);
244 254
255 /*
256 * Detect the extended topology information if available. This
257 * will reinitialise the initial_apicid which will be used
258 * in init_intel_cacheinfo()
259 */
260 detect_extended_topology(c);
261
245 l2 = init_intel_cacheinfo(c); 262 l2 = init_intel_cacheinfo(c);
246 if (c->cpuid_level > 9) { 263 if (c->cpuid_level > 9) {
247 unsigned eax = cpuid_eax(10); 264 unsigned eax = cpuid_eax(10);
@@ -307,13 +324,11 @@ static void __cpuinit init_intel(struct cpuinfo_x86 *c)
307 set_cpu_cap(c, X86_FEATURE_P4); 324 set_cpu_cap(c, X86_FEATURE_P4);
308 if (c->x86 == 6) 325 if (c->x86 == 6)
309 set_cpu_cap(c, X86_FEATURE_P3); 326 set_cpu_cap(c, X86_FEATURE_P3);
327#endif
310 328
311 if (cpu_has_bts) 329 if (cpu_has_bts)
312 ptrace_bts_init_intel(c); 330 ptrace_bts_init_intel(c);
313 331
314#endif
315
316 detect_extended_topology(c);
317 if (!cpu_has(c, X86_FEATURE_XTOPOLOGY)) { 332 if (!cpu_has(c, X86_FEATURE_XTOPOLOGY)) {
318 /* 333 /*
319 * let's use the legacy cpuid vector 0x1 and 0x4 for topology 334 * let's use the legacy cpuid vector 0x1 and 0x4 for topology