The VIRTIO 1.1 packed virtqueue layout improves performance and guest driver support has been available since Linux v5.0. virtio-blk benchmarks show it is beneficial for non-net devices too so I wrote patches to enable it for all devices.
It turned out to be trickier than I expected because vhost feature negotiation is currently not ready for new virtqueue feature bits like VIRTIO_F_RING_PACKED. Patches 2-4 solve this. Patch 5 then enables packed virtqueues. Stefan Hajnoczi (5): tests/libqos: mask out VIRTIO_F_RING_PACKED for now vhost: involve device backends in feature negotiation vhost-user-blk: add VIRTIO_F_RING_PACKED feature bit vhost-scsi: add VIRTIO_F_VERSION_1 and VIRTIO_F_RING_PACKED virtio: enable VIRTIO_F_RING_PACKED for all devices include/hw/virtio/vhost.h | 1 + include/hw/virtio/virtio-gpu.h | 2 ++ include/hw/virtio/virtio.h | 2 +- include/sysemu/cryptodev-vhost.h | 11 +++++++++++ backends/cryptodev-vhost.c | 19 +++++++++++++++++++ hw/block/vhost-user-blk.c | 1 + hw/core/machine.c | 18 +++++++++++++++++- hw/display/vhost-user-gpu.c | 17 +++++++++++++++++ hw/display/virtio-gpu-base.c | 2 +- hw/input/vhost-user-input.c | 9 +++++++++ hw/scsi/vhost-scsi.c | 2 ++ hw/scsi/vhost-user-scsi.c | 2 ++ hw/virtio/vhost-user-fs.c | 5 +++-- hw/virtio/vhost-vsock.c | 5 +++-- hw/virtio/vhost.c | 22 ++++++++++++++++++++++ hw/virtio/virtio-crypto.c | 3 ++- tests/qtest/libqos/virtio.c | 3 ++- 17 files changed, 115 insertions(+), 9 deletions(-) -- 2.25.3