Re: [PATCHv3 0/4] x86: Make 5-level paging support unconditional for x86-64

From: Ingo Molnar
Date: Fri May 16 2025 - 09:11:37 EST



* Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx> wrote:

> Both Intel and AMD CPUs support 5-level paging, which is expected to
> become more widely adopted in the future.
>
> Remove CONFIG_X86_5LEVEL.
>
> In preparation to that remove CONFIG_DYNAMIC_MEMORY_LAYOUT and make
> SPARSEMEM_VMEMMAP the only memory model.
>
> v3:
> - Drop few "#if CONFIG_PGTABLE_LEVELS >= 5";
> - Make PARAVIRT_XXL 64-bit explicitly and drop ifdefs
> to support PGTABLE_LEVELS < 5;
> - Add Reviewed-by tags from Ard;
> v2:
> - Fix 32-bit build by wrapping p4d_set_huge() and p4d_clear_huge() in
> #if CONFIG_PGTABLE_LEVELS > 4;
> - Rebased onto current tip/master;

Wow, -v1 was sent almost a year ago. :-)

> Kirill A. Shutemov (4):
> x86/64/mm: Always use dynamic memory layout
> x86/64/mm: Make SPARSEMEM_VMEMMAP the only memory model
> x86/64/mm: Make 5-level paging support unconditional
> x86/paravirt: Restrict PARAVIRT_XXL to 64-bit only

> 24 files changed, 14 insertions(+), 142 deletions(-)

Okay, this series makes a lot of sense, because in practice all major
distros have 5-level paging enabled:

.config.opensuse.default: CONFIG_X86_5LEVEL=y
.config.ubuntu.localinstall: CONFIG_X86_5LEVEL=y
.config.fedora.generic: CONFIG_X86_5LEVEL=y
.config.rhel.generic: CONFIG_X86_5LEVEL=y

So the !CONFIG_X86_5LEVEL case gets very little runtime testing by
distributions and users.

So I've applied the first two patches to tip:x86/core:

x86/mm/64: Always use dynamic memory layout
x86/mm/64: Make SPARSEMEM_VMEMMAP the only memory model

as they are fairly straightforward.

Patch #3:

x86/64/mm: Make 5-level paging support unconditional

... might have to wait until after v6.16-rc1, as it's a higher risk
patch.

x86/paravirt: Restrict PARAVIRT_XXL to 64-bit only

... and this one depends on patch #3.

Does this approach sound good to everyone?

Thanks,

Ingo