Re: [PATCH v3 11/20] arm64: entry: move bad_mode() to entry-common.c
From: Will Deacon <will@kernel.org>
Date: 2021-06-04 17:44:52
On Fri, Jun 04, 2021 at 06:42:16PM +0100, Mark Rutland wrote:
On Fri, Jun 04, 2021 at 05:57:55PM +0100, Will Deacon wrote:quoted
On Tue, May 25, 2021 at 07:32:53PM +0100, Mark Rutland wrote:quoted
In subsequent patches we'll rework the way bad_mode is called by exception entry code. In preparation for this, let's move bad_mode() itself into entry-common.c. Let's also mark it as noinstr (e.g. to prevent it being kprobed), and let's also make the `handler` array a local variable, as this is only use by bad_mode(), and will be removed entirely in a subsequent patch. There should be no functional change as a result of this patch. Signed-off-by: Mark Rutland <mark.rutland@arm.com> Reviewed-by: Joey Gouly <joey.gouly@arm.com> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: James Morse <james.morse@arm.com> Cc: Marc Zyngier <maz@kernel.org> Cc: Will Deacon <will@kernel.org> --- arch/arm64/kernel/entry-common.c | 27 +++++++++++++++++++++++++++ arch/arm64/kernel/traps.c | 25 ------------------------- 2 files changed, 27 insertions(+), 25 deletions(-)diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c index 9c0ed05b98c4..25531a0b547e 100644 --- a/arch/arm64/kernel/entry-common.c +++ b/arch/arm64/kernel/entry-common.c@@ -22,6 +22,7 @@ #include <asm/processor.h> #include <asm/stacktrace.h> #include <asm/sysreg.h> +#include <asm/system_misc.h> /* * This is intended to match the logic in irqentry_enter(), handling the kernel@@ -159,6 +160,32 @@ static void do_interrupt_handler(struct pt_regs *regs, extern void (*handle_arch_irq)(struct pt_regs *); extern void (*handle_arch_fiq)(struct pt_regs *); +/* + * bad_mode handles the impossible case in the exception vector. This is always + * fatal. + */ +asmlinkage void noinstr bad_mode(struct pt_regs *regs, int reason, unsigned int esr) +{ + const char *handler[] = { + "Synchronous Abort", + "IRQ", + "FIQ", + "Error" + };If you're rejigging this array anyway, maybe initialising it as: [BAD_SYNC] = "Synchronous Abort", [BAD_IRQ] = ... might make it even clearer. Up to you.Since I'm removing the BAD_* definitions (and the array) in a latter patch, I'd prefer to leave this as-is here so that this clearly has no functional change.
Sure thing, I only spotted that after I'd already replied to this. Will _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel