All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Hansen <dave@sr71.net>
To: a.p.zijlstra@chello.nl
Cc: mingo@kernel.org, hpa@linux.intel.com, brice.goglin@gmail.com,
	bp@alien8.de, linux-kernel@vger.kernel.org,
	Dave Hansen <dave@sr71.net>,
	dave.hansen@linux.intel.com
Subject: [RFC][PATCH 6/6] sched: consolidate config options
Date: Wed, 17 Sep 2014 15:33:20 -0700	[thread overview]
Message-ID: <20140917223320.2FF9CF11@viggo.jf.intel.com> (raw)
In-Reply-To: <20140917223310.026BCC2C@viggo.jf.intel.com>


I originally did this when renaming CONFIG_SCHED_MC.  I ended up
not renaming it, but I still think it's nice to have all the
Kconfigs consolidated like this.

--

From: Dave Hansen <dave.hansen@linux.intel.com>

We have 2 config options (SCHED_MC and SCHED_SMT) which are used
across a few architectures.  We have one (SCHED_BOOK) only used
on s390.

The Kconfig text for MC/SMT are copied verbatim across each of
the architectures that use it.  This consolidates them down to a
single Kconfig location.

This gives us a centrally-defined set of config options which
architectures can 'select' when needed.

Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
---

 b/arch/arm/Kconfig                       |   18 ++-----------
 b/arch/arm64/Kconfig                     |   18 ++-----------
 b/arch/ia64/Kconfig                      |    9 ------
 b/arch/mips/Kconfig                      |   14 +---------
 b/arch/powerpc/Kconfig                   |    8 -----
 b/arch/powerpc/platforms/Kconfig.cputype |    1 
 b/arch/s390/Kconfig                      |   14 ++--------
 b/arch/sh/Kconfig                        |    1 
 b/arch/sh/mm/Kconfig                     |    9 ------
 b/arch/sparc/Kconfig                     |   20 ++------------
 b/arch/x86/Kconfig                       |   20 ++------------
 b/kernel/sched/Kconfig                   |   42 +++++++++++++++++++++++++++++++
 12 files changed, 63 insertions(+), 111 deletions(-)

diff -puN arch/arm64/Kconfig~consolidate-config-SCHED_MC arch/arm64/Kconfig
--- a/arch/arm64/Kconfig~consolidate-config-SCHED_MC	2014-09-17 15:28:58.592621508 -0700
+++ b/arch/arm64/Kconfig	2014-09-17 15:28:58.613622467 -0700
@@ -68,6 +68,8 @@ config ARM64
 	select SPARSE_IRQ
 	select SYSCTL_EXCEPTION_TRACE
 	select HAVE_CONTEXT_TRACKING
+	select ARCH_ENABLE_SCHED_MC
+	select ARCH_ENABLE_SCHED_SMT
 	help
 	  ARM 64-bit (AArch64) Linux support.
 
@@ -235,21 +237,7 @@ 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 SCHED_SMT
-	bool "SMT scheduler support"
-	depends on SMP
-	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.
+source kernel/sched/Kconfig
 
 config NR_CPUS
 	int "Maximum number of CPUs (2-32)"
diff -puN arch/arm/Kconfig~consolidate-config-SCHED_MC arch/arm/Kconfig
--- a/arch/arm/Kconfig~consolidate-config-SCHED_MC	2014-09-17 15:28:58.593621554 -0700
+++ b/arch/arm/Kconfig	2014-09-17 15:28:58.614622513 -0700
@@ -1355,27 +1355,15 @@ config SMP_ON_UP
 config ARM_CPU_TOPOLOGY
 	bool "Support cpu topology definition"
 	depends on SMP && CPU_V7
+	select ARCH_ENABLE_SCHED_MC
+	select ARCH_ENABLE_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.
+source kernel/sched/Kconfig
 
 config HAVE_ARM_SCU
 	bool
diff -puN arch/ia64/Kconfig~consolidate-config-SCHED_MC arch/ia64/Kconfig
--- a/arch/ia64/Kconfig~consolidate-config-SCHED_MC	2014-09-17 15:28:58.595621644 -0700
+++ b/arch/ia64/Kconfig	2014-09-17 15:28:58.614622513 -0700
@@ -49,6 +49,7 @@ config IA64
 	select MODULES_USE_ELF_RELA
 	select ARCH_USE_CMPXCHG_LOCKREF
 	select HAVE_ARCH_AUDITSYSCALL
+	select ARCH_ENABLE_SCHED_SMT
 	default y
 	help
 	  The Itanium Processor Family is Intel's 64-bit successor to
@@ -382,14 +383,6 @@ config ARCH_ENABLE_MEMORY_HOTPLUG
 config ARCH_ENABLE_MEMORY_HOTREMOVE
 	def_bool y
 
-config SCHED_SMT
-	bool "SMT scheduler support"
-	depends on SMP
-	help
-	  Improves the CPU scheduler's decision making when dealing with
-	  Intel IA64 chips with MultiThreading at a cost of slightly increased
-	  overhead in some places. If unsure say N here.
-
 config PERMIT_BSP_REMOVE
 	bool "Support removal of Bootstrap Processor"
 	depends on HOTPLUG_CPU
diff -puN arch/mips/Kconfig~consolidate-config-SCHED_MC arch/mips/Kconfig
--- a/arch/mips/Kconfig~consolidate-config-SCHED_MC	2014-09-17 15:28:58.597621736 -0700
+++ b/arch/mips/Kconfig	2014-09-17 15:28:58.615622560 -0700
@@ -1948,7 +1948,7 @@ config MIPS_MT_SMP
 	select SMP
 	select SMP_UP
 	select SYS_SUPPORTS_SMP
-	select SYS_SUPPORTS_SCHED_SMT
+	select ARCH_ENABLE_SCHED_SMT
 	select MIPS_PERF_SHARED_TC_COUNTERS
 	help
 	  This is a kernel model which is known as SMVP. This is supported
@@ -1960,17 +1960,7 @@ 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
+source "kernel/sched/Kconfig"
 
 config SYS_SUPPORTS_MULTITHREADING
 	bool
diff -puN arch/powerpc/Kconfig~consolidate-config-SCHED_MC arch/powerpc/Kconfig
--- a/arch/powerpc/Kconfig~consolidate-config-SCHED_MC	2014-09-17 15:28:58.599621828 -0700
+++ b/arch/powerpc/Kconfig	2014-09-17 15:28:58.616622606 -0700
@@ -603,14 +603,6 @@ config PPC_SUBPAGE_PROT
 	  to set access permissions (read/write, readonly, or no access)
 	  on the 4k subpages of each 64k page.
 
-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 PPC_DENORMALISATION
 	bool "PowerPC denormalisation exception handling"
 	depends on PPC_BOOK3S_64
diff -puN arch/powerpc/platforms/Kconfig.cputype~consolidate-config-SCHED_MC arch/powerpc/platforms/Kconfig.cputype
--- a/arch/powerpc/platforms/Kconfig.cputype~consolidate-config-SCHED_MC	2014-09-17 15:28:58.600621874 -0700
+++ b/arch/powerpc/platforms/Kconfig.cputype	2014-09-17 15:28:58.616622606 -0700
@@ -2,6 +2,7 @@ config PPC64
 	bool "64-bit kernel"
 	default n
 	select HAVE_VIRT_CPU_ACCOUNTING
+	select SCHED_SMT if SMP
 	help
 	  This option selects whether a 32-bit or a 64-bit kernel
 	  will be built.
diff -puN arch/s390/Kconfig~consolidate-config-SCHED_MC arch/s390/Kconfig
--- a/arch/s390/Kconfig~consolidate-config-SCHED_MC	2014-09-17 15:28:58.602621966 -0700
+++ b/arch/s390/Kconfig	2014-09-17 15:28:58.617622652 -0700
@@ -146,6 +146,8 @@ config S390
 	select VIRT_CPU_ACCOUNTING
 	select VIRT_TO_BUS
 	select ARCH_HAS_SG_CHAIN
