From: "Michael S. Tsirkin" <mst@redhat.com>
To: Alyssa Ross <hi@alyssa.is>
Cc: qemu-devel@nongnu.org
Subject: Re: vhost-user protocol feature negotiation
Date: Wed, 5 Aug 2020 18:26:27 -0400 [thread overview]
Message-ID: <20200805181352-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <87sgd1ktx9.fsf@alyssa.is>
On Wed, Aug 05, 2020 at 03:13:06PM +0000, Alyssa Ross wrote:
> Quoting from the definition of VHOST_USER_SET_PROTOCOL_FEATURES in
> vhost-user.rst:
>
> > Only legal if feature bit ``VHOST_USER_F_PROTOCOL_FEATURES`` is present in
> > ``VHOST_USER_GET_FEATURES``.
> >
> > .. Note::
> > Slave that reported ``VHOST_USER_F_PROTOCOL_FEATURES`` must support
> > this message even before ``VHOST_USER_SET_FEATURES`` was called.
>
> To me, this could mean either of two things:
>
> (1) If VHOST_USER_F_PROTOCOL_FEATURES hasn't been set, upon receiving
> VHOST_USER_SET_PROTOCOL_FEATURES, a backend should enable the
> protocol features immediately.
>
> (2) If VHOST_USER_F_PROTOCOL_FEATURES hasn't been set, upon receiving
> VHOST_USER_SET_PROTOCOL_FEATURES, a backend should store those
> feature bits, but not actually consider them to be enabled until
> after VHOST_USER_SET_FEATURES has been received (presumably
> containing VHOST_USER_F_PROTOCOL_FEATURES).
>
> The reason I bring this up is that QEMU appears to interpret it as (1),
> while the vhost-user-net backend in Intel's cloud-hypervisor[1]
> interprets it as (2). So I'm looking for a clarification.
>
> [1]: https://github.com/cloud-hypervisor/cloud-hypervisor
>
> Thanks in advance.
IMHO the intent was this: VHOST_USER_F_PROTOCOL_FEATURES bit in
VHOST_USER_GET_FEATURES means that qemu can send
VHOST_USER_GET_PROTOCOL_FEATURES and VHOST_USER_SET_PROTOCOL_FEATURES.
With most feature bits in VHOST_USER_GET_FEATURES, the
specific functionality needs to only be enabled after
VHOST_USER_SET_FEATURES.
However, this is for functionality dealing with guest activity.
VHOST_USER_SET_PROTOCOL_FEATURES has nothing to do with guest directly,
it's about negotiation between qemu and backend: it is only in
VHOST_USER_GET_FEATURES for the reason that this is the only message
(very) old backends reported. Thus, the backend should not check
whether VHOST_USER_SET_FEATURES sets VHOST_USER_F_PROTOCOL_FEATURES,
instead it should simply always be ready to receive
VHOST_USER_GET_PROTOCOL_FEATURES and VHOST_USER_SET_PROTOCOL_FEATURES.
Backend that isn't always ready to handle
VHOST_USER_GET_PROTOCOL_FEATURES and VHOST_USER_SET_PROTOCOL_FEATURES
should not set VHOST_USER_F_PROTOCOL_FEATURES in
VHOST_USER_GET_FEATURES.
This appears to be closer to (1), but if qemu can't distinguish
then we don't care, right? For example, VHOST_USER_PROTOCOL_F_REPLY_ACK
enables acks on arbitrary messages. Does the backend in question
ignore the affected bit until SET_FEATURES? If yes won't this
make qemu hang?
How would you suggest clarifying the wording?
Thanks,
--
MST
next prev parent reply other threads:[~2020-08-05 22:27 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-05 15:13 vhost-user protocol feature negotiation Alyssa Ross
2020-08-05 22:26 ` Michael S. Tsirkin [this message]
2020-08-06 8:59 ` Alyssa Ross
2020-08-06 9:49 ` Michael S. Tsirkin
2020-08-06 11:24 ` Alyssa Ross
2020-08-06 12:35 ` Michael S. Tsirkin
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=20200805181352-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=hi@alyssa.is \
--cc=qemu-devel@nongnu.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.