[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