On Thu, Aug 20, 2026 at 02:39:53PM +0300, Andrey Drobyshev wrote:
Wrap the set_owner/reset_owner backend ops in dev-level helpers, matching
other vhost_dev_* wrappers, so device code can take or release ownership
without reaching into vhost_ops directly. vhost_dev_init() now uses
vhost_dev_set_owner(). Both return -ENOSYS if the backend has no such op.
No functional change. These are used by the following vhost-vsock patch to
hand a device between owners during CPR.
Signed-off-by: Andrey Drobyshev <[email protected]>
---
hw/virtio/vhost.c | 20 +++++++++++++++++++-
include/hw/virtio/vhost.h | 13 +++++++++++++
2 files changed, 32 insertions(+), 1 deletion(-)
diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
index 2bb9a23fee4..ea17bf01080 100644
--- a/hw/virtio/vhost.c
+++ b/hw/virtio/vhost.c
@@ -1690,6 +1690,24 @@ int vhost_dev_init_backend(struct vhost_dev *hdev, void
*opaque,
return 0;
}
+int vhost_dev_set_owner(struct vhost_dev *hdev)
+{
+ assert(hdev->vhost_ops);
+ if (!hdev->vhost_ops->vhost_set_owner) {
+ return -ENOSYS;
+ }
+ return hdev->vhost_ops->vhost_set_owner(hdev);
+}
+
+int vhost_dev_reset_owner(struct vhost_dev *hdev)
+{
+ assert(hdev->vhost_ops);
+ if (!hdev->vhost_ops->vhost_reset_owner) {
+ return -ENOSYS;
+ }
+ return hdev->vhost_ops->vhost_reset_owner(hdev);
+}
+
int vhost_dev_init(struct vhost_dev *hdev, void *opaque,
VhostBackendType backend_type, uint32_t busyloop_timeout,
Error **errp)
@@ -1707,7 +1725,7 @@ int vhost_dev_init(struct vhost_dev *hdev, void *opaque,
goto fail;
}
- r = hdev->vhost_ops->vhost_set_owner(hdev);
+ r = vhost_dev_set_owner(hdev);
if (r < 0) {
error_setg_errno(errp, -r, "vhost_set_owner failed");
goto fail;
diff --git a/include/hw/virtio/vhost.h b/include/hw/virtio/vhost.h
index 9b98d34dd04..44e65968d9b 100644
--- a/include/hw/virtio/vhost.h
+++ b/include/hw/virtio/vhost.h
@@ -178,6 +178,19 @@ int vhost_dev_init(struct vhost_dev *hdev, void *opaque,
int vhost_dev_init_backend(struct vhost_dev *hdev, void *opaque,
VhostBackendType backend_type, Error **errp);
+/**
+ * vhost_dev_set_owner() / vhost_dev_reset_owner() - take / release ownership
I'm not sure this is a common practice in kernel-doc format.
I think we should add 2 differnt blocks, one for each function.
Stefano
+ * @hdev: the common vhost_dev structure
+ *
+ * Take (VHOST_SET_OWNER) or release (VHOST_RESET_OWNER) ownership of a
+ * device that has already been set up. Used to hand a device over during
+ * CPR. Returns -ENOSYS if the backend has no such op.
+ *
+ * Return: 0 on success, negative errno on failure.
+ */
+int vhost_dev_set_owner(struct vhost_dev *hdev);
+int vhost_dev_reset_owner(struct vhost_dev *hdev);
+
/**
* vhost_dev_cleanup() - tear down and cleanup vhost interface
* @hdev: the common vhost_dev structure
--
2.47.1