summaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/cpu/intel_64.c
diff options
context:
space:
mode:
authorSuresh Siddha <suresh.b.siddha@intel.com>2008-08-23 17:47:10 +0200
committerIngo Molnar <mingo@elte.hu>2008-08-23 17:47:10 +0200
commitbbb65d2d365efe9951290e61678dcf81ec60add4 (patch)
treef3eacf1b1313d729e084064ed6dda5db64522bf4 /arch/x86/kernel/cpu/intel_64.c
parent87ce786ae5f24e336195805a9fc7428a6f922478 (diff)
downloadop-kernel-dev-bbb65d2d365efe9951290e61678dcf81ec60add4.zip
op-kernel-dev-bbb65d2d365efe9951290e61678dcf81ec60add4.tar.gz
x86: use cpuid vector 0xb when available for detecting cpu topology
cpuid leaf 0xb provides extended topology enumeration. This interface provides the 32-bit x2APIC id of the logical processor and it also provides a new mechanism to detect SMT and core siblings (which provides increased addressability). Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/cpu/intel_64.c')
-rw-r--r--arch/x86/kernel/cpu/intel_64.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/x86/kernel/cpu/intel_64.c b/arch/x86/kernel/cpu/intel_64.c
index 1019c58..42d501a 100644
--- a/arch/x86/kernel/cpu/intel_64.c
+++ b/arch/x86/kernel/cpu/intel_64.c
@@ -80,7 +80,10 @@ static void __cpuinit init_intel(struct cpuinfo_x86 *c)
if (c->x86 == 6)
set_cpu_cap(c, X86_FEATURE_REP_GOOD);
set_cpu_cap(c, X86_FEATURE_LFENCE_RDTSC);
- c->x86_max_cores = intel_num_cpu_cores(c);
+
+ detect_extended_topology(c);
+ if (!cpu_has(c, X86_FEATURE_XTOPOLOGY))
+ c->x86_max_cores = intel_num_cpu_cores(c);
srat_detect_node();
}
OpenPOWER on IntegriCloud