[PATCH v2 00/33] remove rte_smp_XX barrier
Stephen Hemminger
stephen at networkplumber.org
Sun Sep 20 20:09:52 CEST 2026
This patch series completes the removal of rte_smp_XX barrier
functions that was announced over five years ago (20.05).
In the process several cases of race conditions were found
and fixed. See patches 3, 4, and 17. These are marked with Fixes:
tags and Cc: stable.
Most of this is mechanical with AI assistance, so strongly
encourage maintainers to take a good look.
Functional and build run on x86 and ARM native.
Should have no functional change, but as previous cleanups of
atomic have shown performance might be impacted by compiler bugs.
The lock-free stack patch measured faster than the generic version
it replaces, up to 63% on a 32-core x86 box; the numbers are in
that patch's commit message.
The RFC removed the barrier test outright.
Konstantin pointed out it still covers the custom x86 seq_cst fence,
so patch 19 now keeps the Peterson lock test and rewrites it around
rte_atomic_thread_fence(rte_memory_order_seq_cst) instead.
Need some careful patch series ordering to keep this all bisect
clean.
v2 - address review feedback
Stephen Hemminger (33):
bpf: replace deprecated SMP barriers with C11 fences
bus/vmbus: remove packed attribute from ring buffer
bus/vmbus: fix ring buffer ordering on weakly ordered CPUs
bus/vmbus: fix missing acquire on receive ring index
bus/vmbus: replace SMP barriers with C11 memory fences
drivers/baseband: convert rte_smp_rmb to fence
net/hinic: replace rte_smp_rmb
net/intel: replace rte_smp_rmb
net/virtio: replace rte_smp_rmb
net/thunderx: replace rte_smp_rmb
stack: always use C11 memory model implementation
ring: replace SMP read barrier with C11 acquire fence
crypto/virtio: update comment reference to rte_smp_rmb
crypto/caam_jr: replace rte_smp_rmb
crypto/caam_jr: use IO barrier before job ring doorbell
crypto/octeontx: use IO barrier before doorbell
event/sw: fix unlinks in progress counter races
event/sw: replace SMP barriers with C11 atomics
test/barrier: test sequentially consistent fence only
eal/x86: move optimized fence out of SMP barrier
common/octeontx: remove redundant barrier in mbox
mempool/octeontx: use IO barrier in pool destroy
event/octeontx: replace deprecated SMP barriers
event/dpaa2: replace deprecated barrier in selftest
event/dsw: replace SMP barriers with release fences
event/opdl: replace SMP barriers with C11 atomics
net/netvsc: replace SMP barrier in RNDIS response
net/thunderx: replace deprecated SMP barriers
net/virtio: replace deprecated barrier in avail index update
eal: remove stale SMP barrier in rte_service
eal: remove rte_smp_XX
checkpatches: no longer warn about rte_smp_XX
doc: update release notes about rte_smp_XX removal
app/test/test_barrier.c | 105 ++++--------
devtools/checkpatches.sh | 8 -
doc/guides/rel_notes/deprecation.rst | 8 -
doc/guides/rel_notes/release_26_11.rst | 11 ++
.../fpga_5gnr_fec/rte_fpga_5gnr_fec.c | 8 +-
drivers/baseband/fpga_lte_fec/fpga_lte_fec.c | 12 +-
drivers/bus/vmbus/private.h | 12 +-
drivers/bus/vmbus/rte_vmbus_reg.h | 4 +-
drivers/bus/vmbus/vmbus_bufring.c | 17 +-
drivers/bus/vmbus/vmbus_channel.c | 10 +-
drivers/common/octeontx/octeontx_mbox.c | 6 +-
drivers/crypto/caam_jr/caam_jr.c | 5 +-
.../crypto/octeontx/otx_cryptodev_hw_access.h | 4 +-
drivers/crypto/virtio/virtqueue.h | 2 +-
drivers/event/dpaa2/dpaa2_eventdev_selftest.c | 4 +-
drivers/event/dsw/dsw_event.c | 8 +-
drivers/event/octeontx/ssovf_evdev_selftest.c | 6 +-
drivers/event/octeontx/ssovf_worker.c | 8 +-
drivers/event/opdl/opdl_evdev.c | 7 +-
drivers/event/sw/sw_evdev.c | 37 +++--
drivers/event/sw/sw_evdev.h | 2 +-
drivers/event/sw/sw_evdev_scheduler.c | 17 +-
drivers/mempool/octeontx/octeontx_fpavf.c | 4 +-
drivers/net/hinic/base/hinic_pmd_cmdq.c | 3 +-
drivers/net/hinic/base/hinic_pmd_mgmt.c | 2 +-
drivers/net/intel/ice/ice_rxtx.c | 2 +-
drivers/net/intel/ixgbe/ixgbe_rxtx.c | 2 +-
drivers/net/netvsc/hn_rndis.c | 2 +-
drivers/net/thunderx/base/nicvf_hw.c | 3 +-
drivers/net/thunderx/base/nicvf_plat.h | 5 +-
drivers/net/virtio/virtqueue.h | 18 +--
lib/bpf/bpf_pkt.c | 25 ++-
lib/eal/arm/include/rte_atomic_32.h | 6 -
lib/eal/arm/include/rte_atomic_64.h | 6 -
lib/eal/common/rte_service.c | 1 -
lib/eal/include/generic/rte_atomic.h | 61 -------
lib/eal/loongarch/include/rte_atomic.h | 6 -
lib/eal/ppc/include/rte_atomic.h | 6 -
lib/eal/riscv/include/rte_atomic.h | 6 -
lib/eal/x86/include/rte_atomic.h | 41 ++---
lib/ring/rte_ring_gcc_pvt.h | 6 +-
lib/stack/meson.build | 1 -
lib/stack/rte_stack_lf.h | 4 -
lib/stack/rte_stack_lf_generic.h | 153 ------------------
44 files changed, 208 insertions(+), 456 deletions(-)
delete mode 100644 lib/stack/rte_stack_lf_generic.h
--
2.53.0
More information about the dev
mailing list