Thread (126 messages) 126 messages, 14 authors, 2018-04-02

Re: RFC on writel and writel_relaxed

From: Arnd Bergmann <arnd@arndb.de>
Date: 2018-03-27 09:44:25
Also in: linux-rdma

On Tue, Mar 27, 2018 at 10:56 AM, Benjamin Herrenschmidt
[off-list ref] wrote:
On Tue, 2018-03-27 at 09:56 +0200, Arnd Bergmann wrote:
quoted
On Tue, Mar 27, 2018 at 12:27 AM, Jason Gunthorpe [off-list ref] wrote:

I'm pretty sure I've never seen
any bug reports pointing to a missing wmb() between memory
and MMIO write accesses, but if you remember seeing them in the
list, maybe you can look again for some evidence of something going
wrong on x86 without it?
The interesting thing is that we do seem to have a whole LOT of these
spurrious wmb before writel all over the tree, I suspect because of
that incorrect recommendation in memory-barriers.txt.

We should fix that.
Maybe the problem is just that it's so counter-intuitive that we don't
need that barrier in Linux, when the hardware does need one on some
architectures.

How about we define a barrier type instruction specifically for this
purpose, something like wmb_before_mmio() and have all architectures
define that to an empty macro?

That way, having correct code using wmb_before_mmio() will not
trigger an incorrect review comment that leads to extra wmb(). ;-)

       Arnd
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help