rcu: Track laziness during boot and suspend
authorJoel Fernandes (Google) <joel@joelfernandes.org>
Thu, 12 Jan 2023 00:52:22 +0000 (00:52 +0000)
committerPaul E. McKenney <paulmck@kernel.org>
Wed, 18 Jan 2023 04:20:11 +0000 (20:20 -0800)
commit6efdda8bec2900ce5166ee4ff4b1844b47b529cd
treee20406bef96bf31a1bdfb03467cb074ef9ab0265
parentccfe1fef9409ca80ffad6ce822a6d15eaee67c91
rcu: Track laziness during boot and suspend

Boot and suspend/resume should not be slowed down in kernels built with
CONFIG_RCU_LAZY=y.  In particular, suspend can sometimes fail in such
kernels.

This commit therefore adds rcu_async_hurry(), rcu_async_relax(), and
rcu_async_should_hurry() functions that track whether or not either
a boot or a suspend/resume operation is in progress.  This will
enable a later commit to refrain from laziness during those times.

Export rcu_async_should_hurry(), rcu_async_hurry(), and rcu_async_relax()
for later use by rcutorture.

[ paulmck: Apply feedback from Steve Rostedt. ]

Fixes: 3cb278e73be5 ("rcu: Make call_rcu() lazy to save power")
Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
kernel/rcu/rcu.h
kernel/rcu/tree.c
kernel/rcu/update.c