From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from foss.arm.com ([217.140.101.70]:37044 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726789AbeHVXaQ (ORCPT ); Wed, 22 Aug 2018 19:30:16 -0400 Date: Wed, 22 Aug 2018 21:03:54 +0100 From: Will Deacon Subject: Re: Alpha Avanti broken by 9ce8654323d69273b4977f76f11c9e2d345ab130 Message-ID: <20180822200346.GA6574@brain-police> References: <21c0bd37-0ae7-db8f-76b8-6552c30faa4f@codeaurora.org> <09c561cf-541c-219a-f19b-4ecfaf9a0f02@codeaurora.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Sender: linux-arch-owner@vger.kernel.org List-ID: To: Mikulas Patocka Cc: Sinan Kaya , Arnd Bergmann , "Maciej W. Rozycki" , Matt Turner , linux-alpha@vger.kernel.org, okaya@kernel.org, linux-arch , Peter Zijlstra , Thomas Gleixner On Wed, Aug 22, 2018 at 03:56:28PM -0400, Mikulas Patocka wrote: > > > On Wed, 22 Aug 2018, Sinan Kaya wrote: > > > On 8/22/2018 1:47 PM, Mikulas Patocka wrote: > > > If ARM guarantees that the accesses to a given device are not reordered - > > > then the barriers in readl and writel are superfluous. > > > > It is not. ARM only guarantees ordering of read/write transactions targeting > > a device not memory. > > > > example: > > > > write memory > > raw write to device > > > > or > > > > raw read from device > > read memory > > > > these can bypass each other on ARM unless a barrier is placed in the right > > place either via readl()/writel() or explicitly. > > Yes - but - why does Linux insert the barriers into readl() and writel() > instead of inserting them between accesses to registers and memory? > > A lot of drivers have long sequences of accesses to memory-mapped > registers with no interleaving accesses to coherent memory and these > implicit barriers slow them down with no gain at all. That's what readX_relaxed and writeX_relaxed are for. There was some discussion on the lists a way back, and Torvalds was very clear that readX and writeX should follow the x86 semantics, which have these ordering guarantees against accesses to memory. Will