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
next prev parent 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