All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] devres: use MACRO instead of function for devm_ioremap
@ 2017-11-25  9:23 Yisheng Xie
  2017-12-11  8:23 ` Yisheng Xie
  2017-12-19  8:46 ` Greg KH
  0 siblings, 2 replies; 9+ messages in thread
From: Yisheng Xie @ 2017-11-25  9:23 UTC (permalink / raw)
  To: gregkh
  Cc: thomas.lendacky, lorenzo.pieralisi, bp, tglx, kstewart,
	linux-kernel, xieyisheng1

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 <xieyisheng1@huawei.com>
---
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);
-- 
1.7.12.4

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v2] devres: use MACRO instead of function for devm_ioremap
  2017-11-25  9:23 [PATCH v2] devres: use MACRO instead of function for devm_ioremap Yisheng Xie
@ 2017-12-11  8:23 ` Yisheng Xie
  2017-12-18 14:40   ` Greg KH
  2017-12-19  8:46 ` Greg KH
  1 sibling, 1 reply; 9+ messages in thread
From: Yisheng Xie @ 2017-12-11  8:23 UTC (permalink / raw)
  To: gregkh
  Cc: thomas.lendacky, lorenzo.pieralisi, bp, tglx, kstewart, linux-kernel

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 <xieyisheng1@huawei.com>
> ---
> 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);
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2] devres: use MACRO instead of function for devm_ioremap
  2017-12-11  8:23 ` Yisheng Xie
@ 2017-12-18 14:40   ` Greg KH
  2017-12-19  1:31     ` Yisheng Xie
  0 siblings, 1 reply; 9+ messages in thread
From: Greg KH @ 2017-12-18 14:40 UTC (permalink / raw)
  To: Yisheng Xie
  Cc: thomas.lendacky, lorenzo.pieralisi, bp, tglx, kstewart, linux-kernel

On Mon, Dec 11, 2017 at 04:23:11PM +0800, Yisheng Xie wrote:
> Ping... and sorry to disturb.
> 
> Hi maintainers,
> Could you please help to review this patch?

Wow, I don't think anyone "maintains" this code, so I guess I can take
it, sorry for the delay...

greg k-h

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2] devres: use MACRO instead of function for devm_ioremap
  2017-12-18 14:40   ` Greg KH
@ 2017-12-19  1:31     ` Yisheng Xie
  0 siblings, 0 replies; 9+ messages in thread
From: Yisheng Xie @ 2017-12-19  1:31 UTC (permalink / raw)
  To: Greg KH
  Cc: thomas.lendacky, lorenzo.pieralisi, bp, tglx, kstewart, linux-kernel

Hi Greg,

On 2017/12/18 22:40, Greg KH wrote:
> On Mon, Dec 11, 2017 at 04:23:11PM +0800, Yisheng Xie wrote:
>> Ping... and sorry to disturb.
>>
>> Hi maintainers,
>> Could you please help to review this patch?
> 
> Wow, I don't think anyone "maintains" this code, so I guess I can take
> it, sorry for the delay...

Never mind, I was not aware this. If you can take it, I will not add Andrew :)

Thanks for taking your time!

Thanks
Yisheng Xie

> 
> greg k-h
> 
> .
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2] devres: use MACRO instead of function for devm_ioremap
  2017-11-25  9:23 [PATCH v2] devres: use MACRO instead of function for devm_ioremap Yisheng Xie
  2017-12-11  8:23 ` Yisheng Xie
@ 2017-12-19  8:46 ` Greg KH
  2017-12-19 10:52   ` Yisheng Xie
  1 sibling, 1 reply; 9+ messages in thread
From: Greg KH @ 2017-12-19  8:46 UTC (permalink / raw)
  To: Yisheng Xie
  Cc: thomas.lendacky, lorenzo.pieralisi, bp, tglx, kstewart, linux-kernel

On Sat, Nov 25, 2017 at 05:23:33PM +0800, 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.

Ok, the idea is good, but why not just get rid of the callers of
devm_ioremap_nocache() instead and have them call devm_ioremap() if they
really are the same thing?  No need to keep a macro around for the
duplicate thing, just delete the one and things are much better.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2] devres: use MACRO instead of function for devm_ioremap
  2017-12-19  8:46 ` Greg KH
@ 2017-12-19 10:52   ` Yisheng Xie
  2017-12-21 11:50     ` Yisheng Xie
  0 siblings, 1 reply; 9+ messages in thread
From: Yisheng Xie @ 2017-12-19 10:52 UTC (permalink / raw)
  To: Greg KH
  Cc: thomas.lendacky, lorenzo.pieralisi, bp, tglx, kstewart, linux-kernel

Hi Greg,

On 2017/12/19 16:46, Greg KH wrote:
> On Sat, Nov 25, 2017 at 05:23:33PM +0800, 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.
> 
> Ok, the idea is good, but why not just get rid of the callers of
> devm_ioremap_nocache() instead and have them call devm_ioremap() if they
> really are the same thing?  No need to keep a macro around for the
> duplicate thing, just delete the one and things are much better.

Yeah, I thought someone may still want to use devm_ioremap_nocache().

I will take your suggestion in next version and kill devm_ioremap_nocache().

Thanks
Yisheng Xie
> 
> thanks,
> 
> greg k-h
> 
> .
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2] devres: use MACRO instead of function for devm_ioremap
  2017-12-19 10:52   ` Yisheng Xie
@ 2017-12-21 11:50     ` Yisheng Xie
  2017-12-21 15:08       ` Greg KH
  0 siblings, 1 reply; 9+ messages in thread
From: Yisheng Xie @ 2017-12-21 11:50 UTC (permalink / raw)
  To: Greg KH
  Cc: thomas.lendacky, lorenzo.pieralisi, bp, tglx, kstewart, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1428 bytes --]

Hi Greg,

On 2017/12/19 18:52, Yisheng Xie wrote:
> Hi Greg,
> 
> On 2017/12/19 16:46, Greg KH wrote:
>> On Sat, Nov 25, 2017 at 05:23:33PM +0800, 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.
>>
>> Ok, the idea is good, but why not just get rid of the callers of
>> devm_ioremap_nocache() instead and have them call devm_ioremap() if they
>> really are the same thing?  No need to keep a macro around for the
>> duplicate thing, just delete the one and things are much better.
> 
> Yeah, I thought someone may still want to use devm_ioremap_nocache().
> 
> I will take your suggestion in next version and kill devm_ioremap_nocache().

I am trying to kill devm_ioremap_nocache() as your suggestion, however, if
put it as a single patch it will be a patch really big (the patch file may
have more than 1k lines), for many places will use devm_ioremap_nocache().
But it also makes me fell uncomfortable to separate it to so many litter
patchs for a litter optimize. :)

So I put the v3 patch in the attachment, please let me know if I should
separate it to litter patchs :)

Thanks
Yisheng Xie


[-- Attachment #2: 0001-devres-kill-devm_ioremap_nomap.patch --]
[-- Type: text/plain, Size: 44935 bytes --]

>From cf658860f12df005b49b70203225aa6a74a74b5d Mon Sep 17 00:00:00 2001
From: Yisheng Xie <xieyisheng1@huawei.com>
Date: Thu, 21 Dec 2017 18:47:23 +0800
Subject: [PATCH v3] devres: kill devm_ioremap_nomap

Default ioremap is ioremap_nocache_nocache, so devm_ioremap has the same
function with devm_ioremap, which can just be killed. And this will reduce
the size of devres.o from 206824 Bytes to 203768 Bytes.

Signed-off-by: Yisheng Xie <xieyisheng1@huawei.com>
---
 Documentation/driver-model/devres.txt           |  1 -
 arch/mips/pci/pci-ar2315.c                      |  4 ++--
 drivers/ata/pata_arasan_cf.c                    |  2 +-
 drivers/ata/pata_octeon_cf.c                    | 12 +++++-----
 drivers/ata/pata_rb532_cf.c                     |  2 +-
 drivers/char/hw_random/bcm63xx-rng.c            |  4 ++--
 drivers/char/hw_random/octeon-rng.c             | 12 +++++-----
 drivers/dma/altera-msgdma.c                     |  4 ++--
 drivers/dma/sprd-dma.c                          |  3 +--
 drivers/gpio/gpio-ath79.c                       |  3 +--
 drivers/gpio/gpio-em.c                          |  8 +++----
 drivers/gpio/gpio-htc-egpio.c                   |  4 ++--
 drivers/gpio/gpio-xgene.c                       |  3 +--
 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c |  2 +-
 drivers/gpu/drm/msm/msm_drv.c                   |  2 +-
 drivers/gpu/drm/sti/sti_dvo.c                   |  3 +--
 drivers/gpu/drm/sti/sti_hda.c                   |  4 ++--
 drivers/gpu/drm/sti/sti_hdmi.c                  |  2 +-
 drivers/gpu/drm/sti/sti_tvout.c                 |  2 +-
 drivers/gpu/drm/sti/sti_vtg.c                   |  2 +-
 drivers/ipack/devices/ipoctal.c                 | 13 +++++------
 drivers/irqchip/irq-renesas-intc-irqpin.c       |  4 ++--
 drivers/media/platform/tegra-cec/tegra_cec.c    |  4 ++--
 drivers/mmc/host/sdhci-acpi.c                   |  4 ++--
 drivers/mtd/nand/fsl_upm.c                      |  4 ++--
 drivers/net/can/sja1000/sja1000_platform.c      |  4 ++--
 drivers/net/ethernet/altera/altera_tse_main.c   |  3 +--
 drivers/net/ethernet/ethoc.c                    |  4 ++--
 drivers/net/ethernet/lantiq_etop.c              |  2 +-
 drivers/net/ethernet/ti/netcp_core.c            |  2 +-
 drivers/net/wireless/ath/ath9k/ahb.c            |  2 +-
 drivers/pci/dwc/pci-dra7xx.c                    |  2 +-
 drivers/pinctrl/bcm/pinctrl-ns2-mux.c           |  4 ++--
 drivers/pinctrl/bcm/pinctrl-nsp-mux.c           |  4 ++--
 drivers/pinctrl/freescale/pinctrl-imx1-core.c   |  2 +-
 drivers/pinctrl/pinctrl-amd.c                   |  4 ++--
 drivers/platform/x86/intel_pmc_core.c           |  6 ++---
 drivers/regulator/ti-abb-regulator.c            |  8 +++----
 drivers/rtc/rtc-sh.c                            |  4 ++--
 drivers/spi/spi-jcore.c                         |  3 +--
 drivers/staging/fsl-mc/bus/mc-io.c              |  8 +++----
 drivers/tty/mips_ejtag_fdc.c                    |  4 ++--
 drivers/tty/serial/8250/8250_omap.c             |  3 +--
 drivers/tty/serial/lantiq.c                     |  2 +-
 drivers/tty/serial/meson_uart.c                 |  4 ++--
 drivers/tty/serial/owl-uart.c                   |  2 +-
 drivers/tty/serial/pic32_uart.c                 |  4 ++--
 drivers/video/fbdev/mbx/mbxfb.c                 | 10 ++++-----
 drivers/video/fbdev/mmp/hw/mmp_ctrl.c           |  2 +-
 drivers/video/fbdev/pxa168fb.c                  |  4 ++--
 drivers/watchdog/bcm63xx_wdt.c                  |  4 ++--
 drivers/watchdog/rc32434_wdt.c                  |  4 ++--
 include/linux/io.h                              |  2 --
 lib/devres.c                                    | 29 -------------------------
 scripts/coccinelle/free/devm_free.cocci         |  2 --
 sound/soc/au1x/ac97c.c                          |  4 ++--
 sound/soc/au1x/i2sc.c                           |  4 ++--
 sound/soc/intel/atom/sst/sst_acpi.c             | 20 ++++++++---------
 sound/soc/intel/boards/mfld_machine.c           |  4 ++--
 sound/soc/sh/fsi.c                              |  3 +--
 tools/testing/nvdimm/Kbuild                     |  2 +-
 tools/testing/nvdimm/test/iomap.c               |  2 +-
 62 files changed, 121 insertions(+), 164 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/arch/mips/pci/pci-ar2315.c b/arch/mips/pci/pci-ar2315.c
index b4fa641..b5f3094 100644
--- a/arch/mips/pci/pci-ar2315.c
+++ b/arch/mips/pci/pci-ar2315.c
@@ -428,8 +428,8 @@ static int ar2315_pci_probe(struct platform_device *pdev)
 	apc->mem_res.flags = IORESOURCE_MEM;
 
 	/* Remap PCI config space */
-	apc->cfg_mem = devm_ioremap_nocache(dev, res->start,
-					    AR2315_PCI_CFG_SIZE);
+	apc->cfg_mem = devm_ioremap(dev, res->start,
+				    AR2315_PCI_CFG_SIZE);
 	if (!apc->cfg_mem) {
 		dev_err(dev, "failed to remap PCI config space\n");
 		return -ENOMEM;
diff --git a/drivers/ata/pata_arasan_cf.c b/drivers/ata/pata_arasan_cf.c
index b4d5477..6fee9fa 100644
--- a/drivers/ata/pata_arasan_cf.c
+++ b/drivers/ata/pata_arasan_cf.c
@@ -827,7 +827,7 @@ static int arasan_cf_probe(struct platform_device *pdev)
 		quirk |= CF_BROKEN_MWDMA | CF_BROKEN_UDMA;
 
 	acdev->pbase = res->start;
-	acdev->vbase = devm_ioremap_nocache(&pdev->dev, res->start,
+	acdev->vbase = devm_ioremap(&pdev->dev, res->start,
 			resource_size(res));
 	if (!acdev->vbase) {
 		dev_warn(&pdev->dev, "ioremap fail\n");
diff --git a/drivers/ata/pata_octeon_cf.c b/drivers/ata/pata_octeon_cf.c
index d3d851b..b1db5c1 100644
--- a/drivers/ata/pata_octeon_cf.c
+++ b/drivers/ata/pata_octeon_cf.c
@@ -891,8 +891,8 @@ static int octeon_cf_probe(struct platform_device *pdev)
 					of_node_put(dma_node);
 					return -EINVAL;
 				}
-				cf_port->dma_base = (u64)devm_ioremap_nocache(&pdev->dev, res_dma->start,
-									 resource_size(res_dma));
+				cf_port->dma_base = (u64)devm_ioremap(&pdev->dev, res_dma->start,
+								 resource_size(res_dma));
 				if (!cf_port->dma_base) {
 					of_node_put(dma_node);
 					return -EINVAL;
@@ -909,8 +909,8 @@ static int octeon_cf_probe(struct platform_device *pdev)
 		if (!res_cs1)
 			return -EINVAL;
 
-		cs1 = devm_ioremap_nocache(&pdev->dev, res_cs1->start,
-					   resource_size(res_cs1));
+		cs1 = devm_ioremap(&pdev->dev, res_cs1->start,
+				   resource_size(res_cs1));
 		if (!cs1)
 			return rv;
 
@@ -925,8 +925,8 @@ static int octeon_cf_probe(struct platform_device *pdev)
 	if (!res_cs0)
 		return -EINVAL;
 
-	cs0 = devm_ioremap_nocache(&pdev->dev, res_cs0->start,
-				   resource_size(res_cs0));
+	cs0 = devm_ioremap(&pdev->dev, res_cs0->start,
+			   resource_size(res_cs0));
 	if (!cs0)
 		return rv;
 
diff --git a/drivers/ata/pata_rb532_cf.c b/drivers/ata/pata_rb532_cf.c
index 653b9a0..af57298 100644
--- a/drivers/ata/pata_rb532_cf.c
+++ b/drivers/ata/pata_rb532_cf.c
@@ -156,7 +156,7 @@ static int rb532_pata_driver_probe(struct platform_device *pdev)
 	info->gpio_line = gpio;
 	info->irq = irq;
 
-	info->iobase = devm_ioremap_nocache(&pdev->dev, res->start,
+	info->iobase = devm_ioremap(&pdev->dev, res->start,
 				resource_size(res));
 	if (!info->iobase)
 		return -ENOMEM;
diff --git a/drivers/char/hw_random/bcm63xx-rng.c b/drivers/char/hw_random/bcm63xx-rng.c
index 5132c9c..3b2af90 100644
--- a/drivers/char/hw_random/bcm63xx-rng.c
+++ b/drivers/char/hw_random/bcm63xx-rng.c
@@ -112,8 +112,8 @@ static int bcm63xx_rng_probe(struct platform_device *pdev)
 		return -EBUSY;
 	}
 
-	priv->regs = devm_ioremap_nocache(&pdev->dev, r->start,
-					resource_size(r));
+	priv->regs = devm_ioremap(&pdev->dev, r->start,
+				resource_size(r));
 	if (!priv->regs) {
 		dev_err(&pdev->dev, "ioremap failed");
 		return -ENOMEM;
diff --git a/drivers/char/hw_random/octeon-rng.c b/drivers/char/hw_random/octeon-rng.c
index 8c78aa0..d32e01a 100644
--- a/drivers/char/hw_random/octeon-rng.c
+++ b/drivers/char/hw_random/octeon-rng.c
@@ -81,15 +81,15 @@ static int octeon_rng_probe(struct platform_device *pdev)
 		return -ENOENT;
 
 
-	rng->control_status = devm_ioremap_nocache(&pdev->dev,
-						   res_ports->start,
-						   sizeof(u64));
+	rng->control_status = devm_ioremap(&pdev->dev,
+					   res_ports->start,
+					   sizeof(u64));
 	if (!rng->control_status)
 		return -ENOENT;
 
-	rng->result = devm_ioremap_nocache(&pdev->dev,
-					   res_result->start,
-					   sizeof(u64));
+	rng->result = devm_ioremap(&pdev->dev,
+				   res_result->start,
+				   sizeof(u64));
 	if (!rng->result)
 		return -ENOENT;
 
diff --git a/drivers/dma/altera-msgdma.c b/drivers/dma/altera-msgdma.c
index 55f9c62..df81e2c 100644
--- a/drivers/dma/altera-msgdma.c
+++ b/drivers/dma/altera-msgdma.c
@@ -776,8 +776,8 @@ static int request_and_map(struct platform_device *pdev, const char *name,
 		return -EBUSY;
 	}
 
-	*ptr = devm_ioremap_nocache(device, region->start,
-				    resource_size(region));
+	*ptr = devm_ioremap(device, region->start,
+			    resource_size(region));
 	if (*ptr == NULL) {
 		dev_err(device, "ioremap_nocache of %s failed!", name);
 		return -ENOMEM;
diff --git a/drivers/dma/sprd-dma.c b/drivers/dma/sprd-dma.c
index b652071..1a0fb0b 100644
--- a/drivers/dma/sprd-dma.c
+++ b/drivers/dma/sprd-dma.c
@@ -842,8 +842,7 @@ static int sprd_dma_probe(struct platform_device *pdev)
 	}
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	sdev->glb_base = devm_ioremap_nocache(&pdev->dev, res->start,
-					      resource_size(res));
+	sdev->glb_base = devm_ioremap(&pdev->dev, res->start, resource_size(res));
 	if (!sdev->glb_base)
 		return -ENOMEM;
 
diff --git a/drivers/gpio/gpio-ath79.c b/drivers/gpio/gpio-ath79.c
index 5fad89d..7af2457 100644
--- a/drivers/gpio/gpio-ath79.c
+++ b/drivers/gpio/gpio-ath79.c
@@ -258,8 +258,7 @@ static int ath79_gpio_probe(struct platform_device *pdev)
 	}
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	ctrl->base = devm_ioremap_nocache(
-		&pdev->dev, res->start, resource_size(res));
+	ctrl->base = devm_ioremap(&pdev->dev, res->start, resource_size(res));
 	if (!ctrl->base)
 		return -ENOMEM;
 
diff --git a/drivers/gpio/gpio-em.c b/drivers/gpio/gpio-em.c
index b86e09e..3f08570 100644
--- a/drivers/gpio/gpio-em.c
+++ b/drivers/gpio/gpio-em.c
@@ -300,16 +300,16 @@ static int em_gio_probe(struct platform_device *pdev)
 		goto err0;
 	}
 
-	p->base0 = devm_ioremap_nocache(&pdev->dev, io[0]->start,
-					resource_size(io[0]));
+	p->base0 = devm_ioremap(&pdev->dev, io[0]->start,
+				resource_size(io[0]));
 	if (!p->base0) {
 		dev_err(&pdev->dev, "failed to remap low I/O memory\n");
 		ret = -ENXIO;
 		goto err0;
 	}
 
-	p->base1 = devm_ioremap_nocache(&pdev->dev, io[1]->start,
-				   resource_size(io[1]));
+	p->base1 = devm_ioremap(&pdev->dev, io[1]->start,
+				resource_size(io[1]));
 	if (!p->base1) {
 		dev_err(&pdev->dev, "failed to remap high I/O memory\n");
 		ret = -ENXIO;
diff --git a/drivers/gpio/gpio-htc-egpio.c b/drivers/gpio/gpio-htc-egpio.c
index 271356e..ea3a2ee 100644
--- a/drivers/gpio/gpio-htc-egpio.c
+++ b/drivers/gpio/gpio-htc-egpio.c
@@ -299,8 +299,8 @@ static int __init egpio_probe(struct platform_device *pdev)
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	if (!res)
 		goto fail;
-	ei->base_addr = devm_ioremap_nocache(&pdev->dev, res->start,
-					     resource_size(res));
+	ei->base_addr = devm_ioremap(&pdev->dev, res->start,
+				     resource_size(res));
 	if (!ei->base_addr)
 		goto fail;
 	pr_debug("EGPIO phys=%08x virt=%p\n", (u32)res->start, ei->base_addr);
diff --git a/drivers/gpio/gpio-xgene.c b/drivers/gpio/gpio-xgene.c
index f1c6ec1..9898c83 100644
--- a/drivers/gpio/gpio-xgene.c
+++ b/drivers/gpio/gpio-xgene.c
@@ -182,8 +182,7 @@ static int xgene_gpio_probe(struct platform_device *pdev)
 		goto err;
 	}
 
-	gpio->base = devm_ioremap_nocache(&pdev->dev, res->start,
-							resource_size(res));
+	gpio->base = devm_ioremap(&pdev->dev, res->start, resource_size(res));
 	if (!gpio->base) {
 		err = -ENOMEM;
 		goto err;
diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
index d4f6f1f..242e14f 100644
--- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
+++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
@@ -237,7 +237,7 @@ static int hibmc_hw_map(struct hibmc_drm_private *priv)
 
 	ioaddr = pci_resource_start(pdev, 1);
 	iosize = pci_resource_len(pdev, 1);
-	priv->mmio = devm_ioremap_nocache(dev->dev, ioaddr, iosize);
+	priv->mmio = devm_ioremap(dev->dev, ioaddr, iosize);
 	if (!priv->mmio) {
 		DRM_ERROR("Cannot map mmio region\n");
 		return -ENOMEM;
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index 0a3ea30..5622704 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -122,7 +122,7 @@ void __iomem *msm_ioremap(struct platform_device *pdev, const char *name,
 
 	size = resource_size(res);
 
-	ptr = devm_ioremap_nocache(&pdev->dev, res->start, size);
+	ptr = devm_ioremap(&pdev->dev, res->start, size);
 	if (!ptr) {
 		dev_err(&pdev->dev, "failed to ioremap: %s\n", name);
 		return ERR_PTR(-ENOMEM);
diff --git a/drivers/gpu/drm/sti/sti_dvo.c b/drivers/gpu/drm/sti/sti_dvo.c
index 83314ae..81781c5 100644
--- a/drivers/gpu/drm/sti/sti_dvo.c
+++ b/drivers/gpu/drm/sti/sti_dvo.c
@@ -532,8 +532,7 @@ static int sti_dvo_probe(struct platform_device *pdev)
 		DRM_ERROR("Invalid dvo resource\n");
 		return -ENOMEM;
 	}
-	dvo->regs = devm_ioremap_nocache(dev, res->start,
-			resource_size(res));
+	dvo->regs = devm_ioremap(dev, res->start, resource_size(res));
 	if (!dvo->regs)
 		return -ENOMEM;
 
diff --git a/drivers/gpu/drm/sti/sti_hda.c b/drivers/gpu/drm/sti/sti_hda.c
index cf65e32..a3b46c5 100644
--- a/drivers/gpu/drm/sti/sti_hda.c
+++ b/drivers/gpu/drm/sti/sti_hda.c
@@ -755,14 +755,14 @@ static int sti_hda_probe(struct platform_device *pdev)
 		DRM_ERROR("Invalid hda resource\n");
 		return -ENOMEM;
 	}
-	hda->regs = devm_ioremap_nocache(dev, res->start, resource_size(res));
+	hda->regs = devm_ioremap(dev, res->start, resource_size(res));
 	if (!hda->regs)
 		return -ENOMEM;
 
 	res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
 			"video-dacs-ctrl");
 	if (res) {
-		hda->video_dacs_ctrl = devm_ioremap_nocache(dev, res->start,
+		hda->video_dacs_ctrl = devm_ioremap(dev, res->start,
 				resource_size(res));
 		if (!hda->video_dacs_ctrl)
 			return -ENOMEM;
diff --git a/drivers/gpu/drm/sti/sti_hdmi.c b/drivers/gpu/drm/sti/sti_hdmi.c
index 30f02d2..ca720b8 100644
--- a/drivers/gpu/drm/sti/sti_hdmi.c
+++ b/drivers/gpu/drm/sti/sti_hdmi.c
@@ -1371,7 +1371,7 @@ static int sti_hdmi_probe(struct platform_device *pdev)
 		ret = -ENOMEM;
 		goto release_adapter;
 	}
-	hdmi->regs = devm_ioremap_nocache(dev, res->start, resource_size(res));
+	hdmi->regs = devm_ioremap(dev, res->start, resource_size(res));
 	if (!hdmi->regs) {
 		ret = -ENOMEM;
 		goto release_adapter;
diff --git a/drivers/gpu/drm/sti/sti_tvout.c b/drivers/gpu/drm/sti/sti_tvout.c
index 8959fcc..fa1c7a8 100644
--- a/drivers/gpu/drm/sti/sti_tvout.c
+++ b/drivers/gpu/drm/sti/sti_tvout.c
@@ -852,7 +852,7 @@ static int sti_tvout_probe(struct platform_device *pdev)
 		DRM_ERROR("Invalid glue resource\n");
 		return -ENOMEM;
 	}
-	tvout->regs = devm_ioremap_nocache(dev, res->start, resource_size(res));
+	tvout->regs = devm_ioremap(dev, res->start, resource_size(res));
 	if (!tvout->regs)
 		return -ENOMEM;
 
diff --git a/drivers/gpu/drm/sti/sti_vtg.c b/drivers/gpu/drm/sti/sti_vtg.c
index 2dcba1d..996cbe38 100644
--- a/drivers/gpu/drm/sti/sti_vtg.c
+++ b/drivers/gpu/drm/sti/sti_vtg.c
@@ -406,7 +406,7 @@ static int vtg_probe(struct platform_device *pdev)
 		DRM_ERROR("Get memory resource failed\n");
 		return -ENOMEM;
 	}
-	vtg->regs = devm_ioremap_nocache(dev, res->start, resource_size(res));
+	vtg->regs = devm_ioremap(dev, res->start, resource_size(res));
 	if (!vtg->regs) {
 		DRM_ERROR("failed to remap I/O memory\n");
 		return -ENOMEM;
diff --git a/drivers/ipack/devices/ipoctal.c b/drivers/ipack/devices/ipoctal.c
index 75dd15d..bf3d0e4 100644
--- a/drivers/ipack/devices/ipoctal.c
+++ b/drivers/ipack/devices/ipoctal.c
@@ -279,8 +279,8 @@ static int ipoctal_inst_slot(struct ipoctal *ipoctal, unsigned int bus_nr,
 	ipoctal->board_id = ipoctal->dev->id_device;
 
 	region = &ipoctal->dev->region[IPACK_IO_SPACE];
-	addr = devm_ioremap_nocache(&ipoctal->dev->dev,
-				    region->start, region->size);
+	addr = devm_ioremap(&ipoctal->dev->dev,
+			    region->start, region->size);
 	if (!addr) {
 		dev_err(&ipoctal->dev->dev,
 			"Unable to map slot [%d:%d] IO space!\n",
@@ -295,8 +295,8 @@ static int ipoctal_inst_slot(struct ipoctal *ipoctal, unsigned int bus_nr,
 
 	region = &ipoctal->dev->region[IPACK_INT_SPACE];
 	ipoctal->int_space =
-		devm_ioremap_nocache(&ipoctal->dev->dev,
-				     region->start, region->size);
+		devm_ioremap(&ipoctal->dev->dev,
+			     region->start, region->size);
 	if (!ipoctal->int_space) {
 		dev_err(&ipoctal->dev->dev,
 			"Unable to map slot [%d:%d] INT space!\n",
@@ -305,9 +305,8 @@ static int ipoctal_inst_slot(struct ipoctal *ipoctal, unsigned int bus_nr,
 	}
 
 	region = &ipoctal->dev->region[IPACK_MEM8_SPACE];
-	ipoctal->mem8_space =
-		devm_ioremap_nocache(&ipoctal->dev->dev,
-				     region->start, 0x8000);
+	ipoctal->mem8_space = devm_ioremap(&ipoctal->dev->dev,
+					   region->start, 0x8000);
 	if (!ipoctal->mem8_space) {
 		dev_err(&ipoctal->dev->dev,
 			"Unable to map slot [%d:%d] MEM8 space!\n",
diff --git a/drivers/irqchip/irq-renesas-intc-irqpin.c b/drivers/irqchip/irq-renesas-intc-irqpin.c
index 06f29cf..a837fb2 100644
--- a/drivers/irqchip/irq-renesas-intc-irqpin.c
+++ b/drivers/irqchip/irq-renesas-intc-irqpin.c
@@ -491,8 +491,8 @@ static int intc_irqpin_probe(struct platform_device *pdev)
 			goto err0;
 		}
 
-		i->iomem = devm_ioremap_nocache(dev, io[k]->start,
-						resource_size(io[k]));
+		i->iomem = devm_ioremap(dev, io[k]->start,
+					resource_size(io[k]));
 		if (!i->iomem) {
 			dev_err(dev, "failed to remap IOMEM\n");
 			ret = -ENXIO;
diff --git a/drivers/media/platform/tegra-cec/tegra_cec.c b/drivers/media/platform/tegra-cec/tegra_cec.c
index 807c94c..425728a 100644
--- a/drivers/media/platform/tegra-cec/tegra_cec.c
+++ b/drivers/media/platform/tegra-cec/tegra_cec.c
@@ -371,8 +371,8 @@ static int tegra_cec_probe(struct platform_device *pdev)
 	if (cec->tegra_cec_irq <= 0)
 		return -EBUSY;
 
-	cec->cec_base = devm_ioremap_nocache(&pdev->dev, res->start,
-					     resource_size(res));
+	cec->cec_base = devm_ioremap(&pdev->dev, res->start,
+				     resource_size(res));
 
 	if (!cec->cec_base) {
 		dev_err(&pdev->dev, "Unable to grab IOs for device\n");
diff --git a/drivers/mmc/host/sdhci-acpi.c b/drivers/mmc/host/sdhci-acpi.c
index b988997..a6e89c3 100644
--- a/drivers/mmc/host/sdhci-acpi.c
+++ b/drivers/mmc/host/sdhci-acpi.c
@@ -567,8 +567,8 @@ static int sdhci_acpi_probe(struct platform_device *pdev)
 	host->ops	= &sdhci_acpi_ops_dflt;
 	host->irq	= platform_get_irq(pdev, 0);
 
-	host->ioaddr = devm_ioremap_nocache(dev, iomem->start,
-					    resource_size(iomem));
+	host->ioaddr = devm_ioremap(dev, iomem->start,
+				    resource_size(iomem));
 	if (host->ioaddr == NULL) {
 		err = -ENOMEM;
 		goto err_free;
diff --git a/drivers/mtd/nand/fsl_upm.c b/drivers/mtd/nand/fsl_upm.c
index a88e2cf..30a8e9f 100644
--- a/drivers/mtd/nand/fsl_upm.c
+++ b/drivers/mtd/nand/fsl_upm.c
@@ -291,8 +291,8 @@ static int fun_probe(struct platform_device *ofdev)
 		fun->wait_flags = FSL_UPM_WAIT_RUN_PATTERN |
 				  FSL_UPM_WAIT_WRITE_BYTE;
 
-	fun->io_base = devm_ioremap_nocache(&ofdev->dev, io_res.start,
-					    resource_size(&io_res));
+	fun->io_base = devm_ioremap(&ofdev->dev, io_res.start,
+				    resource_size(&io_res));
 	if (!fun->io_base) {
 		ret = -ENOMEM;
 		goto err2;
diff --git a/drivers/net/can/sja1000/sja1000_platform.c b/drivers/net/can/sja1000/sja1000_platform.c
index dc9c6db..c59500c 100644
--- a/drivers/net/can/sja1000/sja1000_platform.c
+++ b/drivers/net/can/sja1000/sja1000_platform.c
@@ -240,8 +240,8 @@ static int sp_probe(struct platform_device *pdev)
 				     resource_size(res_mem), DRV_NAME))
 		return -EBUSY;
 
-	addr = devm_ioremap_nocache(&pdev->dev, res_mem->start,
-				    resource_size(res_mem));
+	addr = devm_ioremap(&pdev->dev, res_mem->start,
+			    resource_size(res_mem));
 	if (!addr)
 		return -ENOMEM;
 
diff --git a/drivers/net/ethernet/altera/altera_tse_main.c b/drivers/net/ethernet/altera/altera_tse_main.c
index 527908c..9415211 100644
--- a/drivers/net/ethernet/altera/altera_tse_main.c
+++ b/drivers/net/ethernet/altera/altera_tse_main.c
@@ -1344,8 +1344,7 @@ static int request_and_map(struct platform_device *pdev, const char *name,
 		return -EBUSY;
 	}
 
-	*ptr = devm_ioremap_nocache(device, region->start,
-				    resource_size(region));
+	*ptr = devm_ioremap(device, region->start, resource_size(region));
 	if (*ptr == NULL) {
 		dev_err(device, "ioremap_nocache of %s failed!", name);
 		return -ENOMEM;
diff --git a/drivers/net/ethernet/ethoc.c b/drivers/net/ethernet/ethoc.c
index 8bb0db9..6eb73ac 100644
--- a/drivers/net/ethernet/ethoc.c
+++ b/drivers/net/ethernet/ethoc.c
@@ -1093,7 +1093,7 @@ static int ethoc_probe(struct platform_device *pdev)
 	priv = netdev_priv(netdev);
 	priv->netdev = netdev;
 
-	priv->iobase = devm_ioremap_nocache(&pdev->dev, netdev->base_addr,
+	priv->iobase = devm_ioremap(&pdev->dev, netdev->base_addr,
 			resource_size(mmio));
 	if (!priv->iobase) {
 		dev_err(&pdev->dev, "cannot remap I/O memory space\n");
@@ -1102,7 +1102,7 @@ static int ethoc_probe(struct platform_device *pdev)
 	}
 
 	if (netdev->mem_end) {
-		priv->membase = devm_ioremap_nocache(&pdev->dev,
+		priv->membase = devm_ioremap(&pdev->dev,
 			netdev->mem_start, resource_size(mem));
 		if (!priv->membase) {
 			dev_err(&pdev->dev, "cannot remap memory space\n");
diff --git a/drivers/net/ethernet/lantiq_etop.c b/drivers/net/ethernet/lantiq_etop.c
index afc8100..9f946fc 100644
--- a/drivers/net/ethernet/lantiq_etop.c
+++ b/drivers/net/ethernet/lantiq_etop.c
@@ -670,7 +670,7 @@ struct ltq_etop_priv {
 		goto err_out;
 	}
 
-	ltq_etop_membase = devm_ioremap_nocache(&pdev->dev,
+	ltq_etop_membase = devm_ioremap(&pdev->dev,
 		res->start, resource_size(res));
 	if (!ltq_etop_membase) {
 		dev_err(&pdev->dev, "failed to remap etop engine %d\n",
diff --git a/drivers/net/ethernet/ti/netcp_core.c b/drivers/net/ethernet/ti/netcp_core.c
index ed58c74..efa83a3 100644
--- a/drivers/net/ethernet/ti/netcp_core.c
+++ b/drivers/net/ethernet/ti/netcp_core.c
@@ -2021,7 +2021,7 @@ static int netcp_create_interface(struct netcp_device *netcp_device,
 			goto quit;
 		}
 
-		efuse = devm_ioremap_nocache(dev, res.start, size);
+		efuse = devm_ioremap(dev, res.start, size);
 		if (!efuse) {
 			dev_err(dev, "could not map resource\n");
 			devm_release_mem_region(dev, res.start, size);
diff --git a/drivers/net/wireless/ath/ath9k/ahb.c b/drivers/net/wireless/ath/ath9k/ahb.c
index 2bd982c..6e13e62 100644
--- a/drivers/net/wireless/ath/ath9k/ahb.c
+++ b/drivers/net/wireless/ath/ath9k/ahb.c
@@ -91,7 +91,7 @@ static int ath_ahb_probe(struct platform_device *pdev)
 		return -ENXIO;
 	}
 
-	mem = devm_ioremap_nocache(&pdev->dev, res->start, resource_size(res));
+	mem = devm_ioremap(&pdev->dev, res->start, resource_size(res));
 	if (mem == NULL) {
 		dev_err(&pdev->dev, "ioremap failed\n");
 		return -ENOMEM;
diff --git a/drivers/pci/dwc/pci-dra7xx.c b/drivers/pci/dwc/pci-dra7xx.c
index e77a4cee..3f3712a 100644
--- a/drivers/pci/dwc/pci-dra7xx.c
+++ b/drivers/pci/dwc/pci-dra7xx.c
@@ -637,7 +637,7 @@ static int __init dra7xx_pcie_probe(struct platform_device *pdev)
 	}
 
 	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ti_conf");
-	base = devm_ioremap_nocache(dev, res->start, resource_size(res));
+	base = devm_ioremap(dev, res->start, resource_size(res));
 	if (!base)
 		return -ENOMEM;
 
diff --git a/drivers/pinctrl/bcm/pinctrl-ns2-mux.c b/drivers/pinctrl/bcm/pinctrl-ns2-mux.c
index 4b5cf0e..b2ec4a3 100644
--- a/drivers/pinctrl/bcm/pinctrl-ns2-mux.c
+++ b/drivers/pinctrl/bcm/pinctrl-ns2-mux.c
@@ -1048,8 +1048,8 @@ static int ns2_pinmux_probe(struct platform_device *pdev)
 		return PTR_ERR(pinctrl->base0);
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-	pinctrl->base1 = devm_ioremap_nocache(&pdev->dev, res->start,
-					resource_size(res));
+	pinctrl->base1 = devm_ioremap(&pdev->dev, res->start,
+				resource_size(res));
 	if (!pinctrl->base1) {
 		dev_err(&pdev->dev, "unable to map I/O space\n");
 		return -ENOMEM;
diff --git a/drivers/pinctrl/bcm/pinctrl-nsp-mux.c b/drivers/pinctrl/bcm/pinctrl-nsp-mux.c
index 35c1765..df82e52 100644
--- a/drivers/pinctrl/bcm/pinctrl-nsp-mux.c
+++ b/drivers/pinctrl/bcm/pinctrl-nsp-mux.c
@@ -577,8 +577,8 @@ static int nsp_pinmux_probe(struct platform_device *pdev)
 		return PTR_ERR(pinctrl->base0);
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-	pinctrl->base1 = devm_ioremap_nocache(&pdev->dev, res->start,
-					      resource_size(res));
+	pinctrl->base1 = devm_ioremap(&pdev->dev, res->start,
+				      resource_size(res));
 	if (!pinctrl->base1) {
 		dev_err(&pdev->dev, "unable to map I/O space\n");
 		return -ENOMEM;
diff --git a/drivers/pinctrl/freescale/pinctrl-imx1-core.c b/drivers/pinctrl/freescale/pinctrl-imx1-core.c
index a4e9f43..1f192e6 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx1-core.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx1-core.c
@@ -615,7 +615,7 @@ int imx1_pinctrl_core_probe(struct platform_device *pdev,
 	if (!res)
 		return -ENOENT;
 
-	ipctl->base = devm_ioremap_nocache(&pdev->dev, res->start,
+	ipctl->base = devm_ioremap(&pdev->dev, res->start,
 			resource_size(res));
 	if (!ipctl->base)
 		return -ENOMEM;
diff --git a/drivers/pinctrl/pinctrl-amd.c b/drivers/pinctrl/pinctrl-amd.c
index 61d830c..79de76c 100644
--- a/drivers/pinctrl/pinctrl-amd.c
+++ b/drivers/pinctrl/pinctrl-amd.c
@@ -825,8 +825,8 @@ static int amd_gpio_probe(struct platform_device *pdev)
 		return -EINVAL;
 	}
 
-	gpio_dev->base = devm_ioremap_nocache(&pdev->dev, res->start,
-						resource_size(res));
+	gpio_dev->base = devm_ioremap(&pdev->dev, res->start,
+					resource_size(res));
 	if (!gpio_dev->base)
 		return -ENOMEM;
 
diff --git a/drivers/platform/x86/intel_pmc_core.c b/drivers/platform/x86/intel_pmc_core.c
index 17e08b4..4657994 100644
--- a/drivers/platform/x86/intel_pmc_core.c
+++ b/drivers/platform/x86/intel_pmc_core.c
@@ -532,9 +532,9 @@ static int pmc_core_probe(struct pci_dev *dev, const struct pci_device_id *id)
 	pmcdev->base_addr &= PMC_BASE_ADDR_MASK;
 	dev_dbg(&dev->dev, "PMC Core: PWRMBASE is %#x\n", pmcdev->base_addr);
 
-	pmcdev->regbase = devm_ioremap_nocache(ptr_dev,
-					      pmcdev->base_addr,
-					      SPT_PMC_MMIO_REG_LEN);
+	pmcdev->regbase = devm_ioremap(ptr_dev,
+				       pmcdev->base_addr,
+				       SPT_PMC_MMIO_REG_LEN);
 	if (!pmcdev->regbase) {
 		dev_dbg(&dev->dev, "PMC Core: ioremap failed.\n");
 		return -ENOMEM;
diff --git a/drivers/regulator/ti-abb-regulator.c b/drivers/regulator/ti-abb-regulator.c
index d2f9942..4383bb6 100644
--- a/drivers/regulator/ti-abb-regulator.c
+++ b/drivers/regulator/ti-abb-regulator.c
@@ -758,8 +758,8 @@ static int ti_abb_probe(struct platform_device *pdev)
 	 * We may have shared interrupt register offsets which are
 	 * write-1-to-clear between domains ensuring exclusivity.
 	 */
-	abb->int_base = devm_ioremap_nocache(dev, res->start,
-					     resource_size(res));
+	abb->int_base = devm_ioremap(dev, res->start,
+				     resource_size(res));
 	if (!abb->int_base) {
 		dev_err(dev, "Unable to map '%s'\n", pname);
 		return -ENOMEM;
@@ -778,8 +778,8 @@ static int ti_abb_probe(struct platform_device *pdev)
 	 * We may have shared efuse register offsets which are read-only
 	 * between domains
 	 */
-	abb->efuse_base = devm_ioremap_nocache(dev, res->start,
-					       resource_size(res));
+	abb->efuse_base = devm_ioremap(dev, res->start,
+				       resource_size(res));
 	if (!abb->efuse_base) {
 		dev_err(dev, "Unable to map '%s'\n", pname);
 		return -ENOMEM;
diff --git a/drivers/rtc/rtc-sh.c b/drivers/rtc/rtc-sh.c
index 6c2d398..7c9fc1fe 100644
--- a/drivers/rtc/rtc-sh.c
+++ b/drivers/rtc/rtc-sh.c
@@ -592,8 +592,8 @@ static int __init sh_rtc_probe(struct platform_device *pdev)
 	if (unlikely(!rtc->res))
 		return -EBUSY;
 
-	rtc->regbase = devm_ioremap_nocache(&pdev->dev, rtc->res->start,
-					rtc->regsize);
+	rtc->regbase = devm_ioremap(&pdev->dev, rtc->res->start,
+				rtc->regsize);
 	if (unlikely(!rtc->regbase))
 		return -EINVAL;
 
diff --git a/drivers/spi/spi-jcore.c b/drivers/spi/spi-jcore.c
index cebfea5..32f538e 100644
--- a/drivers/spi/spi-jcore.c
+++ b/drivers/spi/spi-jcore.c
@@ -169,8 +169,7 @@ static int jcore_spi_probe(struct platform_device *pdev)
 	if (!devm_request_mem_region(&pdev->dev, res->start,
 				     resource_size(res), pdev->name))
 		goto exit_busy;
-	hw->base = devm_ioremap_nocache(&pdev->dev, res->start,
-					resource_size(res));
+	hw->base = devm_ioremap(&pdev->dev, res->start, resource_size(res));
 	if (!hw->base)
 		goto exit_busy;
 
diff --git a/drivers/staging/fsl-mc/bus/mc-io.c b/drivers/staging/fsl-mc/bus/mc-io.c
index f65c23c..cd13521 100644
--- a/drivers/staging/fsl-mc/bus/mc-io.c
+++ b/drivers/staging/fsl-mc/bus/mc-io.c
@@ -134,12 +134,12 @@ int __must_check fsl_create_mc_io(struct device *dev,
 		return -EBUSY;
 	}
 
-	mc_portal_virt_addr = devm_ioremap_nocache(dev,
-						   mc_portal_phys_addr,
-						   mc_portal_size);
+	mc_portal_virt_addr = devm_ioremap(dev,
+					   mc_portal_phys_addr,
+					   mc_portal_size);
 	if (!mc_portal_virt_addr) {
 		dev_err(dev,
-			"devm_ioremap_nocache failed for MC portal %pa\n",
+			"devm_ioremap failed for MC portal %pa\n",
 			&mc_portal_phys_addr);
 		return -ENXIO;
 	}
diff --git a/drivers/tty/mips_ejtag_fdc.c b/drivers/tty/mips_ejtag_fdc.c
index 4c1cd49..cf3da1f 100644
--- a/drivers/tty/mips_ejtag_fdc.c
+++ b/drivers/tty/mips_ejtag_fdc.c
@@ -898,8 +898,8 @@ static int mips_ejtag_fdc_tty_probe(struct mips_cdmm_device *dev)
 	atomic_set(&priv->xmit_total, 0);
 	raw_spin_lock_init(&priv->lock);
 
-	priv->reg = devm_ioremap_nocache(priv->dev, dev->res.start,
-					 resource_size(&dev->res));
+	priv->reg = devm_ioremap(priv->dev, dev->res.start,
+				 resource_size(&dev->res));
 	if (!priv->reg) {
 		dev_err(priv->dev, "ioremap failed for resource %pR\n",
 			&dev->res);
diff --git a/drivers/tty/serial/8250/8250_omap.c b/drivers/tty/serial/8250/8250_omap.c
index bd40ba4..72c0994 100644
--- a/drivers/tty/serial/8250/8250_omap.c
+++ b/drivers/tty/serial/8250/8250_omap.c
@@ -1133,8 +1133,7 @@ static int omap8250_probe(struct platform_device *pdev)
 	if (!priv)
 		return -ENOMEM;
 
-	membase = devm_ioremap_nocache(&pdev->dev, regs->start,
-				       resource_size(regs));
+	membase = devm_ioremap(&pdev->dev, regs->start, resource_size(regs));
 	if (!membase)
 		return -ENODEV;
 
diff --git a/drivers/tty/serial/lantiq.c b/drivers/tty/serial/lantiq.c
index 0441282..b3affe1 100644
--- a/drivers/tty/serial/lantiq.c
+++ b/drivers/tty/serial/lantiq.c
@@ -514,7 +514,7 @@ ltq_uart_port *to_ltq_uart_port(struct uart_port *port)
 	}
 
 	if (port->flags & UPF_IOREMAP) {
-		port->membase = devm_ioremap_nocache(&pdev->dev,
+		port->membase = devm_ioremap(&pdev->dev,
 			port->mapbase, size);
 		if (port->membase == NULL)
 			return -ENOMEM;
diff --git a/drivers/tty/serial/meson_uart.c b/drivers/tty/serial/meson_uart.c
index daafe60..65f0201 100644
--- a/drivers/tty/serial/meson_uart.c
+++ b/drivers/tty/serial/meson_uart.c
@@ -413,8 +413,8 @@ static int meson_uart_request_port(struct uart_port *port)
 		return -EBUSY;
 	}
 
-	port->membase = devm_ioremap_nocache(port->dev, port->mapbase,
-					     port->mapsize);
+	port->membase = devm_ioremap(port->dev, port->mapbase,
+				     port->mapsize);
 	if (!port->membase)
 		return -ENOMEM;
 
diff --git a/drivers/tty/serial/owl-uart.c b/drivers/tty/serial/owl-uart.c
index 29a6dc6..2150e6a 100644
--- a/drivers/tty/serial/owl-uart.c
+++ b/drivers/tty/serial/owl-uart.c
@@ -427,7 +427,7 @@ static int owl_uart_request_port(struct uart_port *port)
 		return -EBUSY;
 
 	if (port->flags & UPF_IOREMAP) {
-		port->membase = devm_ioremap_nocache(port->dev, port->mapbase,
+		port->membase = devm_ioremap(port->dev, port->mapbase,
 				resource_size(res));
 		if (!port->membase)
 			return -EBUSY;
diff --git a/drivers/tty/serial/pic32_uart.c b/drivers/tty/serial/pic32_uart.c
index fd80d99..929bd3c 100644
--- a/drivers/tty/serial/pic32_uart.c
+++ b/drivers/tty/serial/pic32_uart.c
@@ -618,8 +618,8 @@ static int pic32_uart_request_port(struct uart_port *port)
 				"pic32_uart_mem"))
 		return -EBUSY;
 
-	port->membase = devm_ioremap_nocache(port->dev, port->mapbase,
-						resource_size(res_mem));
+	port->membase = devm_ioremap(port->dev, port->mapbase,
+					resource_size(res_mem));
 	if (!port->membase) {
 		dev_err(port->dev, "Unable to map registers\n");
 		release_mem_region(port->mapbase, resource_size(res_mem));
diff --git a/drivers/video/fbdev/mbx/mbxfb.c b/drivers/video/fbdev/mbx/mbxfb.c
index 539b85d..f1034de 100644
--- a/drivers/video/fbdev/mbx/mbxfb.c
+++ b/drivers/video/fbdev/mbx/mbxfb.c
@@ -940,9 +940,9 @@ static int mbxfb_probe(struct platform_device *dev)
 	}
 	mfbi->reg_phys_addr = mfbi->reg_res->start;
 
-	mfbi->reg_virt_addr = devm_ioremap_nocache(&dev->dev,
-						   mfbi->reg_phys_addr,
-						   res_size(mfbi->reg_req));
+	mfbi->reg_virt_addr = devm_ioremap(&dev->dev,
+					   mfbi->reg_phys_addr,
+					   res_size(mfbi->reg_req));
 	if (!mfbi->reg_virt_addr) {
 		dev_err(&dev->dev, "failed to ioremap Marathon registers\n");
 		ret = -EINVAL;
@@ -950,8 +950,8 @@ static int mbxfb_probe(struct platform_device *dev)
 	}
 	virt_base_2700 = mfbi->reg_virt_addr;
 
-	mfbi->fb_virt_addr = devm_ioremap_nocache(&dev->dev, mfbi->fb_phys_addr,
-						  res_size(mfbi->fb_req));
+	mfbi->fb_virt_addr = devm_ioremap(&dev->dev, mfbi->fb_phys_addr,
+					  res_size(mfbi->fb_req));
 	if (!mfbi->fb_virt_addr) {
 		dev_err(&dev->dev, "failed to ioremap frame buffer\n");
 		ret = -EINVAL;
diff --git a/drivers/video/fbdev/mmp/hw/mmp_ctrl.c b/drivers/video/fbdev/mmp/hw/mmp_ctrl.c
index b6f83d5..8bbc873 100644
--- a/drivers/video/fbdev/mmp/hw/mmp_ctrl.c
+++ b/drivers/video/fbdev/mmp/hw/mmp_ctrl.c
@@ -500,7 +500,7 @@ static int mmphw_probe(struct platform_device *pdev)
 		goto failed;
 	}
 
-	ctrl->reg_base = devm_ioremap_nocache(ctrl->dev,
+	ctrl->reg_base = devm_ioremap(ctrl->dev,
 			res->start, resource_size(res));
 	if (ctrl->reg_base == NULL) {
 		dev_err(ctrl->dev, "%s: res %pR map failed\n", __func__, res);
diff --git a/drivers/video/fbdev/pxa168fb.c b/drivers/video/fbdev/pxa168fb.c
index def3a50..7d74f07 100644
--- a/drivers/video/fbdev/pxa168fb.c
+++ b/drivers/video/fbdev/pxa168fb.c
@@ -668,8 +668,8 @@ static int pxa168fb_probe(struct platform_device *pdev)
 	/*
 	 * Map LCD controller registers.
 	 */
-	fbi->reg_base = devm_ioremap_nocache(&pdev->dev, res->start,
-					     resource_size(res));
+	fbi->reg_base = devm_ioremap(&pdev->dev, res->start,
+				     resource_size(res));
 	if (fbi->reg_base == NULL) {
 		ret = -ENOMEM;
 		goto failed_free_info;
diff --git a/drivers/watchdog/bcm63xx_wdt.c b/drivers/watchdog/bcm63xx_wdt.c
index 8555afc..697a7e7 100644
--- a/drivers/watchdog/bcm63xx_wdt.c
+++ b/drivers/watchdog/bcm63xx_wdt.c
@@ -248,8 +248,8 @@ static int bcm63xx_wdt_probe(struct platform_device *pdev)
 		return -ENODEV;
 	}
 
-	bcm63xx_wdt_device.regs = devm_ioremap_nocache(&pdev->dev, r->start,
-							resource_size(r));
+	bcm63xx_wdt_device.regs = devm_ioremap(&pdev->dev, r->start,
+						resource_size(r));
 	if (!bcm63xx_wdt_device.regs) {
 		dev_err(&pdev->dev, "failed to remap I/O resources\n");
 		return -ENXIO;
diff --git a/drivers/watchdog/rc32434_wdt.c b/drivers/watchdog/rc32434_wdt.c
index 3a75f3b..7d519c5 100644
--- a/drivers/watchdog/rc32434_wdt.c
+++ b/drivers/watchdog/rc32434_wdt.c
@@ -31,7 +31,7 @@
 #include <linux/platform_device.h>	/* For platform_driver framework */
 #include <linux/spinlock.h>		/* For spin_lock/spin_unlock/... */
 #include <linux/uaccess.h>		/* For copy_to_user/put_user/... */
-#include <linux/io.h>			/* For devm_ioremap_nocache */
+#include <linux/io.h>			/* For devm_ioremap */
 
 #include <asm/mach-rc32434/integ.h>	/* For the Watchdog registers */
 
@@ -271,7 +271,7 @@ static int rc32434_wdt_probe(struct platform_device *pdev)
 		return -ENODEV;
 	}
 
-	wdt_reg = devm_ioremap_nocache(&pdev->dev, r->start, resource_size(r));
+	wdt_reg = devm_ioremap(&pdev->dev, r->start, resource_size(r));
 	if (!wdt_reg) {
 		pr_err("failed to remap I/O resources\n");
 		return -ENXIO;
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(...)
 )
 
diff --git a/sound/soc/au1x/ac97c.c b/sound/soc/au1x/ac97c.c
index 29a97d5..fb77f63 100644
--- a/sound/soc/au1x/ac97c.c
+++ b/sound/soc/au1x/ac97c.c
@@ -247,8 +247,8 @@ static int au1xac97c_drvprobe(struct platform_device *pdev)
 				     pdev->name))
 		return -EBUSY;
 
-	ctx->mmio = devm_ioremap_nocache(&pdev->dev, iores->start,
-					 resource_size(iores));
+	ctx->mmio = devm_ioremap(&pdev->dev, iores->start,
+				 resource_size(iores));
 	if (!ctx->mmio)
 		return -EBUSY;
 
diff --git a/sound/soc/au1x/i2sc.c b/sound/soc/au1x/i2sc.c
index 450c842..ee1a078 100644
--- a/sound/soc/au1x/i2sc.c
+++ b/sound/soc/au1x/i2sc.c
@@ -247,8 +247,8 @@ static int au1xi2s_drvprobe(struct platform_device *pdev)
 				     pdev->name))
 		return -EBUSY;
 
-	ctx->mmio = devm_ioremap_nocache(&pdev->dev, iores->start,
-					 resource_size(iores));
+	ctx->mmio = devm_ioremap(&pdev->dev, iores->start,
+				 resource_size(iores));
 	if (!ctx->mmio)
 		return -EBUSY;
 
diff --git a/sound/soc/intel/atom/sst/sst_acpi.c b/sound/soc/intel/atom/sst/sst_acpi.c
index 32d6e02..c94b19b 100644
--- a/sound/soc/intel/atom/sst/sst_acpi.c
+++ b/sound/soc/intel/atom/sst/sst_acpi.c
@@ -175,8 +175,8 @@ static int sst_platform_get_resources(struct intel_sst_drv *ctx)
 	ctx->iram_base = rsrc->start + ctx->pdata->res_info->iram_offset;
 	ctx->iram_end =  ctx->iram_base + ctx->pdata->res_info->iram_size - 1;
 	dev_info(ctx->dev, "IRAM base: %#x", ctx->iram_base);
-	ctx->iram = devm_ioremap_nocache(ctx->dev, ctx->iram_base,
-					 ctx->pdata->res_info->iram_size);
+	ctx->iram = devm_ioremap(ctx->dev, ctx->iram_base,
+				 ctx->pdata->res_info->iram_size);
 	if (!ctx->iram) {
 		dev_err(ctx->dev, "unable to map IRAM\n");
 		return -EIO;
@@ -185,8 +185,8 @@ static int sst_platform_get_resources(struct intel_sst_drv *ctx)
 	ctx->dram_base = rsrc->start + ctx->pdata->res_info->dram_offset;
 	ctx->dram_end = ctx->dram_base + ctx->pdata->res_info->dram_size - 1;
 	dev_info(ctx->dev, "DRAM base: %#x", ctx->dram_base);
-	ctx->dram = devm_ioremap_nocache(ctx->dev, ctx->dram_base,
-					 ctx->pdata->res_info->dram_size);
+	ctx->dram = devm_ioremap(ctx->dev, ctx->dram_base,
+				 ctx->pdata->res_info->dram_size);
 	if (!ctx->dram) {
 		dev_err(ctx->dev, "unable to map DRAM\n");
 		return -EIO;
@@ -194,8 +194,8 @@ static int sst_platform_get_resources(struct intel_sst_drv *ctx)
 
 	ctx->shim_phy_add = rsrc->start + ctx->pdata->res_info->shim_offset;
 	dev_info(ctx->dev, "SHIM base: %#x", ctx->shim_phy_add);
-	ctx->shim = devm_ioremap_nocache(ctx->dev, ctx->shim_phy_add,
-					ctx->pdata->res_info->shim_size);
+	ctx->shim = devm_ioremap(ctx->dev, ctx->shim_phy_add,
+				 ctx->pdata->res_info->shim_size);
 	if (!ctx->shim) {
 		dev_err(ctx->dev, "unable to map SHIM\n");
 		return -EIO;
@@ -207,8 +207,8 @@ static int sst_platform_get_resources(struct intel_sst_drv *ctx)
 	/* Get mailbox addr */
 	ctx->mailbox_add = rsrc->start + ctx->pdata->res_info->mbox_offset;
 	dev_info(ctx->dev, "Mailbox base: %#x", ctx->mailbox_add);
-	ctx->mailbox = devm_ioremap_nocache(ctx->dev, ctx->mailbox_add,
-					    ctx->pdata->res_info->mbox_size);
+	ctx->mailbox = devm_ioremap(ctx->dev, ctx->mailbox_add,
+				    ctx->pdata->res_info->mbox_size);
 	if (!ctx->mailbox) {
 		dev_err(ctx->dev, "unable to map mailbox\n");
 		return -EIO;
@@ -226,8 +226,8 @@ static int sst_platform_get_resources(struct intel_sst_drv *ctx)
 	ctx->ddr_base = rsrc->start;
 	ctx->ddr_end = rsrc->end;
 	dev_info(ctx->dev, "DDR base: %#x", ctx->ddr_base);
-	ctx->ddr = devm_ioremap_nocache(ctx->dev, ctx->ddr_base,
-					resource_size(rsrc));
+	ctx->ddr = devm_ioremap(ctx->dev, ctx->ddr_base,
+				resource_size(rsrc));
 	if (!ctx->ddr) {
 		dev_err(ctx->dev, "unable to map DDR\n");
 		return -EIO;
diff --git a/sound/soc/intel/boards/mfld_machine.c b/sound/soc/intel/boards/mfld_machine.c
index 6f44acf..cee1caad 100644
--- a/sound/soc/intel/boards/mfld_machine.c
+++ b/sound/soc/intel/boards/mfld_machine.c
@@ -385,8 +385,8 @@ static int snd_mfld_mc_probe(struct platform_device *pdev)
 		pr_err("no mem resource given\n");
 		return -ENODEV;
 	}
-	mc_drv_ctx->int_base = devm_ioremap_nocache(&pdev->dev, irq_mem->start,
-						    resource_size(irq_mem));
+	mc_drv_ctx->int_base = devm_ioremap(&pdev->dev, irq_mem->start,
+					    resource_size(irq_mem));
 	if (!mc_drv_ctx->int_base) {
 		pr_err("Mapping of cache failed\n");
 		return -ENOMEM;
diff --git a/sound/soc/sh/fsi.c b/sound/soc/sh/fsi.c
index c3aaf47..f6d3f89 100644
--- a/sound/soc/sh/fsi.c
+++ b/sound/soc/sh/fsi.c
@@ -1960,8 +1960,7 @@ static int fsi_probe(struct platform_device *pdev)
 	if (!master)
 		return -ENOMEM;
 
-	master->base = devm_ioremap_nocache(&pdev->dev,
-					    res->start, resource_size(res));
+	master->base = devm_ioremap(&pdev->dev, res->start, resource_size(res));
 	if (!master->base) {
 		dev_err(&pdev->dev, "Unable to ioremap FSI registers.\n");
 		return -ENXIO;
diff --git a/tools/testing/nvdimm/Kbuild b/tools/testing/nvdimm/Kbuild
index db33b28..9fbdc90 100644
--- a/tools/testing/nvdimm/Kbuild
+++ b/tools/testing/nvdimm/Kbuild
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 ldflags-y += --wrap=ioremap_wc
 ldflags-y += --wrap=memremap
-ldflags-y += --wrap=devm_ioremap_nocache
+ldflags-y += --wrap=devm_ioremap
 ldflags-y += --wrap=devm_memremap
 ldflags-y += --wrap=devm_memunmap
 ldflags-y += --wrap=ioremap_nocache
diff --git a/tools/testing/nvdimm/test/iomap.c b/tools/testing/nvdimm/test/iomap.c
index e1f75a1..3b80f92 100644
--- a/tools/testing/nvdimm/test/iomap.c
+++ b/tools/testing/nvdimm/test/iomap.c
@@ -89,7 +89,7 @@ void __iomem *__wrap_devm_ioremap_nocache(struct device *dev,
 	if (nfit_res)
 		return (void __iomem *) nfit_res->buf + offset
 			- nfit_res->res.start;
-	return devm_ioremap_nocache(dev, offset, size);
+	return devm_ioremap(dev, offset, size);
 }
 EXPORT_SYMBOL(__wrap_devm_ioremap_nocache);
 
-- 
1.7.12.4


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v2] devres: use MACRO instead of function for devm_ioremap
  2017-12-21 11:50     ` Yisheng Xie
@ 2017-12-21 15:08       ` Greg KH
  2017-12-22  9:06         ` Yisheng Xie
  0 siblings, 1 reply; 9+ messages in thread
From: Greg KH @ 2017-12-21 15:08 UTC (permalink / raw)
  To: Yisheng Xie
  Cc: thomas.lendacky, lorenzo.pieralisi, bp, tglx, kstewart, linux-kernel

On Thu, Dec 21, 2017 at 07:50:16PM +0800, Yisheng Xie wrote:
> Hi Greg,
> 
> On 2017/12/19 18:52, Yisheng Xie wrote:
> > Hi Greg,
> > 
> > On 2017/12/19 16:46, Greg KH wrote:
> >> On Sat, Nov 25, 2017 at 05:23:33PM +0800, 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.
> >>
> >> Ok, the idea is good, but why not just get rid of the callers of
> >> devm_ioremap_nocache() instead and have them call devm_ioremap() if they
> >> really are the same thing?  No need to keep a macro around for the
> >> duplicate thing, just delete the one and things are much better.
> > 
> > Yeah, I thought someone may still want to use devm_ioremap_nocache().
> > 
> > I will take your suggestion in next version and kill devm_ioremap_nocache().
> 
> I am trying to kill devm_ioremap_nocache() as your suggestion, however, if
> put it as a single patch it will be a patch really big (the patch file may
> have more than 1k lines), for many places will use devm_ioremap_nocache().
> But it also makes me fell uncomfortable to separate it to so many litter
> patchs for a litter optimize. :)
> 
> So I put the v3 patch in the attachment, please let me know if I should
> separate it to litter patchs :)

