On 09/11/2016 16:47, Michael S. Tsirkin wrote: > On Wed, Nov 09, 2016 at 02:22:42PM +0100, Paolo Bonzini wrote: >> >> >> On 09/11/2016 14:18, Felipe Franciosi wrote: >>> Recent changes on vhost_dev_enable/disable_notifiers() produced a >>> VirtioBusState vbus variable which can be used instead of the >>> VIRTIO_BUS() macro. This commit just makes the code a little bit cleaner >>> and more consistent. >>> >>> Signed-off-by: Felipe Franciosi <fel...@nutanix.com> >> >> Michael, what do you think? Perhaps it's simplest to just squash the >> two patches (v2 of "vhost: Update 'ioeventfd_started' with host >> notifiers" and this one). >> >> Paolo > > I think I'll apply both but why bother squashing?
Just because VIRTIO_BUS(qbus)->ioeventfd_started = true; from the first patch is ugly. :) Paolo >>> --- >>> hw/virtio/vhost.c | 14 ++++++-------- >>> 1 file changed, 6 insertions(+), 8 deletions(-) >>> >>> diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c >>> index 1290963..7d29dad 100644 >>> --- a/hw/virtio/vhost.c >>> +++ b/hw/virtio/vhost.c >>> @@ -1198,20 +1198,18 @@ int vhost_dev_enable_notifiers(struct vhost_dev >>> *hdev, VirtIODevice *vdev) >>> >>> virtio_device_stop_ioeventfd(vdev); >>> for (i = 0; i < hdev->nvqs; ++i) { >>> - r = virtio_bus_set_host_notifier(VIRTIO_BUS(qbus), hdev->vq_index >>> + i, >>> - true); >>> + r = virtio_bus_set_host_notifier(vbus, hdev->vq_index + i, true); >>> if (r < 0) { >>> error_report("vhost VQ %d notifier binding failed: %d", i, -r); >>> goto fail_vq; >>> } >>> } >>> - VIRTIO_BUS(qbus)->ioeventfd_started = true; >>> + vbus->ioeventfd_started = true; >>> >>> return 0; >>> fail_vq: >>> while (--i >= 0) { >>> - e = virtio_bus_set_host_notifier(VIRTIO_BUS(qbus), hdev->vq_index >>> + i, >>> - false); >>> + e = virtio_bus_set_host_notifier(vbus, hdev->vq_index + i, false); >>> if (e < 0) { >>> error_report("vhost VQ %d notifier cleanup error: %d", i, -r); >>> } >>> @@ -1230,17 +1228,17 @@ fail: >>> void vhost_dev_disable_notifiers(struct vhost_dev *hdev, VirtIODevice >>> *vdev) >>> { >>> BusState *qbus = BUS(qdev_get_parent_bus(DEVICE(vdev))); >>> + VirtioBusState *vbus = VIRTIO_BUS(qbus); >>> int i, r; >>> >>> for (i = 0; i < hdev->nvqs; ++i) { >>> - r = virtio_bus_set_host_notifier(VIRTIO_BUS(qbus), hdev->vq_index >>> + i, >>> - false); >>> + r = virtio_bus_set_host_notifier(vbus, hdev->vq_index + i, false); >>> if (r < 0) { >>> error_report("vhost VQ %d notifier cleanup failed: %d", i, -r); >>> } >>> assert (r >= 0); >>> } >>> - VIRTIO_BUS(qbus)->ioeventfd_started = false; >>> + vbus->ioeventfd_started = false; >>> virtio_device_start_ioeventfd(vdev); >>> } >>> >>>