x86/cpu/amd: Derive L3 shared_cpu_map from cpu_llc_shared_mask
authorSuravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Mon, 31 Jul 2017 08:51:59 +0000 (10:51 +0200)
committerIngo Molnar <mingo@kernel.org>
Thu, 10 Aug 2017 15:37:43 +0000 (17:37 +0200)
commit2b83809a5e6d619a780876fcaf68cdc42b50d28c
treea957d1e9b2830b4148df71d0fd6c9245cbaf2975
parentb89b41d0b8414690ec0030c134b8bde209e6d06c
x86/cpu/amd: Derive L3 shared_cpu_map from cpu_llc_shared_mask

For systems with X86_FEATURE_TOPOEXT, current logic uses the APIC ID
to calculate shared_cpu_map. However, APIC IDs are not guaranteed to
be contiguous for cores across different L3s (e.g. family17h system
w/ downcore configuration). This breaks the logic, and results in an
incorrect L3 shared_cpu_map.

Instead, always use the previously calculated cpu_llc_shared_mask of
each CPU to derive the L3 shared_cpu_map.

Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/20170731085159.9455-3-bp@alien8.de
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/kernel/cpu/intel_cacheinfo.c