On Tue, Oct 08, 2024 at 09:27:20AM +0000, Arnd Bergmann wrote: > > #endif /* CONFIG_TRACE_MMIO_ACCESS */ > > > > +extern void memcpy_fromio(void *to, const volatile void __iomem *from, > > + size_t count); > > +extern void memcpy_toio(volatile void __iomem *to, const void *from, > > + size_t count); > > +extern void memset_io(volatile void __iomem *dst, int c, size_t count); > > + > > I think having this globally visible is the reason you are running > into the mismatched prototypes. Yes, especially as architectures sometimes actually implement this as macro or inline function. Please also drop the pointless externs while you're at it.