On Thu, 3 Jul 2025 at 08:20, Heinrich Schuchardt <heinrich.schucha...@canonical.com> wrote: > > Carve out a function except_msg() to handle the output for most type of > interrupts. > > Consistently use 16 digits for printing the exception syndrome register > esr to match the register size. > > Signed-off-by: Heinrich Schuchardt <heinrich.schucha...@canonical.com> > ---
Reviewed-by: Ilias Apalodimas <ilias.apalodi...@linaro.org> > arch/arm/lib/interrupts_64.c | 72 ++++++++++++------------------------ > 1 file changed, 24 insertions(+), 48 deletions(-) > > diff --git a/arch/arm/lib/interrupts_64.c b/arch/arm/lib/interrupts_64.c > index 970f8b6831f..cc20528327b 100644 > --- a/arch/arm/lib/interrupts_64.c > +++ b/arch/arm/lib/interrupts_64.c > @@ -170,14 +170,18 @@ static bool smh_emulate_trap(struct pt_regs *regs) > return true; > } > > -/* > - * do_bad_sync handles the impossible case in the Synchronous Abort vector. > +/** > + * except_msg() - print exception message > + * > + * Print exception message, register contents, backtrace, loaded EFI images. > + * > + * @msg: message describing exception type > + * @pt_regs: registers > */ > -void do_bad_sync(struct pt_regs *pt_regs) > +static void except_msg(const char *msg, struct pt_regs *pt_regs) > { > efi_restore_gd(); > - printf("Bad mode in \"Synchronous Abort\" handler, esr 0x%08lx\n", > - pt_regs->esr); > + printf("%s handler, esr 0x%016lx\n", msg, pt_regs->esr); > show_regs(pt_regs); > if (CONFIG_IS_ENABLED(FRAMEPOINTER)) > show_backtrace(pt_regs); > @@ -185,18 +189,20 @@ void do_bad_sync(struct pt_regs *pt_regs) > panic("Resetting CPU ...\n"); > } > > +/* > + * do_bad_sync handles the impossible case in the Synchronous Abort vector. > + */ > +void do_bad_sync(struct pt_regs *pt_regs) > +{ > + except_msg("Bad mode in \"Synchronous Abort\"", pt_regs); > +} > + > /* > * do_bad_irq handles the impossible case in the Irq vector. > */ > void do_bad_irq(struct pt_regs *pt_regs) > { > - efi_restore_gd(); > - printf("Bad mode in \"Irq\" handler, esr 0x%08lx\n", pt_regs->esr); > - show_regs(pt_regs); > - if (CONFIG_IS_ENABLED(FRAMEPOINTER)) > - show_backtrace(pt_regs); > - show_efi_loaded_images(pt_regs); > - panic("Resetting CPU ...\n"); > + except_msg("Bad mode in \"Irq\"", pt_regs); > } > > /* > @@ -204,13 +210,7 @@ void do_bad_irq(struct pt_regs *pt_regs) > */ > void do_bad_fiq(struct pt_regs *pt_regs) > { > - efi_restore_gd(); > - printf("Bad mode in \"Fiq\" handler, esr 0x%08lx\n", pt_regs->esr); > - show_regs(pt_regs); > - if (CONFIG_IS_ENABLED(FRAMEPOINTER)) > - show_backtrace(pt_regs); > - show_efi_loaded_images(pt_regs); > - panic("Resetting CPU ...\n"); > + except_msg("Bad mode in \"Fiq\"", pt_regs); > } > > /* > @@ -218,13 +218,7 @@ void do_bad_fiq(struct pt_regs *pt_regs) > */ > void do_bad_error(struct pt_regs *pt_regs) > { > - efi_restore_gd(); > - printf("Bad mode in \"Error\" handler, esr 0x%08lx\n", pt_regs->esr); > - show_regs(pt_regs); > - if (CONFIG_IS_ENABLED(FRAMEPOINTER)) > - show_backtrace(pt_regs); > - show_efi_loaded_images(pt_regs); > - panic("Resetting CPU ...\n"); > + except_msg("Bad mode in \"Error\"", pt_regs); > } > > /* > @@ -236,7 +230,7 @@ void do_sync(struct pt_regs *pt_regs) > smh_emulate_trap(pt_regs)) > return; > efi_restore_gd(); > - printf("\"Synchronous Abort\" handler, esr 0x%08lx", pt_regs->esr); > + printf("\"Synchronous Abort\" handler, esr 0x%016lx", pt_regs->esr); > dump_far(pt_regs->esr); > printf("\n"); > show_regs(pt_regs); > @@ -251,13 +245,7 @@ void do_sync(struct pt_regs *pt_regs) > */ > void do_irq(struct pt_regs *pt_regs) > { > - efi_restore_gd(); > - printf("\"Irq\" handler, esr 0x%08lx\n", pt_regs->esr); > - show_regs(pt_regs); > - if (CONFIG_IS_ENABLED(FRAMEPOINTER)) > - show_backtrace(pt_regs); > - show_efi_loaded_images(pt_regs); > - panic("Resetting CPU ...\n"); > + except_msg("\"Irq\"", pt_regs); > } > > /* > @@ -265,13 +253,7 @@ void do_irq(struct pt_regs *pt_regs) > */ > void do_fiq(struct pt_regs *pt_regs) > { > - efi_restore_gd(); > - printf("\"Fiq\" handler, esr 0x%08lx\n", pt_regs->esr); > - show_regs(pt_regs); > - if (CONFIG_IS_ENABLED(FRAMEPOINTER)) > - show_backtrace(pt_regs); > - show_efi_loaded_images(pt_regs); > - panic("Resetting CPU ...\n"); > + except_msg("\"Fiq\"", pt_regs); > } > > /* > @@ -282,11 +264,5 @@ void do_fiq(struct pt_regs *pt_regs) > */ > void __weak do_error(struct pt_regs *pt_regs) > { > - efi_restore_gd(); > - printf("\"Error\" handler, esr 0x%08lx\n", pt_regs->esr); > - show_regs(pt_regs); > - if (CONFIG_IS_ENABLED(FRAMEPOINTER)) > - show_backtrace(pt_regs); > - show_efi_loaded_images(pt_regs); > - panic("Resetting CPU ...\n"); > + except_msg("\"Error\"", pt_regs); > } > -- > 2.48.1 >