[dpdk-dev] [PATCH v2 4/7] vhost: translate iovas at vectors fill time
Tiwei Bie
tiwei.bie at intel.com
Mon Jun 25 12:31:25 CEST 2018
On Mon, Jun 25, 2018 at 09:19:34AM +0200, Maxime Coquelin wrote:
> On 06/25/2018 04:21 AM, Tiwei Bie wrote:
> > On Sat, Jun 23, 2018 at 09:11:24AM +0200, Maxime Coquelin wrote:
[...]
> > > @@ -293,7 +314,8 @@ fill_vec_buf(struct virtio_net *dev, struct vhost_virtqueue *vq,
> > > static inline int
> > > reserve_avail_buf(struct virtio_net *dev, struct vhost_virtqueue *vq,
> > > uint32_t size, struct buf_vector *buf_vec,
> > > - uint16_t *num_buffers, uint16_t avail_head)
> > > + uint16_t *num_buffers, uint16_t avail_head,
> > > + uint16_t *nr_vec)
> > > {
> > > uint16_t cur_idx;
> > > uint32_t vec_idx = 0;
> > > @@ -315,7 +337,8 @@ reserve_avail_buf(struct virtio_net *dev, struct vhost_virtqueue *vq,
> > > return -1;
> > > if (unlikely(fill_vec_buf(dev, vq, cur_idx, &vec_idx, buf_vec,
> > > - &head_idx, &len) < 0))
> > > + &head_idx, &len,
> > > + VHOST_ACCESS_RO) < 0))
> >
> > reserve_avail_buf() is called by virtio_dev_rx(),
> > so the write perm is needed.
> Right.
>
> To avoid having to pass the perms, I wonder if it wouldn't be better to
> rely on the descriptors' VRING_DESC_F_WRITE flag.
>
Currently, DPDK vhost net doesn't check this flag,
so it could cause problems in some cases. If we
want to rely on this flag, I think we still need
to pass something similar to tell fill_vec_buf()
whether the bufs will be written or read, so the
flag can be checked.
Best regards,
Tiwei Bie
More information about the dev
mailing list