aboutsummaryrefslogtreecommitdiffstats
path: root/init
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2008-01-25 15:08:24 -0500
committerIngo Molnar <mingo@elte.hu>2008-01-25 15:08:24 -0500
commite260be673a15b6125068270e0216a3bfbfc12f87 (patch)
treef50760606d395bf6faa9e865f814761a3c88d32c /init
parente0ecfa7917cafe72f4a75f87e8bb5d8d51dc534f (diff)
Preempt-RCU: implementation
This patch implements a new version of RCU which allows its read-side critical sections to be preempted. It uses a set of counter pairs to keep track of the read-side critical sections and flips them when all tasks exit read-side critical section. The details of this implementation can be found in this paper - http://www.rdrop.com/users/paulmck/RCU/OLSrtRCU.2006.08.11a.pdf and the article- http://lwn.net/Articles/253651/ This patch was developed as a part of the -rt kernel development and meant to provide better latencies when read-side critical sections of RCU don't disable preemption. As a consequence of keeping track of RCU readers, the readers have a slight overhead (optimizations in the paper). This implementation co-exists with the "classic" RCU implementations and can be switched to at compiler. Also includes RCU tracing summarized in debugfs. [ akpm@linux-foundation.org: build fixes on non-preempt architectures ] Signed-off-by: Gautham R Shenoy <ego@in.ibm.com> Signed-off-by: Dipankar Sarma <dipankar@in.ibm.com> Signed-off-by: Paul E. McKenney <paulmck@us.ibm.com> Reviewed-by: Steven Rostedt <srostedt@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'init')
-rw-r--r--init/Kconfig28
1 files changed, 28 insertions, 0 deletions
diff --git a/init/Kconfig b/init/Kconfig
index f5becd2a12f6..0eda68f0ad54 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -763,3 +763,31 @@ source "block/Kconfig"
763 763
764config PREEMPT_NOTIFIERS 764config PREEMPT_NOTIFIERS
765 bool 765 bool
766
767choice
768 prompt "RCU implementation type:"
769 default CLASSIC_RCU
770
771config CLASSIC_RCU
772 bool "Classic RCU"
773 help
774 This option selects the classic RCU implementation that is
775 designed for best read-side performance on non-realtime
776 systems.
777
778 Say Y if you are unsure.
779
780config PREEMPT_RCU
781 bool "Preemptible RCU"
782 depends on PREEMPT
783 help
784 This option reduces the latency of the kernel by making certain
785 RCU sections preemptible. Normally RCU code is non-preemptible, if
786 this option is selected then read-only RCU sections become
787 preemptible. This helps latency, but may expose bugs due to
788 now-naive assumptions about each RCU read-side critical section
789 remaining on a given CPU through its execution.
790
791 Say N if you are unsure.
792
793endchoice