ARM posts arm64 patches for 128-bit page table entries
FEAT_D128 support would let Linux use the VMSAv9-128 translation regime on ARMv9.3 hardware.
ARM engineer Anshuman Khandual has posted a 17-part series that adds Linux kernel support for FEAT_D128, the optional ARMv9.3 feature that introduces 128-bit page table entries under the VMSAv9-128 memory translation regime.
Platforms that implement FEAT_D128 gain two translation systems: the familiar VMSAv8-64 path and the new 128-bit one. Wider entries expand both physical and virtual address reach and free more bits in each descriptor for hardware and software MMU features. A new Kconfig option, ARM64_D128, selects the regime at build time. A kernel built that way will not fall back to 64-bit tables; if the CPU lacks FEAT_D128 it stops with a dedicated stuck-CPU reason.
VMSAv9-128 also changes page-table geometry. Each level holds half as many entries as under D64, so leaf mapping sizes shrink (for example, a 4K-page PMD maps 1M instead of 2M, and a PUD maps 256M instead of 1G). Some existing VA configurations therefore need five-level tables, and early fixmap setup gains a level accordingly. Contiguous-entry shifts and related macros are adjusted to match.
Because ordinary READ_ONCE and WRITE_ONCE cannot guarantee single-copy atomicity for 128-bit values on arm64, the series routes page-table loads and stores through level-specific helpers that the architecture can override (using ldp/stp once FEAT_LSE128 is present). Comparable wrappers cover cmpxchg, xchg, and protection-bit accessors. Printing helpers move into core MM so 128-bit descriptors format cleanly later.
D128 kernels require FEAT_S1PIE for permission indirection and will panic on boot without both features, much like a granule-size mismatch today. TTBR and PAR registers become 128-bit wide; the series clears them with the wider MSRR form while still using 64-bit accesses where PA remains capped at 52 bits. Full 52-bit VA/PA space and level-skipping that FEAT_D128 can offer are not enabled yet. TLB-by-range helpers also gain an abstraction so the new 128-bit TLBIP form can plug in without functional change for now.
The config stays off by default while the remaining plumbing lands. The work is a compile-time choice today, with an eye toward a possible future boot-time switch once the atomic helpers are in place.