Message ID | 20230501192829.17086-22-vishal.moola@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Split ptdesc from struct page | expand |
Hi Vishal, kernel test robot noticed the following build errors: [auto build test ERROR on akpm-mm/mm-everything] [also build test ERROR on linus/master next-20230428] [cannot apply to s390/features powerpc/next powerpc/fixes geert-m68k/for-next geert-m68k/for-linus v6.3] [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/Vishal-Moola-Oracle/mm-Add-PAGE_TYPE_OP-folio-functions/20230502-033042 base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything patch link: https://lore.kernel.org/r/20230501192829.17086-22-vishal.moola%40gmail.com patch subject: [PATCH v2 21/34] arm64: Convert various functions to use ptdescs config: arm64-allyesconfig (https://download.01.org/0day-ci/archive/20230502/202305020914.OGRWcEG1-lkp@intel.com/config) compiler: aarch64-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/8e9481b63b5773d7c914836dcd7fbec2449902bc git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Vishal-Moola-Oracle/mm-Add-PAGE_TYPE_OP-folio-functions/20230502-033042 git checkout 8e9481b63b5773d7c914836dcd7fbec2449902bc # 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=arm64 olddefconfig COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash arch/arm64/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@intel.com> | Link: https://lore.kernel.org/oe-kbuild-all/202305020914.OGRWcEG1-lkp@intel.com/ All errors (new ones prefixed by >>): In file included from include/linux/build_bug.h:5, from include/linux/bits.h:21, from include/linux/bitops.h:6, from arch/arm64/include/asm/cache.h:39, from include/linux/cache.h:6, from arch/arm64/mm/mmu.c:9: arch/arm64/mm/mmu.c: In function 'pgd_pgtable_alloc': >> arch/arm64/mm/mmu.c:440:24: error: invalid use of void expression 440 | BUG_ON(!ptdesc_pte_dtor(ptdesc)); | ^ include/linux/compiler.h:78:45: note: in definition of macro 'unlikely' 78 | # define unlikely(x) __builtin_expect(!!(x), 0) | ^ arch/arm64/mm/mmu.c:440:17: note: in expansion of macro 'BUG_ON' 440 | BUG_ON(!ptdesc_pte_dtor(ptdesc)); | ^~~~~~ arch/arm64/mm/mmu.c:442:24: error: invalid use of void expression 442 | BUG_ON(!ptdesc_pte_dtor(ptdesc)); | ^ include/linux/compiler.h:78:45: note: in definition of macro 'unlikely' 78 | # define unlikely(x) __builtin_expect(!!(x), 0) | ^ arch/arm64/mm/mmu.c:442:17: note: in expansion of macro 'BUG_ON' 442 | BUG_ON(!ptdesc_pte_dtor(ptdesc)); | ^~~~~~ vim +440 arch/arm64/mm/mmu.c 425 426 static phys_addr_t pgd_pgtable_alloc(int shift) 427 { 428 phys_addr_t pa = __pgd_pgtable_alloc(shift); 429 struct ptdesc *ptdesc = page_ptdesc(phys_to_page(pa)); 430 431 /* 432 * Call proper page table ctor in case later we need to 433 * call core mm functions like apply_to_page_range() on 434 * this pre-allocated page table. 435 * 436 * We don't select ARCH_ENABLE_SPLIT_PMD_PTLOCK if pmd is 437 * folded, and if so ptdesc_pte_dtor() becomes nop. 438 */ 439 if (shift == PAGE_SHIFT) > 440 BUG_ON(!ptdesc_pte_dtor(ptdesc)); 441 else if (shift == PMD_SHIFT) 442 BUG_ON(!ptdesc_pte_dtor(ptdesc)); 443 444 return pa; 445 } 446
Hi Vishal, kernel test robot noticed the following build errors: [auto build test ERROR on akpm-mm/mm-everything] [also build test ERROR on linus/master next-20230428] [cannot apply to s390/features powerpc/next powerpc/fixes geert-m68k/for-next geert-m68k/for-linus v6.3] [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/Vishal-Moola-Oracle/mm-Add-PAGE_TYPE_OP-folio-functions/20230502-033042 base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything patch link: https://lore.kernel.org/r/20230501192829.17086-22-vishal.moola%40gmail.com patch subject: [PATCH v2 21/34] arm64: Convert various functions to use ptdescs config: arm64-randconfig-r023-20230430 (https://download.01.org/0day-ci/archive/20230502/202305021038.c9jfVDsv-lkp@intel.com/config) compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project b1465cd49efcbc114a75220b153f5a055ce7911f) 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 arm64 cross compiling tool for clang build # apt-get install binutils-aarch64-linux-gnu # https://github.com/intel-lab-lkp/linux/commit/8e9481b63b5773d7c914836dcd7fbec2449902bc git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Vishal-Moola-Oracle/mm-Add-PAGE_TYPE_OP-folio-functions/20230502-033042 git checkout 8e9481b63b5773d7c914836dcd7fbec2449902bc # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm64 olddefconfig COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash arch/arm64/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@intel.com> | Link: https://lore.kernel.org/oe-kbuild-all/202305021038.c9jfVDsv-lkp@intel.com/ All errors (new ones prefixed by >>): >> arch/arm64/mm/mmu.c:440:10: error: invalid argument type 'void' to unary expression BUG_ON(!ptdesc_pte_dtor(ptdesc)); ^~~~~~~~~~~~~~~~~~~~~~~~ include/asm-generic/bug.h:71:45: note: expanded from macro 'BUG_ON' #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0) ^~~~~~~~~ include/linux/compiler.h:78:42: note: expanded from macro 'unlikely' # define unlikely(x) __builtin_expect(!!(x), 0) ^ arch/arm64/mm/mmu.c:442:10: error: invalid argument type 'void' to unary expression BUG_ON(!ptdesc_pte_dtor(ptdesc)); ^~~~~~~~~~~~~~~~~~~~~~~~ include/asm-generic/bug.h:71:45: note: expanded from macro 'BUG_ON' #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0) ^~~~~~~~~ include/linux/compiler.h:78:42: note: expanded from macro 'unlikely' # define unlikely(x) __builtin_expect(!!(x), 0) ^ 2 errors generated. vim +/void +440 arch/arm64/mm/mmu.c 425 426 static phys_addr_t pgd_pgtable_alloc(int shift) 427 { 428 phys_addr_t pa = __pgd_pgtable_alloc(shift); 429 struct ptdesc *ptdesc = page_ptdesc(phys_to_page(pa)); 430 431 /* 432 * Call proper page table ctor in case later we need to 433 * call core mm functions like apply_to_page_range() on 434 * this pre-allocated page table. 435 * 436 * We don't select ARCH_ENABLE_SPLIT_PMD_PTLOCK if pmd is 437 * folded, and if so ptdesc_pte_dtor() becomes nop. 438 */ 439 if (shift == PAGE_SHIFT) > 440 BUG_ON(!ptdesc_pte_dtor(ptdesc)); 441 else if (shift == PMD_SHIFT) 442 BUG_ON(!ptdesc_pte_dtor(ptdesc)); 443 444 return pa; 445 } 446
diff --git a/arch/arm64/include/asm/tlb.h b/arch/arm64/include/asm/tlb.h index c995d1f4594f..6cb70c247e30 100644 --- a/arch/arm64/include/asm/tlb.h +++ b/arch/arm64/include/asm/tlb.h @@ -75,18 +75,20 @@ static inline void tlb_flush(struct mmu_gather *tlb) static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte, unsigned long addr) { - pgtable_pte_page_dtor(pte); - tlb_remove_table(tlb, pte); + struct ptdesc *ptdesc = page_ptdesc(pte); + + ptdesc_pte_dtor(ptdesc); + tlb_remove_ptdesc(tlb, ptdesc); } #if CONFIG_PGTABLE_LEVELS > 2 static inline void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmdp, unsigned long addr) { - struct page *page = virt_to_page(pmdp); + struct ptdesc *ptdesc = virt_to_ptdesc(pmdp); - pgtable_pmd_page_dtor(page); - tlb_remove_table(tlb, page); + ptdesc_pmd_dtor(ptdesc); + tlb_remove_ptdesc(tlb, ptdesc); } #endif @@ -94,7 +96,7 @@ static inline void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmdp, static inline void __pud_free_tlb(struct mmu_gather *tlb, pud_t *pudp, unsigned long addr) { - tlb_remove_table(tlb, virt_to_page(pudp)); + tlb_remove_ptdesc(tlb, virt_to_ptdesc(pudp)); } #endif diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c index af6bc8403ee4..5ba005fd607e 100644 --- a/arch/arm64/mm/mmu.c +++ b/arch/arm64/mm/mmu.c @@ -426,6 +426,7 @@ static phys_addr_t __pgd_pgtable_alloc(int shift) static phys_addr_t pgd_pgtable_alloc(int shift) { phys_addr_t pa = __pgd_pgtable_alloc(shift); + struct ptdesc *ptdesc = page_ptdesc(phys_to_page(pa)); /* * Call proper page table ctor in case later we need to @@ -433,12 +434,12 @@ static phys_addr_t pgd_pgtable_alloc(int shift) * this pre-allocated page table. * * We don't select ARCH_ENABLE_SPLIT_PMD_PTLOCK if pmd is - * folded, and if so pgtable_pmd_page_ctor() becomes nop. + * folded, and if so ptdesc_pte_dtor() becomes nop. */ if (shift == PAGE_SHIFT) - BUG_ON(!pgtable_pte_page_ctor(phys_to_page(pa))); + BUG_ON(!ptdesc_pte_dtor(ptdesc)); else if (shift == PMD_SHIFT) - BUG_ON(!pgtable_pmd_page_ctor(phys_to_page(pa))); + BUG_ON(!ptdesc_pte_dtor(ptdesc)); return pa; }
As part of the conversions to replace pgtable constructor/destructors with ptdesc equivalents, convert various page table functions to use ptdescs. Signed-off-by: Vishal Moola (Oracle) <vishal.moola@gmail.com> --- arch/arm64/include/asm/tlb.h | 14 ++++++++------ arch/arm64/mm/mmu.c | 7 ++++--- 2 files changed, 12 insertions(+), 9 deletions(-)