Discussion of the VIRTIO specification
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Stefan Hajnoczi <stefanha@redhat.com>
Cc: "Daniel P. Berrangé" <berrange@redhat.com>,
	"Peter Maydell" <peter.maydell@linaro.org>,
	"Stefan Hajnoczi" <stefanha@gmail.com>,
	"Dorinda Bassey" <dbassey@redhat.com>,
	"Albert Esteve" <aesteve@redhat.com>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	qemu-devel <qemu-devel@nongnu.org>,
	virtio-comment@lists.linux.dev, dev@lists.cloudhypervisor.org,
	rust-vmm@lists.opendev.org,
	"Stefano Garzarella" <sgarzare@redhat.com>,
	"Manos Pitsidianakis" <manos.pitsidianakis@linaro.org>,
	"Demi Marie Obenour" <demi@invisiblethingslab.com>,
	"Alyssa Ross" <hi@alyssa.is>,
	"Mark Burton" <MBURTON@qti.qualcomm.com>,
	"Matti Moell" <matti@qti.qualcomm.com>,
	"Viresh Kumar" <viresh.kumar@linaro.org>,
	"Sergio Lopez" <slp@redhat.com>,
	"Vishwanath Seshagiri" <vishs@meta.com>,
	"Rob Bradford" <rbradford@meta.com>,
	"Zhengyu Zhao" <zhaozhengyu@bytedance.com>,
	"Jorge E. Moreira" <jemoreira@google.com>
Subject: Re: Where should the vhost-user specification live?
Date: Thu, 11 Jun 2026 16:45:10 -0400	[thread overview]
Message-ID: <20260611164404-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20260611203915.GB237427@fedora>

On Thu, Jun 11, 2026 at 04:39:15PM -0400, Stefan Hajnoczi wrote:
> On Wed, Jun 10, 2026 at 09:37:10AM +0100, Daniel P. Berrangé wrote:
> > On Tue, Jun 09, 2026 at 08:51:15PM +0100, Peter Maydell wrote:
> > > On Tue, 9 Jun 2026 at 20:45, Stefan Hajnoczi <stefanha@gmail.com> wrote:
> > > >
> > > > On Tue, Jun 9, 2026 at 2:51 PM Peter Maydell <peter.maydell@linaro.org> wrote:
> > > > >
> > > > > On Tue, 9 Jun 2026 at 19:00, Stefan Hajnoczi <stefanha@gmail.com> wrote:
> > > > > > I'm not sure if anyone brought up this topic on qemu-devel and with
> > > > > > Michael before. As I mentioned in my reply, there are ways to avoid
> > > > > > blocking vhost-user spec changes when qemu.git is frozen:
> > > > > >
> > > > > > The simplest approach is to keep merging vhost-user.rst changes during
> > > > > > freeze since it does not jeopardize the release or introduce
> > > > > > instability.
> > 
> > snip
> > 
> > > I tend to view the specs subsection of the docs as being
> > > for things where either QEMU really is the authoritative
> > > source (eg fw_cfg), or where the spec is for something that's
> > > basically moribund and has no better home. If vhost-user is
> > > a cross-project specification that it so active that it
> > > cannot live within QEMU's release process, then I think
> > > it deserves to have its own independent home.
> > 
> > Yes, the main impression I get having read through this whole thread
> > is that vhost-user spec should have its own home outside QEMU.
> > 
> > We can come up with all sorts of rationalizations for how to make
> > things work in the context of QEMU, but they all just come across
> > as excuses to avoid changing the fairly arbitrary historical use
> > of qemu.git. Even if as QEMU maintainers we consider that we're a
> > "neutral" home, I can understand why it might not be perceived that
> > way from the outside.
> > 
> > If people want agility such that we need to make exceptions for
> > our rules during freeze that is one flag that it doesn't belong
> > with the main qemu.git, but there are broader points that are
> > pushing my view in that direction too.
> > 
> > 
> > Not mentioned is that engaging with the QEMU mailing list as a
> > non-regular QEMU contributor is not a very attractive task.
> > While QEMU may be satisfied with email, QEMU are in a tiny
> > minority these days. The rest of the OSS community has
> > decided that git forges are the better way to collaborate.
> > 
> > Our dev list is very high volume, with changes very easily (and
> > often) lost in the noise, even from regular contributors, such
> > that we have to teach people to (repeatedly) "ping" to attract
> > attention.
> 
> A separate repo in a git forge definitely has the advantage of making
> communication easier to follow for anyone interested only in the
> vhost-user protocol.
> 
> > If we want agility though, IMHO it is best to stay away from the
> > bureucracy of the OASIS virtio spec / committee, which is a big
> > turn off IME.
> 
> Yes, OASIS adds overhead.
> 
> The downside is that vhost-user suffers from being outside the VIRTIO
> spec umbrella. It's really a VIRTIO Transport and would benefit from the
> discipline of actually being part of the spec as such. At the moment
> vhost-user is not really bound to VIRTIO through any interface (i.e.
> VIRTIO Transport) or device lifecycle that is guaranteed to align with
> the VIRTIO spec. This has led to both design problems and bugs that
> would be prevented by making it a VIRTIO Transport.
> 
> In addition to the OASIS overhead you mentioned, the other issue is that
> moving vhost-user into the VIRTIO spec would require reconciling the
> the vhost-user protocol with the VIRITO Transport's interface and also
> rewriting parts of the vhost-user spec that are not up to the level
> (e.g. adding conformance clauses, eliminating some informal language,
> etc).

