Here's the next version of my refactoring of the virtio host notifiers. This one actually survives a bit of testing for me (reboot loop).
As this patchset fixes a latent bug exposed by the recent dataplane changes (we have a deassigned ioeventfd for a short period of time during dataplane start, which leads to the virtqueue handler being called in both the vcpu thread and the iothread simultaneously), I'd like to see this in 2.6. Changes from RFC: - Fixed some silly errors (checking for !disabled instead of disabled, virtio_ccw_stop_ioeventfd() calling virtio_bus_start_ioeventfd()). - Completely reworked set_host_notifier(): We only want to set/unset the actual handler function and don't want to do anything to the ioeventfd backing, so reduce the function to actually doing only that. - With the change above, we can lose the 'assign' parameter in virtio_bus_stop_ioeventfd() again. - Added more comments that hopefully make it clearer what is going on. I'd appreciate it if people could give it some testing; I'll be back to look at the fallout after Easter. Cornelia Huck (6): virtio-bus: common ioeventfd infrastructure virtio-bus: have callers tolerate new host notifier api virtio-ccw: convert to ioeventfd callbacks virtio-pci: convert to ioeventfd callbacks virtio-mmio: convert to ioeventfd callbacks virtio-bus: remove old set_host_notifier callback hw/block/dataplane/virtio-blk.c | 6 +- hw/s390x/virtio-ccw.c | 133 ++++++++++++++-------------------------- hw/scsi/virtio-scsi-dataplane.c | 9 ++- hw/virtio/vhost.c | 13 ++-- hw/virtio/virtio-bus.c | 132 +++++++++++++++++++++++++++++++++++++++ hw/virtio/virtio-mmio.c | 128 +++++++++++++------------------------- hw/virtio/virtio-pci.c | 124 +++++++++++++------------------------ include/hw/virtio/virtio-bus.h | 31 +++++++++- 8 files changed, 303 insertions(+), 273 deletions(-) -- 2.6.5