Lines Matching refs:pmd

332 	pmd_t *pmd;  in lookup_address_in_pgd()  local
347 pmd = pmd_offset(pud, address); in lookup_address_in_pgd()
348 if (pmd_none(*pmd)) in lookup_address_in_pgd()
352 if (pmd_large(*pmd) || !pmd_present(*pmd)) in lookup_address_in_pgd()
353 return (pte_t *)pmd; in lookup_address_in_pgd()
357 return pte_offset_kernel(pmd, address); in lookup_address_in_pgd()
449 pmd_t *pmd; in __set_pmd_pte() local
453 pmd = pmd_offset(pud, address); in __set_pmd_pte()
454 set_pte_atomic((pte_t *)pmd, pte); in __set_pmd_pte()
711 static bool try_to_free_pmd_page(pmd_t *pmd) in try_to_free_pmd_page() argument
716 if (!pmd_none(pmd[i])) in try_to_free_pmd_page()
719 free_page((unsigned long)pmd); in try_to_free_pmd_page()
735 static bool unmap_pte_range(pmd_t *pmd, unsigned long start, unsigned long end) in unmap_pte_range() argument
737 pte_t *pte = pte_offset_kernel(pmd, start); in unmap_pte_range()
746 if (try_to_free_pte_page((pte_t *)pmd_page_vaddr(*pmd))) { in unmap_pte_range()
747 pmd_clear(pmd); in unmap_pte_range()
753 static void __unmap_pmd_range(pud_t *pud, pmd_t *pmd, in __unmap_pmd_range() argument
756 if (unmap_pte_range(pmd, start, end)) in __unmap_pmd_range()
763 pmd_t *pmd = pmd_offset(pud, start); in unmap_pmd_range() local
772 __unmap_pmd_range(pud, pmd, start, pre_end); in unmap_pmd_range()
775 pmd++; in unmap_pmd_range()
782 if (pmd_large(*pmd)) in unmap_pmd_range()
783 pmd_clear(pmd); in unmap_pmd_range()
785 __unmap_pmd_range(pud, pmd, start, start + PMD_SIZE); in unmap_pmd_range()
788 pmd++; in unmap_pmd_range()
795 return __unmap_pmd_range(pud, pmd, start, end); in unmap_pmd_range()
858 static int alloc_pte_page(pmd_t *pmd) in alloc_pte_page() argument
864 set_pmd(pmd, __pmd(__pa(pte) | _KERNPG_TABLE)); in alloc_pte_page()
870 pmd_t *pmd = (pmd_t *)get_zeroed_page(GFP_KERNEL | __GFP_NOTRACK); in alloc_pmd_page() local
871 if (!pmd) in alloc_pmd_page()
874 set_pud(pud, __pud(__pa(pmd) | _KERNPG_TABLE)); in alloc_pmd_page()
880 unsigned num_pages, pmd_t *pmd, pgprot_t pgprot) in populate_pte() argument
884 pte = pte_offset_kernel(pmd, start); in populate_pte()
905 pmd_t *pmd; in populate_pmd() local
922 pmd = pmd_offset(pud, start); in populate_pmd()
923 if (pmd_none(*pmd)) in populate_pmd()
924 if (alloc_pte_page(pmd)) in populate_pmd()
927 populate_pte(cpa, start, pre_end, cur_pages, pmd, pgprot); in populate_pmd()
949 pmd = pmd_offset(pud, start); in populate_pmd()
951 set_pmd(pmd, __pmd(cpa->pfn | _PAGE_PSE | in populate_pmd()
963 pmd = pmd_offset(pud, start); in populate_pmd()
964 if (pmd_none(*pmd)) in populate_pmd()
965 if (alloc_pte_page(pmd)) in populate_pmd()
969 pmd, pgprot); in populate_pmd()