Lines Matching defs:pmd
41 static unsigned long change_pte_range(struct vm_area_struct *vma, pmd_t *pmd,
56 * prot_numa so we must check the pmd isn't constantly
60 if (pmd_trans_unstable(pmd))
64 * The pmd points to a regular pte so the pmd can't change
68 pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl);
201 static inline int pmd_none_or_clear_bad_unless_trans_huge(pmd_t *pmd)
203 pmd_t pmdval = pmd_read_atomic(pmd);
215 pmd_clear_bad(pmd);
226 pmd_t *pmd;
234 pmd = pmd_offset(pud, addr);
248 if (!is_swap_pmd(*pmd) && !pmd_devmap(*pmd) &&
249 pmd_none_or_clear_bad_unless_trans_huge(pmd))
252 /* invoke the mmu notifier if the pmd is populated */
260 if (is_swap_pmd(*pmd) || pmd_trans_huge(*pmd) || pmd_devmap(*pmd)) {
262 __split_huge_pmd(vma, pmd, addr, false, NULL);
264 int nr_ptes = change_huge_pmd(vma, pmd, addr,
273 /* huge pmd was handled */
277 /* fall through, the trans huge pmd just split */
279 this_pages = change_pte_range(vma, pmd, addr, next, newprot,
284 } while (pmd++, addr = next, addr != end);