[alsa-devel] [PATCH v3 27/27] devres: kill devm_ioremap_nocache
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(-)
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(...) )
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
.
participants (2)
-
Greg KH
-
Yisheng Xie