From: "Eugenio Pérez" <eperezma@redhat.com>
To: Maxime Coquelin <maxime.coquelin@redhat.com>
Cc: Yongji Xie <xieyongji@bytedance.com>,
david.marchand@redhat.com, dev@dpdk.org, mst@redhat.com,
jasowangio@gmail.com, chenbox@nvidia.com
Subject: [RFC v4 03/11] vhost: add VDUSE API version negotiation
Date: Tue, 7 Jul 2026 14:44:59 +0200 [thread overview]
Message-ID: <20260707124507.251729-4-eperezma@redhat.com> (raw)
In-Reply-To: <20260707124507.251729-1-eperezma@redhat.com>
From: Maxime Coquelin <maxime.coquelin@redhat.com>
As preliminary step to support new VDUSE API version
introducing ASID support, this patch adds API version
negotiation to keep compatibility with older kernels.
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
---
lib/vhost/vduse.c | 14 ++++++++++++--
lib/vhost/vhost.h | 1 +
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/lib/vhost/vduse.c b/lib/vhost/vduse.c
index 7217895d1b9b..1891c4a9bbc3 100644
--- a/lib/vhost/vduse.c
+++ b/lib/vhost/vduse.c
@@ -25,7 +25,7 @@
#include "vhost.h"
#include "virtio_net_ctrl.h"
-#define VHOST_VDUSE_API_VERSION 0
+#define VHOST_VDUSE_API_VERSION 0ULL
#define VDUSE_CTRL_PATH "/dev/vduse/control"
struct vduse {
@@ -680,7 +680,7 @@ vduse_device_create(const char *path, bool compliant_ol_flags, bool extbuf, bool
uint32_t i, max_queue_pairs, total_queues;
struct virtio_net *dev;
struct virtio_net_config vnet_config = {{ 0 }};
- uint64_t ver = VHOST_VDUSE_API_VERSION;
+ uint64_t ver;
uint64_t features;
const char *name = path + strlen("/dev/vduse/");
bool reconnect = false;
@@ -700,6 +700,15 @@ vduse_device_create(const char *path, bool compliant_ol_flags, bool extbuf, bool
return -1;
}
+ if (ioctl(control_fd, VDUSE_GET_API_VERSION, &ver)) {
+ VHOST_CONFIG_LOG(name, ERR, "Failed to get API version: %s", strerror(errno));
+ ret = -1;
+ goto out_ctrl_close;
+ }
+
+ ver = RTE_MIN(ver, VHOST_VDUSE_API_VERSION);
+ VHOST_CONFIG_LOG(name, INFO, "Using VDUSE API version %" PRIu64 "", ver);
+
if (ioctl(control_fd, VDUSE_SET_API_VERSION, &ver)) {
VHOST_CONFIG_LOG(name, ERR, "Failed to set API version: %" PRIu64 ": %s",
ver, strerror(errno));
@@ -800,6 +809,7 @@ vduse_device_create(const char *path, bool compliant_ol_flags, bool extbuf, bool
strncpy(dev->ifname, path, IF_NAME_SZ - 1);
dev->vduse_ctrl_fd = control_fd;
dev->vduse_dev_fd = dev_fd;
+ dev->vduse_api_ver = ver;
ret = vduse_reconnect_log_map(dev, !reconnect);
if (ret < 0)
diff --git a/lib/vhost/vhost.h b/lib/vhost/vhost.h
index 0b3fca0ab769..5cbd64d539b9 100644
--- a/lib/vhost/vhost.h
+++ b/lib/vhost/vhost.h
@@ -532,6 +532,7 @@ struct __rte_cache_aligned virtio_net {
int postcopy_listening;
int vduse_ctrl_fd;
int vduse_dev_fd;
+ uint64_t vduse_api_ver;
struct vhost_virtqueue *cvq;
--
2.55.0
next prev parent reply other threads:[~2026-07-07 12:45 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-07 12:44 [RFC v4 00/11] Add vduse live migration features Eugenio Pérez
2026-07-07 12:44 ` [RFC v4 01/11] uapi: align VDUSE header for ASID Eugenio Pérez
2026-07-07 12:44 ` [RFC v4 02/11] vhost: introduce ASID support Eugenio Pérez
2026-07-07 12:44 ` Eugenio Pérez [this message]
2026-07-07 12:45 ` [RFC v4 04/11] vhost: add virtqueues groups support to VDUSE Eugenio Pérez
2026-07-07 12:45 ` [RFC v4 05/11] vhost: add ASID support to VDUSE IOTLB operations Eugenio Pérez
2026-07-07 12:45 ` [RFC v4 06/11] vhost: claim VDUSE support for API version 1 Eugenio Pérez
2026-07-07 12:45 ` [RFC v4 07/11] vhost: add net status feature to VDUSE Eugenio Pérez
2026-07-07 12:45 ` [RFC v4 08/11] uapi: Align vduse.h for enable and suspend VDUSE messages Eugenio Pérez
2026-07-07 12:45 ` [RFC v4 09/11] vhost: Support VDUSE QUEUE_READY feature Eugenio Pérez
2026-07-07 12:45 ` [RFC v4 10/11] vhost: Support vduse suspend feature Eugenio Pérez
2026-07-07 12:45 ` [RFC v4 11/11] doc: add release notes for VDUSE live migration support Eugenio Pérez
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260707124507.251729-4-eperezma@redhat.com \
--to=eperezma@redhat.com \
--cc=chenbox@nvidia.com \
--cc=david.marchand@redhat.com \
--cc=dev@dpdk.org \
--cc=jasowangio@gmail.com \
--cc=maxime.coquelin@redhat.com \
--cc=mst@redhat.com \
--cc=xieyongji@bytedance.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.