From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58801) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bovUO-0004nw-Bw for qemu-devel@nongnu.org; Tue, 27 Sep 2016 12:44:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bovUK-00007M-3x for qemu-devel@nongnu.org; Tue, 27 Sep 2016 12:44:15 -0400 Received: from mail-wm0-x243.google.com ([2a00:1450:400c:c09::243]:34558) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bovUJ-00006s-TP for qemu-devel@nongnu.org; Tue, 27 Sep 2016 12:44:12 -0400 Received: by mail-wm0-x243.google.com with SMTP id l132so2016171wmf.1 for ; Tue, 27 Sep 2016 09:44:11 -0700 (PDT) Sender: Paolo Bonzini References: <1474463939-12223-1-git-send-email-pbonzini@redhat.com> <1df4f6a2-f4ed-8826-823b-4a879368ccb8@redhat.com> From: Paolo Bonzini Message-ID: Date: Tue, 27 Sep 2016 18:44:08 +0200 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH 00/12] virtio: cleanup ioeventfd start/stop List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Christian Borntraeger , qemu-devel@nongnu.org Cc: cornelia.huck@de.ibm.com, famz@redhat.com, mst@redhat.com On 27/09/2016 16:45, Christian Borntraeger wrote: > On 09/21/2016 06:43 PM, Paolo Bonzini wrote: >> >> >> On 21/09/2016 16:01, Christian Borntraeger wrote: >>> On 09/21/2016 03:18 PM, Paolo Bonzini wrote: >>>> 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? >>> >>> is there a branch? >> >> ioeventfd-virtio in my github repo. > > Triggering > qemu-system-s390x: /home/cborntra/REPOS/qemu/hw/block/virtio-blk.c:771: virtio_blk_set_status: Assertion `!s->dataplane_started' failed. > > Is this based on the old version that still had this bug? No, it's a new assertion (though it looks the same as the old one), and a stupid one too. This is hopefully enough: diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c index 9f09e29..52927f7 100644 --- a/hw/block/virtio-blk.c +++ b/hw/block/virtio-blk.c @@ -768,7 +768,10 @@ static void virtio_blk_set_status(VirtIODevice *vdev, uint8_t status) { VirtIOBlock *s = VIRTIO_BLK(vdev); - assert(!s->dataplane_started); + if (!(status & (VIRTIO_CONFIG_S_DRIVER | VIRTIO_CONFIG_S_DRIVER_OK))) { + assert(!s->dataplane_started); + } + if (!(status & VIRTIO_CONFIG_S_DRIVER_OK)) { return; } Paolo