Skip to content

Commit

Permalink
rcu: Make synchronize_sched_expedited() better at work sharing
Browse files Browse the repository at this point in the history
When synchronize_sched_expedited() takes its second and subsequent
snapshots of sync_sched_expedited_started, it subtracts 1.  This
means that the concurrent caller of synchronize_sched_expedited()
that incremented to that value sees our successful completion, it
will not be able to take advantage of it.  This restriction is
pointless, given that our full expedited grace period would have
happened after the other guy started, and thus should be able to
serve as a proxy for the other guy successfully executing
try_stop_cpus().

This commit therefore removes the subtraction of 1.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
  • Loading branch information
paulmck committed Dec 11, 2011
1 parent 389abd4 commit 7077714
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion kernel/rcutree_plugin.h
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -1910,7 +1910,7 @@ void synchronize_sched_expedited(void)
* grace period works for us. * grace period works for us.
*/ */
get_online_cpus(); get_online_cpus();
snap = atomic_read(&sync_sched_expedited_started) - 1; snap = atomic_read(&sync_sched_expedited_started);
smp_mb(); /* ensure read is before try_stop_cpus(). */ smp_mb(); /* ensure read is before try_stop_cpus(). */
} }


Expand Down

0 comments on commit 7077714

Please sign in to comment.