diff options
author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2011-05-12 04:08:07 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2011-05-19 17:25:29 -0400 |
commit | 80d02085d99039b3b7f3a73c8896226b0cb1ba07 (patch) | |
tree | c310902423ecb00effadcb59c60cbf118d4037cb /kernel/rcutree.h | |
parent | 11c476f31a0fabc6e604da5b09a6590b57c3fb20 (diff) |
Revert "rcu: Decrease memory-barrier usage based on semi-formal proof"
This reverts commit e59fb3120becfb36b22ddb8bd27d065d3cdca499.
This reversion was due to (extreme) boot-time slowdowns on SPARC seen by
Yinghai Lu and on x86 by Ingo
.
This is a non-trivial reversion due to intervening commits.
Conflicts:
Documentation/RCU/trace.txt
kernel/rcutree.c
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/rcutree.h')
-rw-r--r-- | kernel/rcutree.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/kernel/rcutree.h b/kernel/rcutree.h index 93d4a1c2e88b..257664815d5d 100644 --- a/kernel/rcutree.h +++ b/kernel/rcutree.h | |||
@@ -84,9 +84,11 @@ | |||
84 | * Dynticks per-CPU state. | 84 | * Dynticks per-CPU state. |
85 | */ | 85 | */ |
86 | struct rcu_dynticks { | 86 | struct rcu_dynticks { |
87 | int dynticks_nesting; /* Track irq/process nesting level. */ | 87 | int dynticks_nesting; /* Track nesting level, sort of. */ |
88 | int dynticks_nmi_nesting; /* Track NMI nesting level. */ | 88 | int dynticks; /* Even value for dynticks-idle, else odd. */ |
89 | atomic_t dynticks; /* Even value for dynticks-idle, else odd. */ | 89 | int dynticks_nmi; /* Even value for either dynticks-idle or */ |
90 | /* not in nmi handler, else odd. So this */ | ||
91 | /* remains even for nmi from irq handler. */ | ||
90 | }; | 92 | }; |
91 | 93 | ||
92 | /* RCU's kthread states for tracing. */ | 94 | /* RCU's kthread states for tracing. */ |
@@ -282,6 +284,7 @@ struct rcu_data { | |||
282 | /* 3) dynticks interface. */ | 284 | /* 3) dynticks interface. */ |
283 | struct rcu_dynticks *dynticks; /* Shared per-CPU dynticks state. */ | 285 | struct rcu_dynticks *dynticks; /* Shared per-CPU dynticks state. */ |
284 | int dynticks_snap; /* Per-GP tracking for dynticks. */ | 286 | int dynticks_snap; /* Per-GP tracking for dynticks. */ |
287 | int dynticks_nmi_snap; /* Per-GP tracking for dynticks_nmi. */ | ||
285 | #endif /* #ifdef CONFIG_NO_HZ */ | 288 | #endif /* #ifdef CONFIG_NO_HZ */ |
286 | 289 | ||
287 | /* 4) reasons this CPU needed to be kicked by force_quiescent_state */ | 290 | /* 4) reasons this CPU needed to be kicked by force_quiescent_state */ |