aboutsummaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorEugenio Pérez <eperezma@redhat.com>2022-03-14 18:34:47 +0100
committerJason Wang <jasowang@redhat.com>2022-03-15 13:57:44 +0800
commit100890f7cad502b6fa49465ffff287ba79fcf94b (patch)
tree9b50bf6cd426488ef70076dab1e349ece5018bbc /util
parentd96be4c8942a9f983f8a1642b397150d0d80c6ea (diff)
downloadqemu-100890f7cad502b6fa49465ffff287ba79fcf94b.zip
qemu-100890f7cad502b6fa49465ffff287ba79fcf94b.tar.gz
qemu-100890f7cad502b6fa49465ffff287ba79fcf94b.tar.bz2
vhost: Shadow virtqueue buffers forwarding
Initial version of shadow virtqueue that actually forward buffers. There is no iommu support at the moment, and that will be addressed in future patches of this series. Since all vhost-vdpa devices use forced IOMMU, this means that SVQ is not usable at this point of the series on any device. For simplicity it only supports modern devices, that expects vring in little endian, with split ring and no event idx or indirect descriptors. Support for them will not be added in this series. It reuses the VirtQueue code for the device part. The driver part is based on Linux's virtio_ring driver, but with stripped functionality and optimizations so it's easier to review. However, forwarding buffers have some particular pieces: One of the most unexpected ones is that a guest's buffer can expand through more than one descriptor in SVQ. While this is handled gracefully by qemu's emulated virtio devices, it may cause unexpected SVQ queue full. This patch also solves it by checking for this condition at both guest's kicks and device's calls. The code may be more elegant in the future if SVQ code runs in its own iocontext. Signed-off-by: Eugenio Pérez <eperezma@redhat.com> Acked-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Jason Wang <jasowang@redhat.com>
Diffstat (limited to 'util')
0 files changed, 0 insertions, 0 deletions