[PATCH v2 1/1] riscv: reset after crash
Rick Chen
rickchen36 at gmail.com
Tue Sep 29 10:22:16 CEST 2020
> From: Heinrich Schuchardt [mailto:xypron.glpk at gmx.de]
> Sent: Sunday, September 27, 2020 7:21 AM
> To: Rick Jian-Zhi Chen(陳建志)
> Cc: Simon Glass; Sean Anderson; Bin Meng; u-boot at lists.denx.de; Heinrich Schuchardt
> Subject: [PATCH v2 1/1] riscv: reset after crash
>
> If an exception occurs on ARM or x86, we call panic() which will try to
> reset the board. Do the same on RISC-V.
>
> To avoid -Werror=format-zero-length move a '\n' to the string passed to
> panic. We don't need a message here as depending on CONFIG_PANIC_HANG we
> will either see
>
> ### ERROR ### Please RESET the board ###
>
> or
>
> resetting ...
>
> as next message.
>
> Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
> ---
> v2:
> Remove a superfluous message passed to panic().
> ---
> arch/riscv/lib/interrupts.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/arch/riscv/lib/interrupts.c b/arch/riscv/lib/interrupts.c
> index 8ff40f0f36..43b10a2b9b 100644
> --- a/arch/riscv/lib/interrupts.c
> +++ b/arch/riscv/lib/interrupts.c
> @@ -27,7 +27,7 @@ static void show_efi_loaded_images(uintptr_t epc)
> static void show_regs(struct pt_regs *regs)
> {
> #ifdef CONFIG_SHOW_REGS
> - printf("SP: " REG_FMT " GP: " REG_FMT " TP: " REG_FMT "\n",
> + printf("\nSP: " REG_FMT " GP: " REG_FMT " TP: " REG_FMT "\n",
> regs->sp, regs->gp, regs->tp);
> printf("T0: " REG_FMT " T1: " REG_FMT " T2: " REG_FMT "\n",
> regs->t0, regs->t1, regs->t2);
> @@ -45,7 +45,7 @@ static void show_regs(struct pt_regs *regs)
> regs->s7, regs->s8, regs->s9);
> printf("S10: " REG_FMT " S11: " REG_FMT " T3: " REG_FMT "\n",
> regs->s10, regs->s11, regs->t3);
> - printf("T4: " REG_FMT " T5: " REG_FMT " T6: " REG_FMT "\n\n",
> + printf("T4: " REG_FMT " T5: " REG_FMT " T6: " REG_FMT "\n",
> regs->t4, regs->t5, regs->t6);
> #endif
> }
> @@ -79,12 +79,12 @@ static void _exit_trap(ulong code, ulong epc, ulong tval, struct pt_regs *regs)
> printf("EPC: " REG_FMT " RA: " REG_FMT " TVAL: " REG_FMT "\n",
> epc, regs->ra, tval);
> if (gd->flags & GD_FLG_RELOC)
> - printf("EPC: " REG_FMT " RA: " REG_FMT " reloc adjusted\n\n",
> + printf("EPC: " REG_FMT " RA: " REG_FMT " reloc adjusted\n",
> epc - gd->reloc_off, regs->ra - gd->reloc_off);
>
> show_regs(regs);
> show_efi_loaded_images(epc);
> - hang();
> + panic("\n");
> }
>
> int interrupt_init(void)
> --
> 2.28.0
Reviewed-by: Rick Chen <rick at andestech.com>
BTW, it conflicts with Sean's [PATCH v3 0/7] riscv: Correctly handle
IPIs already pending upon boot
error: patch failed: arch/riscv/lib/interrupts.c:79
error: arch/riscv/lib/interrupts.c: patch does not apply
Patch failed at 0001 riscv: reset after crash
Thanks,
Rick
More information about the U-Boot
mailing list