rcu: Do any deferred nocb wakeups at CPU offline time
authorPaul E. McKenney <paulmck@kernel.org>
Wed, 23 Dec 2020 00:49:11 +0000 (16:49 -0800)
committerPaul E. McKenney <paulmck@kernel.org>
Thu, 7 Jan 2021 00:50:24 +0000 (16:50 -0800)
commit147c6852d34563b87ff0e67383c2bf675e8248f6
treed43946d4b9687a590f52e3b2db91f4f7b54155e9
parentf759081e8f5ac640df1c7125540759bbcb4eb0e2
rcu: Do any deferred nocb wakeups at CPU offline time

Because the need to wake a nocb GP kthread ("rcuog") is sometimes
detected when wakeups cannot be done, these wakeups can be deferred.
The wakeups are then carried out by calls to do_nocb_deferred_wakeup()
at various safe points in the code, including RCU's idle hooks.  However,
when a CPU goes offline, it invokes arch_cpu_idle_dead() without invoking
any of RCU's idle hooks.

This commit therefore adds a call to do_nocb_deferred_wakeup() in
rcu_report_dead() in order to handle any deferred wakeups that have been
requested by the outgoing CPU.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
kernel/rcu/tree.c