rcu: Ensure that ->rcu_urgent_qs is set before resched IPI
authorJoel Fernandes (Google) <joel@joelfernandes.org>
Fri, 16 Aug 2019 02:59:14 +0000 (22:59 -0400)
committerPaul E. McKenney <paulmck@kernel.org>
Wed, 30 Oct 2019 15:34:35 +0000 (08:34 -0700)
commit05ef9e9eb3dade21413680f41eb0170778e8ae2b
tree6e57e0d53beeec1aeda061fe7e53b05ad18e9d37
parent5a6446626d7e062b47a5cc1cf27d5060e60bb0d9
rcu: Ensure that ->rcu_urgent_qs is set before resched IPI

The RCU-specific resched_cpu() function sends a resched IPI to the
specified CPU, which can be used to force the tick on for a given
nohz_full CPU.  This is needed when this nohz_full CPU is looping in the
kernel while blocking the current grace period.  However, for the tick
to actually be forced on in all cases, that CPU's rcu_data structure's
->rcu_urgent_qs flag must be set beforehand.  This commit therefore
causes rcu_implicit_dynticks_qs() to set this flag prior to invoking
resched_cpu() on a holdout nohz_full CPU.

Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
kernel/rcu/tree.c