qemu-e2k/hw/scsi
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 virtio: express virtio dependencies with Kconfig 2019-03-07 21:45:53 +01:00
Makefile.objs scsi: express dependencies with Kconfig 2019-03-07 21:45:53 +01:00
emulation.c scsi-generic: avoid invalid access to struct when emulating block limits 2018-11-06 21:35:06 +01:00
esp-pci.c Include migration/vmstate.h less 2019-08-16 13:31:52 +02:00
esp.c esp: add pseudo-DMA as used by Macintosh 2019-10-28 19:03:45 +01:00
lsi53c895a.c scsi: lsi: exit infinite loop while executing script (CVE-2019-12068) 2019-08-20 20:00:52 +02:00
megasas.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
mfi.h Clean up header guards that don't match their file name 2016-07-12 16:19:16 +02:00
mpi.h hw: Add support for LSI SAS1068 (mptsas) device 2016-02-09 15:45:26 +01:00
mptconfig.c Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
mptendian.c Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
mptsas.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
mptsas.h mptsas: really fix migration compatibility 2016-08-03 18:44:56 +02:00
scsi-bus.c scsi: deprecate scsi-disk 2019-11-19 10:01:34 +01:00
scsi-disk.c scsi: deprecate scsi-disk 2019-11-19 10:01:34 +01:00
scsi-generic.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
spapr_vscsi.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
srp.h spapr-vscsi: add task management 2013-09-12 08:46:21 +02:00
trace-events trace: Remove trailing newline in events 2019-09-18 10:19:47 +01:00
vhost-scsi-common.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
vhost-scsi.c sysemu: Move the VMChangeStateEntry typedef to qemu/typedefs.h 2019-08-16 13:31:53 +02:00
vhost-user-scsi.c vhost-user-scsi: prevent using uninitialized vqs 2019-08-22 16:52:23 +01:00
viosrp.h hw: move private headers to hw/ subdirectories. 2013-04-08 18:13:16 +02:00
virtio-scsi-dataplane.c Replace '-enable-kvm' with '-accel kvm' in docs and help texts 2018-06-28 19:05:32 +02:00
virtio-scsi.c virtio: don't enable notifications during polling 2020-01-05 07:03:03 -05:00
vmw_pvscsi.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
vmw_pvscsi.h scsi: VMWare PVSCSI paravirtual device implementation 2013-04-19 10:44:17 +02:00