[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