• Mark Rutland's avatar
    arm64: irq: allow FIQs to be handled · 3889ba70
    Mark Rutland authored
    On contemporary platforms we don't use FIQ, and treat any stray FIQ as a
    fatal event. However, some platforms have an interrupt controller wired
    to FIQ, and need to handle FIQ as part of regular operation.
    
    So that we can support both cases dynamically, this patch updates the
    FIQ exception handling code to operate the same way as the IRQ handling
    code, with its own handle_arch_fiq handler. Where a root FIQ handler is
    not registered, an unexpected FIQ exception will trigger the default FIQ
    handler, which will panic() as today. Where a root FIQ handler is
    registered, handling of the FIQ is deferred to that handler.
    
    As el0_fiq_invalid_compat is supplanted by el0_fiq, the former is
    removed. For !CONFIG_COMPAT builds we never expect to take an exception
    from AArch32 EL0, so we keep the common el0_fiq_invalid handler.
    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-7-mark.rutland@arm.comSigned-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    3889ba70
irq.c 2.85 KB