All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Hajnoczi <stefanha@gmail.com>
To: Erik Schilling <erik.schilling@linaro.org>
Cc: "Stefano Garzarella" <sgarzare@redhat.com>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	qemu-devel@nongnu.org, virtio-dev@lists.oasis-open.org,
	slp@redhat.com, mst@redhat.com, marcandre.lureau@redhat.com,
	stefanha@redhat.com, viresh.kumar@linaro.org,
	takahiro.akashi@linaro.org, manos.pitsidianakis@linaro.org,
	mathieu.poirier@linaro.org
Subject: Re: [virtio-dev] [RFC PATCH] docs/interop: define STANDALONE protocol feature for vhost-user
Date: Wed, 26 Jul 2023 11:51:43 -0400	[thread overview]
Message-ID: <CAJSP0QXU7k3+J=zA=uuSfXjM=tz6wh13pabumbSEdvXFmJ6xMQ@mail.gmail.com> (raw)
In-Reply-To: <CUC6ELTTA224.2IQJTPDX8NUFJ@fedora>

On Wed, 26 Jul 2023 at 11:42, Erik Schilling <erik.schilling@linaro.org> wrote:
>
> On Tue Jul 4, 2023 at 4:54 PM CEST, Stefano Garzarella wrote:
> > On Tue, Jul 04, 2023 at 01:36:00PM +0100, Alex Bennée wrote:
> > >Currently QEMU has to know some details about the back-end to be able
> > >to setup the guest. While various parts of the setup can be delegated
> > >to the backend (for example config handling) this is a very piecemeal
> > >approach.
> > >
> > >This patch suggests a new feature flag (VHOST_USER_PROTOCOL_F_STANDALONE)
> > >which the back-end can advertise which allows a probe message to be
> > >sent to get all the details QEMU needs to know in one message.
> > >
> > >Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> > >
> > >---
> > >Initial RFC for discussion. I intend to prototype this work with QEMU
> > >and one of the rust-vmm vhost-user daemons.
> >
> > Thanks for starting this discussion!
> >
> > I'm comparing with vhost-vdpa IOCTLs, so my questions may be
> > superficial, but they help me understand the differences.
> >
> > >---
> > > docs/interop/vhost-user.rst | 37 +++++++++++++++++++++++++++++++++++++
> > > hw/virtio/vhost-user.c      |  8 ++++++++
> > > 2 files changed, 45 insertions(+)
> > >
> > >diff --git a/docs/interop/vhost-user.rst b/docs/interop/vhost-user.rst
> > >index 5a070adbc1..85b1b1583a 100644
> > >--- a/docs/interop/vhost-user.rst
> > >+++ b/docs/interop/vhost-user.rst
> > >@@ -275,6 +275,21 @@ Inflight description
> > >
> > > :queue size: a 16-bit size of virtqueues
> > >
> > >+Backend specifications
> > >+^^^^^^^^^^^^^^^^^^^^^^
> > >+
> > >++-----------+-------------+------------+------------+
> > >+| device id | config size |   min_vqs  |   max_vqs  |
> > >++-----------+-------------+------------+------------+
> > >+
> > >+:device id: a 32-bit value holding the VirtIO device ID
> > >+
> > >+:config size: a 32-bit value holding the config size (see ``VHOST_USER_GET_CONFIG``)
> > >+
> > >+:min_vqs: a 32-bit value holding the minimum number of vqs supported
> >
> > Why do we need the minimum?
> >
> > >+
> > >+:max_vqs: a 32-bit value holding the maximum number of vqs supported, must be >= min_vqs
> >
> > Is this overlap with VHOST_USER_GET_QUEUE_NUM?
>
> While fiddeling with a rust-vmm implementation of this I wondered:
>
> Would a standalone daemon even need VHOST_USER_PROTOCOL_F_MQ if
> VHOST_USER_PROTOCOL_F_CONFIG is required anyway? It looks like
> all full virtio devices provide config information that allows to
> derive the exact or maximum number of queues already. So wouldn't
> VHOST_USER_PROTOCOL_F_MQ just provide a second, redundant way to get
> the information? (And this would be a third?)
>
> Am I missing something here? Otherwise, I think we could drop dependency
> on VHOST_USER_PROTOCOL_F_MQ and get the info from the device config for
> standalone daemons?

vhost (in general and that includes vhost-user) was not designed to be
a full VIRTIO device, just an interface for offloading specific
virtqueues. Now that vhost-user is being extended to support full
VIRTIO devices ("standalone"), some of the vhost-user protocol
features are redundant.

However, actually dropping the redundant features must be done
carefully because they might be used in ways that you don't expect by
existing vhost-user implementations. For example, maybe existing
vhost-user-net code doesn't look at the VIRTIO Configuration Space
field because it queries the number of virtqueues via
VHOST_USER_PROTOCOL_F_MQ + VHOST_USER_GET_QUEUE_NUM. So you might be
forced to keep them for compatibility.

I think the answer to your questions is: yes, but carefully because
you might break existing implementations or make it hard for them to
remain compatible.

Stefan


  reply	other threads:[~2023-07-26 16:20 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-04 12:36 [RFC PATCH] docs/interop: define STANDALONE protocol feature for vhost-user Alex Bennée
2023-07-04 12:36 ` [virtio-dev] " Alex Bennée
2023-07-04 14:54 ` Stefano Garzarella
2023-07-04 14:54   ` Stefano Garzarella
2023-07-04 15:02   ` Alex Bennée
2023-07-04 15:02     ` Alex Bennée
2023-07-07 10:27     ` Stefano Garzarella
2023-07-07 10:27       ` Stefano Garzarella
2023-07-20 19:36       ` Stefan Hajnoczi
2023-07-26 16:01         ` Michael S. Tsirkin
2023-07-26 16:01           ` Michael S. Tsirkin
2023-07-26 14:33   ` Erik Schilling
2023-07-26 15:51     ` Stefan Hajnoczi [this message]
2023-07-06 16:31 ` Alex Bennée
2023-07-06 16:31   ` [virtio-dev] " Alex Bennée
2023-07-07 10:35   ` Stefano Garzarella
2023-07-07 10:35     ` [virtio-dev] " Stefano Garzarella
2023-07-06 16:48 ` Michael S. Tsirkin
2023-07-06 16:48   ` Michael S. Tsirkin
2023-07-07  7:58   ` [virtio-dev] " Alex Bennée
2023-07-07  7:58     ` Alex Bennée
2023-07-07  9:57     ` [virtio-dev] " Michael S. Tsirkin
2023-07-07  9:57       ` Michael S. Tsirkin
2023-07-07 13:12       ` Alex Bennée
2023-07-07 13:12         ` [virtio-dev] " Alex Bennée
2023-07-20 19:58   ` Stefan Hajnoczi
2023-07-20 19:58     ` Stefan Hajnoczi
2023-07-20 21:14     ` [virtio-dev] " Michael S. Tsirkin
2023-07-20 21:14       ` Michael S. Tsirkin
2023-07-20 21:31       ` Stefan Hajnoczi
2023-07-20 22:22         ` [virtio-dev] " Michael S. Tsirkin
2023-07-20 22:22           ` Michael S. Tsirkin
2023-07-24 18:08           ` [virtio-dev] " Stefan Hajnoczi
2023-07-24 18:08             ` Stefan Hajnoczi
2023-07-26 16:02             ` [virtio-dev] " Michael S. Tsirkin
2023-07-26 16:02               ` Michael S. Tsirkin
2023-07-26 17:37               ` [virtio-dev] " Stefan Hajnoczi
2023-07-26 17:37                 ` Stefan Hajnoczi
2023-07-20 19:32 ` Stefan Hajnoczi
2023-07-20 19:32   ` [virtio-dev] " Stefan Hajnoczi
2023-07-20 19:34 ` Stefan Hajnoczi
2023-07-20 19:34   ` [virtio-dev] " Stefan Hajnoczi

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='CAJSP0QXU7k3+J=zA=uuSfXjM=tz6wh13pabumbSEdvXFmJ6xMQ@mail.gmail.com' \
    --to=stefanha@gmail.com \
    --cc=alex.bennee@linaro.org \
    --cc=erik.schilling@linaro.org \
    --cc=manos.pitsidianakis@linaro.org \
    --cc=marcandre.lureau@redhat.com \
    --cc=mathieu.poirier@linaro.org \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=sgarzare@redhat.com \
    --cc=slp@redhat.com \
    --cc=stefanha@redhat.com \
    --cc=takahiro.akashi@linaro.org \
    --cc=viresh.kumar@linaro.org \
    --cc=virtio-dev@lists.oasis-open.org \
    /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.