diff options
author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2011-05-12 10:08:07 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2011-05-19 23:25:29 +0200 |
commit | 80d02085d99039b3b7f3a73c8896226b0cb1ba07 (patch) | |
tree | c310902423ecb00effadcb59c60cbf118d4037cb /kernel/rcutree.h | |
parent | net,rcu: convert call_rcu(prl_entry_destroy_rcu) to kfree (diff) | |
download | linux-80d02085d99039b3b7f3a73c8896226b0cb1ba07.tar.xz linux-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.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 @@ * 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 */ |