Message ID | 1514026979-33838-1-git-send-email-xieyisheng1@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Sat, Dec 23, 2017 at 07:02:59PM +0800, Yisheng Xie wrote: > --- a/lib/devres.c > +++ b/lib/devres.c > @@ -44,35 +44,6 @@ void __iomem *devm_ioremap(struct device *dev, resource_size_t offset, > EXPORT_SYMBOL(devm_ioremap); > > /** > - * devm_ioremap_nocache - Managed ioremap_nocache() > - * @dev: Generic device to remap IO address for > - * @offset: Resource address to map > - * @size: Size of map > - * > - * Managed ioremap_nocache(). Map is automatically unmapped on driver > - * detach. > - */ > -void __iomem *devm_ioremap_nocache(struct device *dev, resource_size_t offset, > - resource_size_t size) > -{ > - void __iomem **ptr, *addr; > - > - ptr = devres_alloc(devm_ioremap_release, sizeof(*ptr), GFP_KERNEL); > - if (!ptr) > - return NULL; > - > - addr = ioremap_nocache(offset, size); Wait, devm_ioremap() calls ioremap(), not ioremap_nocache(), are you _SURE_ that these are all identical? For all arches? If so, then ioremap_nocache() can also be removed, right? In my quick glance, I don't think you can do this series at all :( greg k-h
On 2017/12/23 21:45, Greg KH wrote: > On Sat, Dec 23, 2017 at 07:02:59PM +0800, Yisheng Xie wrote: >> --- a/lib/devres.c >> +++ b/lib/devres.c >> @@ -44,35 +44,6 @@ void __iomem *devm_ioremap(struct device *dev, resource_size_t offset, >> EXPORT_SYMBOL(devm_ioremap); >> >> /** >> - * devm_ioremap_nocache - Managed ioremap_nocache() >> - * @dev: Generic device to remap IO address for >> - * @offset: Resource address to map >> - * @size: Size of map >> - * >> - * Managed ioremap_nocache(). Map is automatically unmapped on driver >> - * detach. >> - */ >> -void __iomem *devm_ioremap_nocache(struct device *dev, resource_size_t offset, >> - resource_size_t size) >> -{ >> - void __iomem **ptr, *addr; >> - >> - ptr = devres_alloc(devm_ioremap_release, sizeof(*ptr), GFP_KERNEL); >> - if (!ptr) >> - return NULL; >> - >> - addr = ioremap_nocache(offset, size); > > Wait, devm_ioremap() calls ioremap(), not ioremap_nocache(), are you > _SURE_ that these are all identical? For all arches? If so, then > ioremap_nocache() can also be removed, right? Yeah, As Christophe pointed out, that 4 archs do not have the same function. But I do not why they do not want do the same thing. Driver may no know about this? right? > > In my quick glance, I don't think you can do this series at all :( Yes, maybe should take Christophe suggestion and use a bool or enum to distinguish them? Thanks Yisheng > > greg k-h > > . >
diff --git a/Documentation/driver-model/devres.txt b/Documentation/driver-model/devres.txt index c180045..c3fddb5 100644 --- a/Documentation/driver-model/devres.txt +++ b/Documentation/driver-model/devres.txt @@ -292,7 +292,6 @@ IOMAP devm_ioport_map() devm_ioport_unmap() devm_ioremap() - devm_ioremap_nocache() devm_ioremap_wc() devm_ioremap_resource() : checks resource, requests memory region, ioremaps devm_iounmap() diff --git a/include/linux/io.h b/include/linux/io.h index 32e30e8..a9c7270 100644 --- a/include/linux/io.h +++ b/include/linux/io.h @@ -75,8 +75,6 @@ static inline void devm_ioport_unmap(struct device *dev, void __iomem *addr) void __iomem *devm_ioremap(struct device *dev, resource_size_t offset, resource_size_t size); -void __iomem *devm_ioremap_nocache(struct device *dev, resource_size_t offset, - resource_size_t size); void __iomem *devm_ioremap_wc(struct device *dev, resource_size_t offset, resource_size_t size); void devm_iounmap(struct device *dev, void __iomem *addr); diff --git a/lib/devres.c b/lib/devres.c index 5f2aedd..f818fcf 100644 --- a/lib/devres.c +++ b/lib/devres.c @@ -44,35 +44,6 @@ void __iomem *devm_ioremap(struct device *dev, resource_size_t offset, EXPORT_SYMBOL(devm_ioremap); /** - * devm_ioremap_nocache - Managed ioremap_nocache() - * @dev: Generic device to remap IO address for - * @offset: Resource address to map - * @size: Size of map - * - * Managed ioremap_nocache(). Map is automatically unmapped on driver - * detach. - */ -void __iomem *devm_ioremap_nocache(struct device *dev, resource_size_t offset, - resource_size_t size) -{ - void __iomem **ptr, *addr; - - ptr = devres_alloc(devm_ioremap_release, sizeof(*ptr), GFP_KERNEL); - if (!ptr) - return NULL; - - addr = ioremap_nocache(offset, size); - if (addr) { - *ptr = addr; - devres_add(dev, ptr); - } else - devres_free(ptr); - - return addr; -} -EXPORT_SYMBOL(devm_ioremap_nocache); - -/** * devm_ioremap_wc - Managed ioremap_wc() * @dev: Generic device to remap IO address for * @offset: Resource address to map diff --git a/scripts/coccinelle/free/devm_free.cocci b/scripts/coccinelle/free/devm_free.cocci index c990d2c..36b8752 100644 --- a/scripts/coccinelle/free/devm_free.cocci +++ b/scripts/coccinelle/free/devm_free.cocci @@ -51,8 +51,6 @@ expression x; | x = devm_ioremap(...) | - x = devm_ioremap_nocache(...) -| x = devm_ioport_map(...) )
Now, nobody use devm_ioremap_nocache anymore, can it can just be removed. After this patch the size of devres.o will be reduced from 20304 bytes to 18992 bytes. Suggested-by: Greg KH <gregkh@linuxfoundation.org> Signed-off-by: Yisheng Xie <xieyisheng1@huawei.com> --- Documentation/driver-model/devres.txt | 1 - include/linux/io.h | 2 -- lib/devres.c | 29 ----------------------------- scripts/coccinelle/free/devm_free.cocci | 2 -- 4 files changed, 34 deletions(-)