diff options
author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2009-11-02 16:52:27 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-11-09 22:11:17 -0500 |
commit | 281d150c5f8892f158747594ab49ce2823fd8b8c (patch) | |
tree | e46ed3e84545ec33f99f58f4b7211121bbfe3755 /kernel/rcutree.h | |
parent | 7e1a2766e67a529f62c8cfba0a47d63fc4f7fa8a (diff) |
rcu: Prepare for synchronization fixes: clean up for non-NO_HZ handling of ->completed counter
Impose a clear locking design on non-NO_HZ handling of the
->completed counter. This increases the distance between the
RCU and the CPU-hotplug mechanisms.
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
Cc: <stable@kernel.org> # .32.x
LKML-Reference: <12571987491353-git-send-email->
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/rcutree.h')
-rw-r--r-- | kernel/rcutree.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/kernel/rcutree.h b/kernel/rcutree.h index 1899023b0962..8a4c1650ad8d 100644 --- a/kernel/rcutree.h +++ b/kernel/rcutree.h | |||
@@ -204,11 +204,12 @@ struct rcu_data { | |||
204 | #define RCU_GP_IDLE 0 /* No grace period in progress. */ | 204 | #define RCU_GP_IDLE 0 /* No grace period in progress. */ |
205 | #define RCU_GP_INIT 1 /* Grace period being initialized. */ | 205 | #define RCU_GP_INIT 1 /* Grace period being initialized. */ |
206 | #define RCU_SAVE_DYNTICK 2 /* Need to scan dyntick state. */ | 206 | #define RCU_SAVE_DYNTICK 2 /* Need to scan dyntick state. */ |
207 | #define RCU_FORCE_QS 3 /* Need to force quiescent state. */ | 207 | #define RCU_SAVE_COMPLETED 3 /* Need to save rsp->completed. */ |
208 | #define RCU_FORCE_QS 4 /* Need to force quiescent state. */ | ||
208 | #ifdef CONFIG_NO_HZ | 209 | #ifdef CONFIG_NO_HZ |
209 | #define RCU_SIGNAL_INIT RCU_SAVE_DYNTICK | 210 | #define RCU_SIGNAL_INIT RCU_SAVE_DYNTICK |
210 | #else /* #ifdef CONFIG_NO_HZ */ | 211 | #else /* #ifdef CONFIG_NO_HZ */ |
211 | #define RCU_SIGNAL_INIT RCU_FORCE_QS | 212 | #define RCU_SIGNAL_INIT RCU_SAVE_COMPLETED |
212 | #endif /* #else #ifdef CONFIG_NO_HZ */ | 213 | #endif /* #else #ifdef CONFIG_NO_HZ */ |
213 | 214 | ||
214 | #define RCU_JIFFIES_TILL_FORCE_QS 3 /* for rsp->jiffies_force_qs */ | 215 | #define RCU_JIFFIES_TILL_FORCE_QS 3 /* for rsp->jiffies_force_qs */ |
@@ -274,9 +275,8 @@ struct rcu_state { | |||
274 | unsigned long jiffies_stall; /* Time at which to check */ | 275 | unsigned long jiffies_stall; /* Time at which to check */ |
275 | /* for CPU stalls. */ | 276 | /* for CPU stalls. */ |
276 | #endif /* #ifdef CONFIG_RCU_CPU_STALL_DETECTOR */ | 277 | #endif /* #ifdef CONFIG_RCU_CPU_STALL_DETECTOR */ |
277 | #ifdef CONFIG_NO_HZ | ||
278 | long dynticks_completed; /* Value of completed @ snap. */ | 278 | long dynticks_completed; /* Value of completed @ snap. */ |
279 | #endif /* #ifdef CONFIG_NO_HZ */ | 279 | /* Protected by fqslock. */ |
280 | }; | 280 | }; |
281 | 281 | ||
282 | #ifdef RCU_TREE_NONCORE | 282 | #ifdef RCU_TREE_NONCORE |