• Will Deacon's avatar
    ARM: hw_breakpoint: disable preemption during debug exception handling · 7e202696
    Will Deacon authored
    On ARM, debug exceptions occur in the form of data or prefetch aborts.
    One difference is that debug exceptions require access to per-cpu banked
    registers and data structures which are not saved in the low-level exception
    code. For kernels built with CONFIG_PREEMPT, there is an unlikely scenario
    that the debug handler ends up running on a different CPU from the one
    that originally signalled the event, resulting in random data being read
    from the wrong registers.
    
    This patch adds a debug_entry macro to the low-level exception handling
    code which checks whether the taken exception is a debug exception. If
    it is, the preempt count for the faulting process is incremented. After
    the debug handler has finished, the count is decremented.
    Acked-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    7e202696
entry-header.S 4.96 KB