]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
Merge tag 'regmap-fix-v4.5-big-endian' into regmap-linus
authorMark Brown <broonie@kernel.org>
Wed, 10 Feb 2016 07:09:14 +0000 (07:09 +0000)
committerMark Brown <broonie@kernel.org>
Wed, 10 Feb 2016 07:09:14 +0000 (07:09 +0000)
commitb6a64193721f046d8cba26b1dc26da89758e952b
tree4eb990d7439357d0acb014d67f1ea52fbea93e43
parent388f7b1d6e8ca06762e2454d28d6c3c55ad0fe95
parent320549a22484952d88d4e0320218765b16cd2174
Merge tag 'regmap-fix-v4.5-big-endian' into regmap-linus

regmap: mmio: Revert to v4.4 endianness handling

Commit 29bb45f25ff3 (regmap-mmio: Use native endianness for read/write)
attempted to fix some long standing bugs in the MMIO implementation for
big endian systems caused by duplicate byte swapping in both regmap and
readl()/writel() which affected MIPS systems as when they are in big
endian mode they flip the endianness of all registers in the system, not
just the CPU.  MIPS systems had worked around this by declaring regmap
using IPs as little endian which is inaccurate, unfortunately the issue
had not been reported.

Sadly the fix makes things worse rather than better.  By changing the
behaviour to match the documentation it caused behaviour changes for
other IPs which broke them and by using the __raw I/O accessors to avoid
the endianness swapping in readl()/writel() it removed some memory
ordering guarantees and could potentially generate unvirtualisable
instructions on some architectures.

Unfortunately sorting out all this mess in any half way sensible fashion
was far too invasive to go in during an -rc cycle so instead let's go
back to the old broken behaviour for v4.5, the better fixes are already
queued for v4.6.  This does mean that we keep the broken MIPS DTs for
another release but that seems the least bad way of handling the
situation.

# gpg: Signature made Fri 05 Feb 2016 11:34:51 GMT using RSA key ID 5D5487D0
# gpg: Good signature from "Mark Brown <broonie@sirena.org.uk>"
# gpg:                 aka "Mark Brown <broonie@debian.org>"
# gpg:                 aka "Mark Brown <broonie@kernel.org>"
# gpg:                 aka "Mark Brown <broonie@tardis.ed.ac.uk>"
# gpg:                 aka "Mark Brown <broonie@linaro.org>"
# gpg:                 aka "Mark Brown <Mark.Brown@linaro.org>"
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: 3F25 68AA C269 98F9 E813  A1C5 C3F4 36CA 30F5 D8EB
#      Subkey fingerprint: ADE6 68AA 6757 18B5 9FE2  9FEA 24D6 8B72 5D54 87D0