[PATCH 0/9] Convert x86 pgd_lists to ptdescs

Vishal Moola posted 9 patches 2 days, 20 hours ago
Failed in applying to current master (apply log)
There is a newer version of this series
arch/x86/include/asm/pgtable.h       |  2 +-
arch/x86/include/asm/pgtable_types.h |  2 +-
arch/x86/mm/fault.c                  |  8 ++++----
arch/x86/mm/init_64.c                | 16 ++++++++--------
arch/x86/mm/pat/set_memory.c         | 17 ++++++++---------
arch/x86/mm/pgtable.c                |  4 ++--
arch/x86/xen/mmu_pv.c                | 22 +++++++++++-----------
7 files changed, 35 insertions(+), 36 deletions(-)
[PATCH 0/9] Convert x86 pgd_lists to ptdescs
Posted by Vishal Moola 2 days, 20 hours ago
This continues the ptdesc conversions for x86[1]. This is a necessary step
in preparation for the separate allocation of ptdescs from struct page.
Once ptdescs are not wrappers, the pgd_list should be used to find our
ptdesc, not page.

In fact, after patch 4 we can successfully boot a 32-bit x86 kernel
that separately allocates ptdescs.

All of the patches are rather straightforward, I just kept them split up
for ease of review. There are no intended functional changes as ptdescs
are currently still wrappers around struct page.

[1] https://lore.kernel.org/linux-mm/20260211195233.368497-1-vishal.moola@gmail.com/

----------------

I've compiled and booted both 64 and 32 bit on a kernel with separately
allocated ptdescs. I ensured the codepaths were hit for all the changes
except Xen.

This applies cleanly to the tip bot. I'm thinking this can go through
Dave's mm.

Vishal Moola (9):
  x86/mm/pat: Use IS_ENABLED() instead of ifdef
  x86/mm/pat: Convert __set_pmd_pte() to ptdescs
  x86/mm/pat: Convert collapse_pmd_page() to ptdescs
  x86/mm: Convert arch_sync_kernel_mappings() to ptdescs
  x86/mm: Convert sync_global_pgds_l5() to ptdescs
  x86/mm: Convert sync_global_pgds_l4() to ptdescs
  x86/mm: Convert pgd_page_get_mm() to ptdescs
  x86/xen: Convert xen_mm_pin_all() to ptdescs
  x86/xen: Convert xen_mm_unpin_all() to ptdescs

 arch/x86/include/asm/pgtable.h       |  2 +-
 arch/x86/include/asm/pgtable_types.h |  2 +-
 arch/x86/mm/fault.c                  |  8 ++++----
 arch/x86/mm/init_64.c                | 16 ++++++++--------
 arch/x86/mm/pat/set_memory.c         | 17 ++++++++---------
 arch/x86/mm/pgtable.c                |  4 ++--
 arch/x86/xen/mmu_pv.c                | 22 +++++++++++-----------
 7 files changed, 35 insertions(+), 36 deletions(-)

-- 
2.54.0
Re: [PATCH 0/9] Convert x86 pgd_lists to ptdescs
Posted by William Kucharski 1 day, 19 hours ago
Looks great!

Reviewed-by: William Kucharski <william.kucharski@linux.dev>

