summaryrefslogtreecommitdiff
path: root/kernel/rcu/Kconfig
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@kernel.org>2020-03-02 21:06:43 -0800
committerPaul E. McKenney <paulmck@kernel.org>2020-04-27 11:03:51 -0700
commitc84aad765406c4c7573ce449e8a9977ebb8f4cb9 (patch)
tree32dc99eae3d82ef11ac665489c0cdd0c2661ab01 /kernel/rcu/Kconfig
parent5873b8a94e5dae04b8e11fc798df512614e6d1e7 (diff)
rcu-tasks: Add an RCU-tasks rude variant
This commit adds a "rude" variant of RCU-tasks that has as quiescent states schedule(), cond_resched_tasks_rcu_qs(), userspace execution, and (in theory, anyway) cond_resched(). In other words, RCU-tasks rude readers are regions of code with preemption disabled, but excluding code early in the CPU-online sequence and late in the CPU-offline sequence. Updates make use of IPIs and force an IPI and a context switch on each online CPU. This variant is useful in some situations in tracing. Suggested-by: Steven Rostedt <rostedt@goodmis.org> [ paulmck: Apply EXPORT_SYMBOL_GPL() feedback from Qiujun Huang. ] Signed-off-by: Paul E. McKenney <paulmck@kernel.org> [ paulmck: Apply review feedback from Steve Rostedt. ]
Diffstat (limited to 'kernel/rcu/Kconfig')
-rw-r--r--kernel/rcu/Kconfig11
1 files changed, 10 insertions, 1 deletions
diff --git a/kernel/rcu/Kconfig b/kernel/rcu/Kconfig
index 38475d0bc634..6ee6372a4459 100644
--- a/kernel/rcu/Kconfig
+++ b/kernel/rcu/Kconfig
@@ -71,7 +71,7 @@ config TREE_SRCU
This option selects the full-fledged version of SRCU.
config TASKS_RCU_GENERIC
- def_bool TASKS_RCU
+ def_bool TASKS_RCU || TASKS_RUDE_RCU
select SRCU
help
This option enables generic infrastructure code supporting
@@ -84,6 +84,15 @@ config TASKS_RCU
only voluntary context switch (not preemption!), idle, and
user-mode execution as quiescent states. Not for manual selection.
+config TASKS_RUDE_RCU
+ def_bool 0
+ help
+ This option enables a task-based RCU implementation that uses
+ only context switch (including preemption) and user-mode
+ execution as quiescent states. It forces IPIs and context
+ switches on all online CPUs, including idle ones, so use
+ with caution.
+
config RCU_STALL_COMMON
def_bool TREE_RCU
help