]> git.karo-electronics.de Git - karo-tx-linux.git/commit
rcu: Remove rcu_needs_cpu_flush() to avoid false quiescent states
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Sun, 21 Aug 2011 01:29:32 +0000 (18:29 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 13 Sep 2011 15:46:36 +0000 (08:46 -0700)
commit1a1ce0ecccea6d8434df0e54f2e7fcbe01a94c4c
tree4115dbd9413f2c52a855baede2977e2e2f866802
parent40dea6ea4dfb8eec955cb6a92ce84d0efa60fd27
rcu: Remove rcu_needs_cpu_flush() to avoid false quiescent states

The purpose of rcu_needs_cpu_flush() was to iterate on pushing the
current grace period in order to help the current CPU enter dyntick-idle
mode.  However, this can result in failures if the CPU starts entering
dyntick-idle mode, but then backs out.  In this case, the call to
rcu_pending() from rcu_needs_cpu_flush() might end up announcing a
non-existing quiescent state.

This commit therefore removes rcu_needs_cpu_flush() in favor of letting
the dyntick-idle machinery at the end of the softirq handler push the
loop along via its call to rcu_pending().

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
kernel/rcutree.c
kernel/rcutree.h
kernel/rcutree_plugin.h