Lines Matching full:pmd

133 	 * consecutive sections. Remember for the last added PMD the last  in vmemmap_use_new_sub_pmd()
134 * unused range in the populated PMD. in vmemmap_use_new_sub_pmd()
140 /* Returns true if the PMD is completely unused and can be freed. */
151 static int __ref modify_pte_table(pmd_t *pmd, unsigned long addr, in modify_pte_table() argument
162 pte = pte_offset_kernel(pmd, addr); in modify_pte_table()
192 static void try_free_pte_table(pmd_t *pmd, unsigned long start) in try_free_pte_table() argument
198 pte = pte_offset_kernel(pmd, start); in try_free_pte_table()
203 vmem_pte_free(__va(pmd_deref(*pmd))); in try_free_pte_table()
204 pmd_clear(pmd); in try_free_pte_table()
213 pmd_t *pmd; in modify_pmd_table() local
220 pmd = pmd_offset(pud, addr); in modify_pmd_table()
221 for (; addr < end; addr = next, pmd++) { in modify_pmd_table()
224 if (pmd_none(*pmd)) in modify_pmd_table()
226 if (pmd_large(*pmd) && !add) { in modify_pmd_table()
230 vmem_free_pages(pmd_deref(*pmd), get_order(PMD_SIZE)); in modify_pmd_table()
231 pmd_clear(pmd); in modify_pmd_table()
234 vmem_free_pages(pmd_deref(*pmd), get_order(PMD_SIZE)); in modify_pmd_table()
235 pmd_clear(pmd); in modify_pmd_table()
239 } else if (pmd_none(*pmd)) { in modify_pmd_table()
244 pmd_val(*pmd) = addr | prot; in modify_pmd_table()
259 pmd_val(*pmd) = __pa(new_page) | prot; in modify_pmd_table()
270 pmd_populate(&init_mm, pmd, pte); in modify_pmd_table()
271 } else if (pmd_large(*pmd)) { in modify_pmd_table()
276 ret = modify_pte_table(pmd, addr, next, add, direct); in modify_pmd_table()
280 try_free_pte_table(pmd, addr & PMD_MASK); in modify_pmd_table()
292 pmd_t *pmd; in try_free_pmd_table() local
302 pmd = pmd_offset(pud, start); in try_free_pmd_table()
303 for (i = 0; i < PTRS_PER_PMD; i++, pmd++) in try_free_pmd_table()
304 if (!pmd_none(*pmd)) in try_free_pmd_table()
316 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()