xemu/docs/interop
Johannes Berg 3348e7e34f docs: vhost-user: add in-band kick/call messages
For good reason, vhost-user is currently built asynchronously, that
way better performance can be obtained. However, for certain use
cases such as simulation, this is problematic.

Consider an event-based simulation in which both the device and CPU
have scheduled according to a simulation "calendar". Now, consider
the CPU sending I/O to the device, over a vring in the vhost-user
protocol. In this case, the CPU must wait for the vring interrupt
to have been processed by the device, so that the device is able to
put an entry onto the simulation calendar to obtain time to handle
the interrupt. Note that this doesn't mean the I/O is actually done
at this time, it just means that the handling of it is scheduled
before the CPU can continue running.

This cannot be done with the asynchronous eventfd based vring kick
and call design.

Extend the protocol slightly, so that a message can be used for kick
and call instead, if VHOST_USER_PROTOCOL_F_INBAND_NOTIFICATIONS is
negotiated. This in itself doesn't guarantee synchronisation, but both
sides can also negotiate VHOST_USER_PROTOCOL_F_REPLY_ACK and thus get
a reply to this message by setting the need_reply flag, and ensure
synchronisation this way.

To really use it in both directions, VHOST_USER_PROTOCOL_F_SLAVE_REQ
is also needed.

Since it is used for simulation purposes and too many messages on
the socket can lock up the virtual machine, document that this should
only be used together with the mentioned features.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Message-Id: <20200123081708.7817-6-johannes@sipsolutions.net>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2020-02-27 03:46:10 -05:00
..
bitmaps.rst docs/bitmaps: use QMP lexer instead of json 2019-07-10 15:08:07 -04:00
conf.py docs: Move tools documentation to tools manual 2020-02-25 10:48:06 +00:00
dbus-vmstate.rst Add dbus-vmstate object 2020-01-06 18:41:32 +04:00
dbus.rst Add dbus-vmstate object 2020-01-06 18:41:32 +04:00
firmware.json hw/ppc/prep: Remove the deprecated "prep" machine and the OpenHackware BIOS 2020-02-02 14:07:57 +11:00
index.rst docs: Move tools documentation to tools manual 2020-02-25 10:48:06 +00:00
live-block-operations.rst Remove the deprecated -nodefconfig option 2018-08-31 09:52:46 +02:00
nbd.txt nbd: Prepare for NBD_CMD_FLAG_FAST_ZERO 2019-09-05 16:03:13 -05:00
parallels.txt docs: create interop/ subdirectory 2017-06-15 11:18:39 +02: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 docs: qcow2: introduce compression type feature 2020-02-20 16:42:52 +01:00
qed_spec.txt docs: create interop/ subdirectory 2017-06-15 11:18:39 +02:00
qemu-ga-ref.texi docs: create interop/ subdirectory 2017-06-15 11:18:39 +02:00
qemu-ga.rst qemu-ga: Convert invocation documentation to rST 2019-09-13 16:05:01 +01:00
qemu-qmp-ref.texi docs: create interop/ subdirectory 2017-06-15 11:18:39 +02:00
qmp-intro.txt docs/interop/qmp: Improve OOB documentation 2018-07-03 23:09:31 +02:00
qmp-spec.txt docs: Update references to JSON RFC 2018-12-13 19:10:06 +01:00
vhost-user-gpu.rst vhost-user: add vhost_user_gpu_set_socket() 2019-05-29 06:29:07 +02:00
vhost-user.json virtiofsd: add --print-capabilities option 2020-01-23 16:41:36 +00:00
vhost-user.rst docs: vhost-user: add in-band kick/call messages 2020-02-27 03:46:10 -05:00
vnc-ledstate-Pseudo-encoding.txt docs: create interop/ subdirectory 2017-06-15 11:18:39 +02:00