DPDK-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] examples/vhost: fix hang on exit
@ 2026-10-29 14:47 Stephen Hemminger
  2026-10-29 15:48 ` Maxime Coquelin
  2026-10-29 16:57 ` [PATCH v2] " Stephen Hemminger
  0 siblings, 2 replies; 4+ messages in thread
From: Stephen Hemminger @ 2026-10-29 14:47 UTC (permalink / raw)
  To: dev
  Cc: Stephen Hemminger, stable, Yu Jiang, Maxime Coquelin, Chenbo Xia,
	Bruce Richardson

destroy_device() waits for the worker lcore to ack device removal.
Since the signal handler rework, the workers exit before the vhost
drivers are unregistered, so the destroy callback spins forever.

Unregister the drivers while the workers are still polling, then
stop and join them.

Bugzilla ID: 2071
Fixes: 5ffa8fafcbd3 ("examples/vhost: make signal handler safe")
Cc: stable@dpdk.org

Reported-by: Yu Jiang <yux.jiang@intel.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 examples/vhost/main.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/examples/vhost/main.c b/examples/vhost/main.c
index 523195f5c4..16c9387f8f 100644
--- a/examples/vhost/main.c
+++ b/examples/vhost/main.c
@@ -69,6 +69,8 @@ static uint32_t enabled_port_mask = 0;
 /* Set by the SIGINT handler to stop the worker loops. */
 static volatile sig_atomic_t quit;
 
+static RTE_ATOMIC(bool) stop_workers;
+
 /* Promiscuous mode */
 static uint32_t promiscuous;
 
@@ -1242,7 +1244,7 @@ switch_worker(void *arg)
 		}
 	}
 
-	while (!quit) {
+	while (!rte_atomic_load_explicit(&stop_workers, rte_memory_order_relaxed)) {
 		drain_mbuf_table(tx_q);
 		drain_vhost_table();
 		/*
-- 
2.53.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-10-29 18:04 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-29 14:47 [PATCH] examples/vhost: fix hang on exit Stephen Hemminger
2026-10-29 15:48 ` Maxime Coquelin
2026-10-29 16:57 ` [PATCH v2] " Stephen Hemminger
2026-10-29 18:03   ` Stephen Hemminger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox