[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20110203101739.GA1551@zhy>
Date: Thu, 3 Feb 2011 18:17:39 +0800
From: Yong Zhang <yong.zhang0@...il.com>
To: Peter Zijlstra <peterz@...radead.org>
Cc: Nick Bowler <nbowler@...iptictech.com>,
linux-kernel@...r.kernel.org,
Andrew Morton <akpm@...ux-foundation.org>,
Thomas Gleixner <tglx@...utronix.de>
Subject: Re: 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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists