[PATCH] lib: sbi: Remove xchg/cmpxchg implemented via lr/sc

Xiang W wxjstz at 126.com
Wed Nov 8 01:26:44 PST 2023


在 2023-11-08星期三的 00:09 -0800,Bo Gan写道:
> On 11/7/23 7:28 PM, Xiang W wrote:
> > lr/sc is part of the A extension. If the A extension is not supported,
> > lr/sc cannot be used. So remove xchg/cmpxchg.
> > 
> > Signed-off-by: Xiang W <wxjstz at 126.com>
> > ---
> >   lib/sbi/riscv_atomic.c | 106 ++---------------------------------------
> >   1 file changed, 4 insertions(+), 102 deletions(-)
> > 
> > diff --git a/lib/sbi/riscv_atomic.c b/lib/sbi/riscv_atomic.c
> > index 528686f..a143218 100644
> > --- a/lib/sbi/riscv_atomic.c
> > +++ b/lib/sbi/riscv_atomic.c
> > @@ -12,6 +12,10 @@
> >   #include <sbi/riscv_atomic.h>
> >   #include <sbi/riscv_barrier.h>
> >   +#ifndef __riscv_atomic
> > +#error "opensbi strongly relies on the A extension of RISC-V"
> > +#endif
> > +
> >   long atomic_read(atomic_t *atom)
> >   {
> Hi Xiang,
> 
> I like this patch. I'm new to OpenSBI mailing list, but I've been studying JH7110 (U74) for a while.
> I just want to add one more thing. Even if A extension is supported, we might still not able to use
> lr/sc. The U74MC has 1 S7 (M/U nommu) core and 4 U7 core (M/S/U). In the U74MC core complex manual
> https://starfivetech.com/uploads/u74mc_core_complex_manual_21G1.pdf, Chapter 3.6 states that the S7
> core does not have data cache, and LR/SC will generate a precise access exception, thus the only way
> for S7 and U7 to synchronize is amo.
Thanks for the feedback.

I'm a bit confused: doesn't your example prove that lr/sc doesn't work on a specific platform?
Why do you advise keeping?

Regards,
Xiang W
> 
> My advise is, if for any reason, that we decided to keep lr/sc, perhaps we can consider make it an
> optional feature that by default disable, but can be enabled at build time -- to make everyone happy.
> 
> Bo
> 




More information about the opensbi mailing list