summaryrefslogtreecommitdiffstats
path: root/kernel/rcutree_plugin.h
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2009-11-14 04:51:39 +0100
committerIngo Molnar <mingo@elte.hu>2009-11-14 10:31:42 +0100
commit2f51f9884f6a36b0fe9636d5a1937e5cbd25723b (patch)
tree0505e111a9714b2bd022322f76e6c4de26861107 /kernel/rcutree_plugin.h
parentrcu: Further cleanups of use of lastcomp (diff)
downloadlinux-2f51f9884f6a36b0fe9636d5a1937e5cbd25723b.tar.xz
linux-2f51f9884f6a36b0fe9636d5a1937e5cbd25723b.zip
rcu: Eliminate __rcu_pending() false positives
Now that there are both ->gpnum and ->completed fields in the rcu_node structure, __rcu_pending() should check rdp->gpnum and rdp->completed against rnp->gpnum and rdp->completed, respectively, instead of the prior comparison against the rcu_state fields rsp->gpnum and rsp->completed. Given the old comparison, __rcu_pending() could return 1, resulting in a needless raise_softirq(RCU_SOFTIRQ). This useless work would happen if RCU responded to a scheduling-clock interrupt after the rcu_state fields had been updated, but before the rcu_node fields had been updated. Changing the comparison from the rcu_state fields to the rcu_node fields prevents this useless work from happening. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Cc: laijs@cn.fujitsu.com Cc: dipankar@in.ibm.com Cc: mathieu.desnoyers@polymtl.ca Cc: josh@joshtriplett.org Cc: dvhltc@us.ibm.com Cc: niv@us.ibm.com Cc: peterz@infradead.org Cc: rostedt@goodmis.org Cc: Valdis.Kletnieks@vt.edu Cc: dhowells@redhat.com LKML-Reference: <12581706991966-git-send-email-> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/rcutree_plugin.h')
0 files changed, 0 insertions, 0 deletions