Re: [PATCH 6/6] m68k/nommu: stop using GENERIC_IOMAP
From: Greg Ungerer <gerg@linux-m68k.org>
Date: 2025-03-24 01:33:44
Also in:
linux-alpha, linux-arch, linux-m68k, linux-mips, linux-sh, lkml
Hi Arnd, On 15/3/25 20:59, Arnd Bergmann wrote:
From: Arnd Bergmann <arnd@arndb.de> There is no need to go through the GENERIC_IOMAP wrapper for PIO on nommu platforms, since these always come from PCI I/O space that is itself memory mapped. Instead, the generic ioport_map() can just return the MMIO location of the ports directly by applying the PCI_IO_PA offset, while ioread32/iowrite32 trivially turn into readl/writel as they do on most other architectures. Signed-off-by: Arnd Bergmann <arnd@arndb.de>
With this applied this fails to build for me: UPD include/generated/utsversion.h CC init/version-timestamp.o LD vmlinux m68k-linux-uclibc-ld: drivers/pci/quirks.o: in function `quirk_switchtec_ntb_dma_alias': quirks.c:(.text+0x23e4): undefined reference to `pci_iomap' m68k-linux-uclibc-ld: quirks.c:(.text+0x24fe): undefined reference to `pci_iounmap' m68k-linux-uclibc-ld: drivers/pci/quirks.o: in function `disable_igfx_irq': quirks.c:(.text+0x32f4): undefined reference to `pci_iomap' m68k-linux-uclibc-ld: quirks.c:(.text+0x3348): undefined reference to `pci_iounmap' m68k-linux-uclibc-ld: quirks.c:(.text+0x338a): undefined reference to `pci_iounmap' m68k-linux-uclibc-ld: quirks.c:(.text+0x33d2): undefined reference to `pci_iounmap' m68k-linux-uclibc-ld: drivers/pci/quirks.o: in function `reset_ivb_igd': quirks.c:(.text+0x3502): undefined reference to `pci_iomap' m68k-linux-uclibc-ld: quirks.c:(.text+0x3658): undefined reference to `pci_iounmap' m68k-linux-uclibc-ld: quirks.c:(.text+0x3682): undefined reference to `pci_iounmap' m68k-linux-uclibc-ld: drivers/pci/quirks.o: in function `reset_hinic_vf_dev': quirks.c:(.text+0x3844): undefined reference to `pci_iomap' m68k-linux-uclibc-ld: quirks.c:(.text+0x39fc): undefined reference to `pci_iounmap' m68k-linux-uclibc-ld: quirks.c:(.text+0x3a86): undefined reference to `pci_iounmap' m68k-linux-uclibc-ld: quirks.c:(.text+0x3ab4): undefined reference to `pci_iounmap' m68k-linux-uclibc-ld: drivers/pci/quirks.o: in function `quirk_reset_lenovo_thinkpad_p50_nvgpu': quirks.c:(.text+0x3cf6): undefined reference to `pci_iomap' m68k-linux-uclibc-ld: drivers/pci/quirks.o: in function `nvme_disable_and_flr': quirks.c:(.text+0x3e32): undefined reference to `pci_iomap' m68k-linux-uclibc-ld: quirks.c:(.text+0x3eac): undefined reference to `pci_iounmap' m68k-linux-uclibc-ld: quirks.c:(.text+0x3fc0): undefined reference to `pci_iounmap' m68k-linux-uclibc-ld: drivers/pci/devres.o: in function `pcim_addr_resource_release': devres.c:(.text+0x414): undefined reference to `pci_iounmap' m68k-linux-uclibc-ld: devres.c:(.text+0x420): undefined reference to `pci_iounmap' m68k-linux-uclibc-ld: drivers/pci/devres.o: in function `pcim_iomap': devres.c:(.text+0x524): undefined reference to `pci_iomap' m68k-linux-uclibc-ld: devres.c:(.text+0x576): undefined reference to `pci_iounmap' m68k-linux-uclibc-ld: drivers/pci/devres.o: in function `pcim_iomap_range': devres.c:(.text+0x980): undefined reference to `pci_iomap_range' m68k-linux-uclibc-ld: drivers/pci/devres.o: in function `pcim_iomap_region': devres.c:(.text+0xc0e): undefined reference to `pci_iomap' m68k-linux-uclibc-ld: drivers/net/ethernet/intel/e100.o: in function `e100_remove': e100.c:(.text+0x1fe6): undefined reference to `pci_iounmap' m68k-linux-uclibc-ld: drivers/net/ethernet/intel/e100.o: in function `e100_probe': e100.c:(.text+0x362a): undefined reference to `pci_iomap' m68k-linux-uclibc-ld: e100.c:(.text+0x381c): undefined reference to `pci_iounmap' m68k-linux-uclibc-ld: e100.c:(.text+0x3928): undefined reference to `pci_iounmap' make[2]: *** [scripts/Makefile.vmlinux:77: vmlinux] Error 1 make[1]: *** [/home/gerg/accelerated-linux.lkml/linux/Makefile:1231: vmlinux] Error 2 make: *** [Makefile:251: __sub-make] Error 2 FWIW this was a m5475evb_defconfig with CONFIG_MMU disabled. Regards Greg
quoted hunk ↗ jump to hunk
--- arch/m68k/Kconfig | 2 +- arch/m68k/include/asm/io_no.h | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-)diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig index b2ed0308c0ea..b50c275fa94d 100644 --- a/arch/m68k/Kconfig +++ b/arch/m68k/Kconfig@@ -18,7 +18,7 @@ config M68K select DMA_DIRECT_REMAP if M68K_NONCOHERENT_DMA && !COLDFIRE select GENERIC_ATOMIC64 select GENERIC_CPU_DEVICES - select GENERIC_IOMAP if HAS_IOPORT + select GENERIC_IOMAP if HAS_IOPORT && MMU select GENERIC_IRQ_SHOW select GENERIC_LIB_ASHLDI3 select GENERIC_LIB_ASHRDI3diff --git a/arch/m68k/include/asm/io_no.h b/arch/m68k/include/asm/io_no.h index 2c96e8480173..516371d5587a 100644 --- a/arch/m68k/include/asm/io_no.h +++ b/arch/m68k/include/asm/io_no.h@@ -123,10 +123,6 @@ static inline void writel(u32 value, volatile void __iomem *addr) #define PCI_IO_SIZE 0x00010000 /* 64k */ #define PCI_IO_MASK (PCI_IO_SIZE - 1) -#define HAVE_ARCH_PIO_SIZE -#define PIO_OFFSET 0 -#define PIO_MASK 0xffff -#define PIO_RESERVED 0x10000 #define PCI_IOBASE ((void __iomem *) PCI_IO_PA) #define PCI_SPACE_LIMIT PCI_IO_MASK #endif /* CONFIG_PCI */