On Wed, Jun 17, 2020 at 5:19 AM Jason Wang <jasowang@xxxxxxxxxx> wrote: > > > On 2020/6/11 下午7:34, Michael S. Tsirkin wrote: > > static void vhost_vq_free_iovecs(struct vhost_virtqueue *vq) > > { > > kfree(vq->descs); > > @@ -394,6 +400,9 @@ static long vhost_dev_alloc_iovecs(struct vhost_dev *dev) > > for (i = 0; i < dev->nvqs; ++i) { > > vq = dev->vqs[i]; > > vq->max_descs = dev->iov_limit; > > + if (vhost_vq_num_batch_descs(vq) < 0) { > > + return -EINVAL; > > + } > > > This check breaks vdpa which set iov_limit to zero. Consider iov_limit > is meaningless to vDPA, I wonder we can skip the test when device > doesn't use worker. I tested as if (dev->use_worker && vhost_vq_num_batch_descs(vq) < 0) In v9. Please let me know if that is ok for you. Thanks! > > Thanks >