• Mark Rutland's avatar
    arm64: irq: rework root IRQ handler registration · 8ff443ce
    Mark Rutland authored
    If we accidentally unmask IRQs before we've registered a root IRQ
    handler, handle_arch_irq will be NULL, and the IRQ exception handler
    will branch to a bogus address.
    
    To make this easier to debug, this patch initialises handle_arch_irq to
    a default handler which will panic(), making such problems easier to
    debug. When we add support for FIQ handlers, we can follow the same
    approach.
    
    When we add support for a root FIQ handler, it's possible to have root
    IRQ handler without an root FIQ handler, and in theory the inverse is
    also possible. To permit this, and to keep the IRQ/FIQ registration
    logic similar, this patch removes the panic in the absence of a root IRQ
    controller. Instead, set_handle_irq() logs when a handler is registered,
    which is sufficient for debug purposes.
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Tested-by: default avatarHector Martin <marcan@marcan.st>
    Cc: James Morse <james.morse@arm.com>
    Cc: Marc Zyngier <maz@kernel.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Will Deacon <will@kernel.org>
    Acked-by: default avatarWill Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20210315115629.57191-4-mark.rutland@arm.comSigned-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    8ff443ce
irq.c 2.45 KB