Hi Steven, Thank you for the patch! Yet something to improve: [auto build test ERROR on linus/master] [also build test ERROR on v5.4-rc4 next-20191025] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Steven-Price/Generic-page-walk-and-ptdump/20191027-140322 base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 5a1e843c66fa6438f389045981c37e4073917641 config: arc-defconfig (attached as .config) compiler: arc-elf-gcc (GCC) 7.4.0 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 GCC_VERSION=7.4.0 make.cross ARCH=arc If you fix the issue, kindly add following tag Reported-by: kbuild test robot All error/warnings (new ones prefixed by >>): In file included from arch/arc/include/asm/thread_info.h:16:0, from include/linux/thread_info.h:38, from include/asm-generic/preempt.h:5, from ./arch/arc/include/generated/asm/preempt.h:1, from include/linux/preempt.h:78, from include/linux/spinlock.h:51, from include/linux/mmzone.h:8, from include/linux/gfp.h:6, from include/linux/mm.h:10, from include/linux/pagewalk.h:5, from mm/pagewalk.c:2: mm/pagewalk.c: In function 'walk_pmd_range': >> include/asm-generic/pgtable-nopmd.h:49:35: error: 'pmd' is a pointer; did you mean to use '->'? #define pmd_val(x) (pud_val((x).pud)) ^ arch/arc/include/asm/page.h:65:21: note: in definition of macro 'pgd_val' #define pgd_val(x) (x) ^ include/asm-generic/pgtable-nopmd.h:49:24: note: in expansion of macro 'pud_val' #define pmd_val(x) (pud_val((x).pud)) ^~~~~~~ >> arch/arc/include/asm/pgtable.h:277:24: note: in expansion of macro 'pmd_val' #define pmd_leaf(x) (pmd_val(pmd) & _PAGE_HW_SZ) ^~~~~~~ >> mm/pagewalk.c:68:14: note: in expansion of macro 'pmd_leaf' } else if (pmd_leaf(*pmd)) { ^~~~~~~~ vim +/pmd_leaf +68 mm/pagewalk.c 28 29 static int walk_pmd_range(pud_t *pud, unsigned long addr, unsigned long end, 30 struct mm_walk *walk) 31 { 32 pmd_t *pmd; 33 unsigned long next; 34 const struct mm_walk_ops *ops = walk->ops; 35 int err = 0; 36 37 pmd = pmd_offset(pud, addr); 38 do { 39 again: 40 next = pmd_addr_end(addr, end); 41 if (pmd_none(*pmd)) { 42 if (ops->pte_hole) 43 err = ops->pte_hole(addr, next, walk); 44 if (err) 45 break; 46 continue; 47 } 48 /* 49 * This implies that each ->pmd_entry() handler 50 * needs to know about pmd_trans_huge() pmds 51 */ 52 if (ops->pmd_entry) 53 err = ops->pmd_entry(pmd, addr, next, walk); 54 if (err) 55 break; 56 57 /* 58 * Check this here so we only break down trans_huge 59 * pages when we _need_ to 60 */ 61 if (!ops->pte_entry) 62 continue; 63 64 if (walk->vma) { 65 split_huge_pmd(walk->vma, pmd, addr); 66 if (pmd_trans_unstable(pmd)) 67 goto again; > 68 } else if (pmd_leaf(*pmd)) { 69 continue; 70 } 71 72 err = walk_pte_range(pmd, addr, next, walk); 73 if (err) 74 break; 75 } while (pmd++, addr = next, addr != end); 76 77 return err; 78 } 79 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation