lkml.org 
[lkml]   [2011]   [Feb]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Regression: WARNINGS and lockdep spews in 2.6.38-rc3+ (bisected).
On Thu, Feb 03, 2011 at 10:30:40AM +0100, Peter Zijlstra wrote:
> On Thu, 2011-02-03 at 17:12 +0800, Yong Zhang wrote:
> > #ifdef CONFIG_LOCKDEP
> > + unsigned long flags;
> > +
> > local_bh_disable();
> > lock_map_acquire(&timer->lockdep_map);
> > lock_map_release(&timer->lockdep_map);
> > - local_bh_enable();
> > + /* raw_local_irq_[save|restore] is to protect _local_bh_enable() */
> > + raw_local_irq_save(flags);
> > + _local_bh_enable();
> > + raw_local_irq_restore(flags);
> > #endif
>
> _why_ are you doing the raw_local_irq stuff? That's just weird, and that
> comment isn't helping.

Just to avoid trigger WARN_ON_ONCE(!irqs_disabled()) in __local_bh_enable(),

>
> Also, calling _local_bh_enable() will leave pending softirqs, not
> particularly nice

Ah, indeed. That's bad.

Now I'm not sure how to work around this issue, because local_bh_enable()
and _local_bh_enable() are not suitable here.

Maybe we can introduce another type of local_bh_enable() in which
waking up ksoftirqd is forced if needed.

Thanks,
Yong


\
 
 \ /
  Last update: 2011-02-03 11:21    [from the cache]
©2003-2011 Jasper Spaans