From: Ingo Molnar <mingo@elte.hu>
To: paulmck@linux.vnet.ibm.com
Cc: linux-kernel@vger.kernel.org, tglx@linutronix.de,
akpm@linux-foundation.org, ralf@linux-mips.org,
kernel@wantstofly.org, hskinnemoen@atmel.com,
cooloney@kernel.org, tony.luck@intel.com, geert@linux-m68k.org,
zippel@linux-m68k.org, jwboyer@linux.vnet.ibm.com,
mporter@kernel.crashing.org, grant.likely@secretlab.ca,
paulus@samba.org, benh@kernel.crashing.org, dhowells@redhat.com,
yasutake.koichi@jp.panasonic.com, lethal@linux-sh.org,
hpa@zytor.com
Subject: Re: [PATCH -tip] Switch arm defconfig files from CONFIG_CLASSIC_RCU to CONFIG_TREE_RCU.
Date: Thu, 25 Dec 2008 09:36:11 +0100 [thread overview]
Message-ID: <20081225083611.GA14968@elte.hu> (raw)
In-Reply-To: <20081223142542.GC29151@elte.hu>
below is the fix for another small buglet that hits architectures that do
not include kernel/Kconfig.preempt.
Ingo
--------------->
>From 12d79bafb75639f406a9f71aab94808c414c836e Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Thu, 25 Dec 2008 09:31:28 +0100
Subject: [PATCH] rcu: provide RCU options on non-preempt architectures too
Impact: build fix
Some old architectures still do not use kernel/Kconfig.preempt, so the
moving of the RCU options there broke their build:
In file included from /home/mingo/tip/include/linux/sem.h:81,
from /home/mingo/tip/include/linux/sched.h:69,
from /home/mingo/tip/arch/alpha/kernel/asm-offsets.c:9:
/home/mingo/tip/include/linux/rcupdate.h:62:2: error: #error "Unknown RCU implementation specified to kernel configuration"
Move these options back to init/Kconfig, which every architecture
includes.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
init/Kconfig | 74 +++++++++++++++++++++++++++++++++++++++++++++++
kernel/Kconfig.preempt | 75 ------------------------------------------------
2 files changed, 74 insertions(+), 75 deletions(-)
diff --git a/init/Kconfig b/init/Kconfig
index 9dd7958..6b0fded 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -928,6 +928,80 @@ source "block/Kconfig"
config PREEMPT_NOTIFIERS
bool
+choice
+ prompt "RCU Implementation"
+ default CLASSIC_RCU
+
+config CLASSIC_RCU
+ bool "Classic RCU"
+ help
+ This option selects the classic RCU implementation that is
+ designed for best read-side performance on non-realtime
+ systems.
+
+ Select this option if you are unsure.
+
+config TREE_RCU
+ bool "Tree-based hierarchical RCU"
+ help
+ This option selects the RCU implementation that is
+ designed for very large SMP system with hundreds or
+ thousands of CPUs.
+
+config PREEMPT_RCU
+ bool "Preemptible RCU"
+ depends on PREEMPT
+ help
+ This option reduces the latency of the kernel by making certain
+ RCU sections preemptible. Normally RCU code is non-preemptible, if
+ this option is selected then read-only RCU sections become
+ preemptible. This helps latency, but may expose bugs due to
+ now-naive assumptions about each RCU read-side critical section
+ remaining on a given CPU through its execution.
+
+endchoice
+
+config RCU_TRACE
+ bool "Enable tracing for RCU"
+ depends on TREE_RCU || PREEMPT_RCU
+ help
+ This option provides tracing in RCU which presents stats
+ in debugfs for debugging RCU implementation.
+
+ Say Y here if you want to enable RCU tracing
+ Say N if you are unsure.
+
+config RCU_FANOUT
+ int "Tree-based hierarchical RCU fanout value"
+ range 2 64 if 64BIT
+ range 2 32 if !64BIT
+ depends on TREE_RCU
+ default 64 if 64BIT
+ default 32 if !64BIT
+ help
+ This option controls the fanout of hierarchical implementations
+ of RCU, allowing RCU to work efficiently on machines with
+ large numbers of CPUs. This value must be at least the cube
+ root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit
+ systems and up to 262,144 for 64-bit systems.
+
+ Select a specific number if testing RCU itself.
+ Take the default if unsure.
+
+config RCU_FANOUT_EXACT
+ bool "Disable tree-based hierarchical RCU auto-balancing"
+ depends on TREE_RCU
+ default n
+ help
+ This option forces use of the exact RCU_FANOUT value specified,
+ regardless of imbalances in the hierarchy. This is useful for
+ testing RCU itself, and might one day be useful on systems with
+ strong NUMA behavior.
+
+ Without RCU_FANOUT_EXACT, the code will balance the hierarchy.
+
+ Say N if unsure.
+
config TREE_RCU_TRACE
def_bool RCU_TRACE && TREE_RCU
select DEBUG_FS
diff --git a/kernel/Kconfig.preempt b/kernel/Kconfig.preempt
index 463f297..bf987b9 100644
--- a/kernel/Kconfig.preempt
+++ b/kernel/Kconfig.preempt
@@ -52,78 +52,3 @@ config PREEMPT
endchoice
-choice
- prompt "RCU Implementation"
- default CLASSIC_RCU
-
-config CLASSIC_RCU
- bool "Classic RCU"
- help
- This option selects the classic RCU implementation that is
- designed for best read-side performance on non-realtime
- systems.
-
- Select this option if you are unsure.
-
-config TREE_RCU
- bool "Tree-based hierarchical RCU"
- help
- This option selects the RCU implementation that is
- designed for very large SMP system with hundreds or
- thousands of CPUs.
-
-config PREEMPT_RCU
- bool "Preemptible RCU"
- depends on PREEMPT
- help
- This option reduces the latency of the kernel by making certain
- RCU sections preemptible. Normally RCU code is non-preemptible, if
- this option is selected then read-only RCU sections become
- preemptible. This helps latency, but may expose bugs due to
- now-naive assumptions about each RCU read-side critical section
- remaining on a given CPU through its execution.
-
-endchoice
-
-config RCU_TRACE
- bool "Enable tracing for RCU"
- depends on TREE_RCU || PREEMPT_RCU
- help
- This option provides tracing in RCU which presents stats
- in debugfs for debugging RCU implementation.
-
- Say Y here if you want to enable RCU tracing
- Say N if you are unsure.
-
-config RCU_FANOUT
- int "Tree-based hierarchical RCU fanout value"
- range 2 64 if 64BIT
- range 2 32 if !64BIT
- depends on TREE_RCU
- default 64 if 64BIT
- default 32 if !64BIT
- help
- This option controls the fanout of hierarchical implementations
- of RCU, allowing RCU to work efficiently on machines with
- large numbers of CPUs. This value must be at least the cube
- root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit
- systems and up to 262,144 for 64-bit systems.
-
- Select a specific number if testing RCU itself.
- Take the default if unsure.
-
-config RCU_FANOUT_EXACT
- bool "Disable tree-based hierarchical RCU auto-balancing"
- depends on TREE_RCU
- default n
- help
- This option forces use of the exact RCU_FANOUT value specified,
- regardless of imbalances in the hierarchy. This is useful for
- testing RCU itself, and might one day be useful on systems with
- strong NUMA behavior.
-
- Without RCU_FANOUT_EXACT, the code will balance the hierarchy.
-
- Say n if unsure.
-
-
next prev parent reply other threads:[~2008-12-25 8:37 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-23 0:12 [PATCH -tip] Change default from CLASSIC_RCU to TREE_RCU (testing only) paulmck
2008-12-23 0:12 ` [PATCH -tip] Set the default RCU to be rcutree paulmck
2008-12-23 0:12 ` [PATCH -tip] Switch arm defconfig files from CONFIG_CLASSIC_RCU to CONFIG_TREE_RCU paulmck
2008-12-23 14:25 ` Ingo Molnar
2008-12-23 21:59 ` Paul E. McKenney
2008-12-23 22:03 ` [PATCH, -tip] Remove redundant RCU_CPU_STALL_DETECTOR declaration Paul E. McKenney
2008-12-23 22:06 ` [PATCH, -tip] Make hierarchical RCU be the default Paul E. McKenney
2008-12-27 10:35 ` Ingo Molnar
2008-12-27 23:27 ` Paul E. McKenney
2008-12-27 23:39 ` Paul E. McKenney
2008-12-29 3:22 ` [PATCH, -tip] v2 " Paul E. McKenney
2008-12-25 8:36 ` Ingo Molnar [this message]
2008-12-25 9:33 ` [PATCH -tip] Switch arm defconfig files from CONFIG_CLASSIC_RCU to CONFIG_TREE_RCU Sam Ravnborg
2008-12-25 19:23 ` Paul E. McKenney
2008-12-26 18:35 ` Sam Ravnborg
2008-12-26 14:22 ` Ingo Molnar
2008-12-25 18:46 ` Paul E. McKenney
2008-12-23 0:12 ` [PATCH -tip] Switch avr32 defconfigs " paulmck
2008-12-23 0:12 ` [PATCH -tip] Switch blackfin defconfig " paulmck
2008-12-23 0:12 ` [PATCH -tip] Switch ia64 " paulmck
2008-12-23 0:12 ` [PATCH -tip] Switch m68k " paulmck
2008-12-23 0:12 ` [PATCH -tip] Switch m68knommu " paulmck
2008-12-23 0:12 ` [PATCH -tip] Switch mips defconfig " paulmck
2008-12-23 0:12 ` [PATCH -tip] Switch mn10300 " paulmck
2008-12-23 0:12 ` [PATCH -tip] Switch powerpc " paulmck
2008-12-23 0:12 ` [PATCH -tip] Switch sh " paulmck
2008-12-23 0:12 ` [PATCH -tip] Switch x86 " paulmck
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=20081225083611.GA14968@elte.hu \
--to=mingo@elte.hu \
--cc=akpm@linux-foundation.org \
--cc=benh@kernel.crashing.org \
--cc=cooloney@kernel.org \
--cc=dhowells@redhat.com \
--cc=geert@linux-m68k.org \
--cc=grant.likely@secretlab.ca \
--cc=hpa@zytor.com \
--cc=hskinnemoen@atmel.com \
--cc=jwboyer@linux.vnet.ibm.com \
--cc=kernel@wantstofly.org \
--cc=lethal@linux-sh.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mporter@kernel.crashing.org \
--cc=paulmck@linux.vnet.ibm.com \
--cc=paulus@samba.org \
--cc=ralf@linux-mips.org \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--cc=yasutake.koichi@jp.panasonic.com \
--cc=zippel@linux-m68k.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox