• Ard Biesheuvel's avatar
    arm64: mm: Use 48-bit virtual addressing for the permanent ID map · e6128a8e
    Ard Biesheuvel authored
    Even though we support loading kernels anywhere in 48-bit addressable
    physical memory, we create the ID maps based on the number of levels
    that we happened to configure for the kernel VA and user VA spaces.
    
    The reason for this is that the PGD/PUD/PMD based classification of
    translation levels, along with the associated folding when the number of
    levels is less than 5, does not permit creating a page table hierarchy
    of a set number of levels. This means that, for instance, on 39-bit VA
    kernels we need to configure an additional level above PGD level on the
    fly, and 36-bit VA kernels still only support 47-bit virtual addressing
    with this trick applied.
    
    Now that we have a separate helper to populate page table hierarchies
    that does not define the levels in terms of PUDS/PMDS/etc at all, let's
    reuse it to create the permanent ID map with a fixed VA size of 48 bits.
    Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
    Link: https://lore.kernel.org/r/20240214122845.2033971-64-ardb+git@google.comSigned-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    e6128a8e
proc.S 11 KB