• Pingfan Liu's avatar
    arm64/relocate_kernel: remove redundant code · 72789a4a
    Pingfan Liu authored
    Kernel startup entry point requires disabling MMU and D-cache.
    
    As for kexec-reboot, taking a close look at "msr sctlr_el1, x12" in
    __cpu_soft_restart as the following:
    
    -1. booted at EL1
    The instruction is enough to disable MMU and I/D cache for
    EL1 regime.
    
    -2. booted at EL2, using VHE
    Access to SCTLR_EL1 is redirected to SCTLR_EL2 in EL2.  So the instruction
    is enough to disable MMU and clear I+C bits for EL2 regime.
    
    -3. booted at EL2, not using VHE
    The instruction itself can not affect EL2 regime. But The hyp-stub doesn't
    enable the MMU and I/D cache for EL2 regime. And KVM also disable them for EL2
    regime when its unloaded, or execute a HVC_SOFT_RESTART call. So when
    kexec-reboot, the code in KVM has prepare the requirement.
    
    As a conclusion, disabling MMU and clearing I+C bits in
    SYM_CODE_START(arm64_relocate_new_kernel) is redundant, and can be removed
    Signed-off-by: default avatarPingfan Liu <kernelfans@gmail.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: Geoff Levand <geoff@infradead.org>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Marc Zyngier <maz@kernel.org>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Remi Denis-Courmont <remi.denis.courmont@huawei.com>
    Cc: Ard Biesheuvel <ardb@kernel.org>
    Cc: kvmarm@lists.cs.columbia.edu
    Link: https://lore.kernel.org/r/1598621998-20563-1-git-send-email-kernelfans@gmail.com
    To: linux-arm-kernel@lists.infradead.org
    Signed-off-by: default avatarWill Deacon <will@kernel.org>
    72789a4a
cpu-reset.S 1.43 KB