• Mark Rutland's avatar
    arm64: entry: fix EL1 debug transitions · 2a9b3e6a
    Mark Rutland authored
    In debug_exception_enter() and debug_exception_exit() we trace hardirqs
    on/off while RCU isn't guaranteed to be watching, and we don't save and
    restore the hardirq state, and so may return with this having changed.
    
    Handle this appropriately with new entry/exit helpers which do the bare
    minimum to ensure this is appropriately maintained, without marking
    debug exceptions as NMIs. These are placed in entry-common.c with the
    other entry/exit helpers.
    
    In future we'll want to reconsider whether some debug exceptions should
    be NMIs, but this will require a significant refactoring, and for now
    this should prevent issues with lockdep and RCU.
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Cc: Catalin Marins <catalin.marinas@arm.com>
    Cc: James Morse <james.morse@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20201130115950.22492-12-mark.rutland@arm.comSigned-off-by: default avatarWill Deacon <will@kernel.org>
    2a9b3e6a
fault.c 24.5 KB