linux/arch/mips/mti-malta
Paul Burton 305723ab43 MIPS: Malta: Fix IOCU disable switch read for MIPS64
Malta boards used with CPU emulators feature a switch to disable use of
an IOCU. Software has to check this switch & ignore any present IOCU if
the switch is closed. The read used to do this was unsafe for 64 bit
kernels, as it simply casted the address 0xbf403000 to a pointer &
dereferenced it. Whilst in a 32 bit kernel this would access kseg1, in a
64 bit kernel this attempts to access xuseg & results in an address
error exception.

Fix by accessing a correctly formed ckseg1 address generated using the
CKSEG1ADDR macro.

Whilst modifying this code, define the name of the register and the bit
we care about within it, which indicates whether PCI DMA is routed to
the IOCU or straight to DRAM. The code previously checked that bit 0 was
also set, but the least significant 7 bits of the CONFIG_GEN0 register
contain the value of the MReqInfo signal provided to the IOCU OCP bus,
so singling out bit 0 makes little sense & that part of the check is
dropped.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Fixes: b6d92b4a6b ("MIPS: Add option to disable software I/O coherency.")
Cc: Matt Redfearn <matt.redfearn@imgtec.com>
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/14187/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
2016-09-29 18:59:49 +02:00
..
Makefile MIPS: Malta: Setup RAM regions via DT 2015-11-11 08:35:47 +01:00
malta-amon.c MIPS: APRP: Choose the correct VPE loader by fixing the linking 2014-03-06 21:20:23 +01:00
malta-display.c MIPS: FW: malta: Code formatting clean-ups. 2013-05-08 12:30:10 +02:00
malta-dt.c MIPS: Malta: Basic DT plumbing 2015-06-21 21:54:29 +02:00
malta-dtshim.c tree-wide: replace config_enabled() with IS_ENABLED() 2016-08-04 08:50:07 -04:00
malta-init.c MIPS: Fix early CM probing 2016-02-09 17:18:31 +01:00
malta-int.c MIPS: CM: Add support for reporting CM cache errors 2015-08-26 15:23:15 +02:00
malta-memory.c tree-wide: replace config_enabled() with IS_ENABLED() 2016-08-04 08:50:07 -04:00
malta-platform.c MIPS: Malta: Remove ttyS2 serial for CMP platforms 2014-01-22 20:18:57 +01:00
malta-pm.c MIPS: Malta: add suspend state entry code 2014-05-30 21:01:09 +02:00
malta-reset.c MIPS: Malta: support powering down 2014-05-30 21:01:09 +02:00
malta-setup.c MIPS: Malta: Fix IOCU disable switch read for MIPS64 2016-09-29 18:59:49 +02:00
malta-time.c MIPS: malta-time: Take seconds into account 2016-05-13 15:30:25 +02:00
Platform KVM/MIPS32: Infrastructure/build files. 2013-05-08 03:55:34 +02:00