+Justin He > -----Original Message----- > From: Gavin Hu <[email protected]> > Sent: Monday, September 17, 2018 4:17 PM > To: [email protected] > Cc: Gavin Hu (Arm Technology China) <[email protected]>; Honnappa > Nagarahalli <[email protected]>; Steve Capper > <[email protected]>; Ola Liljedahl <[email protected]>; > [email protected]; nd <[email protected]>; [email protected] > Subject: [PATCH v3 1/3] ring: read tail using atomic load > > 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] > > 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
Re: [dpdk-dev] [PATCH v3 1/3] ring: read tail using atomic load
Gavin Hu (Arm Technology China) Wed, 26 Sep 2018 02:30:02 -0700
- [dpdk-dev] [PATCH v3 1/3] ring: read tail ... Gavin Hu
- [dpdk-dev] [PATCH v3 3/3] ring: move ... Gavin Hu
- Re: [dpdk-dev] [PATCH v3 3/3] rin... Gavin Hu (Arm Technology China)
- Re: [dpdk-dev] [PATCH v3 3/3]... Justin He
- Re: [dpdk-dev] [PATCH v3 ... Stephen Hemminger
- Re: [dpdk-dev] [PATCH v3 3/3] rin... Jerin Jacob
- [dpdk-dev] [PATCH v3 2/3] ring: synch... Gavin Hu
- Re: [dpdk-dev] [PATCH v3 2/3] rin... Gavin Hu (Arm Technology China)
- Re: [dpdk-dev] [PATCH v3 2/3]... Justin He
- Re: [dpdk-dev] [PATCH v3 2/3] rin... Jerin Jacob
- Re: [dpdk-dev] [PATCH v3 1/3] ring: r... Gavin Hu (Arm Technology China)
- Re: [dpdk-dev] [PATCH v3 1/3] rin... Justin He
- Re: [dpdk-dev] [PATCH v3 1/3] ring: r... Jerin Jacob
- Re: [dpdk-dev] [PATCH v3 1/3] rin... Gavin Hu (Arm Technology China)
- Re: [dpdk-dev] [PATCH v3 1/3]... Ananyev, Konstantin
- Re: [dpdk-dev] [PATCH v3 ... Ola Liljedahl
- Re: [dpdk-dev] [PATC... Ola Liljedahl
- Re: [dpdk-dev] [... Ananyev, Konstantin
- Re: [dpdk-de... Ola Liljedahl
- Re: [dpdk-de... Honnappa Nagarahalli
- Re: [dpdk-de... Jerin Jacob