And possibly getting an agreement to OASIS IPR from major past contributors.

> In other words, it's a bunch of work. Although from a purist perspective
> I think it's the right place for vhost-user, I think it would be an
> unpopular solution.
> 
> > If we're considering a move of the spec, we should probably consider
> > the best home for some of the related code parts too:
> > 
> >   subprojects/libvhost-user/
> >   contrib/vhost-user-blk/
> >   contrib/vhost-user-bridge/
> >   contrib/vhost-user-gpu/
> >   contrib/vhost-user-input/
> >   contrib/vhost-user-scsi/
> > 
> > IIUC, the subprojects is fully standalone code with no dependency
> > on QEMU. It remained within QEMU for "convenience" allowing us to
> > consume them from the impls under contrib/. While the contrib code
> > has some depedencies on QEMU, overall they appear pretty light and
> > so likely easily detached
> > 
> >   $ git grep '#include "' vhost-user-* | awk '{print $2}' | sort | uniq
> >   "hw/virtio/virtio-gpu-bswap.h"
> >   "hw/virtio/virtio-gpu-pixman.h"
> >   "libvhost-user-glib.h"
> >   "libvhost-user.h"
> >   "qapi/error.h"
> >   "qemu/atomic.h"
> >   "qemu/bswap.h"
> >   "qemu/ctype.h"
> >   "qemu/drm.h"
> >   "qemu/iov.h"
> >   "qemu/osdep.h"
> >   "qemu/queue.h"
> >   "qemu/sockets.h"
> >   "standard-headers/linux/input.h"
> >   "standard-headers/linux/virtio_blk.h"
> >   "standard-headers/linux/virtio_gpu.h"
> >   "standard-headers/linux/virtio_input.h"
> >   "standard-headers/linux/virtio_net.h"
> >   "standard-headers/linux/virtio_scsi.h"
> >   "virgl.h"
> >   "vugbm.h"
> >   "vugpu.h"
> > 
> > 
> > We have a often repeated desire to eliminate the "contrib" tree
> > as a concept, since it is currently effectively a "dumping ground"
> > for things which are either unmaintained or didn't have a better
> > home yet. This might be a chance to provide a better home for a
> > big part of it.
> > 
> > IMHO this suggests it is worth creating a new top level gitlab project
> > for it all to live in and form a dedicated team around it, rather than
> > trying to pick any existing location.
> 
> Some vhost-user back-ends in the contrib/ directory are used by QEMU's
> test suite. An alternative way of integrating them into the tests could
> be found, but I wanted to mention that dependency.
> 
> Stefan



  reply	other threads:[~2026-06-11 20:45 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-27  9:13 Where should the vhost-user specification live? Alex Bennée
2026-05-27 12:55 ` Michael S. Tsirkin
2026-05-27 13:58   ` Alex Bennée
2026-06-01 12:32 ` Albert Esteve
2026-06-01 12:39   ` Michael S. Tsirkin
2026-06-01 13:05     ` Albert Esteve
2026-06-01 13:11       ` Michael S. Tsirkin
     [not found]         ` <CAJSP0QV4W=5MJsSGggACv-tqxDtiieKc0YzEn8t-R=RD94KJaQ@mail.gmail.com>
2026-06-01 14:22           ` Michael S. Tsirkin
2026-06-01 16:58             ` Stefan Hajnoczi
2026-06-01 14:27           ` Albert Esteve
2026-06-01 14:37             ` Michael S. Tsirkin
2026-06-01 15:18             ` Stefan Hajnoczi
2026-06-01 20:04               ` Michael S. Tsirkin
     [not found]                 ` <CACzuRyxedVMHNGkRf7AVyPWUTMgBMa6_DBnSHn+V6H7wN7XzWw@mail.gmail.com>
2026-06-04 16:28                   ` Stefan Hajnoczi
     [not found]                     ` <CAJSP0QXR6MyqoE1Uh-X7DzsOabbbN69TUyxf8r6ghUDCQnrP=w@mail.gmail.com>
2026-06-09 18:55                       ` Manos Pitsidianakis
     [not found]                       ` <CAFEAcA_Kd5_k+XyagUbB2+YVEMB0Sb0AB=oUZu6bGDot9TaFrQ@mail.gmail.com>
     [not found]                         ` <CAJSP0QVuSvVwa1szAy_3WVtWOjGK=oYAXjqAzbg5YoEvgybRjA@mail.gmail.com>
2026-06-09 20:36                           ` Michael S. Tsirkin
     [not found]                             ` <CAJSP0QWP5OnSaed4xD0FomwVSs1mN7e_U2jaM9KPFEy2bWPrVQ@mail.gmail.com>
     [not found]                               ` <aimTUHRIOFwYXvpw@redhat.com>
2026-06-11 20:43                                 ` Stefan Hajnoczi
     [not found]                           ` <CAFEAcA9ZkbNK5kRL5+OiqgN2hk3JAmFN8Qd3cytqyTEm9hBkvg@mail.gmail.com>
     [not found]                             ` <aikiB90tij642pEZ@redhat.com>
2026-06-11 20:39                               ` Stefan Hajnoczi
2026-06-11 20:45                                 ` Michael S. Tsirkin [this message]
2026-06-12  7:49                                   ` Stefano Garzarella
2026-06-12  9:31                                 ` Sergio Lopez Pascual

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=20260611164404-mutt-send-email-mst@kernel.org \
    --to=mst@redhat.com \
    --cc=MBURTON@qti.qualcomm.com \
    --cc=aesteve@redhat.com \
    --cc=alex.bennee@linaro.org \
    --cc=berrange@redhat.com \
    --cc=dbassey@redhat.com \
    --cc=demi@invisiblethingslab.com \
    --cc=dev@lists.cloudhypervisor.org \
    --cc=hi@alyssa.is \
    --cc=jemoreira@google.com \
    --cc=manos.pitsidianakis@linaro.org \
    --cc=matti@qti.qualcomm.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=rbradford@meta.com \
    --cc=rust-vmm@lists.opendev.org \
    --cc=sgarzare@redhat.com \
    --cc=slp@redhat.com \
    --cc=stefanha@gmail.com \
    --cc=stefanha@redhat.com \
    --cc=viresh.kumar@linaro.org \
    --cc=virtio-comment@lists.linux.dev \
    --cc=vishs@meta.com \
    --cc=zhaozhengyu@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox