This series started as an attempt to always use the dataplane path for virtio-blk and virtio-scsi when ioeventfd is active. The aim was three-fold:
1) to add more coverage for dataplane 2) to remove virtio_add_queue_aio 3) to simplify the dataplane start/stop code It achieves the first two objectives, and while it doesn't quite achieve the third it does cleanup the generic ioeventfd code in virtio-bus more than I expected. In particular, it reduces the set of callbacks that transports must implement, and it removes the ugly case where ioeventfd is started with generic callbacks and then moved to the dataplane callbacks. It also enables some simplification of the functions that deal with host notifiers. I've tested it with virtio-blk, virtio-scsi and vhost-net. Patches 1 and 2 are simplifications that are too nice to leave them for later in the series. Patch 3 moves some of the ioeventfd code from virtio-bus.c to virtio.c. At this point the transition is a bit half-assed, but this changes as soon as we remove the generic->dataplane handler transition. Patches 4 to 6 do exactly that, and then the spring cleaning begins, lasting for the whole second half of the series. Opinions, reviews and bug reports? Thanks, Paolo Paolo Bonzini (12): virtio: move ioeventfd_disabled flag to VirtioBusState virtio: move ioeventfd_started flag to VirtioBusState virtio: add start_ioeventfd and stop_ioeventfd to VirtioDeviceClass virtio: introduce virtio_device_ioeventfd_enabled virtio-blk: always use dataplane path if ioeventfd is active virtio-scsi: always use dataplane path if ioeventfd is active Revert "virtio: Introduce virtio_add_queue_aio" virtio: remove set_handler argument from set_host_notifier_internal virtio: remove ioeventfd_disabled altogether virtio: do not export set_host_notifier_internal virtio: inline virtio_queue_set_host_notifier_fd_handler virtio: inline set_host_notifier_internal hw/block/dataplane/virtio-blk.c | 67 +++++++++++------- hw/block/dataplane/virtio-blk.h | 6 +- hw/block/virtio-blk.c | 16 ++--- hw/s390x/virtio-ccw.c | 36 +--------- hw/s390x/virtio-ccw.h | 2 - hw/scsi/virtio-scsi-dataplane.c | 51 ++++++++------ hw/scsi/virtio-scsi.c | 24 +++---- hw/virtio/vhost.c | 5 +- hw/virtio/virtio-bus.c | 153 +++++++++++++++------------------------- hw/virtio/virtio-mmio.c | 35 +-------- hw/virtio/virtio-pci.c | 32 +-------- hw/virtio/virtio-pci.h | 2 - hw/virtio/virtio.c | 139 +++++++++++++++++++++++------------- include/hw/virtio/virtio-bus.h | 27 ++++--- include/hw/virtio/virtio-scsi.h | 6 +- include/hw/virtio/virtio.h | 11 +-- 16 files changed, 272 insertions(+), 340 deletions(-) -- 2.7.4