> On May 27, 2026, at 08:03, Vishal Moola <vishal.moola@gmail.com> wrote:
> 
> This continues the ptdesc conversions for x86[1]. This is a necessary step
> in preparation for the separate allocation of ptdescs from struct page.
> Once ptdescs are not wrappers, the pgd_list should be used to find our
> ptdesc, not page.
> 
> In fact, after patch 4 we can successfully boot a 32-bit x86 kernel
> that separately allocates ptdescs.
> 
> All of the patches are rather straightforward, I just kept them split up
> for ease of review. There are no intended functional changes as ptdescs
> are currently still wrappers around struct page.
> 
> [1] https://lore.kernel.org/linux-mm/20260211195233.368497-1-vishal.moola@gmail.com/
> 
> ----------------
> 
> I've compiled and booted both 64 and 32 bit on a kernel with separately
> allocated ptdescs. I ensured the codepaths were hit for all the changes
> except Xen.
> 
> This applies cleanly to the tip bot. I'm thinking this can go through
> Dave's mm.
> 
> Vishal Moola (9):
>  x86/mm/pat: Use IS_ENABLED() instead of ifdef
>  x86/mm/pat: Convert __set_pmd_pte() to ptdescs
>  x86/mm/pat: Convert collapse_pmd_page() to ptdescs
>  x86/mm: Convert arch_sync_kernel_mappings() to ptdescs
>  x86/mm: Convert sync_global_pgds_l5() to ptdescs
>  x86/mm: Convert sync_global_pgds_l4() to ptdescs
>  x86/mm: Convert pgd_page_get_mm() to ptdescs
>  x86/xen: Convert xen_mm_pin_all() to ptdescs
>  x86/xen: Convert xen_mm_unpin_all() to ptdescs
> 
> arch/x86/include/asm/pgtable.h       |  2 +-
> arch/x86/include/asm/pgtable_types.h |  2 +-
> arch/x86/mm/fault.c                  |  8 ++++----
> arch/x86/mm/init_64.c                | 16 ++++++++--------
> arch/x86/mm/pat/set_memory.c         | 17 ++++++++---------
> arch/x86/mm/pgtable.c                |  4 ++--
> arch/x86/xen/mmu_pv.c                | 22 +++++++++++-----------
> 7 files changed, 35 insertions(+), 36 deletions(-)
> 
> -- 
> 2.54.0
> 
> 
Re: [PATCH 0/9] Convert x86 pgd_lists to ptdescs
Posted by Mike Rapoport 1 day, 21 hours ago
On Wed, May 27, 2026 at 03:03:07PM +0100, Vishal Moola wrote:
> This continues the ptdesc conversions for x86[1]. This is a necessary step
> in preparation for the separate allocation of ptdescs from struct page.
> Once ptdescs are not wrappers, the pgd_list should be used to find our
> ptdesc, not page.
> 
> In fact, after patch 4 we can successfully boot a 32-bit x86 kernel
> that separately allocates ptdescs.
> 
> All of the patches are rather straightforward, I just kept them split up
> for ease of review. There are no intended functional changes as ptdescs
> are currently still wrappers around struct page.

Looks straightforward to me indeed :)

Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org>

> [1] https://lore.kernel.org/linux-mm/20260211195233.368497-1-vishal.moola@gmail.com/
> 
> ----------------
> 
> I've compiled and booted both 64 and 32 bit on a kernel with separately
> allocated ptdescs. I ensured the codepaths were hit for all the changes
> except Xen.
> 
> This applies cleanly to the tip bot. I'm thinking this can go through
> Dave's mm.
> 
> Vishal Moola (9):
>   x86/mm/pat: Use IS_ENABLED() instead of ifdef
>   x86/mm/pat: Convert __set_pmd_pte() to ptdescs
>   x86/mm/pat: Convert collapse_pmd_page() to ptdescs
>   x86/mm: Convert arch_sync_kernel_mappings() to ptdescs
>   x86/mm: Convert sync_global_pgds_l5() to ptdescs
>   x86/mm: Convert sync_global_pgds_l4() to ptdescs
>   x86/mm: Convert pgd_page_get_mm() to ptdescs
>   x86/xen: Convert xen_mm_pin_all() to ptdescs
>   x86/xen: Convert xen_mm_unpin_all() to ptdescs
> 
>  arch/x86/include/asm/pgtable.h       |  2 +-
>  arch/x86/include/asm/pgtable_types.h |  2 +-
>  arch/x86/mm/fault.c                  |  8 ++++----
>  arch/x86/mm/init_64.c                | 16 ++++++++--------
>  arch/x86/mm/pat/set_memory.c         | 17 ++++++++---------
>  arch/x86/mm/pgtable.c                |  4 ++--
>  arch/x86/xen/mmu_pv.c                | 22 +++++++++++-----------
>  7 files changed, 35 insertions(+), 36 deletions(-)
> 
> -- 
> 2.54.0
> 

-- 
Sincerely yours,
Mike.