• Ard Biesheuvel's avatar
    arm64: head: record the MMU state at primary entry · 9d7c13e5
    Ard Biesheuvel authored
    Prepare for being able to deal with primary entry with the MMU and
    caches enabled, by recording whether or not we entered with the MMU on
    in register x19 and in a global variable. (Note that setting this
    variable to '1' does not require cache invalidation, nor is it required
    for storing the bootargs in that case, so omit the cache maintenance).
    
    Since boot with the MMU and caches enabled is not permitted by the bare
    metal boot protocol, ensure that a diagnostic is emitted and a taint bit
    set if the MMU was found to be enabled on a non-EFI boot, and panic()
    once the console is likely to be up. We will make an exception for EFI
    boot later, which has strict requirements for the mapping of system
    memory, permitting us to relax the boot protocol and hand over from the
    EFI stub to the core kernel with MMU and caches left enabled.
    
    While at it, add 'pre_disable_mmu_workaround' macro invocations to
    init_kernel_el, as its manipulation of SCTLR_ELx may amount to disabling
    of the MMU after subsequent patches.
    Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
    Link: https://lore.kernel.org/r/20230111102236.1430401-4-ardb@kernel.orgSigned-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    9d7c13e5
head.S 24.3 KB