+	select ARCH_ENABLE_SCHED_BOOK
+	select ARCH_ENABLE_SCHED_MC
 
 config SCHED_OMIT_FRAME_POINTER
 	def_bool y
@@ -372,17 +374,7 @@ config HOTPLUG_CPU
 	  can be controlled through /sys/devices/system/cpu/cpu#.
 	  Say N if you want to disable CPU hotplug.
 
-config SCHED_MC
-	def_bool n
-
-config SCHED_BOOK
-	def_bool y
-	prompt "Book scheduler support"
-	depends on SMP
-	select SCHED_MC
-	help
-	  Book scheduler support improves the CPU scheduler's decision making
-	  when dealing with machines that have several books.
+source kernel/sched/Kconfig
 
 source kernel/Kconfig.preempt
 
diff -puN arch/sh/Kconfig~consolidate-config-SCHED_MC arch/sh/Kconfig
--- a/arch/sh/Kconfig~consolidate-config-SCHED_MC	2014-09-17 15:28:58.604622056 -0700
+++ b/arch/sh/Kconfig	2014-09-17 15:28:58.618622698 -0700
@@ -43,6 +43,7 @@ config SUPERH
 	select OLD_SIGSUSPEND
 	select OLD_SIGACTION
 	select HAVE_ARCH_AUDITSYSCALL
+	select ARCH_ENABLE_SCHED_MC
 	help
 	  The SuperH is a RISC processor targeted for use in embedded systems
 	  and consumer electronics; it was also used in the Sega Dreamcast
diff -puN arch/sh/mm/Kconfig~consolidate-config-SCHED_MC arch/sh/mm/Kconfig
--- a/arch/sh/mm/Kconfig~consolidate-config-SCHED_MC	2014-09-17 15:28:58.606622148 -0700
+++ b/arch/sh/mm/Kconfig	2014-09-17 15:28:58.618622698 -0700
@@ -226,14 +226,7 @@ endchoice
 
 source "mm/Kconfig"
 
-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. If unsure say N here.
+source "kernel/sched/Kconfig"
 
 endmenu
 
diff -puN arch/sparc/Kconfig~consolidate-config-SCHED_MC arch/sparc/Kconfig
--- a/arch/sparc/Kconfig~consolidate-config-SCHED_MC	2014-09-17 15:28:58.607622194 -0700
+++ b/arch/sparc/Kconfig	2014-09-17 15:28:58.618622698 -0700
@@ -79,6 +79,8 @@ config SPARC64
 	select NO_BOOTMEM
 	select HAVE_ARCH_AUDITSYSCALL
 	select ARCH_SUPPORTS_ATOMIC_RMW
+	select ARCH_ENABLE_SCHED_MC if SMP
+	select ARCH_ENABLE_SCHED_SMT if SMP
 
 config ARCH_DEFCONFIG
 	string
@@ -306,23 +308,7 @@ if SPARC64
 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.
+source "kernel/sched/Kconfig"
 
 source "kernel/Kconfig.preempt"
 
diff -puN arch/x86/Kconfig~consolidate-config-SCHED_MC arch/x86/Kconfig
--- a/arch/x86/Kconfig~consolidate-config-SCHED_MC	2014-09-17 15:28:58.609622286 -0700
+++ b/arch/x86/Kconfig	2014-09-17 15:28:58.620622789 -0700
@@ -255,6 +255,8 @@ config X86_64_SMP
 config X86_HT
 	def_bool y
 	depends on SMP
+	select ARCH_ENABLE_SCHED_MC
+	select ARCH_ENABLE_SCHED_SMT
 
 config X86_32_LAZY_GS
 	def_bool y
@@ -789,23 +791,7 @@ config NR_CPUS
 	  This is purely to save memory - each supported CPU adds
 	  approximately eight kilobytes to the kernel image.
 
