]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
sched: Unify the SCHED_{SMT,CLUSTER,MC} Kconfig
authorPeter Zijlstra <peterz@infradead.org>
Tue, 26 Aug 2025 09:08:57 +0000 (11:08 +0200)
committerPeter Zijlstra <peterz@infradead.org>
Wed, 3 Sep 2025 08:03:13 +0000 (10:03 +0200)
Like many Kconfig symbols, SCHED_{SMT,CLUSTER,MC} are duplicated
across arch/*/Kconfig. Try and clean up a little.

Suggested-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Shrikanth Hegde <sshegde@linux.ibm.com>
Tested-by: Shrikanth Hegde <sshegde@linux.ibm.com> # powerpc
Link: https://lkml.kernel.org/r/20250826094358.GG3245006@noisy.programming.kicks-ass.net
arch/Kconfig
arch/arm/Kconfig
arch/arm64/Kconfig
arch/loongarch/Kconfig
arch/mips/Kconfig
arch/parisc/Kconfig
arch/powerpc/Kconfig
arch/riscv/Kconfig
arch/s390/Kconfig
arch/sparc/Kconfig
arch/x86/Kconfig

index d1b4ffd6e085644defd780c1d3aaf6ac53a65055..4466af478950f14c7d83cba705483fe2d6bd10e0 100644 (file)
@@ -41,6 +41,44 @@ config HOTPLUG_SMT
 config SMT_NUM_THREADS_DYNAMIC
        bool
 
+config ARCH_SUPPORTS_SCHED_SMT
+       bool
+
+config ARCH_SUPPORTS_SCHED_CLUSTER
+       bool
+
+config ARCH_SUPPORTS_SCHED_MC
+       bool
+
+config SCHED_SMT
+       bool "SMT (Hyperthreading) scheduler support"
+       depends on ARCH_SUPPORTS_SCHED_SMT
+       default y
+       help
+         Improves the CPU scheduler's decision making when dealing with
+         MultiThreading at a cost of slightly increased overhead in some
+         places. If unsure say N here.
+
+config SCHED_CLUSTER
+       bool "Cluster scheduler support"
+       depends on ARCH_SUPPORTS_SCHED_CLUSTER
+       default y
+       help
+         Cluster scheduler support improves the CPU scheduler's decision
+         making when dealing with machines that have clusters of CPUs.
+         Cluster usually means a couple of CPUs which are placed closely
+         by sharing mid-level caches, last-level cache tags or internal
+         busses.
+
+config SCHED_MC
+       bool "Multi-Core Cache (MC) scheduler support"
+       depends on ARCH_SUPPORTS_SCHED_MC
+       default y
+       help
+         Multi-core scheduler support improves the CPU scheduler's decision
+         making when dealing with multi-core CPU chips at a cost of slightly
+         increased overhead in some places. If unsure say N here.
+
 # Selected by HOTPLUG_CORE_SYNC_DEAD or HOTPLUG_CORE_SYNC_FULL
 config HOTPLUG_CORE_SYNC
        bool
index b1f3df39ed4068f215a3460d5c4e021136438eaa..d13422f97bc3040796ecf2751b634133bb813509 100644 (file)
@@ -941,28 +941,14 @@ config IRQSTACKS
 config ARM_CPU_TOPOLOGY
        bool "Support cpu topology definition"
        depends on SMP && CPU_V7
+       select ARCH_SUPPORTS_SCHED_MC
+       select ARCH_SUPPORTS_SCHED_SMT
        default y
        help
          Support ARM cpu topology definition. The MPIDR register defines
          affinity between processors which is then used to describe the cpu
          topology of an ARM System.
 
-config SCHED_MC
-       bool "Multi-core scheduler support"
-       depends on ARM_CPU_TOPOLOGY
-       help
-         Multi-core scheduler support improves the CPU scheduler's decision
-         making when dealing with multi-core CPU chips at a cost of slightly
-         increased overhead in some places. If unsure say N here.
-
-config SCHED_SMT
-       bool "SMT scheduler support"
-       depends on ARM_CPU_TOPOLOGY
-       help
-         Improves the CPU scheduler's decision making when dealing with
-         MultiThreading at a cost of slightly increased overhead in some
-         places. If unsure say N here.
-
 config HAVE_ARM_SCU
        bool
        help
index e9bbfacc35a64d7ef1793a5d7f7ff8db138f2814..30733e0b8ac5fa883110bab1d3a34ff153e148a9 100644 (file)
@@ -108,6 +108,9 @@ config ARM64
        select ARCH_SUPPORTS_PER_VMA_LOCK
        select ARCH_SUPPORTS_HUGE_PFNMAP if TRANSPARENT_HUGEPAGE
        select ARCH_SUPPORTS_RT
+       select ARCH_SUPPORTS_SCHED_SMT
+       select ARCH_SUPPORTS_SCHED_CLUSTER
+       select ARCH_SUPPORTS_SCHED_MC
        select ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH
        select ARCH_WANT_COMPAT_IPC_PARSE_VERSION if COMPAT
        select ARCH_WANT_DEFAULT_BPF_JIT
@@ -1505,29 +1508,6 @@ config CPU_LITTLE_ENDIAN
 
 endchoice
 
-config SCHED_MC
-       bool "Multi-core scheduler support"
-       help
-         Multi-core scheduler support improves the CPU scheduler's decision
-         making when dealing with multi-core CPU chips at a cost of slightly
-         increased overhead in some places. If unsure say N here.
-
-config SCHED_CLUSTER
-       bool "Cluster scheduler support"
-       help
-         Cluster scheduler support improves the CPU scheduler's decision
-         making when dealing with machines that have clusters of CPUs.
-         Cluster usually means a couple of CPUs which are placed closely
-         by sharing mid-level caches, last-level cache tags or internal
-         busses.
-
-config SCHED_SMT
-       bool "SMT scheduler support"
-       help
-         Improves the CPU scheduler's decision making when dealing with
-         MultiThreading at a cost of slightly increased overhead in some
-         places. If unsure say N here.
-
 config NR_CPUS
        int "Maximum number of CPUs (2-4096)"
        range 2 4096
index f0abc38c40ac9ea3026d8e19a851cd31bb5faa9f..d1c8cb3358ef01c5e1cc0ea85506277bd20bf81e 100644 (file)
@@ -70,6 +70,8 @@ config LOONGARCH
        select ARCH_SUPPORTS_MSEAL_SYSTEM_MAPPINGS
        select ARCH_SUPPORTS_NUMA_BALANCING
        select ARCH_SUPPORTS_RT
+       select ARCH_SUPPORTS_SCHED_SMT if SMP
+       select ARCH_SUPPORTS_SCHED_MC  if SMP
        select ARCH_USE_BUILTIN_BSWAP
        select ARCH_USE_CMPXCHG_LOCKREF
        select ARCH_USE_MEMTEST
@@ -448,23 +450,6 @@ config EFI_STUB
          This kernel feature allows the kernel to be loaded directly by
          EFI firmware without the use of a bootloader.
 
-config SCHED_SMT
-       bool "SMT scheduler support"
-       depends on SMP
-       default y
-       help
-         Improves scheduler's performance when there are multiple
-         threads in one physical core.
-
-config SCHED_MC
-       bool "Multi-core scheduler support"
-       depends on SMP
-       default y
-       help
-         Multi-core scheduler support improves the CPU scheduler's decision
-         making when dealing with multi-core CPU chips at a cost of slightly
-         increased overhead in some places.
-
 config SMP
        bool "Multi-Processing support"
        help
index caf508f6e9ec8e725a73f2027d1fc29c8cf808a5..447b2fcaa316aebf00711e8bccfa3660a77f4010 100644 (file)
@@ -2223,7 +2223,7 @@ config MIPS_MT_SMP
        select SMP
        select SMP_UP
        select SYS_SUPPORTS_SMP
-       select SYS_SUPPORTS_SCHED_SMT
+       select ARCH_SUPPORTS_SCHED_SMT
        select MIPS_PERF_SHARED_TC_COUNTERS
        help
          This is a kernel model which is known as SMVP. This is supported
@@ -2235,18 +2235,6 @@ config MIPS_MT_SMP
 config MIPS_MT
        bool
 
-config SCHED_SMT
-       bool "SMT (multithreading) scheduler support"
-       depends on SYS_SUPPORTS_SCHED_SMT
-       default n
-       help
-         SMT scheduler support improves the CPU scheduler's decision making
-         when dealing with MIPS MT enabled cores at a cost of slightly
-         increased overhead in some places. If unsure say N here.
-
-config SYS_SUPPORTS_SCHED_SMT
-       bool
-
 config SYS_SUPPORTS_MULTITHREADING
        bool
 
@@ -2318,7 +2306,7 @@ config MIPS_CPS
        select HOTPLUG_CORE_SYNC_DEAD if HOTPLUG_CPU
        select SYNC_R4K if (CEVT_R4K || CSRC_R4K)
        select SYS_SUPPORTS_HOTPLUG_CPU
-       select SYS_SUPPORTS_SCHED_SMT if CPU_MIPSR6
+       select ARCH_SUPPORTS_SCHED_SMT if CPU_MIPSR6
        select SYS_SUPPORTS_SMP
        select WEAK_ORDERING
        select GENERIC_IRQ_MIGRATION if HOTPLUG_CPU
index 2efa4b08b7b841aa75cbfb1045d3bc47778a4cd4..0940c162f1f7b47d4b37152399cb15d8dfe06bd3 100644 (file)
@@ -44,6 +44,7 @@ config PARISC
        select ARCH_HAVE_NMI_SAFE_CMPXCHG
        select GENERIC_SMP_IDLE_THREAD
        select GENERIC_ARCH_TOPOLOGY if SMP
+       select ARCH_SUPPORTS_SCHED_MC if SMP && PA8X00
        select GENERIC_CPU_DEVICES if !SMP
        select GENERIC_LIB_DEVMEM_IS_ALLOWED
        select SYSCTL_ARCH_UNALIGN_ALLOW
@@ -319,14 +320,6 @@ config SMP
 
          If you don't know what to do here, say N.
 
-config SCHED_MC
-       bool "Multi-core scheduler support"
-       depends on GENERIC_ARCH_TOPOLOGY && PA8X00
-       help
-         Multi-core scheduler support improves the CPU scheduler's decision
-         making when dealing with multi-core CPU chips at a cost of slightly
-         increased overhead in some places. If unsure say N here.
-
 config IRQSTACKS
        bool "Use separate kernel stacks when processing interrupts"
        default y
index e51a595a06228ad6d6c3cc81eb0e7a3b0cbf2390..f87d169f67475a4d23531ff1eee950882b065ea5 100644 (file)
@@ -170,6 +170,9 @@ config PPC
        select ARCH_STACKWALK
        select ARCH_SUPPORTS_ATOMIC_RMW
        select ARCH_SUPPORTS_DEBUG_PAGEALLOC    if PPC_BOOK3S || PPC_8xx
+       select ARCH_SUPPORTS_SCHED_MC           if SMP
+       select ARCH_SUPPORTS_SCHED_SMT          if PPC64 && SMP
+       select SCHED_MC                         if ARCH_SUPPORTS_SCHED_MC
        select ARCH_USE_BUILTIN_BSWAP
        select ARCH_USE_CMPXCHG_LOCKREF         if PPC64
        select ARCH_USE_MEMTEST
@@ -963,18 +966,6 @@ config PPC_PROT_SAO_LPAR
 config PPC_COPRO_BASE
        bool
 
-config SCHED_SMT
-       bool "SMT (Hyperthreading) scheduler support"
-       depends on PPC64 && SMP
-       help
-         SMT scheduler support improves the CPU scheduler's decision making
-         when dealing with POWER5 cpus at a cost of slightly increased
-         overhead in some places. If unsure say N here.
-
-config SCHED_MC
-       def_bool y
-       depends on SMP
-
 config PPC_DENORMALISATION
        bool "PowerPC denormalisation exception handling"
        depends on PPC_BOOK3S_64
index a4b233a0659ed80c0eb6b118ea8c8db81ed3fdba..2a08e06207a93cdc76fc6a1f2e857e5b4c78ec66 100644 (file)
@@ -72,6 +72,7 @@ config RISCV
        select ARCH_SUPPORTS_PER_VMA_LOCK if MMU
        select ARCH_SUPPORTS_RT
        select ARCH_SUPPORTS_SHADOW_CALL_STACK if HAVE_SHADOW_CALL_STACK
+       select ARCH_SUPPORTS_SCHED_MC if SMP
        select ARCH_USE_CMPXCHG_LOCKREF if 64BIT
        select ARCH_USE_MEMTEST
        select ARCH_USE_QUEUED_RWLOCKS
@@ -453,14 +454,6 @@ config SMP
 
          If you don't know what to do here, say N.
 
-config SCHED_MC
-       bool "Multi-core scheduler support"
-       depends on SMP
-       help
-         Multi-core scheduler support improves the CPU scheduler's decision
-         making when dealing with multi-core CPU chips at a cost of slightly
-         increased overhead in some places. If unsure say N here.
-
 config NR_CPUS
        int "Maximum number of CPUs (2-512)"
        depends on SMP
index bf680c26a33cf7bef2ed5e25cabc061597c131b1..87ddd4968c4b8e6180965f32afb9f2fd195eae32 100644 (file)
@@ -547,15 +547,11 @@ config NODES_SHIFT
        depends on NUMA
        default "1"
 
-config SCHED_SMT
-       def_bool n
-
-config SCHED_MC
-       def_bool n
-
 config SCHED_TOPOLOGY
        def_bool y
        prompt "Topology scheduler support"
+       select ARCH_SUPPORTS_SCHED_SMT
+       select ARCH_SUPPORTS_SCHED_MC
        select SCHED_SMT
        select SCHED_MC
        help
index 7b595092cbfb65bf196fdae7039be38f7d201a7a..a630d373e6453c745ab8bf58fc5622cf0edaf4c9 100644 (file)
@@ -110,6 +110,8 @@ config SPARC64
        select HAVE_SETUP_PER_CPU_AREA
        select NEED_PER_CPU_EMBED_FIRST_CHUNK
        select NEED_PER_CPU_PAGE_FIRST_CHUNK
+       select ARCH_SUPPORTS_SCHED_SMT if SMP
+       select ARCH_SUPPORTS_SCHED_MC  if SMP
 
 config ARCH_PROC_KCORE_TEXT
        def_bool y
@@ -288,24 +290,6 @@ if SPARC64 || COMPILE_TEST
 source "kernel/power/Kconfig"
 endif
 
-config SCHED_SMT
-       bool "SMT (Hyperthreading) scheduler support"
-       depends on SPARC64 && SMP
-       default y
-       help
-         SMT scheduler support improves the CPU scheduler's decision making
-         when dealing with SPARC cpus at a cost of slightly increased overhead
-         in some places. If unsure say N here.
-
-config SCHED_MC
-       bool "Multi-core scheduler support"
-       depends on SPARC64 && SMP
-       default y
-       help
-         Multi-core scheduler support improves the CPU scheduler's decision
-         making when dealing with multi-core CPU chips at a cost of slightly
-         increased overhead in some places. If unsure say N here.
-
 config CMDLINE_BOOL
        bool "Default bootloader kernel arguments"
        depends on SPARC64
index 58d890fe2100eb6990880bcf5ba600cdefb0a7d1..c8df03237bdf60098bcf584f73d0332593c1075f 100644 (file)
@@ -330,6 +330,10 @@ config X86
        imply IMA_SECURE_AND_OR_TRUSTED_BOOT    if EFI
        select HAVE_DYNAMIC_FTRACE_NO_PATCHABLE
        select ARCH_SUPPORTS_PT_RECLAIM         if X86_64
+       select ARCH_SUPPORTS_SCHED_SMT          if SMP
+       select SCHED_SMT                        if SMP
+       select ARCH_SUPPORTS_SCHED_CLUSTER      if SMP
+       select ARCH_SUPPORTS_SCHED_MC           if SMP
 
 config INSTRUCTION_DECODER
        def_bool y
@@ -1031,29 +1035,6 @@ config NR_CPUS
          This is purely to save memory: each supported CPU adds about 8KB
          to the kernel image.
 
-config SCHED_CLUSTER
-       bool "Cluster scheduler support"
-       depends on SMP
-       default y
-       help
-         Cluster scheduler support improves the CPU scheduler's decision
-         making when dealing with machines that have clusters of CPUs.
-         Cluster usually means a couple of CPUs which are placed closely
-         by sharing mid-level caches, last-level cache tags or internal
-         busses.
-
-config SCHED_SMT
-       def_bool y if SMP
-
-config SCHED_MC
-       def_bool y
-       prompt "Multi-core scheduler support"
-       depends on SMP
-       help
-         Multi-core scheduler support improves the CPU scheduler's decision
-         making when dealing with multi-core CPU chips at a cost of slightly
-         increased overhead in some places. If unsure say N here.
-
 config SCHED_MC_PRIO
        bool "CPU core priorities scheduler support"
        depends on SCHED_MC