Re: [PATCH 2/4] mm: ioremap: Add arch_ioremap/iounmap_check()

From: Andrew Morton
Date: Wed Apr 27 2022 - 14:42:25 EST


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.