[PATCH] lib: sbi_trap_v_ldst: Redirect unhandled traps

Anup Patel apatel at ventanamicro.com
Sun Jun 14 21:52:50 PDT 2026


On Fri, May 29, 2026 at 8:17 PM Michael Ellerman <mpe at kernel.org> wrote:
>
> When SBI is built with a compiler that doesn't support vector, the
> misaligned vector load/store emulation is not built in, the handlers are
> just stubs.
>
> Currently the stubs just return 0, causing sbi_trap_emulate_load() to
> return without incrementing mepc, meaning the instruction will just
> fault again, an infinite loop.
>
> Fix the stubs to use sbi_trap_redirect(), which forwards the trap to the
> previous mode, allowing it to be handled there.
>
> Fixes: c2acc5e5 ("lib: sbi_misaligned_ldst: Add handling of vector load/store")
> Signed-off-by: Michael Ellerman <mpe at kernel.org>

LGTM.

Reviewed-by: Anup Patel <anup at brainfault.org>

Applied this patch to the riscv/opensbi repo.

Thanks,
Anup

> ---
>  lib/sbi/sbi_trap_v_ldst.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/lib/sbi/sbi_trap_v_ldst.c b/lib/sbi/sbi_trap_v_ldst.c
> index f4d469dcf28884d0eecb4fdec61eee25895d55a0..1e4336f9db23e7b972d3430cdc52addb0fcdb817 100644
> --- a/lib/sbi/sbi_trap_v_ldst.c
> +++ b/lib/sbi/sbi_trap_v_ldst.c
> @@ -334,11 +334,13 @@ int sbi_misaligned_v_st_emulator(int wlen, union sbi_ldst_data in_val,
>  int sbi_misaligned_v_ld_emulator(int rlen, union sbi_ldst_data *out_val,
>                                  struct sbi_trap_context *tcntx)
>  {
> -       return 0;
> +       /* Unable to emulate, send trap to previous mode. */
> +       return sbi_trap_redirect(&tcntx->regs, &tcntx->trap);
>  }
>  int sbi_misaligned_v_st_emulator(int wlen, union sbi_ldst_data in_val,
>                                  struct sbi_trap_context *tcntx)
>  {
> -       return 0;
> +       /* Unable to emulate, send trap to previous mode. */
> +       return sbi_trap_redirect(&tcntx->regs, &tcntx->trap);
>  }
>  #endif /* OPENSBI_CC_SUPPORT_VECTOR */
>
> ---
> base-commit: 547a5bbda7c3ec0096a6c87809851f8c2df047d1
> change-id: 20260530-trap-redirect-4a66fae8aaff
>
>
> --
> opensbi mailing list
> opensbi at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi



More information about the opensbi mailing list