summaryrefslogtreecommitdiffstats
path: root/kernel/rcutree_plugin.h
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2011-05-27 12:38:52 +0200
committerIngo Molnar <mingo@elte.hu>2011-05-28 17:41:05 +0200
commit29f742f88a32c9ab8cf6d9ba69e1ea918be5aa58 (patch)
treea38aa38c8025e050ec82a7e64d02dca07f90ffc7 /kernel/rcutree_plugin.h
parentf62508f68d04adefc4cf9b0177ba02c8818b3eec (diff)
parent23b5c8fa01b723c70a20d6e4ef4ff54c7656d6e1 (diff)
downloadblackbird-op-linux-29f742f88a32c9ab8cf6d9ba69e1ea918be5aa58.tar.gz
blackbird-op-linux-29f742f88a32c9ab8cf6d9ba69e1ea918be5aa58.zip
Merge branch 'rcu/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-2.6-rcu into core/urgent
Diffstat (limited to 'kernel/rcutree_plugin.h')
-rw-r--r--kernel/rcutree_plugin.h7
1 files changed, 3 insertions, 4 deletions
diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h
index 3f6559a5f5cd..ed339702481d 100644
--- a/kernel/rcutree_plugin.h
+++ b/kernel/rcutree_plugin.h
@@ -1520,7 +1520,6 @@ int rcu_needs_cpu(int cpu)
{
int c = 0;
int snap;
- int snap_nmi;
int thatcpu;
/* Check for being in the holdoff period. */
@@ -1531,10 +1530,10 @@ int rcu_needs_cpu(int cpu)
for_each_online_cpu(thatcpu) {
if (thatcpu == cpu)
continue;
- snap = per_cpu(rcu_dynticks, thatcpu).dynticks;
- snap_nmi = per_cpu(rcu_dynticks, thatcpu).dynticks_nmi;
+ snap = atomic_add_return(0, &per_cpu(rcu_dynticks,
+ thatcpu).dynticks);
smp_mb(); /* Order sampling of snap with end of grace period. */
- if (((snap & 0x1) != 0) || ((snap_nmi & 0x1) != 0)) {
+ if ((snap & 0x1) != 0) {
per_cpu(rcu_dyntick_drain, cpu) = 0;
per_cpu(rcu_dyntick_holdoff, cpu) = jiffies - 1;
return rcu_needs_cpu_quick_check(cpu);
OpenPOWER on IntegriCloud