[PATCH v2] ARM: set !LPAE MAX_PHYSMEM_BITS to 32 and remove IO_36

Karl Mehltretter kmehltretter at gmail.com
Fri Jul 24 15:06:43 PDT 2026


On Fri, Jul 24, 2026 at 08:31:35PM +0100, Arnd Bergmann wrote:
> 
> I'm not sure why you remove remap_area_supersections() but keep
> create_36bit_mapping(). I would just remove that as well.

Sorry, my earlier explanation was confusing. create_36bit_mapping() is
not totally unreachable after this patch. The ARM EFI path can reach it
through:

    efi_create_mapping()
      -> create_mapping_late()
      -> create_36bit_mapping()

I verified this with a modified EDK2 build under QEMU that advertised an
aligned, write-back EFI runtime memory descriptor above 4 GiB. The
kernel successfully created the mapping and enabled EFI runtime
services.

Admittedly, this is a synthetic configuration. Stock ARM32 EDK2
restricts allocations to below 4 GiB, and I believe the AArch32 UEFI
specification requires RAM in the UEFI memory map to be identity-mapped
during boot services. The test setup is therefore probably not a
conforming real-world firmware configuration.

Maybe you want to keep create_36bit_mapping() because of that?

Alternatively, if this should be considered unsupported, I can remove
it in v3 as you suggested.

If create_36bit_mapping() remains, I will update the commit message to
clarify that the patch removes 36-bit I/O mappings, while retaining the
generic supersection mapping path for domain-0 memory mappings.

Thanks,
Karl



More information about the linux-arm-kernel mailing list