Message ID | 1468300800-31256-2-git-send-email-famz@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, 12 Jul 2016 13:19:55 +0800 Fam Zheng <famz@redhat.com> wrote: > It always equals to assign now. I think this needs further elaboration... > > Signed-off-by: Fam Zheng <famz@redhat.com> > Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> > --- > hw/virtio/virtio-bus.c | 13 ++++++------- > 1 file changed, 6 insertions(+), 7 deletions(-) > > @@ -167,7 +166,7 @@ static int set_host_notifier_internal(DeviceState *proxy, VirtioBusState *bus, > error_report("%s: unable to init event notifier: %d", __func__, r); > return r; > } > - virtio_queue_set_host_notifier_fd_handler(vq, true, set_handler); > + virtio_queue_set_host_notifier_fd_handler(vq, true, true); > r = k->ioeventfd_assign(proxy, notifier, n, assign); > if (r < 0) { > error_report("%s: unable to assign ioeventfd: %d", __func__, r); > @@ -269,7 +268,7 @@ int virtio_bus_set_host_notifier(VirtioBusState *bus, int n, bool assign) > */ > virtio_bus_stop_ioeventfd(bus); > } > - return set_host_notifier_internal(proxy, bus, n, assign, false); > + return set_host_notifier_internal(proxy, bus, n, assign); ...because this changes the behaviour for assign==true. > } > > static char *virtio_bus_get_dev_path(DeviceState *dev)
On Tue, 07/12 11:09, Cornelia Huck wrote: > On Tue, 12 Jul 2016 13:19:55 +0800 > Fam Zheng <famz@redhat.com> wrote: > > > It always equals to assign now. > > I think this needs further elaboration... > > > > > Signed-off-by: Fam Zheng <famz@redhat.com> > > Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> > > --- > > hw/virtio/virtio-bus.c | 13 ++++++------- > > 1 file changed, 6 insertions(+), 7 deletions(-) > > > > > @@ -167,7 +166,7 @@ static int set_host_notifier_internal(DeviceState *proxy, VirtioBusState *bus, > > error_report("%s: unable to init event notifier: %d", __func__, r); > > return r; > > } > > - virtio_queue_set_host_notifier_fd_handler(vq, true, set_handler); > > + virtio_queue_set_host_notifier_fd_handler(vq, true, true); > > r = k->ioeventfd_assign(proxy, notifier, n, assign); > > if (r < 0) { > > error_report("%s: unable to assign ioeventfd: %d", __func__, r); > > > @@ -269,7 +268,7 @@ int virtio_bus_set_host_notifier(VirtioBusState *bus, int n, bool assign) > > */ > > virtio_bus_stop_ioeventfd(bus); > > } > > - return set_host_notifier_internal(proxy, bus, n, assign, false); > > + return set_host_notifier_internal(proxy, bus, n, assign); > > ...because this changes the behaviour for assign==true. Oh this is the one I overlook in rebase because it wasn't present with your refactoring but it is now back in commit 0830c96d70b. Good catch, I need to fix this, and therefore Stefan's r-b shouldn't have been kept along. Fam > > > } > > > > static char *virtio_bus_get_dev_path(DeviceState *dev) >
On Tue, 12 Jul 2016 17:16:42 +0800 Fam Zheng <famz@redhat.com> wrote: > On Tue, 07/12 11:09, Cornelia Huck wrote: > > On Tue, 12 Jul 2016 13:19:55 +0800 > > > @@ -269,7 +268,7 @@ int virtio_bus_set_host_notifier(VirtioBusState *bus, int n, bool assign) > > > */ > > > virtio_bus_stop_ioeventfd(bus); > > > } > > > - return set_host_notifier_internal(proxy, bus, n, assign, false); > > > + return set_host_notifier_internal(proxy, bus, n, assign); > > > > ...because this changes the behaviour for assign==true. > > Oh this is the one I overlook in rebase because it wasn't present with your > refactoring but it is now back in commit 0830c96d70b. Yes, we need to come up with a proper solution, but I currently don't see this for 2.7. > > Good catch, I need to fix this, and therefore Stefan's r-b shouldn't have been > kept along. The whole host notifier stuff is good at causing headaches :(
diff --git a/hw/virtio/virtio-bus.c b/hw/virtio/virtio-bus.c index a85b7c8..8700de0 100644 --- a/hw/virtio/virtio-bus.c +++ b/hw/virtio/virtio-bus.c @@ -150,10 +150,9 @@ void virtio_bus_set_vdev_config(VirtioBusState *bus, uint8_t *config) * This function handles both assigning the ioeventfd handler and * registering it with the kernel. * assign: register/deregister ioeventfd with the kernel - * set_handler: use the generic ioeventfd handler */ static int set_host_notifier_internal(DeviceState *proxy, VirtioBusState *bus, - int n, bool assign, bool set_handler) + int n, bool assign) { VirtIODevice *vdev = virtio_bus_get_device(bus); VirtioBusClass *k = VIRTIO_BUS_GET_CLASS(bus); @@ -167,7 +166,7 @@ static int set_host_notifier_internal(DeviceState *proxy, VirtioBusState *bus, error_report("%s: unable to init event notifier: %d", __func__, r); return r; } - virtio_queue_set_host_notifier_fd_handler(vq, true, set_handler); + virtio_queue_set_host_notifier_fd_handler(vq, true, true); r = k->ioeventfd_assign(proxy, notifier, n, assign); if (r < 0) { error_report("%s: unable to assign ioeventfd: %d", __func__, r); @@ -201,7 +200,7 @@ void virtio_bus_start_ioeventfd(VirtioBusState *bus) if (!virtio_queue_get_num(vdev, n)) { continue; } - r = set_host_notifier_internal(proxy, bus, n, true, true); + r = set_host_notifier_internal(proxy, bus, n, true); if (r < 0) { goto assign_error; } @@ -215,7 +214,7 @@ assign_error: continue; } - r = set_host_notifier_internal(proxy, bus, n, false, false); + r = set_host_notifier_internal(proxy, bus, n, false); assert(r >= 0); } k->ioeventfd_set_started(proxy, false, true); @@ -237,7 +236,7 @@ void virtio_bus_stop_ioeventfd(VirtioBusState *bus) if (!virtio_queue_get_num(vdev, n)) { continue; } - r = set_host_notifier_internal(proxy, bus, n, false, false); + r = set_host_notifier_internal(proxy, bus, n, false); assert(r >= 0); } k->ioeventfd_set_started(proxy, false, false); @@ -269,7 +268,7 @@ int virtio_bus_set_host_notifier(VirtioBusState *bus, int n, bool assign) */ virtio_bus_stop_ioeventfd(bus); } - return set_host_notifier_internal(proxy, bus, n, assign, false); + return set_host_notifier_internal(proxy, bus, n, assign); } static char *virtio_bus_get_dev_path(DeviceState *dev)