From: Mark Rutland <mark.rutland@arm.com> To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: catalin.marinas@arm.com, james.morse@arm.com, marcan@marcan.st, mark.rutland@arm.com, maz@kernel.org, tglx@linutronix.de, will@kernel.org Subject: [PATCHv2 0/8] arm64: Support FIQ controller registration Date: Tue, 2 Mar 2021 10:12:03 +0000 [thread overview] Message-ID: <20210302101211.2328-1-mark.rutland@arm.com> (raw) Hector's M1 support series [1] shows that some platforms have critical interrupts wired to FIQ, and to support these platforms we need to support handling FIQ exceptions. Other contemporary platforms don't use FIQ (since e.g. this is usually routed to EL3), and as we never expect to take an FIQ, we have the FIQ vector cause a panic. Since the use of FIQ is a platform integration detail (which can differ across bare-metal and virtualized environments), we need be able to explicitly opt-in to handling FIQs while retaining the existing behaviour otherwise. This series adds a new set_handle_fiq() hook so that the FIQ controller can do so, and where no controller is registered the default handler will panic(). For consistency the set_handle_irq() code is made to do the same. The first couple of patches are from Marc's irq/drop-generic_irq_multi_handler branch [2] on kernel.org, and clean up CONFIG_GENERIC_IRQ_MULTI_HANDLER usage. The next four patches move arm64 over to a local set_handle_irq() implementation, which is written to share code with a set_handle_fiq() function in the last two patches. This adds a default handler which will directly panic() rather than branching to NULL if an IRQ is taken unexpectedly, and the boot-time panic in the absence of a handler is removed (for consistently with FIQ support added later). The penultimate patch reworks arm64's IRQ masking to always keep DAIF.[IF] in sync, so that we can treat IRQ and FIQ as equals. This is cherry-picked from Hector's reply [3] to the first version of this series. The final patch adds the low-level FIQ exception handling and registration mechanism atop the prior rework. I'm hoping that we can get the first 2 patches in as a preparatory cleanup for the next rc or so, and then the rest of the series can be rebased atop that. I've pushed the series out to my arm64/fiq branch [4] on kernel.org, also tagged as arm64-fiq-20210302, atop v5.12-rc1. Since v1 [5]: * Rebase to v5.12-rc1 * Pick up Hector's latest DAIF.[IF] patch * Use "root {IRQ,FIQ} handler" rather than "{IRQ,FIQ} controller" * Remove existing panic per Marc's comments * Log registered root handlers * Make default root handlers static * Remove redundant el0_fiq_invalid_compat, per Joey's comments Thanks, Mark. [1] https://http://lore.kernel.org/r/20210215121713.57687-1-marcan@marcan.st [2] https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git/log/?h=irq/drop-generic_irq_multi_handler [3] https://lore.kernel.org/r/20210219172530.45805-1-marcan@marcan.st [4] https://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git/log/?h=arm64/fiq [5] https://lore.kernel.org/r/20210219113904.41736-1-mark.rutland@arm.com Hector Martin (1): arm64: Always keep DAIF.[IF] in sync Marc Zyngier (5): ARM: ep93xx: Select GENERIC_IRQ_MULTI_HANDLER directly irqchip: Do not blindly select CONFIG_GENERIC_IRQ_MULTI_HANDLER genirq: Allow architectures to override set_handle_irq() fallback arm64: don't use GENERIC_IRQ_MULTI_HANDLER arm64: entry: factor irq triage logic into macros Mark Rutland (2): arm64: irq: rework root IRQ handler registration arm64: irq: allow FIQs to be handled arch/arm/Kconfig | 1 + arch/arm64/Kconfig | 1 - arch/arm64/include/asm/arch_gicv3.h | 2 +- arch/arm64/include/asm/assembler.h | 8 +-- arch/arm64/include/asm/daifflags.h | 10 ++-- arch/arm64/include/asm/irq.h | 4 ++ arch/arm64/include/asm/irqflags.h | 16 +++-- arch/arm64/kernel/entry.S | 114 +++++++++++++++++++++--------------- arch/arm64/kernel/irq.c | 35 ++++++++++- arch/arm64/kernel/process.c | 2 +- arch/arm64/kernel/smp.c | 1 + drivers/irqchip/Kconfig | 9 --- include/linux/irq.h | 2 + 13 files changed, 126 insertions(+), 79 deletions(-) -- 2.11.0
WARNING: multiple messages have this Message-ID (diff)
From: Mark Rutland <mark.rutland@arm.com> To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: mark.rutland@arm.com, catalin.marinas@arm.com, marcan@marcan.st, james.morse@arm.com, maz@kernel.org, tglx@linutronix.de, will@kernel.org Subject: [PATCHv2 0/8] arm64: Support FIQ controller registration Date: Tue, 2 Mar 2021 10:12:03 +0000 [thread overview] Message-ID: <20210302101211.2328-1-mark.rutland@arm.com> (raw) Hector's M1 support series [1] shows that some platforms have critical interrupts wired to FIQ, and to support these platforms we need to support handling FIQ exceptions. Other contemporary platforms don't use FIQ (since e.g. this is usually routed to EL3), and as we never expect to take an FIQ, we have the FIQ vector cause a panic. Since the use of FIQ is a platform integration detail (which can differ across bare-metal and virtualized environments), we need be able to explicitly opt-in to handling FIQs while retaining the existing behaviour otherwise. This series adds a new set_handle_fiq() hook so that the FIQ controller can do so, and where no controller is registered the default handler will panic(). For consistency the set_handle_irq() code is made to do the same. The first couple of patches are from Marc's irq/drop-generic_irq_multi_handler branch [2] on kernel.org, and clean up CONFIG_GENERIC_IRQ_MULTI_HANDLER usage. The next four patches move arm64 over to a local set_handle_irq() implementation, which is written to share code with a set_handle_fiq() function in the last two patches. This adds a default handler which will directly panic() rather than branching to NULL if an IRQ is taken unexpectedly, and the boot-time panic in the absence of a handler is removed (for consistently with FIQ support added later). The penultimate patch reworks arm64's IRQ masking to always keep DAIF.[IF] in sync, so that we can treat IRQ and FIQ as equals. This is cherry-picked from Hector's reply [3] to the first version of this series. The final patch adds the low-level FIQ exception handling and registration mechanism atop the prior rework. I'm hoping that we can get the first 2 patches in as a preparatory cleanup for the next rc or so, and then the rest of the series can be rebased atop that. I've pushed the series out to my arm64/fiq branch [4] on kernel.org, also tagged as arm64-fiq-20210302, atop v5.12-rc1. Since v1 [5]: * Rebase to v5.12-rc1 * Pick up Hector's latest DAIF.[IF] patch * Use "root {IRQ,FIQ} handler" rather than "{IRQ,FIQ} controller" * Remove existing panic per Marc's comments * Log registered root handlers * Make default root handlers static * Remove redundant el0_fiq_invalid_compat, per Joey's comments Thanks, Mark. [1] https://http://lore.kernel.org/r/20210215121713.57687-1-marcan@marcan.st [2] https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git/log/?h=irq/drop-generic_irq_multi_handler [3] https://lore.kernel.org/r/20210219172530.45805-1-marcan@marcan.st [4] https://git.kernel.org/pub/scm/linux/kernel/git/mark/linux.git/log/?h=arm64/fiq [5] https://lore.kernel.org/r/20210219113904.41736-1-mark.rutland@arm.com Hector Martin (1): arm64: Always keep DAIF.[IF] in sync Marc Zyngier (5): ARM: ep93xx: Select GENERIC_IRQ_MULTI_HANDLER directly irqchip: Do not blindly select CONFIG_GENERIC_IRQ_MULTI_HANDLER genirq: Allow architectures to override set_handle_irq() fallback arm64: don't use GENERIC_IRQ_MULTI_HANDLER arm64: entry: factor irq triage logic into macros Mark Rutland (2): arm64: irq: rework root IRQ handler registration arm64: irq: allow FIQs to be handled arch/arm/Kconfig | 1 + arch/arm64/Kconfig | 1 - arch/arm64/include/asm/arch_gicv3.h | 2 +- arch/arm64/include/asm/assembler.h | 8 +-- arch/arm64/include/asm/daifflags.h | 10 ++-- arch/arm64/include/asm/irq.h | 4 ++ arch/arm64/include/asm/irqflags.h | 16 +++-- arch/arm64/kernel/entry.S | 114 +++++++++++++++++++++--------------- arch/arm64/kernel/irq.c | 35 ++++++++++- arch/arm64/kernel/process.c | 2 +- arch/arm64/kernel/smp.c | 1 + drivers/irqchip/Kconfig | 9 --- include/linux/irq.h | 2 + 13 files changed, 126 insertions(+), 79 deletions(-) -- 2.11.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next reply other threads:[~2021-03-02 10:31 UTC|newest] Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-03-02 10:12 Mark Rutland [this message] 2021-03-02 10:12 ` [PATCHv2 0/8] arm64: Support FIQ controller registration Mark Rutland 2021-03-02 10:12 ` [PATCHv2 1/8] ARM: ep93xx: Select GENERIC_IRQ_MULTI_HANDLER directly Mark Rutland 2021-03-02 10:12 ` Mark Rutland 2021-03-02 10:12 ` [PATCHv2 2/8] irqchip: Do not blindly select CONFIG_GENERIC_IRQ_MULTI_HANDLER Mark Rutland 2021-03-02 10:12 ` Mark Rutland 2021-03-02 10:12 ` [PATCHv2 3/8] genirq: Allow architectures to override set_handle_irq() fallback Mark Rutland 2021-03-02 10:12 ` Mark Rutland 2021-03-02 10:12 ` [PATCHv2 4/8] arm64: don't use GENERIC_IRQ_MULTI_HANDLER Mark Rutland 2021-03-02 10:12 ` Mark Rutland 2021-03-02 10:12 ` [PATCHv2 5/8] arm64: irq: rework root IRQ handler registration Mark Rutland 2021-03-02 10:12 ` Mark Rutland 2021-03-02 10:12 ` [PATCHv2 6/8] arm64: entry: factor irq triage logic into macros Mark Rutland 2021-03-02 10:12 ` Mark Rutland 2021-03-02 10:12 ` [PATCHv2 7/8] arm64: Always keep DAIF.[IF] in sync Mark Rutland 2021-03-02 10:12 ` Mark Rutland 2021-03-02 10:12 ` [PATCHv2 8/8] arm64: irq: allow FIQs to be handled Mark Rutland 2021-03-02 10:12 ` Mark Rutland 2021-03-05 10:08 ` [PATCHv2 0/8] arm64: Support FIQ controller registration Hector Martin 2021-03-05 10:08 ` Hector Martin 2021-03-08 17:52 ` Mark Rutland 2021-03-08 17:52 ` Mark Rutland 2021-03-08 20:20 ` Marc Zyngier 2021-03-08 20:20 ` Marc Zyngier
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210302101211.2328-1-mark.rutland@arm.com \ --to=mark.rutland@arm.com \ --cc=catalin.marinas@arm.com \ --cc=james.morse@arm.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=marcan@marcan.st \ --cc=maz@kernel.org \ --cc=tglx@linutronix.de \ --cc=will@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.