> -----Original Message-----
> From: Lance Richardson <[email protected]>
> Sent: Thursday, July 8, 2021 9:51 PM
> To: Zhang, Qi Z <[email protected]>
> Cc: Joyce Kong <[email protected]>; Xing, Beilei <[email protected]>;
> [email protected]; [email protected]; Richardson, Bruce
> <[email protected]>; Zhang, Helin <[email protected]>;
> [email protected]; [email protected]; [email protected]
> Subject: Re: [dpdk-dev] [PATCH v3 2/2] net/i40e: replace SMP barrier with
> thread fence
> 
> On Thu, Jul 8, 2021 at 8:09 AM Zhang, Qi Z <[email protected]> wrote:
> >
> >
> >
> > > -----Original Message-----
> > > From: Joyce Kong <[email protected]>
> > > Sent: Tuesday, July 6, 2021 2:54 PM
> > > To: Xing, Beilei <[email protected]>; Zhang, Qi Z
> <[email protected]>;
> > > [email protected]; [email protected]; Richardson,
> Bruce
> > > <[email protected]>; Zhang, Helin <[email protected]>
> > > Cc: [email protected]; [email protected]; [email protected]
> > > Subject: [PATCH v3 2/2] net/i40e: replace SMP barrier with thread fence
> > >
> > > Simply replace the SMP barrier with atomic thread fence for i40e hw ring
> sacn,
> > > if there is no synchronization point.
> > >
> > > Signed-off-by: Joyce Kong <[email protected]>
> > > Reviewed-by: Ruifeng Wang <[email protected]>
> > > ---
> > >  drivers/net/i40e/i40e_rxtx.c | 3 ++-
> > >  1 file changed, 2 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c 
> > > index
> > > 9aaabfd92..86e2f083e 100644
> > > --- a/drivers/net/i40e/i40e_rxtx.c
> > > +++ b/drivers/net/i40e/i40e_rxtx.c
> > > @@ -482,7 +482,8 @@ i40e_rx_scan_hw_ring(struct i40e_rx_queue *rxq)
> > >
> I40E_RXD_QW1_STATUS_SHIFT;
> > >               }
> > >
> > > -             rte_smp_rmb();
> > > +             /* This barrier is to order loads of different words in the
> descriptor */
> > > +             rte_atomic_thread_fence(__ATOMIC_ACQUIRE);
> >
> > Now for x86, you actually replace a compiler barrier with a memory fence,
> this may have potential performance impact which need additional resource to
> investigate
> 
> No memory fence instruction is generated for
> __ATOMIC_ACQUIRE on x86 for any version of gcc
> or clang that I've tried, based on experiments here:
> 
>     https://godbolt.org/z/Yxr1vGhKP

Nice tool!
I try to write some dummy code combined with or without 
__atomic_thread_fence(__ATOMIC_ACQUIRE)
but I didn't see any difference of the generated assembly code, does that means 
__atomic_thread_fence(__ATOMIC_ACQUIRE) just does nothing on x86?

Reply via email to