Lines Matching full:pmd
147 * consecutive sections. Remember for the last added PMD the last in vmemmap_use_new_sub_pmd()
148 * unused range in the populated PMD. in vmemmap_use_new_sub_pmd()
154 /* Returns true if the PMD is completely unused and can be freed. */
165 static int __ref modify_pte_table(pmd_t *pmd, unsigned long addr, in modify_pte_table() argument
174 pte = pte_offset_kernel(pmd, addr); in modify_pte_table()
204 static void try_free_pte_table(pmd_t *pmd, unsigned long start) in try_free_pte_table() argument
210 pte = pte_offset_kernel(pmd, start); in try_free_pte_table()
215 vmem_pte_free((unsigned long *) pmd_deref(*pmd)); in try_free_pte_table()
216 pmd_clear(pmd); in try_free_pte_table()
226 pmd_t *pmd; in modify_pmd_table() local
230 pmd = pmd_offset(pud, addr); in modify_pmd_table()
231 for (; addr < end; addr = next, pmd++) { in modify_pmd_table()
234 if (pmd_none(*pmd)) in modify_pmd_table()
236 if (pmd_leaf(*pmd)) { in modify_pmd_table()
240 vmem_free_pages(pmd_deref(*pmd), get_order(PMD_SIZE), altmap); in modify_pmd_table()
241 pmd_clear(pmd); in modify_pmd_table()
244 vmem_free_pages(pmd_deref(*pmd), get_order(PMD_SIZE), altmap); in modify_pmd_table()
245 pmd_clear(pmd); in modify_pmd_table()
249 } else if (pmd_none(*pmd)) { in modify_pmd_table()
254 set_pmd(pmd, __pmd(__pa(addr) | prot)); in modify_pmd_table()
269 set_pmd(pmd, __pmd(__pa(new_page) | prot)); in modify_pmd_table()
280 pmd_populate(&init_mm, pmd, pte); in modify_pmd_table()
281 } else if (pmd_leaf(*pmd)) { in modify_pmd_table()
286 ret = modify_pte_table(pmd, addr, next, add, direct, altmap); in modify_pmd_table()
290 try_free_pte_table(pmd, addr & PMD_MASK); in modify_pmd_table()
301 pmd_t *pmd; in try_free_pmd_table() local
304 pmd = pmd_offset(pud, start); in try_free_pmd_table()
305 for (i = 0; i < PTRS_PER_PMD; i++, pmd++) in try_free_pmd_table()
306 if (!pmd_none(*pmd)) in try_free_pmd_table()
318 pmd_t *pmd; in modify_pud_table() local
344 pmd = vmem_crst_alloc(_SEGMENT_ENTRY_EMPTY); in modify_pud_table()
345 if (!pmd) in modify_pud_table()
347 pud_populate(&init_mm, pud, pmd); in modify_pud_table()
568 pmd_t *pmd; in vmem_get_alloc_pte() local
593 pmd = vmem_crst_alloc(_SEGMENT_ENTRY_EMPTY); in vmem_get_alloc_pte()
594 if (!pmd) in vmem_get_alloc_pte()
596 pud_populate(&init_mm, pud, pmd); in vmem_get_alloc_pte()
600 pmd = pmd_offset(pud, addr); in vmem_get_alloc_pte()
601 if (pmd_none(*pmd)) { in vmem_get_alloc_pte()
607 pmd_populate(&init_mm, pmd, pte); in vmem_get_alloc_pte()
608 } else if (WARN_ON_ONCE(pmd_leaf(*pmd))) { in vmem_get_alloc_pte()
611 ptep = pte_offset_kernel(pmd, addr); in vmem_get_alloc_pte()