[PATCH] lib: sbi: Fix PMP address bits detection

Xiang W wxjstz at 126.com
Mon Nov 8 01:04:20 PST 2021


在 2021-11-08星期一的 10:36 +0530,Anup Patel写道:
> From: Vasan VS <vasan.vs at gmail.com>
> 
> We should ensure that pmpcfg0.pmp0cfg is set to zero before using
> pmpaddr0 CSR for detecting implemented PMP address bits.
Why? Disable PMP? Prevent the generated PMP from affecting program
execution? If so, I think the PMP configuration should be backed up
first, then tested, and finally restored

Regards,
Xiang W
> 
> Fixes: bf21632860b4 ("lib: sbi: Detect PMP granularity and number
> of address bits")
> Signed-off-by: Vasan VS <vasan.vs at gmail.com>
> Signed-off-by: Anup Patel <anup.patel at wdc.com>
> ---
>  lib/sbi/sbi_hart.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/lib/sbi/sbi_hart.c b/lib/sbi/sbi_hart.c
> index 8eb0c38..366066b 100644
> --- a/lib/sbi/sbi_hart.c
> +++ b/lib/sbi/sbi_hart.c
> @@ -339,6 +339,10 @@ static unsigned long
> hart_pmp_get_allowed_addr(void)
>         unsigned long val = 0;
>         struct sbi_trap_info trap = {0};
>  
> +       csr_write_allowed(CSR_PMPCFG0, (ulong)&trap, 0);
> +       if (trap.cause)
> +               return 0;
> +
>         csr_write_allowed(CSR_PMPADDR0, (ulong)&trap, PMP_ADDR_MASK);
>         if (!trap.cause) {
>                 val = csr_read_allowed(CSR_PMPADDR0, (ulong)&trap);
> -- 
> 2.25.1
> 
> 





More information about the opensbi mailing list