]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
topology: Introduce cpu_smt_mask for CONFIG_SCHED_SMT=n
authorShrikanth Hegde <sshegde@linux.ibm.com>
Fri, 15 May 2026 17:24:53 +0000 (22:54 +0530)
committerPeter Zijlstra <peterz@infradead.org>
Tue, 19 May 2026 10:17:36 +0000 (12:17 +0200)
Define cpu_smt_mask in case of CONFIG_SCHED_SMT=n as cpumask_of that
CPU. With that config, it is expected that kernel treats each CPU
as individual core. Using cpumask_of(cpu) reflects that.

This would help to get rid of the ifdeffery that is spread across
the codebase since cpu_smt_mask is defined only in case of
CONFIG_SCHED_SMT=y.

Note: There is no arch today which defines cpu_smt_mask unconditionally.
So likely defining the cpu_smt_mask shouldn't lead redefinition errors.

Signed-off-by: Shrikanth Hegde <sshegde@linux.ibm.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Phil Auld <pauld@redhat.com>
Reviewed-by: Valentin Schneider <vschneid@redhat.com>
Tested-by: K Prateek Nayak <kprateek.nayak@amd.com>
Link: https://patch.msgid.link/20260515172456.542799-2-sshegde@linux.ibm.com
include/linux/topology.h

index 6575af39fd10f7b19973e607e9e3f095e69a6780..709a2dcf4c7385b88b0698d40aca2765f41d8f60 100644 (file)
@@ -230,11 +230,24 @@ static inline int cpu_to_mem(int cpu)
 #define topology_drawer_cpumask(cpu)           cpumask_of(cpu)
 #endif
 
-#if defined(CONFIG_SCHED_SMT) && !defined(cpu_smt_mask)
+/*
+ * Defining cpu_smt_mask as cpumask_of that CPU helps to get
+ * rid of lot of ifdeffery all around the codebase in case of
+ * CONFIG_SCHED_SMT=n. It just means there are no other siblings, which
+ * is what is expected.
+ */
+#if defined(CONFIG_SCHED_SMT)
+# if !defined(cpu_smt_mask)
 static inline const struct cpumask *cpu_smt_mask(int cpu)
 {
        return topology_sibling_cpumask(cpu);
 }
+# endif
+#else  /* !CONFIG_SCHED_SMT */
+static inline const struct cpumask *cpu_smt_mask(int cpu)
+{
+       return cpumask_of(cpu);
+}
 #endif
 
 #ifndef topology_is_primary_thread