Re: [RFC V1 00/16] arm64/mm: Enable 128 bit page table entries
From: David Hildenbrand (Arm)
Date: Tue Apr 07 2026 - 10:51:25 EST
On 2/24/26 06:11, Anshuman Khandual wrote:
> FEAT_D128 is a new arm architecture feature adding support for VMSAv9-128
> translation system. FEAT_D128 is an optional feature from ARMV9.3 onwards.
> So with this feature arm64 platforms could have two different translation
> systems, VMSAv8-64 and VMSAv9-128 could selectively be enabled.
>
> FEAT_D128 adds 128 bit page table entries, thus supporting larger physical
> and virtual address range while also expanding available room for more MMU
> management feature bits both for HW and SW.
>
> This series has been split into two parts. Generic MM changes followed by
> arm64 platform changes, finally enabling D128 with a new config ARM64_D128.
>
> READ_ONCE() on page table entries get routed via level specific pxdp_get()
> helpers which platforms could then override when required. These accessors
> on arm64 platform help in ensuring page table accesses are performed in an
> atomic manner while reading 128 bit page table entries.
>
> All ARM64_VA_BITS and ARM64_PA_BITS combinations for all page sizes are now
> supported both on D64 and D128 translation regimes. Although new 56 bits VA
> space is not yet supported. Similarly FEAT_D128 skip level is not supported
> currently.
>
> Basic page table geometry has been changed with D128 as there are now fewer
> entries per level. Please refer to the following table for leaf entry sizes
>
> D64 D128
> ------------------------------------------------
> | PAGE_SIZE | PMD | PUD | PMD | PUD |
> -----------------------------|-----------------|
> | 4K | 2M | 1G | 1M | 256M |
> | 16K | 32M | 64G | 16M | 16G |
> | 64K | 512M | 4T | 256M | 1T |
> ------------------------------------------------
>
Interesting. That means user space will have it even harder to optimize
for THP sizes.
What's the effect on cont-pte? Do they still span the same number of
entries and there is effectively no change?
> From arm64 kernel features perspective KVM, KASAN and UNMAP_KERNEL_AT_EL0
> are currently not supported as well.
>
> Open Questions:
>
> - Do we need to support UNMAP_KERNEL_AT_EL0 with D128
> - Do we need to emulate traditional D64 sizes at PUD, PMD level with D128
It would certainly make user space interaction easier. But then, user
space already has to consider various PMD sizes (and is better of
querying /sys/kernel/mm/transparent_hugepage/hpage_pmd_size instead of
hardcoding it). s390x, for example, also has 1M PMD size.
I guess with "emulating" you mean something simple like always
allocating order-1 page tables that effectively have the same number of
page table entries?
The would be an option, but I recall that the pte_map_* infrastructure
currently expects that leaf page tables only ever span a single page.
So it wouldn't really give us a lot of easy benefit I guess.
--
Cheers,
David