x86/cpu: Remove topology.c
authorThomas Gleixner <tglx@linutronix.de>
Tue, 13 Feb 2024 21:04:20 +0000 (22:04 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 15 Feb 2024 21:07:38 +0000 (22:07 +0100)
No more users. Stick it into the ugly code museum.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Juergen Gross <jgross@suse.com>
Tested-by: Sohil Mehta <sohil.mehta@intel.com>
Tested-by: Michael Kelley <mhklinux@outlook.com>
Tested-by: Zhang Rui <rui.zhang@intel.com>
Tested-by: Wang Wendy <wendy.wang@intel.com>
Tested-by: K Prateek Nayak <kprateek.nayak@amd.com>
Link: https://lore.kernel.org/r/20240212153625.395230346@linutronix.de
arch/x86/kernel/cpu/Makefile
arch/x86/kernel/cpu/topology.c [deleted file]

index 3ee24ff62cc4241f69e1eb32f5a1e332bbaed7a8..9e0a1c119a91c48494ab2d24d43ff9fced307663 100644 (file)
@@ -18,7 +18,7 @@ KMSAN_SANITIZE_common.o := n
 KCSAN_SANITIZE_common.o := n
 
 obj-y                  := cacheinfo.o scattered.o
-obj-y                  += topology_common.o topology_ext.o topology_amd.o topology.o
+obj-y                  += topology_common.o topology_ext.o topology_amd.o
 obj-y                  += common.o
 obj-y                  += rdrand.o
 obj-y                  += match.o
diff --git a/arch/x86/kernel/cpu/topology.c b/arch/x86/kernel/cpu/topology.c
deleted file mode 100644 (file)
index 2b68f26..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Check for extended topology enumeration cpuid leaf 0xb and if it
- * exists, use it for populating initial_apicid and cpu topology
- * detection.
- */
-
-#include <linux/cpu.h>
-#include <asm/apic.h>
-#include <asm/memtype.h>
-#include <asm/processor.h>
-
-#include "cpu.h"
-
-/* leaf 0xb SMT level */
-#define SMT_LEVEL      0
-
-/* extended topology sub-leaf types */
-#define INVALID_TYPE   0
-#define SMT_TYPE       1
-#define CORE_TYPE      2
-#define DIE_TYPE       5
-
-#define LEAFB_SUBTYPE(ecx)             (((ecx) >> 8) & 0xff)
-#define BITS_SHIFT_NEXT_LEVEL(eax)     ((eax) & 0x1f)
-#define LEVEL_MAX_SIBLINGS(ebx)                ((ebx) & 0xffff)
-
-#ifdef CONFIG_SMP
-/*
- * Check if given CPUID extended topology "leaf" is implemented
- */
-static int check_extended_topology_leaf(int leaf)
-{
-       unsigned int eax, ebx, ecx, edx;
-
-       cpuid_count(leaf, SMT_LEVEL, &eax, &ebx, &ecx, &edx);
-
-       if (ebx == 0 || (LEAFB_SUBTYPE(ecx) != SMT_TYPE))
-               return -1;
-
-       return 0;
-}
-/*
- * Return best CPUID Extended Topology Leaf supported
- */
-static int detect_extended_topology_leaf(struct cpuinfo_x86 *c)
-{
-       if (c->cpuid_level >= 0x1f) {
-               if (check_extended_topology_leaf(0x1f) == 0)
-                       return 0x1f;
-       }
-
-       if (c->cpuid_level >= 0xb) {
-               if (check_extended_topology_leaf(0xb) == 0)
-                       return 0xb;
-       }
-
-       return -1;
-}
-#endif
-
-/*
- * Check for extended topology enumeration cpuid leaf, and if it
- * exists, use it for populating initial_apicid and cpu topology
- * detection.
- */
-int detect_extended_topology(struct cpuinfo_x86 *c)
-{
-#ifdef CONFIG_SMP
-       unsigned int eax, ebx, ecx, edx, sub_index;
-       unsigned int ht_mask_width, core_plus_mask_width, die_plus_mask_width;
-       unsigned int core_select_mask, core_level_siblings;
-       unsigned int die_select_mask, die_level_siblings;
-       unsigned int pkg_mask_width;
-       bool die_level_present = false;
-       int leaf;
-
-       leaf = detect_extended_topology_leaf(c);
-       if (leaf < 0)
-               return -1;
-
-       /*
-        * Populate HT related information from sub-leaf level 0.
-        */
-       cpuid_count(leaf, SMT_LEVEL, &eax, &ebx, &ecx, &edx);
-       c->topo.initial_apicid = edx;
-       core_level_siblings = LEVEL_MAX_SIBLINGS(ebx);
-       smp_num_siblings = max_t(int, smp_num_siblings, LEVEL_MAX_SIBLINGS(ebx));
-       core_plus_mask_width = ht_mask_width = BITS_SHIFT_NEXT_LEVEL(eax);
-       die_level_siblings = LEVEL_MAX_SIBLINGS(ebx);
-       pkg_mask_width = die_plus_mask_width = BITS_SHIFT_NEXT_LEVEL(eax);
-
-       sub_index = 1;
-       while (true) {
-               cpuid_count(leaf, sub_index, &eax, &ebx, &ecx, &edx);
-
-               /*
-                * Check for the Core type in the implemented sub leaves.
-                */
-               if (LEAFB_SUBTYPE(ecx) == CORE_TYPE) {
-                       core_level_siblings = LEVEL_MAX_SIBLINGS(ebx);
-                       core_plus_mask_width = BITS_SHIFT_NEXT_LEVEL(eax);
-                       die_level_siblings = core_level_siblings;
-                       die_plus_mask_width = BITS_SHIFT_NEXT_LEVEL(eax);
-               }
-               if (LEAFB_SUBTYPE(ecx) == DIE_TYPE) {
-                       die_level_present = true;
-                       die_level_siblings = LEVEL_MAX_SIBLINGS(ebx);
-                       die_plus_mask_width = BITS_SHIFT_NEXT_LEVEL(eax);
-               }
-
-               if (LEAFB_SUBTYPE(ecx) != INVALID_TYPE)
-                       pkg_mask_width = BITS_SHIFT_NEXT_LEVEL(eax);
-               else
-                       break;
-
-               sub_index++;
-       }
-
-       core_select_mask = (~(-1 << pkg_mask_width)) >> ht_mask_width;
-       die_select_mask = (~(-1 << die_plus_mask_width)) >>
-                               core_plus_mask_width;
-
-       c->topo.core_id = apic->phys_pkg_id(c->topo.initial_apicid,
-                               ht_mask_width) & core_select_mask;
-
-       if (die_level_present) {
-               c->topo.die_id = apic->phys_pkg_id(c->topo.initial_apicid,
-                                       core_plus_mask_width) & die_select_mask;
-       }
-
-       c->topo.pkg_id = apic->phys_pkg_id(c->topo.initial_apicid, pkg_mask_width);
-       /*
-        * Reinit the apicid, now that we have extended initial_apicid.
-        */
-       c->topo.apicid = apic->phys_pkg_id(c->topo.initial_apicid, 0);
-
-       c->x86_max_cores = (core_level_siblings / smp_num_siblings);
-       __max_die_per_package = (die_level_siblings / core_level_siblings);
-#endif
-       return 0;
-}