From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751729AbdLKIXg (ORCPT ); Mon, 11 Dec 2017 03:23:36 -0500 Received: from szxga05-in.huawei.com ([45.249.212.191]:2277 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750759AbdLKIXc (ORCPT ); Mon, 11 Dec 2017 03:23:32 -0500 From: Yisheng Xie Subject: Re: [PATCH v2] devres: use MACRO instead of function for devm_ioremap To: References: <1511601813-20533-1-git-send-email-xieyisheng1@huawei.com> CC: , , , , , Message-ID: Date: Mon, 11 Dec 2017 16:23:11 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.1.0 MIME-Version: 1.0 In-Reply-To: <1511601813-20533-1-git-send-email-xieyisheng1@huawei.com> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.177.29.40] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Ping... and sorry to disturb. Hi maintainers, Could you please help to review this patch? Thanks Yisheng xie On 2017/11/25 17:23, Yisheng Xie wrote: > Default ioremap is ioremap_nocache, so devm_ioremap has the same function > with devm_ioremap_nocache, which may just be killed. However, there are > many places which use devm_ioremap_nocache, while many use devm_ioremap. > > This patch is to use MACRO for devm_ioremap, which will reduce the size of > devres.o from 206824 Bytes to 203768 Bytes. > > Signed-off-by: Yisheng Xie > --- > v2: > * MACRO devm_ioremap instead of devm_ioremap_nocache > > include/linux/io.h | 4 ++-- > lib/devres.c | 30 +----------------------------- > 2 files changed, 3 insertions(+), 31 deletions(-) > > diff --git a/include/linux/io.h b/include/linux/io.h > index 32e30e8..3759882 100644 > --- a/include/linux/io.h > +++ b/include/linux/io.h > @@ -73,8 +73,6 @@ static inline void devm_ioport_unmap(struct device *dev, void __iomem *addr) > > #define IOMEM_ERR_PTR(err) (__force void __iomem *)ERR_PTR(err) > > -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, > @@ -84,6 +82,8 @@ int check_signature(const volatile void __iomem *io_addr, > const unsigned char *signature, int length); > void devm_ioremap_release(struct device *dev, void *res); > > +#define devm_ioremap devm_ioremap_nocache > + > void *devm_memremap(struct device *dev, resource_size_t offset, > size_t size, unsigned long flags); > void devm_memunmap(struct device *dev, void *addr); > diff --git a/lib/devres.c b/lib/devres.c > index 5f2aedd..ebfaab1 100644 > --- a/lib/devres.c > +++ b/lib/devres.c > @@ -16,34 +16,6 @@ static int devm_ioremap_match(struct device *dev, void *res, void *match_data) > } > > /** > - * devm_ioremap - Managed ioremap() > - * @dev: Generic device to remap IO address for > - * @offset: Resource address to map > - * @size: Size of map > - * > - * Managed ioremap(). Map is automatically unmapped on driver detach. > - */ > -void __iomem *devm_ioremap(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(offset, size); > - if (addr) { > - *ptr = addr; > - devres_add(dev, ptr); > - } else > - devres_free(ptr); > - > - return addr; > -} > -EXPORT_SYMBOL(devm_ioremap); > - > -/** > * devm_ioremap_nocache - Managed ioremap_nocache() > * @dev: Generic device to remap IO address for > * @offset: Resource address to map > @@ -153,7 +125,7 @@ void __iomem *devm_ioremap_resource(struct device *dev, struct resource *res) > return IOMEM_ERR_PTR(-EBUSY); > } > > - dest_ptr = devm_ioremap(dev, res->start, size); > + dest_ptr = devm_ioremap_nocache(dev, res->start, size); > if (!dest_ptr) { > dev_err(dev, "ioremap failed for resource %pR\n", res); > devm_release_mem_region(dev, res->start, size); >