aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/rcutree.h
diff options
context:
space:
mode:
authorPaul E. McKenney <paul.mckenney@linaro.org>2012-05-29 17:56:46 -0400
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2012-07-02 15:33:23 -0400
commitcf3a9c4842b1e097dbe0854933c471d43dd24f69 (patch)
tree5b2737cade79c491ba46cd642c01cc165118d723 /kernel/rcutree.h
parentcfed0a85dad921c683e9c0d25b072bcc5745ede0 (diff)
rcu: Increase rcu_barrier() concurrency
The traditional rcu_barrier() implementation has serialized all requests, regardless of RCU flavor, and also does not coalesce concurrent requests. In the past, this has been good and sufficient. However, systems are getting larger and use of rcu_barrier() has been increasing. This commit therefore introduces a counter-based scheme that allows _rcu_barrier() calls for the same flavor of RCU to take advantage of each others' work. Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'kernel/rcutree.h')
-rw-r--r--kernel/rcutree.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/rcutree.h b/kernel/rcutree.h
index 7641aec3e59c..be10286ad380 100644
--- a/kernel/rcutree.h
+++ b/kernel/rcutree.h
@@ -403,6 +403,8 @@ struct rcu_state {
403 struct mutex barrier_mutex; /* Guards barrier fields. */ 403 struct mutex barrier_mutex; /* Guards barrier fields. */
404 atomic_t barrier_cpu_count; /* # CPUs waiting on. */ 404 atomic_t barrier_cpu_count; /* # CPUs waiting on. */
405 struct completion barrier_completion; /* Wake at barrier end. */ 405 struct completion barrier_completion; /* Wake at barrier end. */
406 unsigned long n_barrier_done; /* ++ at start and end of */
407 /* _rcu_barrier(). */
406 raw_spinlock_t fqslock; /* Only one task forcing */ 408 raw_spinlock_t fqslock; /* Only one task forcing */
407 /* quiescent states. */ 409 /* quiescent states. */
408 unsigned long jiffies_force_qs; /* Time at which to invoke */ 410 unsigned long jiffies_force_qs; /* Time at which to invoke */