On Wed, 27 Apr 2022 20:20:30 +0200 Arnd Bergmann <arnd@xxxxxxxx> wrote: > On Wed, Apr 27, 2022 at 2:14 PM Kefeng Wang <wangkefeng.wang@xxxxxxxxxx> wrote: > > @@ -964,6 +964,9 @@ static inline void iounmap(volatile void __iomem *addr) > > #elif defined(CONFIG_GENERIC_IOREMAP) > > #include <linux/pgtable.h> > > > > +bool arch_ioremap_check(phys_addr_t addr, size_t size, unsigned long prot); > > +bool arch_iounmap_check(void __iomem *addr); > > + > > void __iomem *ioremap_prot(phys_addr_t addr, size_t size, unsigned long prot); > > void iounmap(volatile void __iomem *addr); > > > > diff --git a/mm/ioremap.c b/mm/ioremap.c > > index 522ef899c35f..d1117005dcc7 100644 > > --- a/mm/ioremap.c > > +++ b/mm/ioremap.c > > @@ -11,6 +11,16 @@ > > #include <linux/io.h> > > #include <linux/export.h> > > > > +bool __weak arch_ioremap_check(phys_addr_t addr, size_t size, unsigned long prot) > > +{ > > + return true; > > +} > > + > > +bool __weak arch_iounmap_check(void __iomem *addr) > > +{ > > + return true; > > +} > > + > > I don't really like the weak functions. How come? They work quite nicely here? > The normal way to do this Is a lot more fuss.