Re: [RFC v3 0/5] virtio: support packed ring

From: Jason Wang
Date: Fri Apr 27 2018 - 02:18:10 EST

On 2018å04æ27æ 12:18, Michael S. Tsirkin wrote:
On Fri, Apr 27, 2018 at 11:56:05AM +0800, Jason Wang wrote:
On 2018å04æ25æ 13:15, Tiwei Bie wrote:
Hello everyone,

This RFC implements packed ring support in virtio driver.

Some simple functional tests have been done with Jason's
packed ring implementation in vhost:

Both of ping and netperf worked as expected (with EVENT_IDX
disabled). But there are below known issues:

1. Reloading the guest driver will break the Tx/Rx;
Will have a look at this issue.

2. Zeroing the flags when detaching a used desc will
break the guest -> host path.
I still think zeroing flags is unnecessary or even a bug. At host, I track
last observed avail wrap counter and detect avail like (what is suggested in
the example code in the spec):

static bool desc_is_avail(struct vhost_virtqueue *vq, __virtio16 flags)
ÂÂÂÂÂÂ bool avail = flags & cpu_to_vhost16(vq, DESC_AVAIL);

ÂÂÂÂÂÂ return avail == vq->avail_wrap_counter;

So zeroing wrap can not work with this obviously.

I agree. I think what one should do is flip the available bit.

But is this flipping a must?