asm-generic: pgalloc: provide generic pmd_alloc_one() and pmd_free_one()
[linux-block.git] / arch / arm64 / include / asm / pgalloc.h
index 58e93583ddb64f2fb97155d2ed654ce453ddb2b2..7246d0a662e1abe2605e5f7f71b8cd4984f1d750 100644 (file)
 #include <asm/cacheflush.h>
 #include <asm/tlbflush.h>
 
-#include <asm-generic/pgalloc.h>       /* for pte_{alloc,free}_one */
+#include <asm-generic/pgalloc.h>
 
 #define PGD_SIZE       (PTRS_PER_PGD * sizeof(pgd_t))
 
 #if CONFIG_PGTABLE_LEVELS > 2
 
-static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long addr)
-{
-       gfp_t gfp = GFP_PGTABLE_USER;
-       struct page *page;
-
-       if (mm == &init_mm)
-               gfp = GFP_PGTABLE_KERNEL;
-
-       page = alloc_page(gfp);
-       if (!page)
-               return NULL;
-       if (!pgtable_pmd_page_ctor(page)) {
-               __free_page(page);
-               return NULL;
-       }
-       return page_address(page);
-}
-
-static inline void pmd_free(struct mm_struct *mm, pmd_t *pmdp)
-{
-       BUG_ON((unsigned long)pmdp & (PAGE_SIZE-1));
-       pgtable_pmd_page_dtor(virt_to_page(pmdp));
-       free_page((unsigned long)pmdp);
-}
-
 static inline void __pud_populate(pud_t *pudp, phys_addr_t pmdp, pudval_t prot)
 {
        set_pud(pudp, __pud(__phys_to_pud_val(pmdp) | prot));