Thread (22 messages) flat view 22 messages, 4 authors, 2021-08-10

RE: [EXT] Re: The problem about arm64: io: Relax implicit barriers in default I/O accessors

From: Frank Li <frank.li@nxp.com>
Date: 2021-08-09 14:48:47

-----Original Message-----
From: Will Deacon <will@kernel.org>
Sent: Monday, August 9, 2021 8:51 AM
To: Frank Li <frank.li@nxp.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>; Zhi Li <redacted>;
Shenwei Wang [off-list ref]; Han Xu [off-list ref]; Nitin Garg
[off-list ref]; Jason Liu [off-list ref]; linux-arm-
kernel@lists.infradead.org
Subject: Re: [EXT] Re: The problem about arm64: io: Relax implicit barriers
in default I/O accessors

Caution: EXT Email

On Thu, Jul 22, 2021 at 07:14:19PM +0000, Frank Li wrote:
quoted
quoted
quoted
On Wed, Jun 23, 2021 at 03:48:10PM +0000, Frank Li wrote:
quoted
quoted
I think you had a support case open with Arm [1] which I'm not
able
quoted
quoted
to
quoted
quoted
quoted
access -- please can you ask them about the two examples above?
Still not get feedback from ARM.
Just wondering if you were able to solve this without the need to
change
quoted
quoted
quoted
Linux?
Sorry for late reply

For CCI-500 and 550, ARM removed support for barrier transactions but
CCI-
quoted
quoted
400 supports barrier transactions. With CCI-400 it is a valid
configuration
quoted
quoted
to have SYSBARDISABLE LOW in Cortex-A processors. This change in Linux
kernel is assuming that the SYSBARDISABLE is set to HIGH hence its not
correct change for all products having various versions of ARM CCI IP.

Frank Li
Deacon:

      Did you plan fix this problem by changing dma_wmb()?
No. As far as I understand this problem, you're driving SYSBARDISABLE
'low' yet you have your own bus fabric downstream of the CCI which doesn't
respect barrier transactions. Even if we bodge dma_wmb(), store-release to
non-cacheable memory cannot be made to work on your system as you're
effectively putting some of your non-coherent DMA devices into a separate
outer-shareable domain from the CPUs.
Does it means the Linux expect all DMA devices in outer-shareable domain instead
of system shared domain?  

Frank
So you have two options:

  1. Drive SYSBARDISABLE 'high' so that the CPU handles ordering for you

- or -

  2. Quirk Linux so that we patch dma_wmb() when we detect your system at
     runtime (so we can extend this in future if we need to emit a
different
     sequence for store release)

(1) is definitely the easiest option if it's possible.

Will
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help