[PATCH 0/2] lib: sbi: Fix Smrnmi/RNMI trap handling issues

Nia Su nia.su at sifive.com
Wed Sep 2 01:22:37 PDT 2026


On Tue, Sep 1, 2026 at 1:18 AM Evgeny Voevodin <evvoevod at tenstorrent.com> wrote:
>
> I tried this patch set on artificial setup on Whisper SW system simulator and it
> seems to solve issues discussed in [1].
>
> But I'd suggest to split this series to separate changes structurally and make
> backporting easier if needed:
>
>   1. Restore the Smrnmi context on non-retentive resume: extract
>      sbi_smrnmi_hart_init() and call it from sbi_hart_reinit(). This is the
>      actual fix and it is self contained, so anyone on a v1.9 based tree can
>      pick just this one.
>
>   2. The sbi_trap.c fix for the clobbered trap context (your patch 2/2). It
>      touches a different file and has its own Fixes tag, so it does not
>      depend on the rest.

Good suggestion. I’ll submit this change as a separate patch.

>   3. Change smrnmi_handlers_init from void to int, but keep the panic when
>      the platform does not provide the callback. Today a callback which
>      fails has no way to report it and NMIE is set anyway, so this is a fix
>      on its own.
>
>   4. Allow the NULL callback. This one changes what a platform is allowed to
>      skip, so I would prefer to discuss it separately: as was mentioned
>      earlier in the previous email thread [2], it would be nice to have a
>      level of control of a situation when platform forgot to initialize the
>      callback rather than just silently set NMIE and proceed. I can see these
>      distinct options to handle this:
>
>   a) Boot time output: based on a flag just print whether Smrnmi vectors are
>      initialized by platform explicitly or not
>
>          Smrnmi Vectors       : NULL     <-- or "Platform"
>
>   b) Warning print when Smrnmi is present and no callback is registered
>
>   c) Explicit opt out: platform which doesn't need to program vectors
>      explicitly sets a corresponding flag in sbi_platform to indicate this.
>      Without this flag set and when handlers are missing we panic like now,
>      and when the flag is set we go ahead and proceed to setting the NMIE bit.
>
>    I personally would go with a) and c) as this allows full control of what's
>    going on and catches errors early. What do you think?
>
> [1] https://lore.kernel.org/opensbi/CAHh=Yk_Sbd1MEH8tVshAOFQptEVKm0QZv+D7bJwMC80qvarVew@mail.gmail.com/
> [2] https://lore.kernel.org/opensbi/DIIOKVJ7SVHG.115EOM7LY36I1@tenstorrent.com/
>
>   Thanks,
>   Evgeny

I agree with your proposal to adopt options a) and c), and  I will follow the
implementation suggested in [2]

Thanks,
Nia



More information about the opensbi mailing list