]> git.baikalelectronics.ru Git - kernel.git/commit
tty: goldfish: Introduce gf_ioread32()/gf_iowrite32()
authorLaurent Vivier <laurent@vivier.eu>
Wed, 6 Apr 2022 20:15:20 +0000 (22:15 +0200)
committerGeert Uytterhoeven <geert@linux-m68k.org>
Mon, 11 Apr 2022 09:48:01 +0000 (11:48 +0200)
commitd1f1a0b2aa08e967f085a9731f2b9c976b94608a
treeb35193673d8e7fdac3f13e2c007a005c71ab664b
parentdbb008736a8c113ef1e12b4e4b4351fac2a15ede
tty: goldfish: Introduce gf_ioread32()/gf_iowrite32()

The goldfish TTY device was clearly defined as having little-endian
registers, but the switch to __raw_{read,write}l(() broke its driver
when running on big-endian kernels (if anyone ever tried this).

The m68k qemu implementation got this wrong, and assumed native-endian
registers.  While this is a bug in qemu, it is probably impossible to
fix that since there is no way of knowing which other operating systems
have started relying on that bug over the years.

Hence revert commit ea74c84bcdae ("tty: goldfish: use
__raw_writel()/__raw_readl()", and define gf_ioread32()/gf_iowrite32()
to be able to use accessors defined by the architecture.

Cc: stable@vger.kernel.org # v5.11+
Fixes: ea74c84bcdaed45d ("tty: goldfish: use __raw_writel()/__raw_readl()")
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Link: https://lore.kernel.org/r/20220406201523.243733-2-laurent@vivier.eu
[geert: Add rationale based on Arnd's comments]
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
drivers/tty/goldfish.c
include/linux/goldfish.h