On Thu, Aug 28, 2014 at 11:26:30AM -0700, Paul E. McKenney wrote: > diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h > index b6acb9340192..a1af86099a67 100644 > --- a/kernel/rcu/tree_plugin.h > +++ b/kernel/rcu/tree_plugin.h > @@ -2121,16 +2121,23 @@ static void __call_rcu_nocb_enqueue(struct rcu_data > *rdp, > trace_rcu_nocb_wake(rdp->rsp->name, rdp->cpu, > TPS("WakeEmpty")); > } else { > - rdp->nocb_defer_wakeup = true; > + rdp->nocb_defer_wakeup = RCU_NOGP_WAKE; > trace_rcu_nocb_wake(rdp->rsp->name, rdp->cpu, > TPS("WakeEmptyIsDeferred")); > } > rdp->qlen_last_fqs_check = 0; > } else if (len > rdp->qlen_last_fqs_check + qhimark) { > /* ... or if many callbacks queued. */ > - wake_nocb_leader(rdp, true); > + if (!irqs_disabled_flags(flags)) { > + wake_nocb_leader(rdp, true); > + trace_rcu_nocb_wake(rdp->rsp->name, rdp->cpu, > + TPS("WakeOvf")); > + } else { > + rdp->nocb_defer_wakeup = RCU_NOGP_WAKE_FORCE; > + trace_rcu_nocb_wake(rdp->rsp->name, rdp->cpu, > + TPS("WakeOvfIsDeferred")); > + } > rdp->qlen_last_fqs_check = LONG_MAX / 2; > - trace_rcu_nocb_wake(rdp->rsp->name, rdp->cpu, TPS("WakeOvf")); > } else { > trace_rcu_nocb_wake(rdp->rsp->name, rdp->cpu, TPS("WakeNot")); > }
Is it possible for the RCU_NOCP_WAKE write to overwrite a WAKE_FORCE ? If not, why not? (Would make a good comment thereabouts). -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/