rcu: Allow expedited RCU grace periods on incoming CPUs
authorPaul E. McKenney <paulmck@kernel.org>
Tue, 18 Jan 2022 21:54:19 +0000 (13:54 -0800)
committerPaul E. McKenney <paulmck@kernel.org>
Tue, 8 Feb 2022 19:14:31 +0000 (11:14 -0800)
commitc0e740522e8025f39d43523d77223cd118a7c81b
tree3992bc83a0d9f193f4e098e93d3963849cf2d8ff
parent63c564da11cbed96ec6cf0b5faf6af0b7e3624d2
rcu: Allow expedited RCU grace periods on incoming CPUs

Although it is usually safe to invoke synchronize_rcu_expedited() from a
preemption-enabled CPU-hotplug notifier, if it is invoked from a notifier
between CPUHP_AP_RCUTREE_ONLINE and CPUHP_AP_ACTIVE, its attempts to
invoke a workqueue handler will hang due to RCU waiting on a CPU that
the scheduler is not paying attention to.  This commit therefore expands
use of the existing workqueue-independent synchronize_rcu_expedited()
from early boot to also include CPUs that are being hotplugged.

Link: https://lore.kernel.org/lkml/7359f994-8aaf-3cea-f5cf-c0d3929689d6@quicinc.com/
Reported-by: Mukesh Ojha <quic_mojha@quicinc.com>
Acked-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
kernel/rcu/tree_exp.h