diff options
Diffstat (limited to 'arch/x86/kernel/cpu/intel.c')
-rw-r--r-- | arch/x86/kernel/cpu/intel.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c index 816f27f289b1..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); |
@@ -312,7 +329,6 @@ static void __cpuinit init_intel(struct cpuinfo_x86 *c) | |||
312 | if (cpu_has_bts) | 329 | if (cpu_has_bts) |
313 | ptrace_bts_init_intel(c); | 330 | ptrace_bts_init_intel(c); |
314 | 331 | ||
315 | detect_extended_topology(c); | ||
316 | if (!cpu_has(c, X86_FEATURE_XTOPOLOGY)) { | 332 | if (!cpu_has(c, X86_FEATURE_XTOPOLOGY)) { |
317 | /* | 333 | /* |
318 | * 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 |