aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/smpboot.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2012-06-20 08:22:32 -0400
committerIngo Molnar <mingo@kernel.org>2012-06-20 08:22:34 -0400
commit6a991acceedce3ca93caef8ba7af2468c9451614 (patch)
tree1997d71fc57bdebd12fc70a73070281614b52f15 /arch/x86/kernel/smpboot.c
parent70fb74a5420f9caa3e001d65004e4b669124283e (diff)
parent485802a6c524e62b5924849dd727ddbb1497cc71 (diff)
Merge commit 'v3.5-rc3' into x86/debug
Merge it in to pick up a fix that we are going to clean up in this branch. Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/x86/kernel/smpboot.c')
-rw-r--r--arch/x86/kernel/smpboot.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index 456d64806c8f..54e938de7133 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -351,9 +351,12 @@ static bool __cpuinit match_llc(struct cpuinfo_x86 *c, struct cpuinfo_x86 *o)
351 351
352static bool __cpuinit match_mc(struct cpuinfo_x86 *c, struct cpuinfo_x86 *o) 352static bool __cpuinit match_mc(struct cpuinfo_x86 *c, struct cpuinfo_x86 *o)
353{ 353{
354 if (c->phys_proc_id == o->phys_proc_id) 354 if (c->phys_proc_id == o->phys_proc_id) {
355 return topology_sane(c, o, "mc"); 355 if (cpu_has(c, X86_FEATURE_AMD_DCM))
356 return true;
356 357
358 return topology_sane(c, o, "mc");
359 }
357 return false; 360 return false;
358} 361}
359 362
@@ -384,6 +387,15 @@ void __cpuinit set_cpu_sibling_map(int cpu)
384 if ((i == cpu) || (has_mc && match_llc(c, o))) 387 if ((i == cpu) || (has_mc && match_llc(c, o)))
385 link_mask(llc_shared, cpu, i); 388 link_mask(llc_shared, cpu, i);
386 389
390 }
391
392 /*
393 * This needs a separate iteration over the cpus because we rely on all
394 * cpu_sibling_mask links to be set-up.
395 */
396 for_each_cpu(i, cpu_sibling_setup_mask) {
397 o = &cpu_data(i);
398
387 if ((i == cpu) || (has_mc && match_mc(c, o))) { 399 if ((i == cpu) || (has_mc && match_mc(c, o))) {
388 link_mask(core, cpu, i); 400 link_mask(core, cpu, i);
389 401