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 46732dc3b73c..99b920d0e516 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -433,9 +433,15 @@ static bool match_smt(struct cpuinfo_x86 *c, struct cpuinfo_x86 *o)
433 int cpu1 = c->cpu_index, cpu2 = o->cpu_index; 433 int cpu1 = c->cpu_index, cpu2 = o->cpu_index;
434 434
435 if (c->phys_proc_id == o->phys_proc_id && 435 if (c->phys_proc_id == o->phys_proc_id &&
436 per_cpu(cpu_llc_id, cpu1) == per_cpu(cpu_llc_id, cpu2) && 436 per_cpu(cpu_llc_id, cpu1) == per_cpu(cpu_llc_id, cpu2)) {
437 c->cpu_core_id == o->cpu_core_id) 437 if (c->cpu_core_id == o->cpu_core_id)
438 return topology_sane(c, o, "smt"); 438 return topology_sane(c, o, "smt");
439
440 if ((c->cu_id != 0xff) &&
441 (o->cu_id != 0xff) &&
442 (c->cu_id == o->cu_id))
443 return topology_sane(c, o, "smt");
444 }
439 445
440 } else if (c->phys_proc_id == o->phys_proc_id && 446 } else if (c->phys_proc_id == o->phys_proc_id &&
441 c->cpu_core_id == o->cpu_core_id) { 447 c->cpu_core_id == o->cpu_core_id) {