> rte_smp_rmb() is deprecated. The acquire fence generates the same > code everywhere the gcc implementation is used: a compiler barrier > on x86 and dmb ishld on ThunderX. > > The gcc implementation itself is kept: unlike the lock-free stack, > the in-tree comment records a 10% x86 performance drop with the > C11 version, which needs re-measuring with current compilers > before RTE_USE_C11_MEM_MODEL can be removed. > > Signed-off-by: Stephen Hemminger <[email protected]> > --- > lib/ring/rte_ring_gcc_pvt.h | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/lib/ring/rte_ring_gcc_pvt.h b/lib/ring/rte_ring_gcc_pvt.h > index 340ece28c7..9c2c58824d 100644 > --- a/lib/ring/rte_ring_gcc_pvt.h > +++ b/lib/ring/rte_ring_gcc_pvt.h > @@ -55,10 +55,10 @@ __rte_ring_headtail_move_head_st(struct > rte_ring_headtail *d, > > *old_head = d->head; > > - /* add rmb barrier to avoid load/load reorder in weak > - * memory model. It is noop on x86 > + /* Acquire fence to avoid load/load reorder in weak > + * memory model. It is noop on x86. > */ > - rte_smp_rmb(); > + rte_atomic_thread_fence(rte_memory_order_acquire); > > /* > * The subtraction is done between two unsigned 32bits value > -- Acked-by: Konstantin Ananyev <[email protected]> As a side note - do we really need two versions of __rte_ring_headtail_move_head_st()? Might be just keep 2 versions of _mt, while _st can be merged into one? > 2.53.0
- [RFC 04/32] bus/vmbus: fix missing acquire on receive r... Stephen Hemminger
- [RFC 05/32] bus/vmbus: replace SMP barriers with C11 me... Stephen Hemminger
- [RFC 06/32] baseband: convert rte_smp_rmb to fence Stephen Hemminger
- [RFC 07/32] net/hinic: replace rte_smp_rmb Stephen Hemminger
- [RFC 08/32] net/intel: replace rte_smp_rmb Stephen Hemminger
- [RFC 09/32] crypto_caam_jr: replace rte_smp_rmb Stephen Hemminger
- [RFC 10/32] net/virtio: replcae rte_smp_rmb Stephen Hemminger
- [RFC 11/32] net/thunderx: replace rte_smp_rmb Stephen Hemminger
- [RFC 12/32] stack: always use C11 memory model implemen... Stephen Hemminger
- [RFC 13/32] ring: replace SMP read barrier with C11 acq... Stephen Hemminger
- RE: [RFC 13/32] ring: replace SMP read barrier wit... Konstantin Ananyev
- [RFC 14/32] crypto/virtio: update comment reference to ... Stephen Hemminger
- [RFC 17/32] eal/x86: move optimized fence out of SMP ba... Stephen Hemminger
- RE: [RFC 17/32] eal/x86: move optimized fence out ... Konstantin Ananyev
- [RFC 18/32] common/octeontx: remove redundant barrier i... Stephen Hemminger
- [RFC 15/32] event/sw: fix unlinks in progress counter r... Stephen Hemminger
- [RFC 16/32] event/sw: replace SMP barriers with C11 ato... Stephen Hemminger
- [RFC 19/32] crypto/caam_jr: use IO barrier before job r... Stephen Hemminger
- [RFC 20/32] crypto/octeontx: use IO barrier before door... Stephen Hemminger
- [RFC 21/32] mempool/octeontx: use IO barrier in pool de... Stephen Hemminger
- [RFC 22/32] event/octeontx: replace deprecated SMP barr... Stephen Hemminger

