qemu/docs/interop
Hanna Czenczek eae69cc36b vhost-user.rst: Clarify enabling/disabling vrings
Currently, the vhost-user documentation says that rings are to be
initialized in a disabled state when VHOST_USER_F_PROTOCOL_FEATURES is
negotiated.  However, by the time of feature negotiation, all rings have
already been initialized, so it is not entirely clear what this means.

At least the vhost-user-backend Rust crate's implementation interpreted
it to mean that whenever this feature is negotiated, all rings are to
put into a disabled state, which means that every SET_FEATURES call
would disable all rings, effectively halting the device.  This is
problematic because the VHOST_F_LOG_ALL feature is also set or cleared
this way, which happens during migration.  Doing so should not halt the
device.

Other implementations have interpreted this to mean that the device is
to be initialized with all rings disabled, and a subsequent SET_FEATURES
call that does not set VHOST_USER_F_PROTOCOL_FEATURES will enable all of
them.  Here, SET_FEATURES will never disable any ring.

This interpretation does not suffer the problem of unintentionally
halting the device whenever features are set or cleared, so it seems
better and more reasonable.

We can clarify this in the documentation by making it explicit that the
enabled/disabled state is tracked even while the vring is stopped.
Every vring is initialized in a disabled state, and SET_FEATURES without
VHOST_USER_F_PROTOCOL_FEATURES simply becomes one way to enable all
vrings.

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Hanna Czenczek <hreitz@redhat.com>
Message-Id: <20231016134243.68248-3-hreitz@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2023-11-07 03:39:10 -05:00
..
barrier.rst docs: Move the protocol part of barrier.txt into interop 2021-08-02 12:55:51 +01:00
bitmaps.rst docs/interop/bitmaps: use blockdev-backup 2021-11-09 18:20:47 +01:00
dbus-display.rst docs: add dbus-display documentation 2021-12-21 10:50:21 +04:00
dbus-vmstate.rst docs: move D-Bus VMState documentation to source XML 2021-12-21 10:50:21 +04:00
dbus.rst docs: add dbus-display documentation 2021-12-21 10:50:21 +04:00
firmware.json qapi: @foo should be used to reference, not `foo` 2023-04-28 11:48:34 +02:00
index.rst docs/interop: Convert qmp-spec.txt to rST 2023-05-22 10:21:01 +02:00
live-block-operations.rst docs: add an introduction to the system docs 2023-02-02 11:48:18 +00:00
nbd.txt nbd/server: Add FLAG_PAYLOAD support to CMD_BLOCK_STATUS 2023-10-05 11:02:08 -05:00
parallels.txt parallels.txt: fix bitmap L1 table description 2021-03-08 14:56:54 +01:00
pr-helper.rst global: Squash 'the the' 2019-11-06 17:19:40 +01:00
prl-xml.txt docs/interop/prl-xml: description of Parallels Disk format 2018-01-22 14:02:33 +00:00
qcow2.txt qcow2: Explicit mention of padding bytes 2023-06-02 11:24:18 -05:00
qed_spec.txt docs: create interop/ subdirectory 2017-06-15 11:18:39 +02:00
qemu-ga-ref.rst docs: Remove stale TODO comments about license and version 2021-08-02 11:42:38 +01:00
qemu-ga.rst qga: Add new option --allow-rpcs 2023-07-10 15:54:40 +03:00
qemu-qmp-ref.rst docs: add an introduction to the system docs 2023-02-02 11:48:18 +00:00
qemu-storage-daemon-qmp-ref.rst docs: Remove stale TODO comments about license and version 2021-08-02 11:42:38 +01:00
qmp-spec.rst docs/interop/qmp-spec: Update error description for parsing errors 2023-05-22 10:22:29 +02:00
vhost-user-gpu.rst docs: vhost-user-gpu: add protocol changes for dmabuf modifiers 2023-09-12 10:37:01 +04:00
vhost-user.json configure: Improve OpenGL dependency detections 2021-03-04 09:35:30 +01:00
vhost-user.rst vhost-user.rst: Clarify enabling/disabling vrings 2023-11-07 03:39:10 -05:00
vhost-vdpa.rst vhost-vdpa: introduce vhost-vdpa backend 2020-07-07 07:59:51 -04:00
virtio-balloon-stats.rst docs: reSTify virtio-balloon-stats documentation and move to docs/interop 2022-01-07 19:30:13 -05:00
vnc-ledstate-pseudo-encoding.rst docs/interop: Change the vnc-ledstate-Pseudo-encoding doc into .rst 2023-01-09 13:50:47 +01:00