• Mark Rutland's avatar
    arm64: entry: consolidate Cortex-A76 erratum 1463225 workaround · 6459b846
    Mark Rutland authored
    The workaround for Cortex-A76 erratum 1463225 is split across the
    syscall and debug handlers in separate files. This structure currently
    forces us to do some redundant work for debug exceptions from EL0, is a
    little difficult to follow, and gets in the way of some future rework of
    the exception entry code as it requires exceptions to be unmasked late
    in the syscall handling path.
    
    To simplify things, and as a preparatory step for future rework of
    exception entry, this patch moves all the workaround logic into
    entry-common.c. As the debug handler only needs to run for EL1 debug
    exceptions, we no longer call it for EL0 debug exceptions, and no longer
    need to check user_mode(regs) as this is always false. For clarity
    cortex_a76_erratum_1463225_debug_handler() is changed to return bool.
    
    In the SVC path, the workaround is applied earlier, but this should have
    no functional impact as exceptions are still masked. In the debug path
    we run the fixup before explicitly disabling preemption, but we will not
    attempt to preempt before returning from the exception.
    
    There should be no functional change as a result of this patch.
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20210202120341.28858-1-mark.rutland@arm.comSigned-off-by: default avatarWill Deacon <will@kernel.org>
    6459b846
entry-common.c 12.1 KB