aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/rcu
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@kernel.org>2020-03-16 15:22:44 -0700
committerPaul E. McKenney <paulmck@kernel.org>2020-04-27 11:03:50 -0700
commit66777e5821f6e672003fde697b8489402bb5aa98 (patch)
tree9d5f442f267743812afceef07d1ab7c0b78056cc /kernel/rcu
parentrcu: Add comments marking transitions between RCU watching and not (diff)
downloadlinux-dev-66777e5821f6e672003fde697b8489402bb5aa98.tar.xz
linux-dev-66777e5821f6e672003fde697b8489402bb5aa98.zip
rcu-tasks: Use context-switch hook for PREEMPT=y kernels
Currently, the PREEMPT=y version of rcu_note_context_switch() does not invoke rcu_tasks_qs(), and we need it to in order to keep RCU Tasks Trace's IPIs down to a dull roar. This commit therefore enables this hook. Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Diffstat (limited to 'kernel/rcu')
-rw-r--r--kernel/rcu/tree_plugin.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h
index 088e84e4578f..4f34c325dd90 100644
--- a/kernel/rcu/tree_plugin.h
+++ b/kernel/rcu/tree_plugin.h
@@ -331,6 +331,8 @@ void rcu_note_context_switch(bool preempt)
rcu_qs();
if (rdp->exp_deferred_qs)
rcu_report_exp_rdp(rdp);
+ if (!preempt)
+ rcu_tasks_qs(current);
trace_rcu_utilization(TPS("End context switch"));
}
EXPORT_SYMBOL_GPL(rcu_note_context_switch);