From: Raphael Norwitz <raphael.s.norwitz@gmail.com>
To: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
Cc: mst@redhat.com, peterx@redhat.com, farosas@suse.de,
raphael@enfabrica.net, sgarzare@redhat.com,
marcandre.lureau@redhat.com, pbonzini@redhat.com,
kwolf@redhat.com, hreitz@redhat.com, berrange@redhat.com,
eblake@redhat.com, armbru@redhat.com, qemu-devel@nongnu.org,
qemu-block@nongnu.org, steven.sistare@oracle.com,
den-plotnikov@yandex-team.ru
Subject: Re: [PATCH 01/33] vhost: introduce vhost_ops->vhost_set_vring_enable_supported method
Date: Thu, 9 Oct 2025 14:56:55 -0400 [thread overview]
Message-ID: <CAFubqFvWwHu2B-Tg6eB+-j86mhGu8MKsHBLL-4+sQy9WS5XbWQ@mail.gmail.com> (raw)
In-Reply-To: <20250813164856.950363-2-vsementsov@yandex-team.ru>
On Wed, Aug 13, 2025 at 12:53 PM Vladimir Sementsov-Ogievskiy
<vsementsov@yandex-team.ru> wrote:
>
> Remove vhost-user specific hack from generic code.
>
> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
> ---
> hw/virtio/vhost-user.c | 8 ++++++++
> hw/virtio/vhost.c | 15 ++++++---------
> include/hw/virtio/vhost-backend.h | 2 ++
> 3 files changed, 16 insertions(+), 9 deletions(-)
>
> diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c
> index 1e1d6b0d6e..1b2879a90c 100644
> --- a/hw/virtio/vhost-user.c
> +++ b/hw/virtio/vhost-user.c
> @@ -1230,6 +1230,12 @@ static int vhost_user_set_vring_base(struct vhost_dev *dev,
> return vhost_set_vring(dev, VHOST_USER_SET_VRING_BASE, ring, false);
> }
>
> +static bool vhost_user_set_vring_enable_supported(struct vhost_dev *dev)
> +{
> + return virtio_has_feature(dev->backend_features,
> + VHOST_USER_F_PROTOCOL_FEATURES);
> +}
> +
> static int vhost_user_set_vring_enable(struct vhost_dev *dev, int enable)
> {
> int i;
> @@ -3032,6 +3038,8 @@ const VhostOps user_ops = {
> .vhost_reset_device = vhost_user_reset_device,
> .vhost_get_vq_index = vhost_user_get_vq_index,
> .vhost_set_vring_enable = vhost_user_set_vring_enable,
> + .vhost_set_vring_enable_supported =
> + vhost_user_set_vring_enable_supported,
Why not make this a callback like vhost_user_gpu_{set|shared}_socket()
in vhost_backend.h instead?
> .vhost_requires_shm_log = vhost_user_requires_shm_log,
> .vhost_migration_done = vhost_user_migration_done,
> .vhost_net_set_mtu = vhost_user_net_set_mtu,
> diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
> index 6557c58d12..c33dad4acd 100644
> --- a/hw/virtio/vhost.c
> +++ b/hw/virtio/vhost.c
> @@ -1986,15 +1986,12 @@ static int vhost_dev_set_vring_enable(struct vhost_dev *hdev, int enable)
> return 0;
> }
>
> - /*
> - * For vhost-user devices, if VHOST_USER_F_PROTOCOL_FEATURES has not
> - * been negotiated, the rings start directly in the enabled state, and
> - * .vhost_set_vring_enable callback will fail since
> - * VHOST_USER_SET_VRING_ENABLE is not supported.
> - */
> - if (hdev->vhost_ops->backend_type == VHOST_BACKEND_TYPE_USER &&
> - !virtio_has_feature(hdev->backend_features,
> - VHOST_USER_F_PROTOCOL_FEATURES)) {
> + if (hdev->vhost_ops->vhost_set_vring_enable_supported &&
> + !hdev->vhost_ops->vhost_set_vring_enable_supported(hdev)) {
> + /*
> + * This means, that rings are always enabled, and disable/enable
> + * API is not supported.
> + */
> return 0;
> }
>
> diff --git a/include/hw/virtio/vhost-backend.h b/include/hw/virtio/vhost-backend.h
> index d6df209a2f..f65fa26298 100644
> --- a/include/hw/virtio/vhost-backend.h
> +++ b/include/hw/virtio/vhost-backend.h
> @@ -105,6 +105,7 @@ typedef int (*vhost_reset_device_op)(struct vhost_dev *dev);
> typedef int (*vhost_get_vq_index_op)(struct vhost_dev *dev, int idx);
> typedef int (*vhost_set_vring_enable_op)(struct vhost_dev *dev,
> int enable);
> +typedef bool (*vhost_set_vring_enable_supported_op)(struct vhost_dev *dev);
> typedef bool (*vhost_requires_shm_log_op)(struct vhost_dev *dev);
> typedef int (*vhost_migration_done_op)(struct vhost_dev *dev,
> char *mac_addr);
> @@ -193,6 +194,7 @@ typedef struct VhostOps {
> vhost_reset_device_op vhost_reset_device;
> vhost_get_vq_index_op vhost_get_vq_index;
> vhost_set_vring_enable_op vhost_set_vring_enable;
> + vhost_set_vring_enable_supported_op vhost_set_vring_enable_supported;
> vhost_requires_shm_log_op vhost_requires_shm_log;
> vhost_migration_done_op vhost_migration_done;
> vhost_vsock_set_guest_cid_op vhost_vsock_set_guest_cid;
> --
> 2.48.1
>
>
next prev parent reply other threads:[~2025-10-09 18:58 UTC|newest]
Thread overview: 108+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-13 16:48 [PATCH 00/33] vhost-user-blk: live-backend local migration Vladimir Sementsov-Ogievskiy
2025-08-13 16:48 ` [PATCH 01/33] vhost: introduce vhost_ops->vhost_set_vring_enable_supported method Vladimir Sementsov-Ogievskiy
2025-10-09 18:56 ` Raphael Norwitz [this message]
2025-10-09 19:25 ` Vladimir Sementsov-Ogievskiy
2025-08-13 16:48 ` [PATCH 02/33] vhost: drop backend_features field Vladimir Sementsov-Ogievskiy
2025-09-12 14:39 ` Markus Armbruster
2025-10-09 18:57 ` Raphael Norwitz
2025-08-13 16:48 ` [PATCH 03/33] vhost-user: introduce vhost_user_has_prot() helper Vladimir Sementsov-Ogievskiy
2025-10-09 18:57 ` Raphael Norwitz
2025-08-13 16:48 ` [PATCH 04/33] vhost: move protocol_features to vhost_user Vladimir Sementsov-Ogievskiy
2025-10-09 18:57 ` Raphael Norwitz
2025-10-09 19:35 ` Vladimir Sementsov-Ogievskiy
2025-10-09 19:45 ` Raphael Norwitz
2025-08-13 16:48 ` [PATCH 05/33] vhost-user-gpu: drop code duplication Vladimir Sementsov-Ogievskiy
2025-08-18 6:54 ` Philippe Mathieu-Daudé
2025-10-09 18:58 ` Raphael Norwitz
2025-08-13 16:48 ` [PATCH 06/33] vhost: make vhost_dev.features private Vladimir Sementsov-Ogievskiy
2025-10-09 18:58 ` Raphael Norwitz
2025-10-09 19:40 ` Vladimir Sementsov-Ogievskiy
2025-08-13 16:48 ` [PATCH 07/33] virtio: move common part of _set_guest_notifier to generic code Vladimir Sementsov-Ogievskiy
2025-08-14 4:53 ` Philippe Mathieu-Daudé
2025-08-14 11:15 ` Vladimir Sementsov-Ogievskiy
2025-08-13 16:48 ` [PATCH 08/33] virtio: drop *_set_guest_notifier_fd_handler() helpers Vladimir Sementsov-Ogievskiy
2025-08-13 16:48 ` [PATCH 09/33] vhost-user: keep QIOChannelSocket for backend channel Vladimir Sementsov-Ogievskiy
2025-10-09 18:58 ` Raphael Norwitz
2025-08-13 16:48 ` [PATCH 10/33] vhost: vhost_virtqueue_start(): fix failure path Vladimir Sementsov-Ogievskiy
2025-10-09 19:00 ` Raphael Norwitz
2025-08-13 16:48 ` [PATCH 11/33] vhost: make vhost_memory_unmap() null-safe Vladimir Sementsov-Ogievskiy
2025-10-09 19:00 ` Raphael Norwitz
2025-10-09 20:00 ` Vladimir Sementsov-Ogievskiy
2025-10-11 19:10 ` Vladimir Sementsov-Ogievskiy
2025-08-13 16:48 ` [PATCH 12/33] vhost: simplify calls to vhost_memory_unmap() Vladimir Sementsov-Ogievskiy
2025-10-09 19:00 ` Raphael Norwitz
2025-08-13 16:48 ` [PATCH 13/33] vhost: move vrings mapping to the top of vhost_virtqueue_start() Vladimir Sementsov-Ogievskiy
2025-10-09 19:01 ` Raphael Norwitz
2025-08-13 16:48 ` [PATCH 14/33] vhost: vhost_virtqueue_start(): drop extra local variables Vladimir Sementsov-Ogievskiy
2025-10-09 19:02 ` Raphael Norwitz
2025-08-13 16:48 ` [PATCH 15/33] vhost: final refactoring of vhost vrings map/unmap Vladimir Sementsov-Ogievskiy
2025-10-09 19:02 ` Raphael Norwitz
2025-08-13 16:48 ` [PATCH 16/33] vhost: simplify vhost_dev_init() error-path Vladimir Sementsov-Ogievskiy
2025-10-09 19:04 ` Raphael Norwitz
2025-08-13 16:48 ` [PATCH 17/33] vhost: move busyloop timeout initialization to vhost_virtqueue_init() Vladimir Sementsov-Ogievskiy
2025-10-09 19:04 ` Raphael Norwitz
2025-08-13 16:48 ` [PATCH 18/33] vhost: introduce check_memslots() helper Vladimir Sementsov-Ogievskiy
2025-10-09 19:06 ` Raphael Norwitz
2025-08-13 16:48 ` [PATCH 19/33] vhost: vhost_dev_init(): drop extra features variable Vladimir Sementsov-Ogievskiy
2025-10-09 19:06 ` Raphael Norwitz
2025-10-09 20:15 ` Vladimir Sementsov-Ogievskiy
2025-08-13 16:48 ` [PATCH 20/33] hw/virtio/virtio-bus: refactor virtio_bus_set_host_notifier() Vladimir Sementsov-Ogievskiy
2025-08-14 6:00 ` Philippe Mathieu-Daudé
2025-10-09 19:07 ` Raphael Norwitz
2025-08-13 16:48 ` [PATCH 21/33] vhost-user: make trace events more readable Vladimir Sementsov-Ogievskiy
2025-08-14 5:59 ` Philippe Mathieu-Daudé
2025-10-09 19:07 ` Raphael Norwitz
2025-08-13 16:48 ` [PATCH 22/33] vhost-user-blk: add some useful trace-points Vladimir Sementsov-Ogievskiy
2025-08-14 4:58 ` Philippe Mathieu-Daudé
2025-08-14 11:14 ` Vladimir Sementsov-Ogievskiy
2025-10-09 19:07 ` Raphael Norwitz
2025-10-09 20:19 ` Vladimir Sementsov-Ogievskiy
2025-08-13 16:48 ` [PATCH 23/33] vhost: " Vladimir Sementsov-Ogievskiy
2025-10-09 19:08 ` Raphael Norwitz
2025-10-09 20:20 ` Vladimir Sementsov-Ogievskiy
2025-08-13 16:48 ` [PATCH 24/33] chardev-add: support local migration Vladimir Sementsov-Ogievskiy
2025-09-12 14:56 ` Markus Armbruster
2025-09-12 15:04 ` Vladimir Sementsov-Ogievskiy
2025-09-12 15:24 ` Steven Sistare
2025-09-15 13:28 ` Vladimir Sementsov-Ogievskiy
2025-08-13 16:48 ` [PATCH 25/33] virtio: introduce .skip_vhost_migration_log() handler Vladimir Sementsov-Ogievskiy
2025-10-09 19:08 ` Raphael Norwitz
2025-08-13 16:48 ` [PATCH 26/33] io/channel-socket: introduce qio_channel_socket_keep_nonblock() Vladimir Sementsov-Ogievskiy
2025-08-20 13:27 ` Peter Xu
2025-08-20 13:43 ` Daniel P. Berrangé
2025-08-20 14:37 ` Peter Xu
2025-08-20 14:42 ` Daniel P. Berrangé
2025-08-21 12:07 ` Vladimir Sementsov-Ogievskiy
2025-08-21 13:45 ` Peter Xu
2025-08-21 14:11 ` Daniel P. Berrangé
2025-08-20 13:37 ` Daniel P. Berrangé
2025-08-21 12:08 ` Vladimir Sementsov-Ogievskiy
2025-08-13 16:48 ` [PATCH 27/33] migration/socket: keep fds non-block Vladimir Sementsov-Ogievskiy
2025-08-20 13:30 ` Peter Xu
2025-08-21 12:15 ` Vladimir Sementsov-Ogievskiy
2025-08-21 13:49 ` Peter Xu
2025-08-13 16:48 ` [PATCH 28/33] vhost: introduce backend migration Vladimir Sementsov-Ogievskiy
2025-10-09 19:09 ` Raphael Norwitz
2025-10-09 20:51 ` Vladimir Sementsov-Ogievskiy
2025-08-13 16:48 ` [PATCH 29/33] vhost-user: support " Vladimir Sementsov-Ogievskiy
2025-10-09 19:09 ` Raphael Norwitz
2025-10-09 20:54 ` Vladimir Sementsov-Ogievskiy
2025-08-13 16:48 ` [PATCH 30/33] virtio: support vhost " Vladimir Sementsov-Ogievskiy
2025-10-09 19:09 ` Raphael Norwitz
2025-10-09 20:59 ` Vladimir Sementsov-Ogievskiy
2025-08-13 16:48 ` [PATCH 31/33] vhost-user-blk: " Vladimir Sementsov-Ogievskiy
2025-10-09 19:09 ` Raphael Norwitz
2025-10-09 21:14 ` Vladimir Sementsov-Ogievskiy
2025-10-09 23:43 ` Raphael Norwitz
2025-10-10 6:27 ` Vladimir Sementsov-Ogievskiy
2025-10-13 21:50 ` Raphael Norwitz
2025-10-14 11:59 ` Vladimir Sementsov-Ogievskiy
2025-08-13 16:48 ` [PATCH 32/33] test/functional: exec_command_and_wait_for_pattern: add vm arg Vladimir Sementsov-Ogievskiy
2025-08-14 5:01 ` Philippe Mathieu-Daudé
2025-08-18 6:55 ` Thomas Huth
2025-08-13 16:48 ` [PATCH 33/33] tests/functional: add test_x86_64_vhost_user_blk_fd_migration.py Vladimir Sementsov-Ogievskiy
2025-10-09 19:16 ` [PATCH 00/33] vhost-user-blk: live-backend local migration Raphael Norwitz
2025-10-09 22:43 ` Vladimir Sementsov-Ogievskiy
2025-10-09 23:28 ` Raphael Norwitz
2025-10-10 8:47 ` Vladimir Sementsov-Ogievskiy
2025-10-13 21:41 ` Raphael Norwitz
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=CAFubqFvWwHu2B-Tg6eB+-j86mhGu8MKsHBLL-4+sQy9WS5XbWQ@mail.gmail.com \
--to=raphael.s.norwitz@gmail.com \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=den-plotnikov@yandex-team.ru \
--cc=eblake@redhat.com \
--cc=farosas@suse.de \
--cc=hreitz@redhat.com \
--cc=kwolf@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=raphael@enfabrica.net \
--cc=sgarzare@redhat.com \
--cc=steven.sistare@oracle.com \
--cc=vsementsov@yandex-team.ru \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).