Thread (19 messages) 19 messages, 4 authors, 2018-03-27

[PATCH v7 0/7] netdev: intel: Eliminate duplicate barriers on weakly-ordered archs

From: Alexander Duyck <hidden>
Date: 2018-03-27 14:38:31
Also in: intel-wired-lan, linux-arm-msm, netdev

On Tue, Mar 27, 2018 at 7:23 AM, Sinan Kaya [off-list ref] wrote:
On 3/27/2018 10:04 AM, Lino Sanfilippo wrote:
quoted
Hi,
quoted
Double sorry now.

I don't know if you have been following "RFC on writel and writel_relaxed" thread
or not but there are some new developments about wmb() requirement.
Just out of interest: Where can this thread be found?
https://www.spinics.net/lists/linux-rdma/msg62570.html

https://patchwork.kernel.org/patch/10309913/

quoted
quoted
Basically, wmb() should never be used before writel() as writel() seem to
provide coherency and observability guarantee.
AFAIU memory-barriers.txt writel() only guarantees correct order of accesses to
IO-memory not RAM vs. IO-memory (this may be the case for some architectures
where the writel() implementation contains a wmb() but not for all).
For the RAM vs. IO-memory case at least a a wmb()/rmb() has to be used.
Is this not correct?
We are being told that if you use writel(), then you don't need a wmb() on
all architectures.
I'm not sure who told you that but that is incorrect, at least for
x86. If you attempt to use writel() without the wmb() we will have to
NAK the patches. We will accept the wmb() with writel_releaxed() since
that solves things for ARM.
Jason is seeking behavior clarification for write combined buffers.
Don't bother. I can tell you right now that for x86 you have to have a
wmb() before the writel().

Based on the comment in
(https://www.spinics.net/lists/linux-rdma/msg62666.html):
    Replacing wmb() + writel() with wmb() + writel_relaxed() will work on
    PPC, it will just not give you a benefit today.

I say the patch set stays. This gives benefit on ARM, and has no
effect on x86 and PowerPC. If you want to look at trying to optimize
things further on PowerPC and such then go for it in terms of trying
to implement the writel_relaxed(). Otherwise I say we call the ARM
goodness a win and don't get ourselves too wrapped up in trying to fix
this for all architectures.

Thanks.

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