From mboxrd@z Thu Jan 1 00:00:00 1970 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) X-Amp-Result: UNSCANNABLE X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 Jun 2018 03:31:22 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,270,1526367600"; d="scan'208";a="52030816" Received: from debian.sh.intel.com (HELO debian) ([10.67.104.228]) by orsmga008.jf.intel.com with ESMTP; 25 Jun 2018 03:31:22 -0700 Date: Mon, 25 Jun 2018 18:31:25 +0800 From: Tiwei Bie To: Maxime Coquelin Cc: zhihong.wang@intel.com, dev@dpdk.org 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 Content-Disposition: inline In-Reply-To: <45538e52-174b-7608-5320-f4ff06afc250@redhat.com> User-Agent: Mutt/1.9.5 (2018-04-13) Subject: Re: [dpdk-dev] [PATCH v2 4/7] vhost: translate iovas at vectors fill time X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Jun 2018 10:31:25 -0000 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