[PATCH] lib: sbi: Configure seed bits when MSECCFG is readable

Xiang W wxjstz at 126.com
Wed Jul 12 05:52:09 PDT 2023


在 2023-07-12星期三的 10:32 +0200,Samuel Ortiz写道:
> When MSECCFFG is not trapped, giving exclusive access to the SEED CSR to
> S-Mode (SSEED=1, USEED=0) seems like a reasonable default. It gives the
> Linux kernel the ability to add entropy to its randomness pool while
> preventing user mode from accessing it.
> 
> Eventually, this check will be enhanced with a check for the Zkr
> extensions through the riscv,isa-extensions dt-bindings.
> 
> Signed-off-by: Samuel Ortiz <sameo at rivosinc.com>
> ---
>  include/sbi/riscv_encoding.h |  5 +++++
>  lib/sbi/sbi_hart.c           | 13 +++++++++++++
>  2 files changed, 18 insertions(+)
> 
> diff --git a/include/sbi/riscv_encoding.h b/include/sbi/riscv_encoding.h
> index 4ebed97..6a66d32 100644
> --- a/include/sbi/riscv_encoding.h
> +++ b/include/sbi/riscv_encoding.h
> @@ -223,6 +223,9 @@
>  #define ENVCFG_CBIE_INV                        _UL(0x3)
>  #define ENVCFG_FIOM                    _UL(0x1)
>  
> +#define SECCFG_SSEED                   (_ULL(1) << 9)
> +#define SECCFG_USEED                   (_ULL(1) << 8)
> +
>  /* ===== User-level CSRs ===== */
>  
>  /* User Trap Setup (N-extension) */
> @@ -444,6 +447,8 @@
>  /* Machine Configuration */
>  #define CSR_MENVCFG                    0x30a
>  #define CSR_MENVCFGH                   0x31a
> +#define CSR_MSECCFG                    0x747
> +#define CSR_MSECCFGH                   0x757
>  
>  /* Machine Trap Handling */
>  #define CSR_MSCRATCH                   0x340
> diff --git a/lib/sbi/sbi_hart.c b/lib/sbi/sbi_hart.c
> index 0c27fd7..39af37c 100644
> --- a/lib/sbi/sbi_hart.c
> +++ b/lib/sbi/sbi_hart.c
> @@ -703,6 +703,19 @@ __mhpm_skip:
>                                         SBI_HART_EXT_SMSTATEEN, true);
>         }
>  
> +       if (hfeatures->priv_version >= SBI_HART_PRIV_VER_1_11) {
> +               val = csr_read_allowed(CSR_MSECCFG, (unsigned long)&trap);
> +               if (!trap.cause) {
> +                       /* Disable unprivileged access to the SEED CSR */
> +                       val &= ~SECCFG_USEED;
> +
> +                       /* Enable S-Mode access to the SEED CSR */
> +                       val |= SECCFG_SSEED;
> +
> +                       csr_write(CSR_MSECCFG, val);
add SBI_HART_EXT_ZKR to sbi_hart_extension_id2string/sbi_hart_extensions

Wait for "lib: utils: Add detector of Smepmp from ISA string in FDT" to merge,
then add Zkr's detection

Regards,
Xiang W
> +               }
> +       }
> +
>         /* Let platform populate extensions */
>         rc = sbi_platform_extensions_init(sbi_platform_thishart_ptr(),
>                                           hfeatures);
> 
> base-commit: ea6533ada828cf71b9359f566be0f9c640022543
> -- 
> 2.41.0
> 
> 



More information about the opensbi mailing list