Yes, of course you need to break it up into smaller pieces.

One per subsystem, make a large patch series, send it out, get a few
merged, refresh, send again, and keep going until all of the users are
out of the tree and then drop the old api call.  That's how we do this
all the time, should take about 1 kernel release if you are quick and
lucky :)

hope this helps,

greg k-h

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2] devres: use MACRO instead of function for devm_ioremap
  2017-12-21 15:08       ` Greg KH
@ 2017-12-22  9:06         ` Yisheng Xie
  0 siblings, 0 replies; 9+ messages in thread
From: Yisheng Xie @ 2017-12-22  9:06 UTC (permalink / raw)
  To: Greg KH
  Cc: thomas.lendacky, lorenzo.pieralisi, bp, tglx, kstewart, linux-kernel

Hi Greg,

On 2017/12/21 23:08, Greg KH wrote:
> On Thu, Dec 21, 2017 at 07:50:16PM +0800, Yisheng Xie wrote:
>> Hi Greg,
>>
>> On 2017/12/19 18:52, Yisheng Xie wrote:
>>> Hi Greg,
>>>
>>> On 2017/12/19 16:46, Greg KH wrote:
>>>> On Sat, Nov 25, 2017 at 05:23:33PM +0800, 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.
>>>>
>>>> Ok, the idea is good, but why not just get rid of the callers of
>>>> devm_ioremap_nocache() instead and have them call devm_ioremap() if they
>>>> really are the same thing?  No need to keep a macro around for the
>>>> duplicate thing, just delete the one and things are much better.
>>>
>>> Yeah, I thought someone may still want to use devm_ioremap_nocache().
>>>
>>> I will take your suggestion in next version and kill devm_ioremap_nocache().
>>
>> I am trying to kill devm_ioremap_nocache() as your suggestion, however, if
>> put it as a single patch it will be a patch really big (the patch file may
>> have more than 1k lines), for many places will use devm_ioremap_nocache().
>> But it also makes me fell uncomfortable to separate it to so many litter
>> patchs for a litter optimize. :)
>>
>> So I put the v3 patch in the attachment, please let me know if I should
>> separate it to litter patchs :)
> 
> Yes, of course you need to break it up into smaller pieces.
> 
> One per subsystem, make a large patch series, send it out, get a few
> merged, refresh, send again, and keep going until all of the users are
> out of the tree and then drop the old api call.  That's how we do this
> all the time, should take about 1 kernel release if you are quick and
> lucky :)
> 
> hope this helps,

Yes, it do help.

Thanks for your help.
Yisheng Xie

> 
> greg k-h
> 
> .
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2017-12-22  9:07 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-25  9:23 [PATCH v2] devres: use MACRO instead of function for devm_ioremap Yisheng Xie
2017-12-11  8:23 ` Yisheng Xie
2017-12-18 14:40   ` Greg KH
2017-12-19  1:31     ` Yisheng Xie
2017-12-19  8:46 ` Greg KH
2017-12-19 10:52   ` Yisheng Xie
2017-12-21 11:50     ` Yisheng Xie
2017-12-21 15:08       ` Greg KH
2017-12-22  9:06         ` Yisheng Xie

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.