From: Florin Coras Date: Thu, 3 Jul 2025 22:00:39 +0000 (-0400) Subject: vlib: handle worker sync in wait one loop X-Git-Tag: v26.02-rc0~191 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=49d93a7d65eb800642387e8b6a37cd2e76350e36;p=vpp.git vlib: handle worker sync in wait one loop Type: improvement Change-Id: I8dcd9b7d305878eb385eb27481be6a241b4a024c Signed-off-by: Florin Coras --- diff --git a/src/vlib/threads.c b/src/vlib/threads.c index a1839e787c3..8c4a6fe3abd 100644 --- a/src/vlib/threads.c +++ b/src/vlib/threads.c @@ -1616,7 +1616,13 @@ vlib_worker_wait_one_loop (void) for (ii = 1; ii < vec_len (counts); ii++) { while (counts[ii] == vgm->vlib_mains[ii]->main_loop_count) - CLIB_PAUSE (); + { + /* worker sync requested, vlib_worker_sync_rpc probably pending + * so at least one worker cannot make any progress */ + if (vlib_worker_threads->wait_before_barrier) + break; + CLIB_PAUSE (); + } } vec_free (counts);