[PATCH] lib: sbi: Detect support of entropy source

Anup Patel anup at brainfault.org
Mon Nov 3 19:50:31 PST 2025


On Tue, Sep 30, 2025 at 7:57 AM Xiang W <wxjstz at 126.com> wrote:
>
> Detect if entropy source, Zkr extension, is supported
> by the HART.
>
> Signed-off-by: Xiang W <wxjstz at 126.com>

We are already detecting the Zkr extension from the ISA string
in fdt_parse_isa_one_hart(). I don't see any value in trap-n-detect
Zkr.

Regards,
Anup

> ---
>  include/sbi/riscv_encoding.h |  3 +++
>  lib/sbi/sbi_hart.c           | 14 ++++++++++++++
>  2 files changed, 17 insertions(+)
>
> diff --git a/include/sbi/riscv_encoding.h b/include/sbi/riscv_encoding.h
> index 40a854e3..8ca607c0 100644
> --- a/include/sbi/riscv_encoding.h
> +++ b/include/sbi/riscv_encoding.h
> @@ -261,6 +261,9 @@
>  #define CSR_FRM                                0x002
>  #define CSR_FCSR                       0x003
>
> +/* User entropy source */
> +#define CSR_SEED                       0x015
> +
>  /* User Counters/Timers */
>  #define CSR_CYCLE                      0xc00
>  #define CSR_TIME                       0xc01
> diff --git a/lib/sbi/sbi_hart.c b/lib/sbi/sbi_hart.c
> index 1b50f671..ee655375 100644
> --- a/lib/sbi/sbi_hart.c
> +++ b/lib/sbi/sbi_hart.c
> @@ -983,6 +983,20 @@ __pmp_skip:
>
>  #undef __check_ext_csr
>
> +#define __check_ext_csr_w(__base_priv, __csr, __val, __ext)            \
> +       if (hfeatures->priv_version >= __base_priv) {                   \
> +               csr_write_allowed(__csr, &trap, __val);                 \
> +               if (!trap.cause)                                        \
> +                       __sbi_hart_update_extension(hfeatures,          \
> +                                                   __ext, true);       \
> +       }
> +
> +       /* Detect if hart supports Zkr (entropy source) */
> +       __check_ext_csr_w(SBI_HART_PRIV_VER_UNKNOWN,
> +                       CSR_SEED, 0, SBI_HART_EXT_ZKR);
> +
> +#undef __check_ext_csr_w
> +
>  #define __check_csr_existence(__csr, __csr_id)                         \
>         csr_read_allowed(__csr, &trap);                                 \
>         if (!trap.cause)                                                \
> --
> 2.47.3
>



More information about the opensbi mailing list