• Ard Biesheuvel's avatar
    arm64: head: cover entire kernel image in initial ID map · c3cee924
    Ard Biesheuvel authored
    As a first step towards avoiding the need to create, tear down and
    recreate the kernel virtual mapping with MMU and caches disabled, start
    by expanding the ID map so it covers the page tables as well as all
    executable code. This will allow us to populate the page tables with the
    MMU and caches on, and call KASLR init code before setting up the
    virtual mapping.
    
    Since this ID map is only needed at boot, create it as a temporary set
    of page tables, and populate the permanent ID map after enabling the MMU
    and caches. While at it, switch to read-only attributes for the where
    possible, as writable permissions are only needed for the initial kernel
    page tables. Note that on 4k granule configurations, the permanent ID
    map will now be reduced to a single page rather than a 2M block mapping.
    Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
    Link: https://lore.kernel.org/r/20220624150651.1358849-13-ardb@kernel.orgSigned-off-by: default avatarWill Deacon <will@kernel.org>
    c3cee924
mmu.c 45.2 KB