[PATCH] lib: utils/reset: Hang the hart after RPMI system reset message
Samuel Holland
samuel.holland at sifive.com
Tue Sep 9 22:32:30 PDT 2025
Hi Rahul,
On 2025-09-03 9:43 AM, Rahul Pathak wrote:
> RPMI system reset is a posted message which
> does not wait for acknowledgement after sending
> the RPMI message to PuC. Call the sbi_hart_hang()
> to hang the hart after performing the system reset
> via RPMI message.
>
> Fixes: 6a26726e08e4 ("lib/utils: reset: Add RPMI System Reset driver")
> Reported-by: Anup Patel <apatel at ventanamicro.com>
> Signed-off-by: Rahul Pathak <rpathak at ventanamicro.com>
> ---
> lib/utils/reset/fdt_reset_rpmi.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/lib/utils/reset/fdt_reset_rpmi.c b/lib/utils/reset/fdt_reset_rpmi.c
> index edc53932ccc0..c29715d329c4 100644
> --- a/lib/utils/reset/fdt_reset_rpmi.c
> +++ b/lib/utils/reset/fdt_reset_rpmi.c
> @@ -7,6 +7,7 @@
> * Rahul Pathak <rpathak at ventanamicro.com>
> */
>
> +#include <sbi/sbi_hart.h>
> #include <sbi/sbi_error.h>
> #include <sbi/sbi_system.h>
> #include <sbi/sbi_console.h>
> @@ -56,6 +57,8 @@ static void rpmi_do_system_reset(u32 reset_type)
> if (ret)
> sbi_printf("system reset failed [type: %d]: ret: %d\n",
> reset_type, ret);
> +
> + sbi_hart_hang();
> }
If rpmi_do_system_reset() returns normally, the generic code will continue to
sbi_exit() and eventually sbi_hsm_hart_wait(). Was that problematic in some way?
You've added a Fixes tag, but it's not clear from the commit message what
problem you observed.
If allowing the driver's .system_reset callback to return is problematic (some
driver implementations hang, some don't), then we should mark the function type
as noreturn and update the remaining drivers as well.
Regards,
Samuel
More information about the opensbi
mailing list