]> git.baikalelectronics.ru Git - kernel.git/commit
rcu-tasks: Make ksoftirqd provide RCU Tasks quiescent states
authorPaul E. McKenney <paulmck@kernel.org>
Thu, 25 Mar 2021 00:08:48 +0000 (17:08 -0700)
committerPaul E. McKenney <paulmck@kernel.org>
Tue, 18 May 2021 17:54:51 +0000 (10:54 -0700)
commit6461d9ed39088cdec14fc33d0efe1ddae2812ae5
treeac16600d876132494cca5ce51396f31275569894
parent389a10fe0276abc9a618fc7b621a29c4ceabb0d9
rcu-tasks: Make ksoftirqd provide RCU Tasks quiescent states

Heavy networking load can cause a CPU to execute continuously and
indefinitely within ksoftirqd, in which case there will be no voluntary
task switches and thus no RCU-tasks quiescent states.  This commit
therefore causes the exiting rcu_softirq_qs() to provide an RCU-tasks
quiescent state.

This of course means that __do_softirq() and its callers cannot be
invoked from within a tracing trampoline.

Reported-by: Toke Høiland-Jørgensen <toke@redhat.com>
Tested-by: Toke Høiland-Jørgensen <toke@redhat.com>
Reviewed-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
kernel/rcu/tree.c