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-10 18:52:54
-----Original Message----- From: Will Deacon <will@kernel.org> Sent: Monday, August 9, 2021 10:27 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 Mon, Aug 09, 2021 at 02:46:55PM +0000, Frank Li wrote:quoted
quoted
-----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[off-list ref];quoted
quoted
Shenwei Wang [off-list ref]; Han Xu [off-list ref]; NitinGargquoted
quoted
[off-list ref]; Jason Liu [off-list ref]; linux-arm- kernel@lists.infradead.org Subject: Re: [EXT] Re: The problem about arm64: io: Relax implicitbarriersquoted
quoted
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'mnotquoted
quoted
ablequoted
quoted
toquoted
quoted
quoted
access -- please can you ask them about the two examplesabove?quoted
quoted
quoted
quoted
quoted
quoted
Still not get feedback from ARM.Just wondering if you were able to solve this without the need tochangequoted
quoted
quoted
Linux?Sorry for late reply For CCI-500 and 550, ARM removed support for barrier transactionsbutquoted
quoted
CCI-quoted
quoted
400 supports barrier transactions. With CCI-400 it is a validconfigurationquoted
quoted
to have SYSBARDISABLE LOW in Cortex-A processors. This change inLinuxquoted
quoted
quoted
quoted
kernel is assuming that the SYSBARDISABLE is set to HIGH hence itsnotquoted
quoted
quoted
quoted
correct change for all products having various versions of ARM CCIIP.quoted
quoted
quoted
quoted
Frank LiDeacon: 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 whichdoesn'tquoted
quoted
respect barrier transactions. Even if we bodge dma_wmb(), store-releasetoquoted
quoted
non-cacheable memory cannot be made to work on your system as you're effectively putting some of your non-coherent DMA devices into aseparatequoted
quoted
outer-shareable domain from the CPUs.Does it means the Linux expect all DMA devices in outer-shareable domaininsteadquoted
of system shared domain?I don't think we've ever documented that and, to be honest, the outer-shareable domain stuff in the architecture is pretty academic. However, I think it's fair to say that we do want the acquire/release instructions to work for non-cacheable buffers when communicating with non-coherent devices. I _think_ that implies that such devices need to be in the same outer-shareable domain as the CPUs, although the architecture isn't really clear here. I can try to find out.
Thanks, if you find anything, let me know. Frank
Will
_______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel