Lines Matching full:pmd
61 void ___pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd) in ___pmd_free_tlb() argument
63 struct page *page = virt_to_page(pmd); in ___pmd_free_tlb()
64 paravirt_release_pmd(__pa(pmd) >> PAGE_SHIFT); in ___pmd_free_tlb()
126 ptes in non-PAE, or shared PMD in PAE), then just copy the in pgd_ctor()
156 * kernel pmd is shared. If PAE were not to share the pmd a similar
172 * Also, if we're in a paravirt environment where the kernel pmd is
188 void pud_populate(struct mm_struct *mm, pud_t *pudp, pmd_t *pmd) in pud_populate() argument
190 paravirt_alloc_pmd(mm, __pa(pmd) >> PAGE_SHIFT); in pud_populate()
193 reserved at the pmd (PDPT) level. */ in pud_populate()
194 set_pud(pudp, __pud(__pa(pmd) | _PAGE_PRESENT)); in pud_populate()
235 pmd_t *pmd = (pmd_t *)__get_free_page(gfp); in preallocate_pmds() local
236 if (!pmd) in preallocate_pmds()
238 if (pmd && !pgtable_pmd_page_ctor(virt_to_page(pmd))) { in preallocate_pmds()
239 free_page((unsigned long)pmd); in preallocate_pmds()
240 pmd = NULL; in preallocate_pmds()
243 if (pmd) in preallocate_pmds()
245 pmds[i] = pmd; in preallocate_pmds()
257 * Mop up any pmd pages which may still be attached to the pgd.
258 * Normally they will be freed by munmap/exit_mmap, but any pmd we
267 pmd_t *pmd = (pmd_t *)pgd_page_vaddr(pgd); in mop_up_one_pmd() local
272 pmd_free(mm, pmd); in mop_up_one_pmd()
309 pmd_t *pmd = pmds[i]; in pgd_prepopulate_pmd() local
312 memcpy(pmd, (pmd_t *)pgd_page_vaddr(swapper_pg_dir[i]), in pgd_prepopulate_pmd()
315 pud_populate(mm, pud, pmd); in pgd_prepopulate_pmd()
336 pmd_t *pmd = pmds[i]; in pgd_prepopulate_user_pmd() local
338 memcpy(pmd, (pmd_t *)pgd_page_vaddr(*s_pgd), in pgd_prepopulate_user_pmd()
341 pud_populate(mm, u_pud, pmd); in pgd_prepopulate_user_pmd()
371 * shared kernel pmd. And this requires a whole page for pgd. in pgtable_cache_init()
378 * shared kernel pmd. Shared kernel pmd does not require a whole in pgtable_cache_init()
510 * We had a write-protection fault here and changed the pmd in pmdp_set_access_flags()
724 * pmd_set_huge - setup kernel PMD mapping
730 int pmd_set_huge(pmd_t *pmd, phys_addr_t addr, pgprot_t prot) in pmd_set_huge() argument
743 if (pmd_present(*pmd) && !pmd_huge(*pmd)) in pmd_set_huge()
746 set_pte((pte_t *)pmd, pfn_pte( in pmd_set_huge()
769 * pmd_clear_huge - clear kernel PMD mapping when it is set
771 * Returns 1 on success and 0 on failure (no PMD map is found).
773 int pmd_clear_huge(pmd_t *pmd) in pmd_clear_huge() argument
775 if (pmd_large(*pmd)) { in pmd_clear_huge()
776 pmd_clear(pmd); in pmd_clear_huge()
793 * pud_free_pmd_page - Clear pud entry and free pmd page.
804 pmd_t *pmd, *pmd_sv; in pud_free_pmd_page() local
808 pmd = (pmd_t *)pud_page_vaddr(*pud); in pud_free_pmd_page()
814 pmd_sv[i] = pmd[i]; in pud_free_pmd_page()
815 if (!pmd_none(pmd[i])) in pud_free_pmd_page()
816 pmd_clear(&pmd[i]); in pud_free_pmd_page()
833 pgtable_pmd_page_dtor(virt_to_page(pmd)); in pud_free_pmd_page()
834 free_page((unsigned long)pmd); in pud_free_pmd_page()
840 * pmd_free_pte_page - Clear pmd entry and free pte page.
841 * @pmd: Pointer to a PMD.
842 * @addr: Virtual address associated with pmd.
844 * Context: The pmd range has been unmapped and TLB purged.
847 int pmd_free_pte_page(pmd_t *pmd, unsigned long addr) in pmd_free_pte_page() argument
851 pte = (pte_t *)pmd_page_vaddr(*pmd); in pmd_free_pte_page()
852 pmd_clear(pmd); in pmd_free_pte_page()
871 * does not update sync'd pmd entries. See vmalloc_sync_one().
873 int pmd_free_pte_page(pmd_t *pmd, unsigned long addr) in pmd_free_pte_page() argument
875 return pmd_none(*pmd); in pmd_free_pte_page()