diff options
author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2012-06-18 21:36:08 -0400 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2012-09-23 10:41:52 -0400 |
commit | b3dbec76e5334fbb063987dea14e7b255602d7e4 (patch) | |
tree | 5b75e737856baf09b2303bebf7d9893b8279c84e /kernel/rcutree.h | |
parent | a10d206ef1a83121ab7430cb196e0376a7145b22 (diff) |
rcu: Move RCU grace-period initialization into a kthread
As the first step towards allowing grace-period initialization to be
preemptible, this commit moves the RCU grace-period initialization
into its own kthread. This is needed to keep large-system scheduling
latency at reasonable levels.
Also change raw_spin_lock_irqsave() to raw_spin_lock_irq() as suggested
by Peter Zijlstra in review comments.
Reported-by: Mike Galbraith <mgalbraith@suse.de>
Reported-by: Dimitri Sivanich <sivanich@sgi.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
Diffstat (limited to 'kernel/rcutree.h')
-rw-r--r-- | kernel/rcutree.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/rcutree.h b/kernel/rcutree.h index 4d29169f2124..117a15019e99 100644 --- a/kernel/rcutree.h +++ b/kernel/rcutree.h | |||
@@ -385,6 +385,9 @@ struct rcu_state { | |||
385 | u8 boost; /* Subject to priority boost. */ | 385 | u8 boost; /* Subject to priority boost. */ |
386 | unsigned long gpnum; /* Current gp number. */ | 386 | unsigned long gpnum; /* Current gp number. */ |
387 | unsigned long completed; /* # of last completed gp. */ | 387 | unsigned long completed; /* # of last completed gp. */ |
388 | struct task_struct *gp_kthread; /* Task for grace periods. */ | ||
389 | wait_queue_head_t gp_wq; /* Where GP task waits. */ | ||
390 | int gp_flags; /* Commands for GP task. */ | ||
388 | 391 | ||
389 | /* End of fields guarded by root rcu_node's lock. */ | 392 | /* End of fields guarded by root rcu_node's lock. */ |
390 | 393 | ||