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

Xiang W wxjstz at 126.com
Thu Nov 11 07:17:28 PST 2021


在 2021-11-11星期四的 18:38 +0530,Anup Patel写道:
> 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

This code will be executed after each warm boot, pmpcfg0 may be locked,
and writing 0 may not work. I suggest to make this code execute once
through a static variable

Regards,
Xiang W
> 
> > 
> > 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