Re: [RFC v2 01/39] Kconfig: introduce HAS_IOPORT option and select it as necessary

From: Maciej W. Rozycki
Date: Fri May 06 2022 - 06:20:31 EST


On Thu, 5 May 2022, Arnd Bergmann wrote:

> > I'm hearing that generic powerpc kernels have to run both on machines
> > that have I/O port space and those that don't. That makes me think
> > s390 could do something similar.
>
> No, this is actually the current situation, and it makes absolutely no
> sense. s390 has no way of implementing inb()/outb() because there
> are no instructions for it and it cannot tunnel them through a virtual
> address mapping like on most of the other architectures. (it has special
> instructions for accessing memory space, which is not the same as
> a pointer dereference here).

I think I'm missing something here. IIUC we're talking about a PCI/PCIe
bus used with s390 hardware, right?

(It has to be PCI/PCIe, because other than x86/IA-64 host buses there are
only PCI/PCIe and EISA/ISA buses out there that define I/O access cycles
and EISA/ISA have long been obsoleted except perhaps from some niche use.)

If this is PCI/PCIe indeed, then an I/O access is just a different bit
pattern put on the bus/in the TLP in the address phase. So what is there
inherent to the s390 architecture that prevents that different bit pattern
from being used?

If anything, I could imagine the same limitation as with current POWER9
implementations, that is whatever glue is used to wire PCI/PCIe to the
rest of the system does not implement a way to use said bit pattern (which
has nothing to do with the POWER9 processor instruction set).

But that has nothing to do with the presence or absence of any specific
processor instructions. It's just a limitation of bus glue. So I guess
it's just that all PCI/PCIe glue logic implementations for s390 have such
a limitation, right?

Maciej