[PATCH v2 1/1] riscv: reset after crash
Heinrich Schuchardt
xypron.glpk at gmx.de
Tue Sep 29 11:27:46 CEST 2020
On 29.09.20 10:22, Rick Chen wrote:
>> 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
>
Thanks for reviewing. Do you have a git repository and branch on which I
should rebase my patch? Or will you handle the rebase?
Best regards
Heinrich
More information about the U-Boot
mailing list