From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57158) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bIEQl-00023P-IN for qemu-devel@nongnu.org; Wed, 29 Jun 2016 08:17:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bIEQf-0001zm-HK for qemu-devel@nongnu.org; Wed, 29 Jun 2016 08:17:22 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:41830) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bIEQf-0001zh-8a for qemu-devel@nongnu.org; Wed, 29 Jun 2016 08:17:17 -0400 Received: from pps.filterd (m0098404.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.11/8.16.0.11) with SMTP id u5TCFU8G030430 for ; Wed, 29 Jun 2016 08:17:16 -0400 Received: from e06smtp10.uk.ibm.com (e06smtp10.uk.ibm.com [195.75.94.106]) by mx0a-001b2d01.pphosted.com with ESMTP id 23v09q2jm2-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Wed, 29 Jun 2016 08:17:16 -0400 Received: from localhost by e06smtp10.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 29 Jun 2016 13:17:13 +0100 Received: from b06cxnps3075.portsmouth.uk.ibm.com (d06relay10.portsmouth.uk.ibm.com [9.149.109.195]) by d06dlp02.portsmouth.uk.ibm.com (Postfix) with ESMTP id A40EE219005E for ; Wed, 29 Jun 2016 13:16:40 +0100 (BST) Received: from d06av03.portsmouth.uk.ibm.com (d06av03.portsmouth.uk.ibm.com [9.149.37.213]) by b06cxnps3075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id u5TCHAUR10027448 for ; Wed, 29 Jun 2016 12:17:10 GMT Received: from d06av03.portsmouth.uk.ibm.com (localhost [127.0.0.1]) by d06av03.portsmouth.uk.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id u5TCH7Ax024125 for ; Wed, 29 Jun 2016 06:17:09 -0600 From: Cornelia Huck Date: Wed, 29 Jun 2016 14:17:04 +0200 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Message-Id: <1467202624-72941-1-git-send-email-cornelia.huck@de.ibm.com> Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH] virtio: Fix setting up host notifiers for vhost List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: mst@redhat.com, famz@redhat.com, stefanha@redhat.com, jasowang@redhat.com, pl@kamp.de, marcandre.lureau@gmail.com, Cornelia Huck When setting up host notifiers, virtio_bus_set_host_notifier() simply switches the handler. This will only work, however, if the ioeventfd has already been setup; this is true for dataplane, but not for vhost. Fix this by starting the ioeventfd if that has not happened before. While we're at it, also fixup the unsetting path of set_host_notifier_internal(). Fixes: 6798e245a3 ("virtio-bus: common ioeventfd infrastructure") Reported-by: Jason Wang Reported-by: Marc-Andr=C3=A9 Lureau Signed-off-by: Cornelia Huck --- This fixes the vhost regression for me, while dataplane continues to work. Peter, does this help with your iSCSI regression? --- hw/virtio/virtio-bus.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hw/virtio/virtio-bus.c b/hw/virtio/virtio-bus.c index 1313760..0136242 100644 --- a/hw/virtio/virtio-bus.c +++ b/hw/virtio/virtio-bus.c @@ -176,8 +176,8 @@ static int set_host_notifier_internal(DeviceState *pr= oxy, VirtioBusState *bus, return r; } } else { - virtio_queue_set_host_notifier_fd_handler(vq, false, false); k->ioeventfd_assign(proxy, notifier, n, assign); + virtio_queue_set_host_notifier_fd_handler(vq, false, false); event_notifier_cleanup(notifier); } return r; @@ -258,6 +258,9 @@ int virtio_bus_set_host_notifier(VirtioBusState *bus,= int n, bool assign) return -ENOSYS; } if (assign) { + if (!k->ioeventfd_started(proxy)) { + virtio_bus_start_ioeventfd(bus); + } /* * Stop using the generic ioeventfd, we are doing eventfd handli= ng * ourselves below --=20 2.6.6