rcu: move PREEMPT_RCU config option back under PREEMPT
The original preemptible-RCU patch put the choice between classic and preemptible RCU into kernel/Kconfig.preempt, which resulted in build failures on machines not supporting CONFIG_PREEMPT. This choice was therefore moved to init/Kconfig, which worked, but placed the choice between classic and preemptible RCU at the top level, a very obtuse choice indeed. This patch changes from the Kconfig "choice" mechanism to a pair of booleans, only one of which (CONFIG_PREEMPT_RCU) is user-visible, and is located in kernel/Kconfig.preempt, where one would expect it to be. The other (CONFIG_CLASSIC_RCU) is in init/Kconfig so that it is available to all architectures, hopefully avoiding build breakage. Thanks to Roman Zippel for suggesting this approach. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Cc: Ingo Molnar <mingo@elte.hu> Acked-by: Steven Rostedt <rostedt@goodmis.org> Cc: Dipankar Sarma <dipankar@in.ibm.com> Cc: Josh Triplett <josh@freedesktop.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Roman Zippel <zippel@linux-m68k.org> Cc: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
f47831faba
commit
21bbb39c37
34
init/Kconfig
34
init/Kconfig
|
@ -865,38 +865,10 @@ source "block/Kconfig"
|
||||||
config PREEMPT_NOTIFIERS
|
config PREEMPT_NOTIFIERS
|
||||||
bool
|
bool
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "RCU implementation type:"
|
|
||||||
default CLASSIC_RCU
|
|
||||||
help
|
|
||||||
This allows you to choose either the classic RCU implementation
|
|
||||||
that is designed for best read-side performance on non-realtime
|
|
||||||
systems, or the preemptible RCU implementation for best latency
|
|
||||||
on realtime systems. Note that some kernel preemption modes
|
|
||||||
will restrict your choice.
|
|
||||||
|
|
||||||
Select the default if you are unsure.
|
|
||||||
|
|
||||||
config CLASSIC_RCU
|
config CLASSIC_RCU
|
||||||
bool "Classic RCU"
|
def_bool !PREEMPT_RCU
|
||||||
help
|
help
|
||||||
This option selects the classic RCU implementation that is
|
This option selects the classic RCU implementation that is
|
||||||
designed for best read-side performance on non-realtime
|
designed for best read-side performance on non-realtime
|
||||||
systems.
|
systems. Classic RCU is the default. Note that the
|
||||||
|
PREEMPT_RCU symbol is used to select/deselect this option.
|
||||||
Say Y if you are unsure.
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
Say N if you are unsure.
|
|
||||||
|
|
||||||
endchoice
|
|
||||||
|
|
|
@ -52,8 +52,23 @@ config PREEMPT
|
||||||
|
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
|
config PREEMPT_RCU
|
||||||
|
bool "Preemptible RCU"
|
||||||
|
depends on PREEMPT
|
||||||
|
default n
|
||||||
|
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.
|
||||||
|
|
||||||
|
Say N if you are unsure.
|
||||||
|
|
||||||
config RCU_TRACE
|
config RCU_TRACE
|
||||||
bool "Enable tracing for RCU - currently stats in debugfs"
|
bool "Enable tracing for RCU - currently stats in debugfs"
|
||||||
|
depends on PREEMPT_RCU
|
||||||
select DEBUG_FS
|
select DEBUG_FS
|
||||||
default y
|
default y
|
||||||
help
|
help
|
||||||
|
|
Loading…
Reference in New Issue