Re: [PATCH v4 01/36] asm-generic/io.h: move ioremap_nocache/ioremap_uc/ioremap_wc/ioremap_wt out of ifndef CONFIG_MMU
From: Greentime Hu
Date: Fri Dec 22 2017 - 09:41:18 EST
2017-12-20 18:10 GMT+08:00 kbuild test robot <lkp@xxxxxxxxx>:
> Hi Greentime,
>
> Thank you for the patch! Yet something to improve:
>
> [auto build test ERROR on tip/timers/core]
> [also build test ERROR on v4.15-rc4 next-20171220]
> [cannot apply to linus/master]
> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
>
> url: https://github.com/0day-ci/linux/commits/Greentime-Hu/Andes-nds32-Linux-Kernel/20171220-155937
> config: openrisc-or1ksim_defconfig (attached as .config)
> compiler: or1k-linux-gcc (GCC) 6.0.0 20160327 (experimental)
> reproduce:
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # save the attached .config to linux build tree
> make.cross ARCH=openrisc
>
> All error/warnings (new ones prefixed by >>):
>
> In file included from include/linux/io.h:25:0,
> from arch/openrisc/kernel/asm-offsets.c:35:
>>> arch/openrisc/include/asm/io.h:38:29: error: conflicting types for 'ioremap'
> static inline void __iomem *ioremap(phys_addr_t offset, unsigned long size)
> ^~~~~~~
> In file included from arch/openrisc/include/asm/io.h:32:0,
> from include/linux/io.h:25,
> from arch/openrisc/kernel/asm-offsets.c:35:
> include/asm-generic/io.h:864:15: note: previous declaration of 'ioremap' was here
> void __iomem *ioremap(phys_addr_t phys_addr, size_t size);
> ^~~~~~~
> include/asm-generic/io.h:865:25: error: conflicting types for 'ioremap_nocache'
> #define ioremap_nocache ioremap_nocache
> ^
>>> arch/openrisc/include/asm/io.h:44:29: note: in expansion of macro 'ioremap_nocache'
> static inline void __iomem *ioremap_nocache(phys_addr_t offset,
> ^~~~~~~~~~~~~~~
> include/asm-generic/io.h:865:25: note: previous definition of 'ioremap_nocache' was here
> #define ioremap_nocache ioremap_nocache
> ^
> include/asm-generic/io.h:866:29: note: in expansion of macro 'ioremap_nocache'
> static inline void __iomem *ioremap_nocache(phys_addr_t offset, size_t size)
> ^~~~~~~~~~~~~~~
> make[2]: *** [arch/openrisc/kernel/asm-offsets.s] Error 1
> make[2]: Target '__build' not remade because of errors.
> make[1]: *** [prepare0] Error 2
> make[1]: Target 'prepare' not remade because of errors.
> make: *** [sub-make] Error 2
>
> vim +/ioremap +38 arch/openrisc/include/asm/io.h
>
> 58e0166a Jonas Bonn 2011-06-04 31
> 58e0166a Jonas Bonn 2011-06-04 @32 #include <asm-generic/io.h>
> 9b04ebd1 James Hogan 2012-10-23 33 #include <asm/pgtable.h>
> 58e0166a Jonas Bonn 2011-06-04 34
> 58e0166a Jonas Bonn 2011-06-04 35 extern void __iomem *__ioremap(phys_addr_t offset, unsigned long size,
> 58e0166a Jonas Bonn 2011-06-04 36 pgprot_t prot);
> 58e0166a Jonas Bonn 2011-06-04 37
> 58e0166a Jonas Bonn 2011-06-04 @38 static inline void __iomem *ioremap(phys_addr_t offset, unsigned long size)
> 58e0166a Jonas Bonn 2011-06-04 39 {
> 58e0166a Jonas Bonn 2011-06-04 40 return __ioremap(offset, size, PAGE_KERNEL);
> 58e0166a Jonas Bonn 2011-06-04 41 }
> 58e0166a Jonas Bonn 2011-06-04 42
> 58e0166a Jonas Bonn 2011-06-04 43 /* #define _PAGE_CI 0x002 */
> 58e0166a Jonas Bonn 2011-06-04 @44 static inline void __iomem *ioremap_nocache(phys_addr_t offset,
> 58e0166a Jonas Bonn 2011-06-04 45 unsigned long size)
> 58e0166a Jonas Bonn 2011-06-04 46 {
> 58e0166a Jonas Bonn 2011-06-04 47 return __ioremap(offset, size,
> 58e0166a Jonas Bonn 2011-06-04 48 __pgprot(pgprot_val(PAGE_KERNEL) | _PAGE_CI));
> 58e0166a Jonas Bonn 2011-06-04 49 }
> 58e0166a Jonas Bonn 2011-06-04 50
>
> :::::: The code at line 38 was first introduced by commit
> :::::: 58e0166a4772aaeb10c9b0f6d59f19099d2047df OpenRISC: Headers
>
> :::::: TO: Jonas Bonn <jonas@xxxxxxxxxxxx>
> :::::: CC: Jonas Bonn <jonas@xxxxxxxxxxxx>
>
> ---
> 0-DAY kernel test infrastructure Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all Intel Corporation
Hi, all:
I just tried to fix this build error.
Should I send this patch next time with nds32 patchset?
--- a/arch/openrisc/include/asm/io.h
+++ b/arch/openrisc/include/asm/io.h
@@ -29,13 +29,14 @@
#define PIO_OFFSET 0
#define PIO_MASK 0
+#define ioremap_nocache ioremap_nocache
#include <asm-generic/io.h>
#include <asm/pgtable.h>
extern void __iomem *__ioremap(phys_addr_t offset, unsigned long size,
pgprot_t prot);
-static inline void __iomem *ioremap(phys_addr_t offset, unsigned long size)
+static inline void __iomem *ioremap(phys_addr_t offset, size_t size)
{
return __ioremap(offset, size, PAGE_KERNEL);
}