[PATCH v6 0/4] Convert x86/mm/pat to generic page table apis

From: Vishal Moola (Oracle)

Date: Wed Feb 18 2026 - 21:04:19 EST


set_memory.c has a call to pagetable_free(), while the allocation sites
use get_free_pages(). This causes issues separately allocating ptdescs
from struct page.

It turns out that we can just use the appropriate generic pagetable
apis for allocation/freeing. This helps simplify and standardize the
code.

In the short term, this helps enable Matthew's work to allocate frozen
pagetables[1]. And in the long term, this will help us cleanly split
ptdesc allocations from struct page[2].

[1] https://lore.kernel.org/linux-mm/20251113140448.1814860-1-willy@xxxxxxxxxxxxx/
[2] https://lore.kernel.org/linux-mm/20251020001652.2116669-1-willy@xxxxxxxxxxxxx/

------

Based on current mm-new.

v6:
- Drop the renaming of *page* functions
- Use existing page table api instead of creating new apis
- Split the pmd and populate_pgd() changes into separate patches
- Reword the cover letter to describe the new approach

v5 link:
https://lore.kernel.org/all/20260211195233.368497-1-vishal.moola@xxxxxxxxx/

Vishal Moola (Oracle) (4):
x86/mm/pat: Convert pte code to use page table apis
x86/mm/pat: Convert pmd code to use page table apis
x86/mm/pat: Convert populate_pgd() to use page table apis
x86/mm/pat: Convert split_large_page() to use ptdescs

arch/x86/mm/pat/set_memory.c | 36 ++++++++++++++++++++++++------------
1 file changed, 24 insertions(+), 12 deletions(-)

--
2.53.0