[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