On Mon, 29 Mar 2021 15:21:47 +0800 kernel test robot <lkp@xxxxxxxxx> wrote: > tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master > head: 931294922e65a23e1aad6398b9ae02df74044679 > commit: d1f75d5ddea82b2c610d194d253b4d4ecdaa6be3 [7236/7588] mm/util.c: reduce mem_dump_obj() object size > config: riscv-randconfig-r034-20210328 (attached as .config) > compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 821547cabb5819ed42245376a9afcd11cdee5ddd) > 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 > # install riscv cross compiling tool for clang build > # apt-get install binutils-riscv64-linux-gnu > # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=d1f75d5ddea82b2c610d194d253b4d4ecdaa6be3 > git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git > git fetch --no-tags linux-next master > git checkout d1f75d5ddea82b2c610d194d253b4d4ecdaa6be3 > # save the attached .config to linux build tree > COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv > > ... > > ~~~~~~~~~~ ^ > In file included from mm/util.c:29: > mm/internal.h:454:8: error: use of undeclared identifier 'max_mapnr' > if (!pfn_valid(pfn)) > ^ > arch/riscv/include/asm/page.h:130:62: note: expanded from macro 'pfn_valid' > (((pfn) >= ARCH_PFN_OFFSET) && (((pfn) - ARCH_PFN_OFFSET) < max_mapnr)) > ^ > mm/util.c:999:6: error: use of undeclared identifier 'max_mapnr' > if (virt_addr_valid(object)) > ^ > arch/riscv/include/asm/page.h:137:43: note: expanded from macro 'virt_addr_valid' > (unsigned long)(_addr) >= PAGE_OFFSET && pfn_valid(virt_to_pfn(_addr)); \ > ^ > arch/riscv/include/asm/page.h:130:62: note: expanded from macro 'pfn_valid' > (((pfn) >= ARCH_PFN_OFFSET) && (((pfn) - ARCH_PFN_OFFSET) < max_mapnr)) > ^ > >> mm/util.c:999:2: error: statement requires expression of scalar type ('void' invalid) > if (virt_addr_valid(object)) > ^ ~~~~~~~~~~~~~~~~~~~~~~~ > 7 warnings and 3 errors generated. "mm/util.c: reduce mem_dump_obj() object size" can't be the cause of this. It appears that riscv doesn't handle CONFIG_NEED_MULTIPLE_NODES=y. Its pfn_valid() (and hence virt_addr_valid()) implementations require that max_mapnr be defined and implemented. But with CONFIG_NEED_MULTIPLE_NODES=y, that is not the case. Probably riscv needs some Kconfig fix to disallow this config combination.