[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