qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 00/12] virtio: cleanup ioeventfd start/stop


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH 00/12] virtio: cleanup ioeventfd start/stop
Date: Tue, 27 Sep 2016 18:44:08 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0


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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]