On 11/10/10 15:07, Paul E. McKenney wrote: > On Wed, Nov 10, 2010 at 09:19:26AM -0800, Randy Dunlap wrote: >> On Wed, 10 Nov 2010 14:07:19 +1100 Stephen Rothwell wrote: >> >>> Hi all, >>> >>> Changes since 20101109: >> >> >> when CONFIG_RCU_BOOST is not enabled: >> >> In file included from linux-next-20101110/kernel/rcutiny.c:53: >> linux-next-20101110/kernel/rcutiny_plugin.h: In function 'rcu_preempt_cpu_qs': >> linux-next-20101110/kernel/rcutiny_plugin.h:413: error: 'struct rcu_preempt_ctrlblk' has no member named 'n_normal_balk_blkd_tasks' > > Hello, Randy, > > Good catch! Could you please try the following patch? (you tested this build, didn't you?) > Thanx, Paul Yes, this builds. Thanks. Acked-by: Randy Dunlap <randy.dunlap@xxxxxxxxxx> > ------------------------------------------------------------------------ > > diff --git a/kernel/rcutiny_plugin.h b/kernel/rcutiny_plugin.h > index 297aa35..8cd197c 100644 > --- a/kernel/rcutiny_plugin.h > +++ b/kernel/rcutiny_plugin.h > @@ -297,9 +297,17 @@ static int rcu_boost(void) > * the current grace period, and, if so, tell the rcu_kthread_task to > * start boosting them. If there is an expedited boost in progress, > * we wait for it to complete. > + * > + * If there are no blocked readers blocking the current grace period, > + * return 0 to let the caller know, otherwise return 1. Note that this > + * return value is independent of whether or not boosting was done. > */ > -static void rcu_initiate_boost(void) > +static int rcu_initiate_boost(void) > { > + if (!rcu_preempt_blocked_readers_cgp()) { > + RCU_TRACE(rcu_preempt_ctrlblk.n_normal_balk_blkd_tasks++); > + return 0; > + } > if (rcu_preempt_ctrlblk.gp_tasks != NULL && > rcu_preempt_ctrlblk.boost_tasks == NULL && > rcu_preempt_ctrlblk.boosted_this_gp == 0 && > @@ -309,6 +317,7 @@ static void rcu_initiate_boost(void) > RCU_TRACE(rcu_preempt_ctrlblk.n_normal_boosts++); > } else > RCU_TRACE(rcu_initiate_boost_trace()); > + return 1; > } > > /* > @@ -353,10 +362,13 @@ static int rcu_boost(void) > } > > /* > - * If there is no RCU priority boosting, we don't initiate boosting. > + * If there is no RCU priority boosting, we don't initiate boosting, > + * but we do indicate whether there are blocked readers blocking the > + * current grace period. > */ > -static void rcu_initiate_boost(void) > +static int rcu_initiate_boost(void) > { > + return rcu_preempt_blocked_readers_cgp(); > } > > /* > @@ -405,12 +417,12 @@ static void rcu_preempt_cpu_qs(void) > /* If there is no GP then there is nothing more to do. */ > if (!rcu_preempt_gp_in_progress()) > return; > - /* If there are blocked readers, go check up on boosting. */ > - if (rcu_preempt_blocked_readers_cgp()) { > - rcu_initiate_boost(); > + /* > + * Check up on boosting. If there are no readers blocking the > + * current grace period, leave. > + */ > + if (rcu_initiate_boost()) > return; > - } else > - RCU_TRACE(rcu_preempt_ctrlblk.n_normal_balk_blkd_tasks++); > > /* Advance callbacks. */ > rcu_preempt_ctrlblk.completed = rcu_preempt_ctrlblk.gpnum; -- ~Randy *** Remember to use Documentation/SubmitChecklist when testing your code *** -- To unsubscribe from this list: send the line "unsubscribe linux-next" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html