Re: [PATCH v13 12/22] mm: pagewalk: Allow walking without vma
From: kbuild test robot <hidden>
Date: 2019-10-27 08:01:20
Also in:
linux-mm, lkml, oe-kbuild-all
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 <redacted> 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':
quoted
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))
^~~~~~~quoted
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)
^~~~~~~quoted
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 Attachments
- .config.gz [application/gzip] 8654 bytes
- (unnamed) [text/plain] 176 bytes · preview