Lines Matching defs:pgd
73 static inline void pgd_list_add(pgd_t *pgd)
75 struct page *page = virt_to_page(pgd);
80 static inline void pgd_list_del(pgd_t *pgd)
82 struct page *page = virt_to_page(pgd);
90 static void pgd_ctor(pgd_t *pgd)
92 /* If the pgd points to a shared pagetable level (either the
98 clone_pgd_range(pgd + KERNEL_PGD_BOUNDARY,
101 paravirt_alloc_pmd_clone(__pa(pgd) >> PAGE_SHIFT,
109 pgd_list_add(pgd);
112 static void pgd_dtor(pgd_t *pgd)
120 pgd_list_del(pgd);
125 * List of all pgd's needed for non-PAE so it can invalidate entries
126 * in both cached and uncached pgd's; not needed for PAE since the
161 * TLB via cr3 if the top-level pgd is changed...
203 * Mop up any pmd pages which may still be attached to the pgd.
213 pgd_t pgd = pgdp[i];
215 if (pgd_val(pgd) != 0) {
216 pmd_t *pmd = (pmd_t *)pgd_page_vaddr(pgd);
220 paravirt_release_pmd(pgd_val(pgd) >> PAGE_SHIFT);
226 static void pgd_prepopulate_pmd(struct mm_struct *mm, pgd_t *pgd, pmd_t *pmds[])
235 pud = pud_offset(pgd, 0);
251 pgd_t *pgd;
255 pgd = (pgd_t *)__get_free_page(PGALLOC_GFP);
257 if (pgd == NULL)
260 mm->pgd = pgd;
271 * never see a partially populated pgd.
275 pgd_ctor(pgd);
276 pgd_prepopulate_pmd(mm, pgd, pmds);
280 return pgd;
285 free_page((unsigned long)pgd);
290 void pgd_free(struct mm_struct *mm, pgd_t *pgd)
292 pgd_mop_up_pmds(mm, pgd);
293 pgd_dtor(pgd);
294 paravirt_pgd_free(mm, pgd);
295 free_page((unsigned long)pgd);