Thread (108 messages) 108 messages, 17 authors, 2022-01-30

Re: [RFC 02/32] Kconfig: introduce HAS_IOPORT option and select it as necessary

From: Arnd Bergmann <arnd@kernel.org>
Date: 2021-12-30 01:48:43
Also in: linux-alpha, linux-arch, linux-m68k, linux-mips, linux-riscv, linux-s390, linux-sh, linuxppc-dev, lkml, sparclinux

On Tue, Dec 28, 2021 at 11:15 PM Michael Schmitz [off-list ref] wrote:
Am 29.12.2021 um 16:41 schrieb Arnd Bergmann:
quoted
On Tue, Dec 28, 2021 at 8:20 PM Michael Schmitz [off-list ref] wrote:
I'd hope not - we spent some effort to make sure setting ATARI_ROM_ISA
does not affect other m68k platforms when e.g. building multiplatform
kernels.
Ok
Replacing inb() by readb() without any address translation won't do much
good for m68k though - addresses in the traditional ISA I/O port range
would hit the (unmapped) zero page.
Correct, this is exactly the problem that Niklas is trying to solve here:
we do have drivers that hit this bug, and on s390 clang actually produces
a compile-time error for drivers that cause a NULL pointer dereference
this way.

What some other architectures do is to rely on inb()/outb() to have a
zero-based offset, and use an io_offset in PCI buses to ensure that a
low port number on the bus gets translated into a pointer value for the
virtual mapping in the kernel, which is then represented as an unsigned
int.

As this is indistinguishable from architectures that just don't have
a base address for I/O ports (we unfortunately picked 0 as the default
PCI_IOBASE value), my suggestion was to start marking architectures
that may have this problem as using HAS_IOPORT in order to keep
the existing behavior unchanged. If m68k does not suffer from this,
making HAS_IOPORT conditional on those config options that actually
need it would of course be best.

         Arnd
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help