Re: [PATCH v3 11/11] xtensa: mm: Convert to GENERIC_IOREMAP

Baoquan He
2022-10-10T02:47:13Z

On 10/10/22 at 12:12am, kernel test robot wrote:
> Hi Baoquan,
>
> I love your patch! Yet something to improve:
>
> [auto build test ERROR on linus/master]
> [also build test ERROR on next-20221007]
> [cannot apply to akpm-mm/mm-everything openrisc/for-next deller-parisc/for-next s390/features v6.0]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://git-scm.com/docs/git-format-patch#_base_tree_information]
>
> url: https://github.com/intel-lab-lkp/linux/commits/Baoquan-He/mm-ioremap-Convert-architectures-to-take-GENERIC_IOREMAP-way/20221009-183524
> base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git a6afa4199d3d038fbfdff5511f7523b0e30cb774
> config: xtensa-nommu_kc705_defconfig
> compiler: xtensa-de212-linux-gcc (GCC) 12.1.0
> reproduce (this is a W=1 build):
> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> chmod +x ~/bin/make.cross
> # https://github.com/intel-lab-lkp/linux/commit/1330d435c818ccf34bf24ceb36ef6acb1128cf6c
> git remote add linux-review https://github.com/intel-lab-lkp/linux
> git fetch --no-tags linux-review Baoquan-He/mm-ioremap-Convert-architectures-to-take-GENERIC_IOREMAP-way/20221009-183524
> git checkout 1330d435c818ccf34bf24ceb36ef6acb1128cf6c
> # save the config file
> mkdir build_dir && cp config build_dir/.config
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=xtensa prepare
>
> If you fix the issue, kindly add following tag where applicable
> | Reported-by: kernel test robot <lkp@intel.com>
>
> All errors (new ones prefixed by >>):
>
> In file included from include/linux/io.h:13,
> from include/linux/irq.h:20,
> from include/asm-generic/hardirq.h:17,
> from ./arch/xtensa/include/generated/asm/hardirq.h:1,
> from include/linux/hardirq.h:11,
> from include/linux/interrupt.h:11,
> from include/linux/kernel_stat.h:9,
> from include/linux/cgroup.h:26,
> from include/linux/memcontrol.h:13,
> from include/linux/swap.h:9,
> from include/linux/suspend.h:5,
> from arch/xtensa/kernel/asm-offsets.c:24:
> arch/xtensa/include/asm/io.h: In function 'ioremap_cache':
> >> arch/xtensa/include/asm/io.h:56:55: error: 'XCHAL_KIO_CACHED_VADDR' undeclared (first use in this function); did you mean 'XCHAL_KIO_BYPASS_VADDR'?
> 56 | return (void*)(offset-XCHAL_KIO_PADDR+XCHAL_KIO_CACHED_VADDR);
> | ^~~~~~~~~~~~~~~~~~~~~~
> | XCHAL_KIO_BYPASS_VADDR
> arch/xtensa/include/asm/io.h:56:55: note: each undeclared identifier is reported only once for each function it appears in
> make[2]: *** [scripts/Makefile.build:118: arch/xtensa/kernel/asm-offsets.s] Error 1
> make[2]: Target '__build' not remade because of errors.
> make[1]: *** [Makefile:1276: prepare0] Error 2
> make[1]: Target 'prepare' not remade because of errors.
> make: *** [Makefile:231: __sub-make] Error 2
> make: Target 'prepare' not remade because of errors.

Thanks for reporting.

With the provided nommu config, I reproduced above compiling error and
fix it with below change. I will merge it to the xtensa patch in v4 post.
=====
In <asm/io.h>, the io memory mapping funcions should be wrapped inside
CONFIG_MMU ifdeffery scope. Otherwise it will cause compiling error
when nommu is enabled.
Signed-off-by: Baoquan He <bhe@redhat.com>
Reported-by: kernel test robot <lkp@intel.com>

diff --git a/arch/xtensa/include/asm/io.h b/arch/xtensa/include/asm/io.h
index 126af8de5722..3331de4e692d 100644
--- a/arch/xtensa/include/asm/io.h
+++ b/arch/xtensa/include/asm/io.h
@@ -24,6 +24,7 @@
#define IO_SPACE_LIMIT ~0
#define PCI_IOBASE ((void __iomem *)XCHAL_KIO_BYPASS_VADDR)

+#ifdef CONFIG_MMU
/*
* I/O memory mapping functions.
*/
@@ -59,6 +60,7 @@ static inline void __iomem *ioremap_cache(unsigned long offset,

}
#define ioremap_cache ioremap_cache
+#endif /* CONFIG_MMU */

#include <asm-generic/io.h>