Re: [PATCH 07/33] iwlwifi: mvm: use match_string() helper
Hi Andy, On 2018/5/22 5:43, Andy Shevchenko wrote: > On Mon, May 21, 2018 at 2:57 PM, Yisheng Xie wrote: >> match_string() returns the index of an array for a matching string, >> which can be used intead of open coded variant. > >> int ret, bt_force_ant_mode; >> >> - for (bt_force_ant_mode = 0; >> -bt_force_ant_mode < ARRAY_SIZE(modes_str); >> -bt_force_ant_mode++) { >> - if (!strcmp(buf, modes_str[bt_force_ant_mode])) >> - break; >> - } >> - >> - if (bt_force_ant_mode >= ARRAY_SIZE(modes_str)) > >> + bt_force_ant_mode = match_string(modes_str, >> +ARRAY_SIZE(modes_str), buf); > > One line? hmm, if use ret instead it will no over 80 chars. > >> + if (bt_force_ant_mode < 0) >> return -EINVAL; > > I would rather use > > ret = match_string(); > if (ret < 0) > return ret; > > bt_force_... = ret; > > But it's up tu Loca. OK, I will change it if Loca agree your opinion. Thanks Yisheng > >> >> ret = 0; > > >
[PATCH 07/33] iwlwifi: mvm: use match_string() helper
match_string() returns the index of an array for a matching string, which can be used intead of open coded variant. Cc: Kalle Valo Cc: Intel Linux Wireless Cc: Johannes Berg Cc: Emmanuel Grumbach Cc: linux-wireless@vger.kernel.org Cc: net...@vger.kernel.org Signed-off-by: Yisheng Xie --- drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c | 11 +++ 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c b/drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c index 0e6401c..e8249a6 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c @@ -671,14 +671,9 @@ static ssize_t iwl_dbgfs_bt_cmd_read(struct file *file, char __user *user_buf, }; int ret, bt_force_ant_mode; - for (bt_force_ant_mode = 0; -bt_force_ant_mode < ARRAY_SIZE(modes_str); -bt_force_ant_mode++) { - if (!strcmp(buf, modes_str[bt_force_ant_mode])) - break; - } - - if (bt_force_ant_mode >= ARRAY_SIZE(modes_str)) + bt_force_ant_mode = match_string(modes_str, +ARRAY_SIZE(modes_str), buf); + if (bt_force_ant_mode < 0) return -EINVAL; ret = 0; -- 1.7.12.4
Re: [PATCH v3 00/27] kill devm_ioremap_nocache
Hi Christophe , On 2018/1/4 16:05, Christophe LEROY wrote: > > > Le 25/12/2017 à 02:34, Yisheng Xie a écrit : >> >> >> On 2017/12/24 17:05, christophe leroy wrote: >>> >>> >>> Le 23/12/2017 à 14:48, Greg KH a écrit : >>>> On Sat, Dec 23, 2017 at 06:55:25PM +0800, Yisheng Xie wrote: >>>>> Hi all, >>>>> >>>>> When I tried to use devm_ioremap function and review related code, I found >>>>> devm_ioremap and devm_ioremap_nocache is almost the same with each other, >>>>> except one use ioremap while the other use ioremap_nocache. >>>> >>>> For all arches? Really? Look at MIPS, and x86, they have different >>>> functions. >>>> >>>>> While ioremap's >>>>> default function is ioremap_nocache, so devm_ioremap_nocache also have the >>>>> same function with devm_ioremap, which can just be killed to reduce the >>>>> size >>>>> of devres.o(from 20304 bytes to 18992 bytes in my compile environment). >>>>> >>>>> I have posted two versions, which use macro instead of function for >>>>> devm_ioremap_nocache[1] or devm_ioremap[2]. And Greg suggest me to kill >>>>> devm_ioremap_nocache for no need to keep a macro around for the duplicate >>>>> thing. So here comes v3 and please help to review. >>>> >>>> I don't think this can be done, what am I missing? These functions are >>>> not identical, sorry for missing that before. >>> >>> devm_ioremap() and devm_ioremap_nocache() are quite similar, both use >>> devm_ioremap_release() for the release, why not just defining: >>> >>> static void __iomem *__devm_ioremap(struct device *dev, resource_size_t >>> offset, >>> resource_size_t size, bool nocache) >>> { >>> [...] >>> if (nocache) >>> addr = ioremap_nocache(offset, size); >>> else >>> addr = ioremap(offset, size); >>> [...] >>> } >>> >>> then in include/linux/io.h >>> >>> static inline void __iomem *devm_ioremap(struct device *dev, >>> resource_size_t offset, >>> resource_size_t size) >>> {return __devm_ioremap(dev, offset, size, false);} >>> >>> static inline void __iomem *devm_ioremap_nocache(struct device *dev, >>> resource_size_t offset, >>> resource_size_t size); >>> {return __devm_ioremap(dev, offset, size, true);} >> >> Yeah, this seems good to me, right now we have devm_ioremap, >> devm_ioremap_wc, devm_ioremap_nocache >> May be we can use an enum like: >> typedef enum { >> DEVM_IOREMAP = 0, >> DEVM_IOREMAP_NOCACHE, >> DEVM_IOREMAP_WC, >> } devm_ioremap_type; >> >> static inline void __iomem *devm_ioremap(struct device *dev, resource_size_t >> offset, >> resource_size_t size) >> {return __devm_ioremap(dev, offset, size, DEVM_IOREMAP);} >> >> static inline void __iomem *devm_ioremap_nocache(struct device *dev, >> resource_size_t offset, >> resource_size_t size); >> {return __devm_ioremap(dev, offset, size, DEVM_IOREMAP_NOCACHE);} >> >> static inline void __iomem *devm_ioremap_wc(struct device *dev, >> resource_size_t offset, >> resource_size_t size); >> {return __devm_ioremap(dev, offset, size, DEVM_IOREMAP_WC);} >> >> static void __iomem *__devm_ioremap(struct device *dev, resource_size_t >> offset, >> resource_size_t size, devm_ioremap_type type) >> { >> void __iomem **ptr, *addr = NULL; >> [...] >> switch (type){ >> case DEVM_IOREMAP: >> addr = ioremap(offset, size); >> break; >> case DEVM_IOREMAP_NOCACHE: >> addr = ioremap_nocache(offset, size); >> break; >> case DEVM_IOREMAP_WC: >> addr = ioremap_wc(offset, size); >> break; >> } >> [...] >> } > > > That looks good to me, will you submit a v4 ? Sorry for late response. And I will submit the v4 as your suggestion. Thanks Yisheng > > Christophe > >>
Re: [PATCH v3 00/27] kill devm_ioremap_nocache
+ cris/ia64/mn10300/openrisc maintainers On 2017/12/25 9:09, Yisheng Xie wrote: > hi Christophe and Greg, > > On 2017/12/24 16:55, christophe leroy wrote: >> >> >> Le 23/12/2017 à 16:57, Guenter Roeck a écrit : >>> On 12/23/2017 05:48 AM, Greg KH wrote: >>>> On Sat, Dec 23, 2017 at 06:55:25PM +0800, Yisheng Xie wrote: >>>>> Hi all, >>>>> >>>>> When I tried to use devm_ioremap function and review related code, I found >>>>> devm_ioremap and devm_ioremap_nocache is almost the same with each other, >>>>> except one use ioremap while the other use ioremap_nocache. >>>> >>>> For all arches? Really? Look at MIPS, and x86, they have different >>>> functions. >>>> >>> >>> Both mips and x86 end up mapping the same function, but other arches don't. >>> mn10300 is one where ioremap and ioremap_nocache are definitely different. >> >> alpha: identical >> arc: identical >> arm: identical >> arm64: identical >> cris: different<== >> frv: identical >> hexagone: identical >> ia64: different<== >> m32r: identical >> m68k: identical >> metag: identical >> microblaze: identical >> mips: identical >> mn10300: different <== >> nios: identical >> openrisc: different<== >> parisc: identical >> riscv: identical >> s390: identical >> sh: identical >> sparc: identical >> tile: identical >> um: rely on asm/generic >> unicore32: identical >> x86: identical >> asm/generic (no mmu): identical > > Wow, that's correct, sorry for I have just checked the main archs, I means > x86,arm, arm64, mips. > > However, I stall have no idea about why these 4 archs want different ioremap > function with others. Drivers seems cannot aware this? If driver call ioremap > want he really want for there 4 archs, cache or nocache? Could you please help about this? it is out of my knowledge. Thanks Yisheng > >> >> So 4 among all arches seems to have ioremap() and ioremap_nocache() being >> different. >> >> Could we have a define set by the 4 arches on which ioremap() and >> ioremap_nocache() are different, something like >> HAVE_DIFFERENT_IOREMAP_NOCACHE ? > > Then, what the HAVE_DIFFERENT_IOREMAP_NOCACHE is uesed for ? > > Thanks > Yisheng >> >> Christophe >> >>> >>> Guenter >>> >>>>> While ioremap's >>>>> default function is ioremap_nocache, so devm_ioremap_nocache also have the >>>>> same function with devm_ioremap, which can just be killed to reduce the >>>>> size >>>>> of devres.o(from 20304 bytes to 18992 bytes in my compile environment). >>>>> >>>>> I have posted two versions, which use macro instead of function for >>>>> devm_ioremap_nocache[1] or devm_ioremap[2]. And Greg suggest me to kill >>>>> devm_ioremap_nocache for no need to keep a macro around for the duplicate >>>>> thing. So here comes v3 and please help to review. >>>> >>>> I don't think this can be done, what am I missing? These functions are >>>> not identical, sorry for missing that before. > > Never mind, I should checked all the arches, sorry about that. > >>>> >>>> thanks, >>>> >>>> greg k-h >>>> >>> >>> -- >>> To unsubscribe from this list: send the line "unsubscribe linux-watchdog" in >>> the body of a message to majord...@vger.kernel.org >>> More majordomo info at http://vger.kernel.org/majordomo-info.html >> >> --- >> L'absence de virus dans ce courrier électronique a été vérifiée par le >> logiciel antivirus Avast. >> https://www.avast.com/antivirus >> >> >> . >> > > > . >
Re: [PATCH v3 27/27] devres: kill devm_ioremap_nocache
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 > > . >
Re: [PATCH v3 00/27] kill devm_ioremap_nocache
On 2017/12/24 17:05, christophe leroy wrote: > > > Le 23/12/2017 à 14:48, Greg KH a écrit : >> On Sat, Dec 23, 2017 at 06:55:25PM +0800, Yisheng Xie wrote: >>> Hi all, >>> >>> When I tried to use devm_ioremap function and review related code, I found >>> devm_ioremap and devm_ioremap_nocache is almost the same with each other, >>> except one use ioremap while the other use ioremap_nocache. >> >> For all arches? Really? Look at MIPS, and x86, they have different >> functions. >> >>> While ioremap's >>> default function is ioremap_nocache, so devm_ioremap_nocache also have the >>> same function with devm_ioremap, which can just be killed to reduce the size >>> of devres.o(from 20304 bytes to 18992 bytes in my compile environment). >>> >>> I have posted two versions, which use macro instead of function for >>> devm_ioremap_nocache[1] or devm_ioremap[2]. And Greg suggest me to kill >>> devm_ioremap_nocache for no need to keep a macro around for the duplicate >>> thing. So here comes v3 and please help to review. >> >> I don't think this can be done, what am I missing? These functions are >> not identical, sorry for missing that before. > > devm_ioremap() and devm_ioremap_nocache() are quite similar, both use > devm_ioremap_release() for the release, why not just defining: > > static void __iomem *__devm_ioremap(struct device *dev, resource_size_t > offset, >resource_size_t size, bool nocache) > { > [...] > if (nocache) > addr = ioremap_nocache(offset, size); > else > addr = ioremap(offset, size); > [...] > } > > then in include/linux/io.h > > static inline void __iomem *devm_ioremap(struct device *dev, resource_size_t > offset, >resource_size_t size) > {return __devm_ioremap(dev, offset, size, false);} > > static inline void __iomem *devm_ioremap_nocache(struct device *dev, > resource_size_t offset, >resource_size_t size); > {return __devm_ioremap(dev, offset, size, true);} Yeah, this seems good to me, right now we have devm_ioremap, devm_ioremap_wc, devm_ioremap_nocache May be we can use an enum like: typedef enum { DEVM_IOREMAP = 0, DEVM_IOREMAP_NOCACHE, DEVM_IOREMAP_WC, } devm_ioremap_type; static inline void __iomem *devm_ioremap(struct device *dev, resource_size_t offset, resource_size_t size) {return __devm_ioremap(dev, offset, size, DEVM_IOREMAP);} static inline void __iomem *devm_ioremap_nocache(struct device *dev, resource_size_t offset, resource_size_t size); {return __devm_ioremap(dev, offset, size, DEVM_IOREMAP_NOCACHE);} static inline void __iomem *devm_ioremap_wc(struct device *dev, resource_size_t offset, resource_size_t size); {return __devm_ioremap(dev, offset, size, DEVM_IOREMAP_WC);} static void __iomem *__devm_ioremap(struct device *dev, resource_size_t offset, resource_size_t size, devm_ioremap_type type) { void __iomem **ptr, *addr = NULL; [...] switch (type){ case DEVM_IOREMAP: addr = ioremap(offset, size); break; case DEVM_IOREMAP_NOCACHE: addr = ioremap_nocache(offset, size); break; case DEVM_IOREMAP_WC: addr = ioremap_wc(offset, size); break; } [...] } Thanks Yisheng > > Christophe > >> >> thanks, >> >> greg k-h >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-watchdog" in >> the body of a message to majord...@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> > > --- > L'absence de virus dans ce courrier électronique a été vérifiée par le > logiciel antivirus Avast. > https://www.avast.com/antivirus > > > . >
Re: [PATCH v3 00/27] kill devm_ioremap_nocache
hi Christophe and Greg, On 2017/12/24 16:55, christophe leroy wrote: > > > Le 23/12/2017 à 16:57, Guenter Roeck a écrit : >> On 12/23/2017 05:48 AM, Greg KH wrote: >>> On Sat, Dec 23, 2017 at 06:55:25PM +0800, Yisheng Xie wrote: >>>> Hi all, >>>> >>>> When I tried to use devm_ioremap function and review related code, I found >>>> devm_ioremap and devm_ioremap_nocache is almost the same with each other, >>>> except one use ioremap while the other use ioremap_nocache. >>> >>> For all arches? Really? Look at MIPS, and x86, they have different >>> functions. >>> >> >> Both mips and x86 end up mapping the same function, but other arches don't. >> mn10300 is one where ioremap and ioremap_nocache are definitely different. > > alpha: identical > arc: identical > arm: identical > arm64: identical > cris: different<== > frv: identical > hexagone: identical > ia64: different<== > m32r: identical > m68k: identical > metag: identical > microblaze: identical > mips: identical > mn10300: different <== > nios: identical > openrisc: different<== > parisc: identical > riscv: identical > s390: identical > sh: identical > sparc: identical > tile: identical > um: rely on asm/generic > unicore32: identical > x86: identical > asm/generic (no mmu): identical Wow, that's correct, sorry for I have just checked the main archs, I means x86,arm, arm64, mips. However, I stall have no idea about why these 4 archs want different ioremap function with others. Drivers seems cannot aware this? If driver call ioremap want he really want for there 4 archs, cache or nocache? > > So 4 among all arches seems to have ioremap() and ioremap_nocache() being > different. > > Could we have a define set by the 4 arches on which ioremap() and > ioremap_nocache() are different, something like > HAVE_DIFFERENT_IOREMAP_NOCACHE ? Then, what the HAVE_DIFFERENT_IOREMAP_NOCACHE is uesed for ? Thanks Yisheng > > Christophe > >> >> Guenter >> >>>> While ioremap's >>>> default function is ioremap_nocache, so devm_ioremap_nocache also have the >>>> same function with devm_ioremap, which can just be killed to reduce the >>>> size >>>> of devres.o(from 20304 bytes to 18992 bytes in my compile environment). >>>> >>>> I have posted two versions, which use macro instead of function for >>>> devm_ioremap_nocache[1] or devm_ioremap[2]. And Greg suggest me to kill >>>> devm_ioremap_nocache for no need to keep a macro around for the duplicate >>>> thing. So here comes v3 and please help to review. >>> >>> I don't think this can be done, what am I missing? These functions are >>> not identical, sorry for missing that before. Never mind, I should checked all the arches, sorry about that. >>> >>> thanks, >>> >>> greg k-h >>> >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-watchdog" in >> the body of a message to majord...@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html > > --- > L'absence de virus dans ce courrier électronique a été vérifiée par le > logiciel antivirus Avast. > https://www.avast.com/antivirus > > > . >
[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 Signed-off-by: Yisheng Xie --- 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(...) ) -- 1.8.3.1
[PATCH v3 25/27] wireless: replace devm_ioremap_nocache with devm_ioremap
Default ioremap is ioremap_nocache, so devm_ioremap has the same function with devm_ioremap_nocache, which can just be killed to save the size of devres.o This patch is to use use devm_ioremap instead of devm_ioremap_nocache, which should not have any function change but prepare for killing devm_ioremap_nocache. Cc: Kalle Valo Cc: linux-wireless@vger.kernel.org Cc: net...@vger.kernel.org Signed-off-by: Yisheng Xie --- drivers/net/wireless/ath/ath9k/ahb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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; -- 1.8.3.1
[PATCH v3 00/27] kill devm_ioremap_nocache
Hi all, When I tried to use devm_ioremap function and review related code, I found devm_ioremap and devm_ioremap_nocache is almost the same with each other, except one use ioremap while the other use ioremap_nocache. While ioremap's default function is ioremap_nocache, so devm_ioremap_nocache also have the same function with devm_ioremap, which can just be killed to reduce the size of devres.o(from 20304 bytes to 18992 bytes in my compile environment). I have posted two versions, which use macro instead of function for devm_ioremap_nocache[1] or devm_ioremap[2]. And Greg suggest me to kill devm_ioremap_nocache for no need to keep a macro around for the duplicate thing. So here comes v3 and please help to review. Thanks so much! Yisheng Xie [1] https://lkml.org/lkml/2017/11/20/135 [2] https://lkml.org/lkml/2017/11/25/21 Yisheng Xie (27): ASOC: replace devm_ioremap_nocache with devm_ioremap spi: replace devm_ioremap_nocache with devm_ioremap staging: replace devm_ioremap_nocache with devm_ioremap ipack: replace devm_ioremap_nocache with devm_ioremap media: replace devm_ioremap_nocache with devm_ioremap gpio: replace devm_ioremap_nocache with devm_ioremap mmc: replace devm_ioremap_nocache with devm_ioremap PCI: replace devm_ioremap_nocache with devm_ioremap platform/x86: replace devm_ioremap_nocache with devm_ioremap tty: replace devm_ioremap_nocache with devm_ioremap video: replace devm_ioremap_nocache with devm_ioremap rtc: replace devm_ioremap_nocache with devm_ioremap char: replace devm_ioremap_nocache with devm_ioremap mtd: nand: replace devm_ioremap_nocache with devm_ioremap dmaengine: replace devm_ioremap_nocache with devm_ioremap ata: replace devm_ioremap_nocache with devm_ioremap irqchip: replace devm_ioremap_nocache with devm_ioremap pinctrl: replace devm_ioremap_nocache with devm_ioremap drm: replace devm_ioremap_nocache with devm_ioremap regulator: replace devm_ioremap_nocache with devm_ioremap watchdog: replace devm_ioremap_nocache with devm_ioremap tools/testing/nvdimm: replace devm_ioremap_nocache with devm_ioremap MIPS: pci: replace devm_ioremap_nocache with devm_ioremap can: replace devm_ioremap_nocache with devm_ioremap wireless: replace devm_ioremap_nocache with devm_ioremap ethernet: replace devm_ioremap_nocache with devm_ioremap devres: kill devm_ioremap_nocache Documentation/driver-model/devres.txt | 1 - arch/mips/pci/pci-ar2315.c | 3 +-- drivers/ata/pata_arasan_cf.c| 3 +-- drivers/ata/pata_octeon_cf.c| 9 drivers/ata/pata_rb532_cf.c | 2 +- drivers/char/hw_random/bcm63xx-rng.c| 3 +-- drivers/char/hw_random/octeon-rng.c | 10 - drivers/dma/altera-msgdma.c | 3 +-- drivers/dma/sprd-dma.c | 4 ++-- drivers/gpio/gpio-ath79.c | 3 +-- drivers/gpio/gpio-em.c | 6 ++--- 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 | 3 +-- 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| 8 +++ drivers/net/ethernet/lantiq_etop.c | 4 ++-- 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 | 2 +- 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 | 5 ++--- drivers/regulator/ti-abb-regulator.c| 6 ++--- 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 | 3 +-- drivers/tty/serial/meson_u