OSDN Git Service

rcu: Force tick on for nohz_full CPUs not reaching quiescent states
authorPaul E. McKenney <paulmck@kernel.org>
Mon, 12 Aug 2019 23:14:00 +0000 (16:14 -0700)
committerPaul E. McKenney <paulmck@kernel.org>
Mon, 28 Oct 2019 14:02:21 +0000 (07:02 -0700)
commit66e4c33b51bc515ca803c0948cf1525b53ffd631
tree7c50562b611dd88b63531bd2548fd669e7e8c4c3
parent79ba7ff5a9925f5c170f51ed7a96d1475eb6c27f
rcu: Force tick on for nohz_full CPUs not reaching quiescent states

CPUs running for long time periods in the kernel in nohz_full mode
might leave the scheduling-clock interrupt disabled for then full
duration of their in-kernel execution.  This can (among other things)
delay grace periods.  This commit therefore forces the tick back on
for any nohz_full CPU that is failing to pass through a quiescent state
upon return from interrupt, which the resched_cpu() will induce.

Reported-by: Joel Fernandes <joel@joelfernandes.org>
[ paulmck: Clear ->rcu_forced_tick as reported by Joel Fernandes testing. ]
[ paulmck: Apply Joel Fernandes TICK_DEP_MASK_RCU->TICK_DEP_BIT_RCU fix. ]
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
kernel/rcu/tree.c
kernel/rcu/tree.h