On Wed, Nov 10, 2010 at 03:36:52PM -0800, Randy Dunlap wrote: > 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?) Obviously not well enough. > Yes, this builds. Thanks. Thank you! Thanx, Paul > 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-kernel" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ -- 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