mirror of
https://github.com/torvalds/linux.git
synced 2026-05-26 16:12:59 +02:00
m68k: mm: Convert free_pointer_table() to use ptdescs
Motorola uses free_pointer_table() for page tables, so it should be using struct ptdesc, not struct page. This helps us prepare to allocate ptdescs as their own memory descriptor, and prepares to remove a user of page->lru. Signed-off-by: "Vishal Moola (Oracle)" <vishal.moola@gmail.com> Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org> Link: https://lore.kernel.org/20250611001255.527952-3-vishal.moola@gmail.com Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
This commit is contained in:
parent
72fe6dafaa
commit
5bea64689d
|
|
@ -202,21 +202,20 @@ int free_pointer_table(void *table, int type)
|
|||
{
|
||||
ptable_desc *dp;
|
||||
unsigned long ptable = (unsigned long)table;
|
||||
unsigned long page = ptable & PAGE_MASK;
|
||||
unsigned int mask = 1U << ((ptable - page)/ptable_size(type));
|
||||
unsigned long pt_addr = ptable & PAGE_MASK;
|
||||
unsigned int mask = 1U << ((ptable - pt_addr)/ptable_size(type));
|
||||
|
||||
dp = PD_PTABLE(page);
|
||||
dp = PD_PTABLE(pt_addr);
|
||||
if (PD_MARKBITS (dp) & mask)
|
||||
panic ("table already free!");
|
||||
|
||||
PD_MARKBITS (dp) |= mask;
|
||||
|
||||
if (PD_MARKBITS(dp) == ptable_mask(type)) {
|
||||
/* all tables in page are free, free page */
|
||||
/* all tables in ptdesc are free, free ptdesc */
|
||||
list_del(dp);
|
||||
mmu_page_dtor((void *)page);
|
||||
pagetable_dtor(virt_to_ptdesc((void *)page));
|
||||
free_page (page);
|
||||
mmu_page_dtor((void *)pt_addr);
|
||||
pagetable_dtor_free(virt_to_ptdesc((void *)pt_addr));
|
||||
return 1;
|
||||
} else if (ptable_list[type].next != dp) {
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user