[PATCH 0/11] Patches for Toshiba Cell reference set

Benjamin Herrenschmidt benh at kernel.crashing.org
Wed Feb 7 10:33:00 EST 2007


On Wed, 2007-02-07 at 10:30 +1100, Benjamin Herrenschmidt wrote:
> On Wed, 2007-02-07 at 08:05 +1100, Paul Mackerras wrote:
> > Ishizaki Kou writes:
> > 
> > > We found that following phenomenon:
> > >  - An application calls "munmap"
> > >  - do_munmap flushes TLB (so HTAB is invalidated)
> > >  - when exiting spin_unlock(), DEC exception occurs. (!)
> > >  - One of DEC handler causes data storage interrupt
> > 
> > Interesting.  Did you find out exactly what was causing the DSI in the
> > decrementer interrupt handling?  It sounds like that is the real bug.
> 
> Not necessarily... DEC -> module -> vmalloc'ed or ioremap'ed access for
> example would trigger a DSI.
> 
> The Hash routines expect irqs off when called.

Argh ! Actually no ! They expect irqs off in insert and updatepp, not in
invalidate. You'll notice that iSeries invalidate does a
local_irq_disable.

Ishiazaki-san: The proper fix is to do that too for Celleb. That is,
continue using a normal spinlock and add a local_irq_save/restore in
your invalidate callback (and only that one).

I wonder if we should "clean" that up and move that to the caller
though, and thus have a more consisent interface to the hash code.

Ben.





More information about the Linuxppc-dev mailing list