On Wed, Feb 27, 2019 at 9:26 AM Will Deacon <[email protected]> wrote:
>
> I suppose you might need the mb() before *and* after the I/O access in the
> read case. The idea with readX()/ioreadX() is that you should be able to
> do something like:
Yeah, that sounds reasonable.
You might relax the barrier after the readX() to just a rmb(), which
might make the performance impact slightly less noticeable and might
be sufficient in practice. But I guess once you do IO, it's not like
the CPU barrier will be the limiting case.
That said, excessively weakly ordered CPU's are horrible for a reason,
and the barrier model was broken and made them even more so. And
alpha is a posted boy for "don't let hw people design a memory odering
just to make it easy for them".
So maybe just a full mb() and see if anybody notices. Better to have
working code than random failures.
Linus