qemu/hw/virtio
Stefan Hajnoczi d0435bc513 virtio: don't enable notifications during polling
Virtqueue notifications are not necessary during polling, so we disable
them.  This allows the guest driver to avoid MMIO vmexits.
Unfortunately the virtio-blk and virtio-scsi handler functions re-enable
notifications, defeating this optimization.

Fix virtio-blk and virtio-scsi emulation so they leave notifications
disabled.  The key thing to remember for correctness is that polling
always checks one last time after ending its loop, therefore it's safe
to lose the race when re-enabling notifications at the end of polling.

There is a measurable performance improvement of 5-10% with the null-co
block driver.  Real-life storage configurations will see a smaller
improvement because the MMIO vmexit overhead contributes less to
latency.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20191209210957.65087-1-stefanha@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2020-01-05 07:03:03 -05:00
..
Kconfig configure: simplify vhost condition with Kconfig 2019-12-17 19:32:48 +01:00
Makefile.objs configure: simplify vhost condition with Kconfig 2019-12-17 19:32:48 +01:00
trace-events hw/virtio/virtio-mmio: Convert DPRINTF to trace and log 2019-05-22 15:33:20 +02:00
vhost-backend.c Include qemu/main-loop.h less 2019-08-16 13:31:52 +02:00
vhost-scsi-pci.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
vhost-stub.c vhost-user: simplify vhost_user_init/vhost_user_cleanup 2019-03-12 21:22:31 -04:00
vhost-user-blk-pci.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
vhost-user-fs-pci.c virtio-fs: fix MSI-X nvectors calculation 2019-12-13 10:53:57 +00:00
vhost-user-fs.c vhost-user-fs: remove "vhostfd" property 2019-12-13 10:38:58 +00:00
vhost-user-input-pci.c Add vhost-user-input-pci 2019-05-10 14:52:47 +02:00
vhost-user-scsi-pci.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
vhost-user.c Include qemu/main-loop.h less 2019-08-16 13:31:52 +02:00
vhost-vsock-pci.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
vhost-vsock.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
vhost.c virtio/vhost: Use auto_rcu_read macros 2019-10-29 18:56:45 -04:00
virtio-9p-pci.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
virtio-balloon-pci.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
virtio-balloon.c virtio-balloon: fix memory leak while attach virtio-balloon device 2020-01-05 07:03:03 -05:00
virtio-blk-pci.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
virtio-bus.c virtio: notify virtqueue via host notifier when available 2019-11-06 06:35:00 -05:00
virtio-crypto-pci.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
virtio-crypto.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
virtio-input-host-pci.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
virtio-input-pci.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
virtio-mmio.c hw/virtio: Factorize virtio-mmio headers 2019-10-22 09:38:42 +02:00
virtio-net-pci.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
virtio-pci.c virtio-pci: disable vring processing when bus-mastering is disabled 2020-01-05 07:03:03 -05:00
virtio-pci.h virtio-pci: Add Function Level Reset support 2019-09-04 06:33:10 -04:00
virtio-pmem-pci.c virtio pmem: remove transitional names 2019-07-12 10:57:27 -04:00
virtio-pmem-pci.h virtio-pci: Proxy for virtio-pmem 2019-07-04 17:00:32 -04:00
virtio-pmem.c Include sysemu/hostmem.h less 2019-08-16 13:31:53 +02:00
virtio-rng-pci.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
virtio-rng.c virtio: Free rnd virqueue at unrealize() 2019-10-25 07:46:22 -04:00
virtio-scsi-pci.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
virtio-serial-pci.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
virtio.c virtio: don't enable notifications during polling 2020-01-05 07:03:03 -05:00