[RFC 0/7] prepare deprecation of rte_atomicNN_*() family
Stephen Hemminger
stephen at networkplumber.org
Thu May 21 06:17:00 CEST 2026
The goal is to land every deprecation currently listed in the release
notes by the 26.11 ABI bump. Working back from there: any function to
be removed in 26.11 needs to be marked __rte_deprecated by 26.07, and
all in-tree users converted off it before the marker patch goes in so
CI stays clean.
This series is the preparatory work for the rte_atomicNN_*() family
under that plan. It does not yet add the __rte_deprecated marker;
that's a separate follow-up once the remaining in-tree users are
converted. Other items on the deprecation list (VXLAN_GPE,
pipeline/table/port legacy API, the MAX enum fix, regexdev, pdump,
TM locks) will follow as their own series on the same timeline.
Patch 3 is the load-bearing change: the last lib/ caller of
rte_atomic32_cmpset() is converted, clearing the way.
Patch 7 drops RTE_FORCE_INTRINSICS entirely. With the option always on,
the asm implementations of atomics, spinlock and byteorder become dead
code. ~900 lines deleted; the patch most worth review attention.
This makes it easier to flag the rte_atomicNN as deprecated
since they are all in one place.
Patch 2 retires the rte_smp_*mb deprecation notice (open since 2021)
by reimplementing those APIs as wrappers over rte_atomic_thread_fence,
preserving the API for readability. Patches 5 and 6 convert and clean
up two driver users (bonding, nbl).
Patch 4 is a preparatory workaround for a pre-existing GCC bitfield
-Wmaybe-uninitialized false positive in net/zxdh, surfaced by the
improved compiler visibility after patch 7. Placed ahead of patch 7
to keep every commit bisectable.
Follow on patches will mechanically convert drivers.
If driver writer fixes it themselves; all the beter.
Stephen Hemminger (7):
doc: update versions in deprecation file
eal: reimplement rte_smp_*mb with rte_atomic_thread_fence
ring: use C11 atomic operations for MP/SP head/tail
net/zxdh: work around GCC bitfield uninit false positive
net/bonding: use stdatomic
net/nbl: remove unused rte_atomic16 field
config: use RTE_FORCE_INTRINSICS on all platforms
config/arm/meson.build | 1 -
config/loongarch/meson.build | 1 -
config/meson.build | 3 -
config/riscv/meson.build | 1 -
doc/guides/rel_notes/deprecation.rst | 12 +-
doc/guides/rel_notes/release_26_07.rst | 5 +
drivers/net/bonding/eth_bond_8023ad_private.h | 4 +-
drivers/net/bonding/rte_eth_bond_8023ad.c | 18 +-
drivers/net/nbl/nbl_hw/nbl_resource.h | 1 -
drivers/net/zxdh/zxdh_msg.c | 4 +-
lib/eal/arm/include/rte_atomic_32.h | 9 -
lib/eal/arm/include/rte_atomic_64.h | 9 -
lib/eal/arm/include/rte_byteorder.h | 3 -
lib/eal/arm/include/rte_spinlock.h | 3 -
lib/eal/include/generic/rte_atomic.h | 164 ++++----------
lib/eal/include/generic/rte_byteorder.h | 2 -
lib/eal/include/generic/rte_spinlock.h | 10 -
lib/eal/loongarch/include/rte_atomic.h | 9 -
lib/eal/loongarch/include/rte_spinlock.h | 3 -
lib/eal/ppc/include/rte_atomic.h | 179 ---------------
lib/eal/ppc/include/rte_byteorder.h | 13 --
lib/eal/ppc/include/rte_spinlock.h | 26 ---
lib/eal/riscv/include/rte_atomic.h | 9 -
lib/eal/riscv/include/rte_spinlock.h | 3 -
lib/eal/x86/include/rte_atomic.h | 205 +-----------------
lib/eal/x86/include/rte_atomic_32.h | 188 ----------------
lib/eal/x86/include/rte_atomic_64.h | 157 --------------
lib/eal/x86/include/rte_byteorder.h | 49 -----
lib/eal/x86/include/rte_spinlock.h | 49 -----
lib/ring/rte_ring_generic_pvt.h | 64 ++++--
30 files changed, 118 insertions(+), 1086 deletions(-)
--
2.53.0
More information about the dev
mailing list