diff options
| author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2008-03-10 14:43:57 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-03-10 21:01:20 -0400 |
| commit | 21bbb39c376ce6beeeb549d155f0d53dc76ed000 (patch) | |
| tree | 762d0ae6d1cd88aaa231739c3e88437e52ffa387 /init | |
| parent | f47831fabaf0206abc56ee5a33fd006fe29b6dc6 (diff) | |
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>
Diffstat (limited to 'init')
| -rw-r--r-- | init/Kconfig | 34 |
1 files changed, 3 insertions, 31 deletions
diff --git a/init/Kconfig b/init/Kconfig index 074ac97f55e3..a97924bc5b8d 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
| @@ -865,38 +865,10 @@ source "block/Kconfig" | |||
| 865 | config PREEMPT_NOTIFIERS | 865 | config PREEMPT_NOTIFIERS |
| 866 | bool | 866 | bool |
| 867 | 867 | ||
| 868 | choice | ||
| 869 | prompt "RCU implementation type:" | ||
| 870 | default CLASSIC_RCU | ||
| 871 | help | ||
| 872 | This allows you to choose either the classic RCU implementation | ||
| 873 | that is designed for best read-side performance on non-realtime | ||
| 874 | systems, or the preemptible RCU implementation for best latency | ||
| 875 | on realtime systems. Note that some kernel preemption modes | ||
| 876 | will restrict your choice. | ||
| 877 | |||
| 878 | Select the default if you are unsure. | ||
| 879 | |||
| 880 | config CLASSIC_RCU | 868 | config CLASSIC_RCU |
| 881 | bool "Classic RCU" | 869 | def_bool !PREEMPT_RCU |
| 882 | help | 870 | help |
| 883 | This option selects the classic RCU implementation that is | 871 | This option selects the classic RCU implementation that is |
| 884 | designed for best read-side performance on non-realtime | 872 | designed for best read-side performance on non-realtime |
| 885 | systems. | 873 | systems. Classic RCU is the default. Note that the |
| 886 | 874 | PREEMPT_RCU symbol is used to select/deselect this option. | |
| 887 | Say Y if you are unsure. | ||
| 888 | |||
| 889 | config PREEMPT_RCU | ||
| 890 | bool "Preemptible RCU" | ||
| 891 | depends on PREEMPT | ||
| 892 | help | ||
| 893 | This option reduces the latency of the kernel by making certain | ||
| 894 | RCU sections preemptible. Normally RCU code is non-preemptible, if | ||
| 895 | this option is selected then read-only RCU sections become | ||
| 896 | preemptible. This helps latency, but may expose bugs due to | ||
| 897 | now-naive assumptions about each RCU read-side critical section | ||
| 898 | remaining on a given CPU through its execution. | ||
| 899 | |||
| 900 | Say N if you are unsure. | ||
| 901 | |||
| 902 | endchoice | ||
