aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/rcu/tree.h
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2016-06-29 16:46:25 -0400
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2016-08-22 12:30:25 -0400
commit8b355e3bc1408be238ae4695fb6318ae502cae8e (patch)
treef923d1cb005f3102e76cd0b2f64567ed80f67c7a /kernel/rcu/tree.h
parentf7b8eb847e35b18d3ec333774691a905bf16017f (diff)
rcu: Drive expedited grace periods from workqueue
The current implementation of expedited grace periods has the user task drive the grace period. This works, but has downsides: (1) The user task must awaken tasks piggybacking on this grace period, which can result in latencies rivaling that of the grace period itself, and (2) User tasks can receive signals, which interfere with RCU CPU stall warnings. This commit therefore uses workqueues to drive the grace periods, so that the user task need not do the awakening. A subsequent commit will remove the now-unnecessary code allowing for signals. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'kernel/rcu/tree.h')
-rw-r--r--kernel/rcu/tree.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/rcu/tree.h b/kernel/rcu/tree.h
index f714f873bf9d..e99a5234d9ed 100644
--- a/kernel/rcu/tree.h
+++ b/kernel/rcu/tree.h
@@ -400,6 +400,7 @@ struct rcu_data {
400#ifdef CONFIG_RCU_FAST_NO_HZ 400#ifdef CONFIG_RCU_FAST_NO_HZ
401 struct rcu_head oom_head; 401 struct rcu_head oom_head;
402#endif /* #ifdef CONFIG_RCU_FAST_NO_HZ */ 402#endif /* #ifdef CONFIG_RCU_FAST_NO_HZ */
403 atomic_long_t exp_workdone0; /* # done by workqueue. */
403 atomic_long_t exp_workdone1; /* # done by others #1. */ 404 atomic_long_t exp_workdone1; /* # done by others #1. */
404 atomic_long_t exp_workdone2; /* # done by others #2. */ 405 atomic_long_t exp_workdone2; /* # done by others #2. */
405 atomic_long_t exp_workdone3; /* # done by others #3. */ 406 atomic_long_t exp_workdone3; /* # done by others #3. */