Re: [PATCH] docs/memory-barriers.txt: Fix broken DMA vs MMIO ordering example

From: Peter Zijlstra
Date: Wed Mar 28 2018 - 14:03:45 EST


On Wed, Mar 28, 2018 at 10:57:11AM -0700, Tony Luck wrote:
> On Wed, Mar 28, 2018 at 6:02 AM, Sinan Kaya <okaya@xxxxxxxxxxxxxx> wrote:
> > +linux-ia64
> > Does IA64 follow this requirement? If not, is implementation planned?
> >
> > "no wmb() before writel()"
> >
> > Linus asked us to get rid of wmb() in front of writel() for UC memory.
> > Just checking that we are not breaking anything for IA64.
>
> We should be OK on ia64, writel() uses a cast to:
>
> *(volatile unsigned int __force *)
>
> which the compiler takes as a request to use a "st4.rel" instruction
> (meaning "store with release semantics"). So the value stored will
> be visible to anything that follows.

Just to nitpick, regular release semantics don't guarantee anything like
that, but ia64 never actually got around to implementing proper release
and it's a full barrier and thus what you say is true.