-config SCHED_SMT
-	bool "SMT (Hyperthreading) scheduler support"
-	depends on X86_HT
-	---help---
-	  SMT scheduler support improves the CPU scheduler's decision making
-	  when dealing with Intel Pentium 4 chips with HyperThreading at a
-	  cost of slightly increased overhead in some places. If unsure say
-	  N here.
-
-config SCHED_MC
-	def_bool y
-	prompt "Multi-core scheduler support"
-	depends on X86_HT
-	---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.
+source "kernel/sched/Kconfig"
 
 source "kernel/Kconfig.preempt"
 
diff -puN /dev/null kernel/sched/Kconfig
--- /dev/null	2014-04-10 11:28:14.066815724 -0700
+++ b/kernel/sched/Kconfig	2014-09-17 15:28:58.620622789 -0700
@@ -0,0 +1,42 @@
+config ARCH_ENABLE_SCHED_MC
+	depends on SMP
+	def_bool n
+
+config ARCH_ENABLE_SCHED_BOOK
+	depends on SMP
+	def_bool n
+
+config ARCH_ENABLE_SCHED_SMT
+	depends on SMP
+	def_bool n
+
+config SCHED_MC
+	bool "Multi-core scheduler support"
+	default n if s390
+	default y
+	depends on ARCH_ENABLE_SCHED_MC
+	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_BOOK
+	def_bool y
+	prompt "Book scheduler support"
+	depends on ARCH_ENABLE_SCHED_BOOK
+	select SCHED_MC
+	help
+	  Book scheduler support improves the CPU scheduler's decision making
+	  when dealing with machines that have several books.
+
+	  Currenltly only used on s390 which has only a single NUMA node.
+	  Books are collections of CPUs that are grouped similarly to a NUMA
+	  node, but without the same memory properites that NUMA nodes have.
+
+config SCHED_SMT
+	bool "SMT scheduler support"
+	depends on ARCH_ENABLE_SCHED_SMT
+	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.
_

  parent reply	other threads:[~2014-09-17 22:33 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-17 22:33 [RFC][PATCH 0/6] fix topology for multi-NUMA-node CPUs Dave Hansen
2014-09-17 22:33 ` [RFC][PATCH 1/6] topology: rename topology_core_cpumask() to topology_package_cpumask() Dave Hansen
2014-09-17 22:33 ` [RFC][PATCH 2/6] x86: introduce cpumask specifically for the package Dave Hansen
2014-09-18 14:57   ` Peter Zijlstra
2014-09-17 22:33 ` [RFC][PATCH 3/6] x86: use package_map instead of core_map for sysfs Dave Hansen
2014-09-17 22:33 ` [RFC][PATCH 4/6] sched: eliminate "DIE" domain level when NUMA present Dave Hansen
2014-09-18 17:28   ` Peter Zijlstra
2014-09-17 22:33 ` [RFC][PATCH 5/6] sched: keep MC domain from crossing nodes OR packages Dave Hansen
2014-09-17 22:33 ` Dave Hansen [this message]
2014-09-18 17:29   ` [RFC][PATCH 6/6] sched: consolidate config options Peter Zijlstra
2014-09-19 19:15     ` Dave Hansen
2014-09-19 23:03       ` Peter Zijlstra
2014-09-18  7:45 ` [RFC][PATCH 0/6] fix topology for multi-NUMA-node CPUs Borislav Petkov
     [not found] ` <CAOjmkp8EGO0jicmdO=p6ATHz-hUJmWb+xoBLjOdLBUwwGzyhhg@mail.gmail.com>
2014-09-22 15:54   ` Aravind Gopalakrishnan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140917223320.2FF9CF11@viggo.jf.intel.com \
    --to=dave@sr71.net \
    --cc=a.p.zijlstra@chello.nl \
    --cc=bp@alien8.de \
    --cc=brice.goglin@gmail.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=hpa@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.