Messages in this thread | | | From | Thomas Gleixner <> | Subject | [patch V3 00/40] x86/cpu: Rework the topology evaluation | Date | Wed, 2 Aug 2023 12:20:57 +0200 (CEST) |
| |
Hi!
This is the follow up to V2:
https://lore.kernel.org/lkml/20230728105650.565799744@linutronix.de
which addresses the review feedback and some fallout reported on and off-list.
TLDR:
This reworks the way how topology information is evaluated via CPUID in preparation for a larger topology management overhaul to address shortcomings of the current code vs. hybrid systems and systems which make use of the extended topology domains in leaf 0x1f. Aside of that it's an overdue spring cleaning to get rid of accumulated layers of duct tape and haywire.
What changed vs. V2:
- Decoded and fixed the fallout vs. XEN/PV reported by Juergen. Thanks to Juergen for the remote hand debugging sessions!
That's addressed in the first two new patches in this series. Summary: XEN/PV booted by pure chance since the addition of SMT control 5 years ago.
- Fixed the off by one in the AMD parser which was debugged by Michael
- Addressed review comments from various people
As discussed in:
https://lore.kernel.org/lkml/BYAPR21MB16889FD224344B1B28BE22A1D705A@BYAPR21MB1688.namprd21.prod.outlook.com .... https://lore.kernel.org/lkml/87r0omjt8c.ffs@tglx
this series unfortunately brings the Hyper-V BIOS inconsistency into effect, which results in a slight performance impact. The L3 association which "worked" so far by exploiting the inconsistency of the Linux topology code is not longer supportable as we really need to get the actual short comings of our topology management addressed in a consistent way.
The series is based on V3 of the APIC cleanup series:
https://lore.kernel.org/lkml/20230801103042.936020332@linutronix.de
and also available on top of that from git:
git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git topo-cpuid-v3
Thanks,
tglx --- arch/x86/kernel/cpu/topology.c | 168 ------------------- b/Documentation/arch/x86/topology.rst | 12 - b/arch/x86/events/amd/core.c | 2 b/arch/x86/events/amd/uncore.c | 2 b/arch/x86/events/intel/uncore.c | 2 b/arch/x86/hyperv/hv_vtl.c | 2 b/arch/x86/include/asm/apic.h | 32 +-- b/arch/x86/include/asm/cacheinfo.h | 3 b/arch/x86/include/asm/cpuid.h | 36 ++++ b/arch/x86/include/asm/mpspec.h | 2 b/arch/x86/include/asm/processor.h | 60 ++++--- b/arch/x86/include/asm/smp.h | 4 b/arch/x86/include/asm/topology.h | 51 +++++ b/arch/x86/include/asm/x86_init.h | 2 b/arch/x86/kernel/acpi/boot.c | 4 b/arch/x86/kernel/amd_nb.c | 8 b/arch/x86/kernel/apic/apic.c | 25 +- b/arch/x86/kernel/apic/apic_common.c | 4 b/arch/x86/kernel/apic/apic_flat_64.c | 13 - b/arch/x86/kernel/apic/apic_noop.c | 9 - b/arch/x86/kernel/apic/apic_numachip.c | 21 -- b/arch/x86/kernel/apic/bigsmp_32.c | 10 - b/arch/x86/kernel/apic/local.h | 6 b/arch/x86/kernel/apic/probe_32.c | 10 - b/arch/x86/kernel/apic/x2apic_cluster.c | 1 b/arch/x86/kernel/apic/x2apic_phys.c | 10 - b/arch/x86/kernel/apic/x2apic_uv_x.c | 67 +------ b/arch/x86/kernel/cpu/Makefile | 5 b/arch/x86/kernel/cpu/amd.c | 156 ------------------ b/arch/x86/kernel/cpu/cacheinfo.c | 51 ++--- b/arch/x86/kernel/cpu/centaur.c | 4 b/arch/x86/kernel/cpu/common.c | 111 +----------- b/arch/x86/kernel/cpu/cpu.h | 14 + b/arch/x86/kernel/cpu/debugfs.c | 97 +++++++++++ b/arch/x86/kernel/cpu/hygon.c | 133 --------------- b/arch/x86/kernel/cpu/intel.c | 38 ---- b/arch/x86/kernel/cpu/mce/amd.c | 4 b/arch/x86/kernel/cpu/mce/apei.c | 4 b/arch/x86/kernel/cpu/mce/core.c | 4 b/arch/x86/kernel/cpu/mce/inject.c | 7 b/arch/x86/kernel/cpu/proc.c | 8 b/arch/x86/kernel/cpu/topology.h | 51 +++++ b/arch/x86/kernel/cpu/topology_amd.c | 179 ++++++++++++++++++++ b/arch/x86/kernel/cpu/topology_common.c | 240 ++++++++++++++++++++++++++++ b/arch/x86/kernel/cpu/topology_ext.c | 136 +++++++++++++++ b/arch/x86/kernel/cpu/zhaoxin.c | 18 -- b/arch/x86/kernel/kvm.c | 6 b/arch/x86/kernel/sev.c | 2 b/arch/x86/kernel/smpboot.c | 97 ++++++----- b/arch/x86/kernel/vsmp_64.c | 13 - b/arch/x86/mm/amdtopology.c | 35 +--- b/arch/x86/mm/numa.c | 4 b/arch/x86/xen/apic.c | 14 - b/arch/x86/xen/smp_pv.c | 3 b/drivers/edac/amd64_edac.c | 4 b/drivers/edac/mce_amd.c | 4 b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c | 2 b/drivers/hwmon/fam15h_power.c | 7 b/drivers/scsi/lpfc/lpfc_init.c | 8 b/drivers/virt/acrn/hsm.c | 2 b/kernel/cpu.c | 6 61 files changed, 1077 insertions(+), 956 deletions(-)
| |