[27.03 RFC PATCH v1 4/8] vhost: use usage counters for vchan tracking

Anatoly Burakov anatoly.burakov at intel.com
Fri Oct 16 16:02:11 CEST 2026


Use EAL usage counters instead of raw integers for vchan tracking.

Signed-off-by: Anatoly Burakov <anatoly.burakov at intel.com>
---
 lib/vhost/vhost.c | 5 ++---
 lib/vhost/vhost.h | 3 ++-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/lib/vhost/vhost.c b/lib/vhost/vhost.c
index 918e50ed43..4535e30d44 100644
--- a/lib/vhost/vhost.c
+++ b/lib/vhost/vhost.c
@@ -2152,7 +2152,7 @@ rte_vhost_async_dma_configure(int16_t dma_id, uint16_t vchan_id)
 	dma_copy_track[dma_id].vchans[vchan_id].pkts_cmpl_flag_addr = pkts_cmpl_flag_addr;
 	dma_copy_track[dma_id].vchans[vchan_id].ring_size = max_desc;
 	dma_copy_track[dma_id].vchans[vchan_id].ring_mask = max_desc - 1;
-	dma_copy_track[dma_id].nr_vchans++;
+	rte_usage_count_claim(&dma_copy_track[dma_id].nr_vchans);
 
 	pthread_mutex_unlock(&vhost_dma_lock);
 	return 0;
@@ -2437,9 +2437,8 @@ rte_vhost_async_dma_unconfigure(int16_t dma_id, uint16_t vchan_id)
 
 	rte_free(dma_copy_track[dma_id].vchans[vchan_id].pkts_cmpl_flag_addr);
 	dma_copy_track[dma_id].vchans[vchan_id].pkts_cmpl_flag_addr = NULL;
-	dma_copy_track[dma_id].nr_vchans--;
 
-	if (dma_copy_track[dma_id].nr_vchans == 0) {
+	if (rte_usage_count_release(&dma_copy_track[dma_id].nr_vchans)) {
 		rte_free(dma_copy_track[dma_id].vchans);
 		dma_copy_track[dma_id].vchans = NULL;
 	}
diff --git a/lib/vhost/vhost.h b/lib/vhost/vhost.h
index 1f0568dcb5..215a513934 100644
--- a/lib/vhost/vhost.h
+++ b/lib/vhost/vhost.h
@@ -19,6 +19,7 @@
 #include <rte_ether.h>
 #include <rte_malloc.h>
 #include <rte_dmadev.h>
+#include <rte_usage_count.h>
 
 #include "rte_vhost.h"
 #include "vdpa_driver.h"
@@ -202,7 +203,7 @@ struct async_dma_vchan_info {
 struct async_dma_info {
 	struct async_dma_vchan_info *vchans;
 	/* number of registered virtual channels */
-	uint16_t nr_vchans;
+	rte_usage_count_t nr_vchans;
 };
 
 extern struct async_dma_info dma_copy_track[RTE_DMADEV_DEFAULT_MAX];
-- 
2.52.0



More information about the dev mailing list