x86/cpu: Move cu_id into topology info
authorThomas Gleixner <tglx@linutronix.de>
Mon, 14 Aug 2023 08:18:35 +0000 (10:18 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 10 Oct 2023 12:38:18 +0000 (14:38 +0200)
No functional change.

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 <mikelley@microsoft.com>
Tested-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Tested-by: Zhang Rui <rui.zhang@intel.com>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20230814085112.628405546@linutronix.de
arch/x86/include/asm/processor.h
arch/x86/kernel/cpu/amd.c
arch/x86/kernel/cpu/common.c
arch/x86/kernel/smpboot.c

index a63760284cbab9d295691b60e9da08893eb2f53a..517d0bc319e4bb6c94b4520553ea9b725c514c38 100644 (file)
@@ -90,6 +90,9 @@ struct cpuinfo_topology {
        // Physical die ID on AMD, Relative on Intel
        u32                     die_id;
 
+       // Compute unit ID - AMD specific
+       u32                     cu_id;
+
        // Core ID relative to the package
        u32                     core_id;
 };
@@ -110,7 +113,6 @@ struct cpuinfo_x86 {
        __u8                    x86_phys_bits;
        /* CPUID returned core id bits: */
        __u8                    x86_coreid_bits;
-       __u8                    cu_id;
        /* Max extended CPUID function supported: */
        __u32                   extended_cpuid_level;
        /* Maximum supported CPUID level, -1=no CPUID: */
index 66bb92995a12ca662785856e4505c791160ea923..a744d8d51b394999b73dc6bb13ff73fca82169e2 100644 (file)
@@ -413,7 +413,7 @@ static void amd_get_topology(struct cpuinfo_x86 *c)
                c->topo.die_id  = ecx & 0xff;
 
                if (c->x86 == 0x15)
-                       c->cu_id = ebx & 0xff;
+                       c->topo.cu_id = ebx & 0xff;
 
                if (c->x86 >= 0x17) {
                        c->topo.core_id = ebx & 0xff;
index 414766545ef7f6cafe28f45bf5f97b6569757f63..106b27f29aa9ab6d699eae9c1a387afcb8755de3 100644 (file)
@@ -1829,7 +1829,7 @@ static void identify_cpu(struct cpuinfo_x86 *c)
        c->x86_model_id[0] = '\0';  /* Unset */
        c->x86_max_cores = 1;
        c->x86_coreid_bits = 0;
-       c->cu_id = 0xff;
+       c->topo.cu_id = 0xff;
 #ifdef CONFIG_X86_64
        c->x86_clflush_size = 64;
        c->x86_phys_bits = 36;
index 7ab9224736db5d6a4248249bb58a718e069b9ab4..17b86f4dbe66c1eb1739bbbb596cdeabd720d42d 100644 (file)
@@ -482,9 +482,9 @@ static bool match_smt(struct cpuinfo_x86 *c, struct cpuinfo_x86 *o)
                        if (c->topo.core_id == o->topo.core_id)
                                return topology_sane(c, o, "smt");
 
-                       if ((c->cu_id != 0xff) &&
-                           (o->cu_id != 0xff) &&
-                           (c->cu_id == o->cu_id))
+                       if ((c->topo.cu_id != 0xff) &&
+                           (o->topo.cu_id != 0xff) &&
+                           (c->topo.cu_id == o->topo.cu_id))
                                return topology_sane(c, o, "smt");
                }