Re: [1/4] rcu: Detect uses of rcu read side in extended quiescent states

Paul E. McKenney
2011-06-06T18:37:14Z

On Mon, Jun 06, 2011 at 08:20:54PM +0200, Frederic Weisbecker wrote:
> On Mon, Jun 06, 2011 at 11:10:21AM -0700, Paul E. McKenney wrote:
> > On Sun, Jun 05, 2011 at 10:44:33PM -0500, Milton Miller wrote:
> > > On Mon, 06 Jun 2011 about 03:10:55 -0000, Frederic Weisbecker wrote:
> > > > @@ -3994,8 +3995,13 @@ void lockdep_rcu_dereference(const char *file, const int line)
> > > > printk("\n===================================================\n");
> > > > printk( "[ INFO: suspicious rcu_dereference_check() usage. ]\n");
> > > > printk( "---------------------------------------------------\n");
> > > > - printk("%s:%d invoked rcu_dereference_check() without protection!\n",
> > > > - file, line);
> > > > + printk("%s:%d invoked rcu_dereference_check() ", file, line);
> > > > +
> > > > + if (type == RCU_WARN_UNPROTECTED)
> > > > + printk("without protection!\n");
> > > > + else if (type == RCU_WARN_EXT_QS)
> > > > + printk("while in RCU extended quiescent state!\n");
> > > > +
> > > > printk("\nother info that might help us debug this:\n\n");
> > > > printk("\nrcu_scheduler_active = %d, debug_locks = %d\n", rcu_scheduler_active, debug_locks);
> > > > lockdep_print_held_locks(curr);
> > >
> > > Can we keep the above in one printk? That way the printing is
> > > guaranteed to come out on one line. Probably the easiest way would
> > > be add char *why = "" then assign a string based on the current
> > > conditions. Do all of that before the first printk which gets the
> > > a %s added.
> >
> > I have the following queued the -rcu tree which does add the string.
> >
> > Frederic, would it be possible to base on this patch?
> >
> > Thanx, Paul
>
> No problem. Will respin soon.

Thank you!

> What's the branch in your tree? rcu/next ?

That is the one!

Thanx, Paul