+ Justin He as Jerin requested. 

> -----Original Message-----
> From: Jerin Jacob <[email protected]>
> Sent: Thursday, September 20, 2018 2:41 PM
> To: Gavin Hu (Arm Technology China) <[email protected]>
> Cc: [email protected]; Honnappa Nagarahalli
> <[email protected]>; Steve Capper
> <[email protected]>; Ola Liljedahl <[email protected]>; nd
> <[email protected]>; [email protected]; [email protected]
> Subject: Re: [PATCH v4 2/4] ring: read tail using atomic load
> 
> -----Original Message-----
> > Date: Mon, 17 Sep 2018 16:11:17 +0800
> > From: Gavin Hu <[email protected]>
> > To: [email protected]
> > CC: [email protected], [email protected],
> > [email protected],  [email protected],
> > [email protected], [email protected],  [email protected]
> > Subject: [PATCH v4 2/4] ring: read tail using atomic load
> > X-Mailer: git-send-email 2.7.4
> >
> >
> > In update_tail, read ht->tail using __atomic_load.Although the
> > compiler currently seems to be doing the right thing even without
> > _atomic_load, we don't want to give the compiler freedom to optimise
> > what should be an atomic load, it should not be arbitarily moved
> > around.
> >
> > Fixes: 39368ebfc6 ("ring: introduce C11 memory model barrier option")
> > Cc: [email protected]
> 
> 
> + Jia He <[email protected]>
> 
> >
> > Signed-off-by: Gavin Hu <[email protected]>
> > Reviewed-by: Honnappa Nagarahalli <[email protected]>
> > Reviewed-by: Steve Capper <[email protected]>
> > Reviewed-by: Ola Liljedahl <[email protected]>
> > ---
> >  lib/librte_ring/rte_ring_c11_mem.h | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/lib/librte_ring/rte_ring_c11_mem.h
> > b/lib/librte_ring/rte_ring_c11_mem.h
> > index 94df3c4..234fea0 100644
> > --- a/lib/librte_ring/rte_ring_c11_mem.h
> > +++ b/lib/librte_ring/rte_ring_c11_mem.h
> > @@ -21,7 +21,8 @@ update_tail(struct rte_ring_headtail *ht, uint32_t
> old_val, uint32_t new_val,
> >          * we need to wait for them to complete
> >          */
> >         if (!single)
> > -               while (unlikely(ht->tail != old_val))
> > +               while (unlikely(old_val != __atomic_load_n(&ht->tail,
> > +                                               __ATOMIC_RELAXED)))
> >                         rte_pause();
> >
> >         __atomic_store_n(&ht->tail, new_val, __ATOMIC_RELEASE);
> > --
> > 2.7.4
> >

Reply via email to