On Tue, Apr 13, 2021 at 3:06 PM David Laight <David.Laight@xxxxxxxxxx> wrote: > > From: Arnd Bergmann > > Sent: 13 April 2021 13:58 > ... > > The remaining ones (csky, m68k, sparc32) need to be inspected > > manually to see if they currently support PCI I/O space but in > > fact use address zero as the base (with large resources) or they > > should also turn the operations into a NOP. > > I'd expect sparc32 to use an ASI to access PCI IO space. > I can't quite remember whether IO space was supported at all. I see this bit in arch/sparc/kernel/leon_pci.c * PCI Memory and Prefetchable Memory is direct-mapped. However I/O Space is * accessed through a Window which is translated to low 64KB in PCI space, the * first 4KB is not used so 60KB is available. ... pci_add_resource_offset(&resources, &info->io_space, info->io_space.start - 0x1000); which means that there is I/O space, which gets accessed through whichever method readb() uses. Having the offset equal to the resource means that the '(void *)0' start is correct. As this leaves only two others, I checked those as well: csky does not actually have a PCI host bridge driver at the moment, so we don't care about breaking port access on it it, and I would suggest leaving I/O port access disabled. (Added Guo Ren to Cc for confirmation). m68k only supports PCI on coldfire M54xx, and this variant does set a PCI_IOBASE after all. The normal MMU based m68k have no PCI and do define their out inb/outb/..., so nothing changes for them. To summarize: only sparc32 needs to set PCI_IOBASE to zero, everyone else should just WARN_ONCE() or return 0xff/0xffff/0xffffffff. Arnd