]> git.karo-electronics.de Git - karo-tx-linux.git/commit
rcu: Avoid redundant quiescent-state chasing
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Thu, 28 Jul 2016 16:39:11 +0000 (09:39 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Mon, 22 Aug 2016 16:35:57 +0000 (09:35 -0700)
commit3563a438f124cb0b8cfd350c86de2f26c63d8837
tree43872e3e3f0bd66b37cf7b7887dcb86f915908c7
parente77b7041258e11ba198951553d3acf1e371a9053
rcu: Avoid redundant quiescent-state chasing

Currently, __note_gp_changes() checks to see if the CPU has slept through
multiple grace periods.  If it has, it resynchronizes that CPU's view
of the grace-period state, which includes whether or not the current
grace period needs a quiescent state from this CPU.  The fact of this
need (or lack thereof) needs to be in two places, rdp->cpu_no_qs.b.norm
and rdp->core_needs_qs.  The former tells RCU's context-switch code to
go get a quiescent state and the latter says that it needs to be reported.
The current code unconditionally sets the former to true, but correctly
sets the latter.

This does not result in failures, but it does unnecessarily increase
the amount of work done on average at context-switch time.  This commit
therefore correctly sets both fields.

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