[PATCH v2 0/3] Convert 64-bit x86/mm/pat to ptdescs

Vishal Moola (Oracle) posted 3 patches 1 week, 2 days ago
There is a newer version of this series
arch/x86/mm/pat/set_memory.c | 43 ++++++++++++++++++++----------------
1 file changed, 24 insertions(+), 19 deletions(-)
[PATCH v2 0/3] Convert 64-bit x86/mm/pat to ptdescs
Posted by Vishal Moola (Oracle) 1 week, 2 days ago
x86/mm/pat should be using ptdescs. One line has already been
converted to pagetable_free(), while the allocation sites use
get_free_pages(). This causes issues separately allocating ptdescs
from struct page.

These patches convert the allocation/free sites to use ptdescs. 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.

[1] https://lore.kernel.org/linux-mm/20251113140448.1814860-1-willy@infradead.org/
[2] https://lore.kernel.org/linux-mm/20251020001652.2116669-1-willy@infradead.org/T/#u

------

I've also tested this on a tree that separately allocates ptdescs. That
didn't find any lingering alloc/free issues.

I've realized that the pgd_list should also be using ptdescs (for 32bit
in this file). This can be done in a different patchset since there's
other users of pgd_list that still need to be converted.

Based on current mm-new.

v2:
  - Use pagetable_alloc() in populate_pgd() - in patch 2
  - Rename subject line to specify 64-bit (i.e. 32-bit wasn't converted)
  - Added reference links to the projects mentioned in the cover letter

Vishal Moola (Oracle) (3):
  x86/mm/pat: Convert pte code to use ptdescs
  x86/mm/pat: Convert pmd code to use ptdescs
  x86/mm/pat: Convert split_large_page() to use ptdescs

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

-- 
2.52.0
Re: [PATCH v2 0/3] Convert 64-bit x86/mm/pat to ptdescs
Posted by Mike Rapoport 1 week, 2 days ago
Hi Vishal,

On Wed, Jan 28, 2026 at 02:40:46PM -0800, Vishal Moola (Oracle) wrote:
> x86/mm/pat should be using ptdescs. One line has already been
> converted to pagetable_free(), while the allocation sites use
> get_free_pages(). This causes issues separately allocating ptdescs
> from struct page.
> 
> These patches convert the allocation/free sites to use ptdescs. 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.
> 
> [1] https://lore.kernel.org/linux-mm/20251113140448.1814860-1-willy@infradead.org/
> [2] https://lore.kernel.org/linux-mm/20251020001652.2116669-1-willy@infradead.org/T/#u
> 
> ------
> 
> I've also tested this on a tree that separately allocates ptdescs. That
> didn't find any lingering alloc/free issues.
> 
> I've realized that the pgd_list should also be using ptdescs (for 32bit
> in this file). This can be done in a different patchset since there's
> other users of pgd_list that still need to be converted.

Since Andrew merges cover-letter text into the first commit changelog, some
explanation about pgd_list should be a part of that combined changelog.
 
> Based on current mm-new.
> 
> v2:
>   - Use pagetable_alloc() in populate_pgd() - in patch 2
>   - Rename subject line to specify 64-bit (i.e. 32-bit wasn't converted)
>   - Added reference links to the projects mentioned in the cover letter
> 
> Vishal Moola (Oracle) (3):
>   x86/mm/pat: Convert pte code to use ptdescs
>   x86/mm/pat: Convert pmd code to use ptdescs
>   x86/mm/pat: Convert split_large_page() to use ptdescs
> 
>  arch/x86/mm/pat/set_memory.c | 43 ++++++++++++++++++++----------------
>  1 file changed, 24 insertions(+), 19 deletions(-)
> 
> -- 
> 2.52.0
> 

-- 
Sincerely yours,
Mike.