[PATCH 2/5] rcu: Use rcuc threads on PREEMPT_RT.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Scott Wood <swood@xxxxxxxxxx>

Using rcuc threads for processing callbacks over softirq has the
advantage that the callbacks can be processed independently. On
PREEMPT_RT the softirq can be preempted. Relying on softirq for callback
processing would mean to complete the current stage of softirq for the
sake of running callbacks. The softirq is processed on PREEMPT_RT in the
context of the task that is raising a softirq. If it is raised in-IRQ
context then the softirq processing is deferred to the `ksoftirqd'
thread.
Processing RCU callbacks in thread context was always the only option
for PREEMPT_RT and there have been no complains.

Disable softirq usage for RCU and disable its commandline parameter.

Signed-off-by: Scott Wood <swood@xxxxxxxxxx>
[bigeasy: Reword commit message]
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx>
---
 kernel/rcu/tree.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index 80ceee55f379a..57eff3b82104c 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -100,8 +100,10 @@ static struct rcu_state rcu_state = {
 static bool dump_tree;
 module_param(dump_tree, bool, 0444);
 /* By default, use RCU_SOFTIRQ instead of rcuc kthreads. */
-static bool use_softirq = true;
+static bool use_softirq = !IS_ENABLED(CONFIG_PREEMPT_RT);
+#ifndef CONFIG_PREEMPT_RT
 module_param(use_softirq, bool, 0444);
+#endif
 /* Control rcu_node-tree auto-balancing at boot time. */
 static bool rcu_fanout_exact;
 module_param(rcu_fanout_exact, bool, 0444);
-- 
2.29.2




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux