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 |
