qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] dataplane: support viostor virtio-pci status bi


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] [PATCH] dataplane: support viostor virtio-pci status bit setting
Date: Thu, 17 Jan 2013 17:59:14 +0100
User-agent: Mutt/1.5.21 (2010-09-15)

On Thu, Jan 17, 2013 at 05:59:17PM +0200, Michael S. Tsirkin wrote:
> On Thu, Jan 17, 2013 at 04:46:54PM +0100, Stefan Hajnoczi wrote:
> > The viostor virtio-blk driver for Windows does not use the
> > VIRTIO_CONFIG_S_DRIVER bit.  It only sets the VIRTIO_CONFIG_S_DRIVER_OK
> > bit.
> > 
> > The viostor driver refreshes the virtio-pci status byte sometimes while
> > the guest is running.  We misinterpret 0x4 (VIRTIO_CONFIG_S_DRIVER_OK)
> > as an indication that virtio-blk-data-plane should be stopped since 0x2
> > (VIRTIO_CONFIG_S_DRIVER) is missing.  The result is that the device
> > becomes unresponsive.
> > 
> > Signed-off-by: Stefan Hajnoczi <address@hidden>
> 
> I think you actually want
> 
>   if (s->dataplane && !(status & VIRTIO_CONFIG_S_DRIVER_OK)))
> 
> so stop on any error.
> 
> This is also consistent with what vhost-net does.

We can't do that because of the Linux virtio quirk where it begins using
virtqueues before VIRTIO_CONFIG_S_DRIVER_OK.  I original checked
VIRTIO_CONFIG_S_DRIVER_OK but I'm pretty sure I hit a situation where
the status would still be set ~DRIVER_OK after the first kick - this
would stop data plane and the vring last indices would no longer be in
sync when it started again.

So I think it's most robust to check both DRIVER and DRIVER_OK.

Stefan



reply via email to

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