[PATCH v2 0/3] Add pause to empty spin loops
Stephen Hemminger
stephen at networkplumber.org
Mon Apr 13 18:45:28 CEST 2026
On SMT systems, empty spinloops can cause excessive latency due to
the spinning core consuming resources that could be used by other
hardware threads. This series addresses this by adding rte_pause()
calls to busy-wait loops in the cnxk drivers.
The first two patches fix existing empty spinloops in the net/cnxk
and event/cnxk drivers. These were identified using a new coccinelle
script that finds variations of the pattern:
while (!atomic(&flag));
The third patch adds this coccinelle script to devtools/ so that
similar issues can be detected and fixed automatically.
v2 - rebase for 26.07
Stephen Hemminger (3):
net/cnxk: add pause to spinloops
event/cnxk: add pause to spinloops
devtools/cocci: add script to find empty spinloops
devtools/cocci/fix_empty_spinloops.cocci | 165 +++++++++++++++++++++++
drivers/event/cnxk/cn10k_worker.c | 2 +-
drivers/event/cnxk/cn20k_worker.c | 2 +-
drivers/event/cnxk/cnxk_tim_worker.h | 4 +-
drivers/net/cnxk/cn10k_tx.h | 4 +-
drivers/net/cnxk/cn20k_tx.h | 4 +-
6 files changed, 173 insertions(+), 8 deletions(-)
create mode 100644 devtools/cocci/fix_empty_spinloops.cocci
--
2.53.0
More information about the dev
mailing list