rcu/nocb: Disable bypass when CPU isn't completely offloaded
authorFrederic Weisbecker <frederic@kernel.org>
Tue, 23 Feb 2021 00:10:00 +0000 (01:10 +0100)
committerPaul E. McKenney <paulmck@kernel.org>
Mon, 15 Mar 2021 20:54:54 +0000 (13:54 -0700)
commit76d00b494d7962e88d4bbd4135f34aba9019c67f
tree82c01fb3a120706461a1f752d96b3baf7174ae13
parentb2fcf2102049f6e56981e0ab3d9b633b8e2741da
rcu/nocb: Disable bypass when CPU isn't completely offloaded

Currently, the bypass is flushed at the very last moment in the
deoffloading procedure.  However, this approach leads to a larger state
space than would be preferred.  This commit therefore disables the
bypass at soon as the deoffloading procedure begins, then flushes it.
This guarantees that the bypass remains empty and thus out of the way
of the deoffloading procedure.

Symmetrically, this commit waits to enable the bypass until the offloading
procedure has completed.

Reported-by: Paul E. McKenney <paulmck@kernel.org>
Cc: Josh Triplett <josh@joshtriplett.org>
Cc: Lai Jiangshan <jiangshanlai@gmail.com>
Cc: Joel Fernandes <joel@joelfernandes.org>
Cc: Neeraj Upadhyay <neeraju@codeaurora.org>
Cc: Boqun Feng <boqun.feng@gmail.com>
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
include/linux/rcu_segcblist.h
kernel/rcu/tree_plugin.h