mirror of
https://github.com/torvalds/linux.git
synced 2026-09-24 06:24:02 +02:00
x86/mm: Convert pgd_page_get_mm() to ptdescs
Convert pgd_page_get_mm() to ptdescs. Define struct ptdesc in our pgtable_types so that our declarations recognize ptdesc as an appropriate page table type. Now that all callers are using ptdescs, we can pass in that ptdesc to get the underlying mm_struct. Signed-off-by: Vishal Moola <vishal.moola@gmail.com> Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com> Reviewed-by: William Kucharski <william.kucharski@linux.dev> Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org> Link: https://patch.msgid.link/20260629185742.126987-8-vishal.moola@gmail.com
This commit is contained in:
parent
9c453f8784
commit
dd9850c916
|
|
@ -50,7 +50,7 @@ void ptdump_walk_user_pgd_level_checkwx(void);
|
|||
extern spinlock_t pgd_lock;
|
||||
extern struct list_head pgd_list;
|
||||
|
||||
extern struct mm_struct *pgd_page_get_mm(struct page *page);
|
||||
struct mm_struct *pgd_page_get_mm(struct ptdesc *pt);
|
||||
|
||||
extern pmdval_t early_pmd_flags;
|
||||
|
||||
|
|
|
|||
|
|
@ -512,7 +512,7 @@ static inline pgprot_t pgprot_large_2_4k(pgprot_t pgprot)
|
|||
return __pgprot(protval_large_2_4k(pgprot_val(pgprot)));
|
||||
}
|
||||
|
||||
|
||||
struct ptdesc;
|
||||
typedef struct page *pgtable_t;
|
||||
|
||||
extern pteval_t __supported_pte_mask;
|
||||
|
|
|
|||
|
|
@ -282,7 +282,7 @@ void arch_sync_kernel_mappings(unsigned long start, unsigned long end)
|
|||
spinlock_t *pgt_lock;
|
||||
|
||||
/* the pgt_lock only for Xen */
|
||||
pgt_lock = &pgd_page_get_mm(ptdesc_page(ptdesc))->page_table_lock;
|
||||
pgt_lock = &pgd_page_get_mm(ptdesc)->page_table_lock;
|
||||
|
||||
spin_lock(pgt_lock);
|
||||
vmalloc_sync_one(ptdesc_address(ptdesc), addr);
|
||||
|
|
|
|||
|
|
@ -152,7 +152,7 @@ static void sync_global_pgds_l5(unsigned long start, unsigned long end)
|
|||
|
||||
pgd = (pgd_t *)ptdesc_address(ptdesc) + pgd_index(addr);
|
||||
/* the pgt_lock only for Xen */
|
||||
pgt_lock = &pgd_page_get_mm(ptdesc_page(ptdesc))->page_table_lock;
|
||||
pgt_lock = &pgd_page_get_mm(ptdesc)->page_table_lock;
|
||||
spin_lock(pgt_lock);
|
||||
|
||||
if (!pgd_none(*pgd_ref) && !pgd_none(*pgd))
|
||||
|
|
@ -195,7 +195,7 @@ static void sync_global_pgds_l4(unsigned long start, unsigned long end)
|
|||
pgd = (pgd_t *)ptdesc_address(ptdesc) + pgd_index(addr);
|
||||
p4d = p4d_offset(pgd, addr);
|
||||
/* the pgt_lock only for Xen */
|
||||
pgt_lock = &pgd_page_get_mm(ptdesc_page(ptdesc))->page_table_lock;
|
||||
pgt_lock = &pgd_page_get_mm(ptdesc)->page_table_lock;
|
||||
spin_lock(pgt_lock);
|
||||
|
||||
if (!p4d_none(*p4d_ref) && !p4d_none(*p4d))
|
||||
|
|
|
|||
|
|
@ -74,9 +74,9 @@ static void pgd_set_mm(pgd_t *pgd, struct mm_struct *mm)
|
|||
virt_to_ptdesc(pgd)->pt_mm = mm;
|
||||
}
|
||||
|
||||
struct mm_struct *pgd_page_get_mm(struct page *page)
|
||||
struct mm_struct *pgd_page_get_mm(struct ptdesc *pt)
|
||||
{
|
||||
return page_ptdesc(page)->pt_mm;
|
||||
return pt->pt_mm;
|
||||
}
|
||||
|
||||
static void pgd_ctor(struct mm_struct *mm, pgd_t *pgd)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user