Re: Memory barriers and spin_unlock safety

From: Jesse Barnes
Date: Tue Mar 07 2006 - 12:54:18 EST


On Tuesday, March 7, 2006 9:40 am, Matthew Wilcox wrote:
> On Tue, Mar 07, 2006 at 05:36:59PM +0000, David Howells wrote:
> > David Howells <dhowells@xxxxxxxxxx> wrote:
> > > I suspect, then, that x86_64 should not have an SFENCE for
> > > smp_wmb(), and that only io_wmb() should have that.
> >
> > Hmmm... We don't actually have io_wmb()... Should the following be
> > added to all archs?
> >
> > io_mb()
> > io_rmb()
> > io_wmb()
>
> it's spelled mmiowb(), and reads from IO space are synchronous, so
> don't need barriers.

To expand on willy's note, the reason it's called mmiowb as opposed to
iowb is because I/O port acccess (inX/outX) are inherently synchronous
and don't need barriers. mmio writes, however (writeX) need barrier
operations to ensure ordering on some platforms.

This raises the question of what semantics the unified I/O mapping
routines have... are ioreadX/iowriteX synchronous or should we define
the barriers you mention above for them? (IIRC ppc64 can use an io read
ordering op).

Jesse
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/