aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/smpboot.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kernel/smpboot.c')
-rw-r--r--arch/x86/kernel/smpboot.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index e9bbe02950ad..36171bcd91f8 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -423,9 +423,15 @@ static bool match_smt(struct cpuinfo_x86 *c, struct cpuinfo_x86 *o)
423 int cpu1 = c->cpu_index, cpu2 = o->cpu_index; 423 int cpu1 = c->cpu_index, cpu2 = o->cpu_index;
424 424
425 if (c->phys_proc_id == o->phys_proc_id && 425 if (c->phys_proc_id == o->phys_proc_id &&
426 per_cpu(cpu_llc_id, cpu1) == per_cpu(cpu_llc_id, cpu2) && 426 per_cpu(cpu_llc_id, cpu1) == per_cpu(cpu_llc_id, cpu2)) {
427 c->cpu_core_id == o->cpu_core_id) 427 if (c->cpu_core_id == o->cpu_core_id)
428 return topology_sane(c, o, "smt"); 428 return topology_sane(c, o, "smt");
429
430 if ((c->cu_id != 0xff) &&
431 (o->cu_id != 0xff) &&
432 (c->cu_id == o->cu_id))
433 return topology_sane(c, o, "smt");
434 }
429 435
430 } else if (c->phys_proc_id == o->phys_proc_id && 436 } else if (c->phys_proc_id == o->phys_proc_id &&
431 c->cpu_core_id == o->cpu_core_id) { 437 c->cpu_core_id == o->cpu_core_id) {