> -----Original Message----- > From: dev [mailto:dev-boun...@dpdk.org] On Behalf Of Tomasz Kulasek > Sent: Saturday, February 10, 2018 1:35 AM > To: y...@fridaylinux.org > Cc: dev@dpdk.org; yuanhan....@linux.intel.com; sta...@dpdk.org; Liu, > Changpeng > Subject: [dpdk-dev] [PATCH] vhost: fix wait for valid descriptor > > For each virt queue's kickfd and callfd, there are 2 invalid > status: VIRTIO_UNINITIALIZED_EVENTFD and VIRTIO_INVALID_EVENTFD. > Don't set the virt queue to ready status until got the valid > descriptor.
Cannot remember why we introduce two invalid status. If we treat "VIRTIO_INVALID_EVENTFD" as an indicator to judge if device is ready, then defining one status (invalid) is enough. Thanks, Jianfeng > > This is safe for polling mode drivers in Guest OS, the backend > vhost process will not post notification to interrupt vector for > PMD mode in guest, but the interrupt vector still valid. > > Fixes: e049ca6d10e0 ("vhost-user: prepare multiple queue setup") > Cc: yuanhan....@linux.intel.com > Cc: sta...@dpdk.org > > Signed-off-by: Changpeng Liu <changpeng....@intel.com> > Signed-off-by: Tomasz Kulasek <tomaszx.kula...@intel.com> > --- > lib/librte_vhost/vhost_user.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c > index 65ee33919..4508f697b 100644 > --- a/lib/librte_vhost/vhost_user.c > +++ b/lib/librte_vhost/vhost_user.c > @@ -766,7 +766,9 @@ vq_is_ready(struct vhost_virtqueue *vq) > { > return vq && vq->desc && vq->avail && vq->used && > vq->kickfd != VIRTIO_UNINITIALIZED_EVENTFD && > - vq->callfd != VIRTIO_UNINITIALIZED_EVENTFD; > + vq->callfd != VIRTIO_UNINITIALIZED_EVENTFD && > + vq->kickfd != VIRTIO_INVALID_EVENTFD && > + vq->callfd != VIRTIO_INVALID_EVENTFD; > } > > static int > -- > 2.14.1