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

Frederic Weisbecker
2011-06-06T18:21:00Z

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.

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

Thanks.