[PATCH v3 4/6] lib: sbi: hart: Move device tree features detection before trap-based checks

Anup Patel anup at brainfault.org
Thu May 7 21:53:17 PDT 2026


On Thu, May 7, 2026 at 11:38 PM Evgeny Voevodin
<evvoevod at tenstorrent.com> wrote:
>
> Smrnmi detection and enablement in the following commits will happen
> before any trap-based mechanism. As it relies on device tree, move
> sbi_platform_extensions_init() to the beginning of hart_detect_features().
>
> Signed-off-by: Evgeny Voevodin <evvoevod at tenstorrent.com>

LGTM.

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

Regards,
Anup

> ---
>  lib/sbi/sbi_hart.c | 16 ++++++++++------
>  1 file changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/lib/sbi/sbi_hart.c b/lib/sbi/sbi_hart.c
> index 4aefb759..781161e5 100644
> --- a/lib/sbi/sbi_hart.c
> +++ b/lib/sbi/sbi_hart.c
> @@ -522,6 +522,16 @@ static int hart_detect_features(struct sbi_scratch *scratch)
>         hfeatures->mhpm_mask = 0;
>         hfeatures->priv_version = SBI_HART_PRIV_VER_UNKNOWN;
>
> +       /*
> +        * Parse device tree extensions early, before any trap-based checks.
> +        * Needed to detect Smrnmi and install NMI handlers before CSR probes
> +        * that may trigger traps.
> +        */
> +       rc = sbi_platform_extensions_init(sbi_platform_thishart_ptr(),
> +                                         hfeatures);
> +       if (rc)
> +               return rc;
> +
>  #define __check_hpm_csr(__csr, __mask)                                           \
>         oldval = csr_read_allowed(__csr, &trap);                          \
>         if (!trap.cause) {                                                \
> @@ -676,12 +686,6 @@ __pmp_skip:
>
>  #undef __check_csr_existence
>
> -       /* Let platform populate extensions */
> -       rc = sbi_platform_extensions_init(sbi_platform_thishart_ptr(),
> -                                         hfeatures);
> -       if (rc)
> -               return rc;
> -
>         /* Zicntr should only be detected using traps */
>         __sbi_hart_update_extension(hfeatures, SBI_HART_EXT_ZICNTR,
>                             sbi_hart_has_csr(scratch, SBI_HART_CSR_CYCLE) &&
> --
> 2.43.0
>



More information about the opensbi mailing list