On Fri, Nov 23, 2018 at 01:57:37PM +0800, Wei Xu wrote: > On Thu, Nov 22, 2018 at 06:57:31PM +0100, Maxime Coquelin wrote: > > Hi Wei, > > > > I just tested your series with Tiwei's v3, and it fails > > with ctrl vq enabled: > > qemu-system-x86_64: virtio-net ctrl missing headers > > OK, I haven't tried Tiwei's v3 yet, will give it a try.
Hi Maxime, It is caused by the _F_NEXT flag bit for indirect descriptor as mentioned by tiwei, this patch is needed to fix it. diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 7487d3d..8e61e6f 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -1478,7 +1478,11 @@ static void *virtqueue_packed_pop(VirtQueue *vq, size_t sz) i -= vq->vring.num; } - if (desc.flags & VRING_DESC_F_NEXT) { + if (cache == &indirect_desc_cache) { + if (i == max) + break; + vring_packed_desc_read(vq->vdev, &desc, cache, i); + } else if (desc.flags & VRING_DESC_F_NEXT) { vring_packed_desc_read(vq->vdev, &desc, cache, i); } else {