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

Anup Patel anup at brainfault.org
Thu Nov 11 05:08:08 PST 2021


On Mon, Nov 8, 2021 at 2:35 PM Xiang W <wxjstz at 126.com> wrote:
>
> 在 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

We don't need to save/restore PMP configuration here because it is
very early during HART feature detection.

For the rest refer,
https://github.com/riscv-software-src/opensbi/issues/225

Regards,
Anup

>
> 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