RFC on writel and writel_relaxed
arnd at arndb.de
Wed Mar 28 20:55:27 AEDT 2018
On Wed, Mar 28, 2018 at 11:50 AM, Benjamin Herrenschmidt
<benh at kernel.crashing.org> wrote:
> On Wed, 2018-03-28 at 09:53 +0100, Will Deacon wrote:
>> For arm/arm64 these end up behaving exactly the same as readX/writeX, but
>> I'm nervous about changing the documentation without understanding why it's
>> like it is currently. Maybe another ia64 thing?.
> I doubt it ... the Intel ancestry here would make me think they are
> completely ordered there too.
> powerpc and ARM can't quite make them synchronous I think, but at least
> they should have the same semantics as writel.
One thing that ARM does IIRC is that it only guarantees to order writel() within
one device, and the memory mapped PCI I/O space window almost certainly
counts as a separate device to the CPU.
In the absence of an enforced global synchronization during an I/O port
access, that means writel() and outb() can be reordered before they arrive
at a device in theory. Again, this rarely matters in practice, but I think it
makes sense to document the less strict behavior here, given that we have
common hardware that can't provide x86 compatible semantics.
More information about the Linuxppc-dev