[GIT PULL] asm-generic fixes for v4.17-rc1
Arnd Bergmann
arnd at arndb.de
Wed Apr 11 08:40:02 PDT 2018
The following changes since commit 0adb32858b0bddf4ada5f364a84ed60b196dbcda:
Linux 4.16 (2018-04-01 14:20:27 -0700)
are available in the git repository at:
git+ssh://gitolite@ra.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic.git
tags/asm-generic
for you to fetch changes up to a71e7c44ffb7baea0c0795824afc34cc0bc1a301:
io: change writeX_relaxed() to remove barriers (2018-04-10 16:37:34 +0200)
----------------------------------------------------------------
asm-generic fixes for v4.17-rc1
I have one regression fix for a minor build problem after the architecture
removal series, plus a rework of the barriers in the readl/writel
functions, thanks to work by Sinan Kaya:
This started from a discussion on the linuxpcc and rdma mailing lists
[1]. To summarize, we decided that architectures are responsible to
serialize readl() and writel() accesses on a device MMIO space relative
to DMA performed by that device.
This series provides a pessimistic implementation of that behavior for
asm-generic/io.h, which is in turn used by a number of architectures
(h8300, microblaze, nios2, openrisc, s390, sparc, um, unicore32, and
xtensa). Some of those presumably need no extra barriers, or something
weaker than rmb()/wmb(), and they are advised to override the new default
for better performance.
For inb()/outb(), the same barriers are used, but architectures might
want to add another barrier to outb() here if that can guarantee
non-posted behavior (some architectures can, others cannot do that).
The readl_relaxed()/writel_relaxed() family of functions retains the
existing behavior with no extra barriers.
[1]: https://lists.ozlabs.org/pipermail/linuxppc-dev/2018-March/170481.html
----------------------------------------------------------------
Liu, Changcheng (1):
dts: remove cris & metag dts hard link file
Sinan Kaya (7):
io: define several IO & PIO barrier types for the asm-generic version
io: define stronger ordering for the default readX() implementation
io: define stronger ordering for the default writeX() implementation
io: change outX() to have their own IO barrier overrides
io: change inX() to have their own IO barrier overrides
io: change readX_relaxed() to remove barriers
io: change writeX_relaxed() to remove barriers
include/asm-generic/io.h | 161
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------
scripts/dtc/include-prefixes/cris | 1 -
scripts/dtc/include-prefixes/metag | 1 -
3 files changed, 143 insertions(+), 20 deletions(-)
delete mode 120000 scripts/dtc/include-prefixes/cris
delete mode 120000 scripts/dtc/include-prefixes/metag
More information about the linux-arm-kernel
mailing list