Re: [RFC PATCH 4/6] Preempt-RCU: Implementation
From: Steven Rostedt <rostedt@goodmis.org>
Date: 2008-03-01 21:07:50
Also in:
lkml
On Sat, 1 Mar 2008, Paul E. McKenney wrote:
quoted hunk ↗ jump to hunk
Is this what you had in mind? I don't have any way to test on a system not supporting CONFIG_PREEMPT, but seems to work on x86. Signed-off-by: Paul E. McKenney <redacted> --- init/Kconfig | 34 +++------------------------------- kernel/Kconfig.preempt | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 31 deletions(-) diff -urpNa -X dontdiff linux-2.6.25-rc3/init/Kconfig linux-2.6.25-rc3-preempt_rcu/init/Kconfig--- linux-2.6.25-rc3/init/Kconfig 2008-02-26 16:58:42.000000000 -0800 +++ linux-2.6.25-rc3-preempt_rcu/init/Kconfig 2008-03-01 11:30:59.000000000 -0800@@ -860,38 +860,10 @@ source "block/Kconfig" config PREEMPT_NOTIFIERS 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 - bool "Classic RCU" + def_bool !PREEMPT_RCU help This option selects the classic RCU implementation that is designed for best read-side performance on non-realtime - systems.
Actually Paul, you don't need to make this an "option". Simply the default if PREEMPT_RCU is not selected. In otherwords, no prompt. config CLASSIC_RCU bool depends on !PREEMPT_RCU default y Then, have the PREEMPT_RCU defined down below (as you already did), and have it be the only option. That is, you can have normal RCU or select to have PREEMPT_RCU. If the user selects PREEMPT_RCU, CLASSIC_RCU will be unselected. -- Steve
quoted hunk ↗ jump to hunk
- - 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 + systems. Classic RCU is the default. Note that the + PREEMPT_RCU symbol is used to select/deselect this option. diff -urpNa -X dontdiff linux-2.6.25-rc3/kernel/Kconfig.preempt linux-2.6.25-rc3-preempt_rcu/kernel/Kconfig.preempt--- linux-2.6.25-rc3/kernel/Kconfig.preempt 2008-02-26 16:58:42.000000000 -0800 +++ linux-2.6.25-rc3-preempt_rcu/kernel/Kconfig.preempt 2008-03-01 11:35:39.000000000 -0800@@ -52,8 +52,23 @@ config PREEMPT 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 bool "Enable tracing for RCU - currently stats in debugfs" + depends on PREEMPT_RCU select DEBUG_FS default y help