Lines Matching defs:pmd
93 static int vmap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
102 pte = pte_alloc_kernel_track(pmd, addr, mask);
126 static int vmap_try_huge_pmd(pmd_t *pmd, unsigned long addr, unsigned long end,
145 if (pmd_present(*pmd) && !pmd_free_pte_page(pmd, addr))
148 return pmd_set_huge(pmd, phys_addr, prot);
155 pmd_t *pmd;
158 pmd = pmd_alloc_track(&init_mm, pud, addr, mask);
159 if (!pmd)
164 if (vmap_try_huge_pmd(pmd, addr, next, phys_addr, prot,
170 if (vmap_pte_range(pmd, addr, next, phys_addr, prot, max_page_shift, mask))
172 } while (pmd++, phys_addr += (next - addr), addr = next, addr != end);
321 static void vunmap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
326 pte = pte_offset_kernel(pmd, addr);
337 pmd_t *pmd;
341 pmd = pmd_offset(pud, addr);
345 cleared = pmd_clear_huge(pmd);
346 if (cleared || pmd_bad(*pmd))
351 if (pmd_none_or_clear_bad(pmd))
353 vunmap_pte_range(pmd, addr, next, mask);
356 } while (pmd++, addr = next, addr != end);
458 static int vmap_pages_pte_range(pmd_t *pmd, unsigned long addr,
469 pte = pte_alloc_kernel_track(pmd, addr, mask);
493 pmd_t *pmd;
496 pmd = pmd_alloc_track(&init_mm, pud, addr, mask);
497 if (!pmd)
501 if (vmap_pages_pte_range(pmd, addr, next, prot, pages, nr, mask))
503 } while (pmd++, addr = next, addr != end);
666 pmd_t *pmd;
698 pmd = pmd_offset(pud, addr);
699 if (pmd_none(*pmd))
701 if (pmd_leaf(*pmd))
702 return pmd_page(*pmd) + ((addr & ~PMD_MASK) >> PAGE_SHIFT);
703 if (WARN_ON_ONCE(pmd_bad(*pmd)))
706 ptep = pte_offset_kernel(pmd, addr);