[PATCH] lib: sbi: Fix PMP CSR detection

Anup Patel Anup.Patel at wdc.com
Fri Sep 25 05:06:02 EDT 2020



> -----Original Message-----
> From: Anup Patel
> Sent: 25 September 2020 08:28
> To: Atish Patra <atishp at atishpatra.org>; Pragnesh Patel
> <pragnesh.patel at sifive.com>
> Cc: Yash Shah <yash.shah at sifive.com>; Bin Meng <bmeng.cn at gmail.com>;
> Sagar Shrikant Kadam <sagar.kadam at sifive.com>; OpenSBI
> <opensbi at lists.infradead.org>
> Subject: RE: [PATCH] lib: sbi: Fix PMP CSR detection
> 
> 
> 
> > -----Original Message-----
> > From: opensbi <opensbi-bounces at lists.infradead.org> On Behalf Of Atish
> > Patra
> > Sent: 25 September 2020 01:09
> > To: Pragnesh Patel <pragnesh.patel at sifive.com>
> > Cc: Yash Shah <yash.shah at sifive.com>; Bin Meng
> <bmeng.cn at gmail.com>;
> > Sagar Shrikant Kadam <sagar.kadam at sifive.com>; OpenSBI
> > <opensbi at lists.infradead.org>
> > Subject: Re: [PATCH] lib: sbi: Fix PMP CSR detection
> >
> > On Wed, Sep 23, 2020 at 12:36 AM Pragnesh Patel
> > <pragnesh.patel at sifive.com> wrote:
> > >
> > > HiFive unleashed currently implements fewer than 56 bits of physical
> > > address so existing PMP CSR detection is broken.
> > >
> > > PMP address register encodes bits 55-2 of a 56-bit physical address,
> > > Not all physical address bits may be implemented, So just check
> > > minimum 1 bit.
> > >
> > It's good to add .
> > As per the privilege spec,
> >
> > Are there any other usecase for PMP_ADDR_MASK in future? If not, we
> > can remove that as well.
> 
> Based on this fix, (as a separate test) it will be good if we can detect number
> of physical address bits implemented by RISC-V platform when atleast one
> PMPADDRx CSR is available. This will require PMP_ADDR_MASK define.
> 
> >
> > > Fixes: 74d1db706293 ("lib: sbi: Improve PMP CSR detection and
> > > progamming")
> > >
> > > Signed-off-by: Pragnesh Patel <pragnesh.patel at sifive.com>
> > > ---
> > >  lib/sbi/sbi_hart.c | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/lib/sbi/sbi_hart.c b/lib/sbi/sbi_hart.c index
> > > 4cbe8ce..6413194 100644
> > > --- a/lib/sbi/sbi_hart.c
> > > +++ b/lib/sbi/sbi_hart.c
> > > @@ -403,7 +403,7 @@ static void hart_detect_features(struct
> > > sbi_scratch
> > *scratch)
> > >         __check_csr_32(__csr + 32, __rdonly, __wrval, __field,
> > > __skip)
> > >
> > >         /* Detect number of PMP regions */
> > > -       __check_csr_64(CSR_PMPADDR0, 0, PMP_ADDR_MASK,
> pmp_count,
> > __pmp_skip);
> > > +       __check_csr_64(CSR_PMPADDR0, 0, 1UL, pmp_count, __pmp_skip);
> > >  __pmp_skip:
> > >
> > >         /* Detect number of MHPM counters */
> > > --
> > > 2.17.1
> > >
> > >
> > > --
> > > opensbi mailing list
> > > opensbi at lists.infradead.org
> > > http://lists.infradead.org/mailman/listinfo/opensbi
> >
> > Otherwise,
> >
> > Reviewed-by: Atish Patra <atish.patra at wdc.com>
> 
> Looks good to me.
> 
> Reviewed-by: Anup Patel <anup.patel at wdc.com>

Applied this patch to the riscv/opensbi repo

Thanks,
Anup



More information about the opensbi mailing list