qemu/docs
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
..
_templates
about migration: Deprecate old compression method 2023-10-31 08:44:33 +01:00
config vl: recognize audiodev groups in configuration files 2023-09-22 17:35:11 +02:00
devel docs/migration: Add the dirty limit section 2023-11-03 07:48:25 +01:00
interop vhost-user.rst: Clarify enabling/disabling vrings 2023-11-07 03:39:10 -05:00
specs docs/specs/vmgenid: Convert to rST 2023-11-02 13:36:45 +00:00
sphinx docs/sphinx: avoid invalid escape in Python string 2023-10-17 15:20:53 +02:00
sphinx-static
spin
system docs/specs/ivshmem-spec: Convert to rST 2023-11-02 12:52:06 +00:00
tools qemu-img: add compression option to rebase subcommand 2023-10-31 13:51:28 +01:00
user bsd-user: Add '-one-insn-per-tb' option equivalent to '-singlestep' 2023-05-02 15:47:40 +01:00
block-replication.txt
bypass-iommu.txt
COLO-FT.txt migration: block incoming colo when capability is disabled 2023-05-10 18:48:12 +02:00
colo-proxy.txt
conf.py Update copyright dates to 2023 2023-05-30 15:50:17 +01:00
defs.rst.inc
igd-assign.txt
image-fuzzer.txt
index.rst
memory-hotplug.txt
meson.build configure: bootstrap sphinx with mkvenv 2023-05-18 08:53:51 +02:00
multi-thread-compression.txt docs tests: Fix use of migrate_set_parameter 2023-09-08 13:08:52 +03:00
multiseat.txt
nvdimm.txt
pci_expander_bridge.txt
pcie.txt docs/pcie.txt: Replace ioh3420 with pcie-root-port 2023-01-28 06:21:30 -05:00
pcie_pci_bridge.txt
pcie_sriov.txt pcie: Use common ARI next function number 2023-07-10 18:59:32 -04:00
pvrdma.txt
qcow2-cache.txt
qdev-device-use.txt util: remove support -chardev tty and -chardev parport 2023-01-06 00:51:02 +01:00
qemu-option-trace.rst.inc
qemupciserial.inf
rdma.txt docs tests: Fix use of migrate_set_parameter 2023-09-08 13:08:52 +03:00
spice-port-fqdn.txt
throttle.txt
xbzrle.txt
xen-save-devices-state.txt