From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tiwei Bie Subject: Re: [PATCH v2 4/7] vhost: translate iovas at vectors fill time Date: Mon, 25 Jun 2018 18:31:25 +0800 Message-ID: <20180625103124.GA16690@debian> References: <20180623071127.22999-1-maxime.coquelin@redhat.com> <20180623071127.22999-5-maxime.coquelin@redhat.com> <20180625022143.GA19607@debian> <45538e52-174b-7608-5320-f4ff06afc250@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Cc: zhihong.wang@intel.com, dev@dpdk.org To: Maxime Coquelin Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 2368F2C6A for ; Mon, 25 Jun 2018 12:31:24 +0200 (CEST) Content-Disposition: inline In-Reply-To: <45538e52-174b-7608-5320-f4ff06afc250@redhat.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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