summaryrefslogtreecommitdiffstats
path: root/kernel/rcutree.h
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2011-05-12 01:08:07 -0700
committerIngo Molnar <mingo@elte.hu>2011-05-19 23:25:29 +0200
commit80d02085d99039b3b7f3a73c8896226b0cb1ba07 (patch)
treec310902423ecb00effadcb59c60cbf118d4037cb /kernel/rcutree.h
parent11c476f31a0fabc6e604da5b09a6590b57c3fb20 (diff)
downloadlinux-stable-80d02085d99039b3b7f3a73c8896226b0cb1ba07.tar.gz
linux-stable-80d02085d99039b3b7f3a73c8896226b0cb1ba07.tar.bz2
linux-stable-80d02085d99039b3b7f3a73c8896226b0cb1ba07.zip
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.h9
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 @@
* Dynticks per-CPU state.
*/
struct rcu_dynticks {
- int dynticks_nesting; /* Track irq/process nesting level. */
- int dynticks_nmi_nesting; /* Track NMI nesting level. */
- atomic_t dynticks; /* Even value for dynticks-idle, else odd. */
+ int dynticks_nesting; /* Track nesting level, sort of. */
+ int dynticks; /* Even value for dynticks-idle, else odd. */
+ int dynticks_nmi; /* Even value for either dynticks-idle or */
+ /* not in nmi handler, else odd. So this */
+ /* remains even for nmi from irq handler. */
};
/* RCU's kthread states for tracing. */
@@ -282,6 +284,7 @@ struct rcu_data {
/* 3) dynticks interface. */
struct rcu_dynticks *dynticks; /* Shared per-CPU dynticks state. */
int dynticks_snap; /* Per-GP tracking for dynticks. */
+ int dynticks_nmi_snap; /* Per-GP tracking for dynticks_nmi. */
#endif /* #ifdef CONFIG_NO_HZ */
/* 4) reasons this CPU needed to be kicked by force_quiescent_state */