Lines Matching refs:walk
8 struct mm_walk *walk) in walk_pte_range() argument
12 const struct mm_walk_ops *ops = walk->ops; in walk_pte_range()
16 err = ops->pte_entry(pte, addr, addr + PAGE_SIZE, walk); in walk_pte_range()
30 struct mm_walk *walk) in walk_pmd_range() argument
34 const struct mm_walk_ops *ops = walk->ops; in walk_pmd_range()
41 if (pmd_none(*pmd) || !walk->vma) { in walk_pmd_range()
43 err = ops->pte_hole(addr, next, walk); in walk_pmd_range()
53 err = ops->pmd_entry(pmd, addr, next, walk); in walk_pmd_range()
64 split_huge_pmd(walk->vma, pmd, addr); in walk_pmd_range()
67 err = walk_pte_range(pmd, addr, next, walk); in walk_pmd_range()
76 struct mm_walk *walk) in walk_pud_range() argument
80 const struct mm_walk_ops *ops = walk->ops; in walk_pud_range()
87 if (pud_none(*pud) || !walk->vma) { in walk_pud_range()
89 err = ops->pte_hole(addr, next, walk); in walk_pud_range()
96 spinlock_t *ptl = pud_trans_huge_lock(pud, walk->vma); in walk_pud_range()
99 err = ops->pud_entry(pud, addr, next, walk); in walk_pud_range()
107 split_huge_pud(walk->vma, pud, addr); in walk_pud_range()
112 err = walk_pmd_range(pud, addr, next, walk); in walk_pud_range()
121 struct mm_walk *walk) in walk_p4d_range() argument
125 const struct mm_walk_ops *ops = walk->ops; in walk_p4d_range()
133 err = ops->pte_hole(addr, next, walk); in walk_p4d_range()
139 err = walk_pud_range(p4d, addr, next, walk); in walk_p4d_range()
148 struct mm_walk *walk) in walk_pgd_range() argument
152 const struct mm_walk_ops *ops = walk->ops; in walk_pgd_range()
155 pgd = pgd_offset(walk->mm, addr); in walk_pgd_range()
160 err = ops->pte_hole(addr, next, walk); in walk_pgd_range()
166 err = walk_p4d_range(pgd, addr, next, walk); in walk_pgd_range()
183 struct mm_walk *walk) in walk_hugetlb_range() argument
185 struct vm_area_struct *vma = walk->vma; in walk_hugetlb_range()
191 const struct mm_walk_ops *ops = walk->ops; in walk_hugetlb_range()
196 pte = huge_pte_offset(walk->mm, addr & hmask, sz); in walk_hugetlb_range()
199 err = ops->hugetlb_entry(pte, hmask, addr, next, walk); in walk_hugetlb_range()
201 err = ops->pte_hole(addr, next, walk); in walk_hugetlb_range()
212 struct mm_walk *walk) in walk_hugetlb_range() argument
226 struct mm_walk *walk) in walk_page_test() argument
228 struct vm_area_struct *vma = walk->vma; in walk_page_test()
229 const struct mm_walk_ops *ops = walk->ops; in walk_page_test()
232 return ops->test_walk(start, end, walk); in walk_page_test()
245 err = ops->pte_hole(start, end, walk); in walk_page_test()
252 struct mm_walk *walk) in __walk_page_range() argument
255 struct vm_area_struct *vma = walk->vma; in __walk_page_range()
258 if (walk->ops->hugetlb_entry) in __walk_page_range()
259 err = walk_hugetlb_range(start, end, walk); in __walk_page_range()
261 err = walk_pgd_range(start, end, walk); in __walk_page_range()
308 struct mm_walk walk = { in walk_page_range() local
317 if (!walk.mm) in walk_page_range()
320 lockdep_assert_held(&walk.mm->mmap_sem); in walk_page_range()
322 vma = find_vma(walk.mm, start); in walk_page_range()
325 walk.vma = NULL; in walk_page_range()
328 walk.vma = NULL; in walk_page_range()
331 walk.vma = vma; in walk_page_range()
335 err = walk_page_test(start, next, &walk); in walk_page_range()
348 if (walk.vma || walk.ops->pte_hole) in walk_page_range()
349 err = __walk_page_range(start, next, &walk); in walk_page_range()
359 struct mm_walk walk = { in walk_page_vma() local
367 if (!walk.mm) in walk_page_vma()
370 lockdep_assert_held(&walk.mm->mmap_sem); in walk_page_vma()
372 err = walk_page_test(vma->vm_start, vma->vm_end, &walk); in walk_page_vma()
377 return __walk_page_range(vma->vm_start, vma->vm_end, &walk); in walk_page_vma()