Re: [PATCH 1/2] lib: devres: provide devm_ioremap_resource_nocache()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Dec 29, 2019 at 8:11 PM Bartosz Golaszewski
<bgolaszewski@xxxxxxxxxxxx> wrote:
>
> niedz., 29 gru 2019 o 11:43 Yangtao Li <tiny.windzz@xxxxxxxxx> napisał(a):
> >
> > Provide a variant of devm_ioremap_resource() for nocache ioremap.
> >
> > Signed-off-by: Yangtao Li <tiny.windzz@xxxxxxxxx>
> > ---
> >  Documentation/driver-api/driver-model/devres.rst |  1 +
> >  include/linux/device.h                           |  2 ++
> >  lib/devres.c                                     | 15 +++++++++++++++
> >  3 files changed, 18 insertions(+)
> >
> > diff --git a/Documentation/driver-api/driver-model/devres.rst b/Documentation/driver-api/driver-model/devres.rst
> > index 13046fcf0a5d..af1b1b9e3a17 100644
> > --- a/Documentation/driver-api/driver-model/devres.rst
> > +++ b/Documentation/driver-api/driver-model/devres.rst
> > @@ -317,6 +317,7 @@ IOMAP
> >    devm_ioremap_uc()
> >    devm_ioremap_wc()
> >    devm_ioremap_resource() : checks resource, requests memory region, ioremaps
> > +  devm_ioremap_resource_nocache()
> >    devm_ioremap_resource_wc()
> >    devm_platform_ioremap_resource() : calls devm_ioremap_resource() for platform device
> >    devm_platform_ioremap_resource_wc()
> > diff --git a/include/linux/device.h b/include/linux/device.h
> > index 96ff76731e93..3aa353aa52e2 100644
> > --- a/include/linux/device.h
> > +++ b/include/linux/device.h
> > @@ -962,6 +962,8 @@ extern void devm_free_pages(struct device *dev, unsigned long addr);
> >
> >  void __iomem *devm_ioremap_resource(struct device *dev,
> >                                     const struct resource *res);
> > +void __iomem *devm_ioremap_resource_nocache(struct device *dev,
> > +                                           const struct resource *res);
> >  void __iomem *devm_ioremap_resource_wc(struct device *dev,
> >                                        const struct resource *res);
> >
> > diff --git a/lib/devres.c b/lib/devres.c
> > index f56070cf970b..a182f8479fbf 100644
> > --- a/lib/devres.c
> > +++ b/lib/devres.c
> > @@ -188,6 +188,21 @@ void __iomem *devm_ioremap_resource(struct device *dev,
> >  }
> >  EXPORT_SYMBOL(devm_ioremap_resource);
> >
> > +/**
> > + * devm_ioremap_resource_nocache() - nocache variant of
> > + *                                   devm_ioremap_resource()
> > + * @dev: generic device to handle the resource for
> > + * @res: resource to be handled
> > + *
> > + * Returns a pointer to the remapped memory or an ERR_PTR() encoded error code
> > + * on failure.
> > + */
> > +void __iomem *devm_ioremap_resource_nocache(struct device *dev,
> > +                                           const struct resource *res)
> > +{
> > +       return __devm_ioremap_resource(dev, res, DEVM_IOREMAP_NC);
> > +}
> > +
> >  /**
> >   * devm_ioremap_resource_wc() - write-combined variant of
> >   *                             devm_ioremap_resource()
> > --
> > 2.17.1
> >
>
> This has been discussed before. The nocache variants of ioremap() are
> being phased out as they're only ever needed on one obscure
> architecture IIRC. This is not needed, rather we should convert all
> nocache calls to regular ioremap().

Thanks for pointing out!
I have seen the use of ioremap_nocache in many architectures,
so they are wrong and should be changed to ioremap?

Yangtao

>
> Bart




[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux