Received: by 2002:ac0:aed5:0:0:0:0:0 with SMTP id t21csp4416677imb; Wed, 6 Mar 2019 12:54:19 -0800 (PST) X-Google-Smtp-Source: APXvYqxlGsY+T68UIVd4sCCsSRf86HsxpxQwbuTorWjvT1BRq118awUPciJ8x9B63oIjOEnMlMos X-Received: by 2002:a63:cc43:: with SMTP id q3mr8082029pgi.387.1551905659102; Wed, 06 Mar 2019 12:54:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551905659; cv=none; d=google.com; s=arc-20160816; b=yP7U9p1KnPv1rrp2IqtbNoMS2a1LYXTMBOh/cTHpDVYzLIUyijF42b19OD/i+KRmBi 4nXkOfOTd/P18PlF4MNKstNbslo5QOlqeTZ1MKk7C7HRMaAZfn3e9bkxid2M4Fy2QorM v6VvdhsMZ/BF8CWgal1VwsHTiq/3dEBV9udHd4c+WlTV46RmH3csZ/YPkeaiqiz4F1Ma dIHJE9dgFhLJtQyQ5Yq3GZK8CMMZMvk+6jdLkqmg+jqhzhOW3nEqCrPwtLWN1xMK4Kuq tmD6cwN2rnSNUzbTMi0iEe48fuU+nFbN6fLj2Fq3EoXrQAi/ws3miTkoHrBc7Nkq6MjA 10kQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=vigpWUQ8b8ts8VnG7T2zXXh6BV/41RiIXHkYKoNiGk8=; b=ALUrQWfhLQl/3+0MPogpBcf9rQSXub6b3BdBB2rNpRRV/GT24hSMNNhFR1zqhCBz20 1t6LoUlWW8rc94tPlrF58ZdidjEleaM+pWBOa2bj8hmlhRSn5ygk0+1gQ93AJahiQsi2 IB1prrneL3dtLpHqH7jL+C14teBCULekcxcA2wm9WJ1lJzYOJhQKlxwpLA/WJiv50VFU vhWZeCrdTYHY82LIymD1n0NUqCJvlcBv9ABjBFw2MvFfvR1RqCUkV/tUubvXMViRkQsd OR5KeR4ArmjarvFL4qbAILpGQo3QemB32n2qARdgvd4HuQphOvhS+h/d8YAr09Sl+MXy L0eQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=fdUrwiVK; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s184si2091934pgs.279.2019.03.06.12.54.00; Wed, 06 Mar 2019 12:54:19 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=fdUrwiVK; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730308AbfCFSjI (ORCPT + 99 others); Wed, 6 Mar 2019 13:39:08 -0500 Received: from mail-lf1-f68.google.com ([209.85.167.68]:43711 "EHLO mail-lf1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727459AbfCFSjH (ORCPT ); Wed, 6 Mar 2019 13:39:07 -0500 Received: by mail-lf1-f68.google.com with SMTP id a130so1801651lfa.10; Wed, 06 Mar 2019 10:39:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=vigpWUQ8b8ts8VnG7T2zXXh6BV/41RiIXHkYKoNiGk8=; b=fdUrwiVKOg3psmVOsSEaNyWNbrHb8Q9vKwwRZrruHP5Taqb7IDVF6sQ2UioRDHkUl0 yjMyrVqps5gSidmdj6DOHcz01f35lp8U8oeA3d3OXBhuPmWX82K4vtJM61pTN+UE7bQD 0jQqsT8QhK2TY78TuV4W2OCUSVKJfeXN3pSgLa4x6BivGSt88dADFnz7zSGKf12ZJbTM dITs31ad2MVcvi+GUsLHa3CHev06QBISbLPneb3stElcuPObgvps7oIxQPjsr88cS+w+ VknfWXZN8TcY4gZqqYXUlC1UxQPcnKREVqluZ9NeN11gASoCu+JFhpOsjj3jS9lxUK6D Kcvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=vigpWUQ8b8ts8VnG7T2zXXh6BV/41RiIXHkYKoNiGk8=; b=Pa74e4L+L91G5IdCuD/JX+crdPlPChIcn/pK9Jk/ogZlNt6PNPe22QP+8JubX2p+u5 xWLFiRGghmpBXiqpJaYmbHriyWsZpXrN1vHqrOMVEbAcYLHpS2TCRyZs4/jDpFfTKV/a 38AuHddOtbFMNkVQTAsoWx4s0cC3FIPd/k77Ass28Su8i4sYzHnCvOYDGkcp6zzWByro t0vq9xStC7r56QZ2TMY/rQe2wQ0nMjNpGCgNDXtstcJb0N7PIaDkqF7zRzN48CxUdCA9 B2lyOTnFgpdiY/SP1d5EiT4A5h8l1nowAlvwFYvEjKVIkUxfdAMslwk+vfAAr77lg5m6 5fcw== X-Gm-Message-State: APjAAAUKf5WJNsxiwUA/sPWISJKULHmbBw1VhcKfgqegqrJBIavdT/oD MnjwniXxN2OllW2CDmjZuehJcyV3NU/+VNDm2ni+pA== X-Received: by 2002:ac2:41cb:: with SMTP id d11mr4748618lfi.3.1551897544583; Wed, 06 Mar 2019 10:39:04 -0800 (PST) MIME-Version: 1.0 References: <1551856692-3384-1-git-send-email-jasowang@redhat.com> <1551856692-3384-5-git-send-email-jasowang@redhat.com> In-Reply-To: <1551856692-3384-5-git-send-email-jasowang@redhat.com> From: Souptick Joarder Date: Thu, 7 Mar 2019 00:13:24 +0530 Message-ID: Subject: Re: [RFC PATCH V2 4/5] vhost: introduce helpers to get the size of metadata area To: Jason Wang Cc: mst@redhat.com, kvm@vger.kernel.org, virtualization@lists.linux-foundation.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, peterx@redhat.com, Linux-MM , aarcange@redhat.com Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Mar 6, 2019 at 12:48 PM Jason Wang wrote: > > Signed-off-by: Jason Wang Is the change log left with any particular reason ? > --- > drivers/vhost/vhost.c | 46 ++++++++++++++++++++++++++++------------------ > 1 file changed, 28 insertions(+), 18 deletions(-) > > diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c > index 2025543..1015464 100644 > --- a/drivers/vhost/vhost.c > +++ b/drivers/vhost/vhost.c > @@ -413,6 +413,27 @@ static void vhost_dev_free_iovecs(struct vhost_dev *dev) > vhost_vq_free_iovecs(dev->vqs[i]); > } > > +static size_t vhost_get_avail_size(struct vhost_virtqueue *vq, int num) > +{ > + size_t event = vhost_has_feature(vq, VIRTIO_RING_F_EVENT_IDX) ? 2 : 0; > + > + return sizeof(*vq->avail) + > + sizeof(*vq->avail->ring) * num + event; > +} > + > +static size_t vhost_get_used_size(struct vhost_virtqueue *vq, int num) > +{ > + size_t event = vhost_has_feature(vq, VIRTIO_RING_F_EVENT_IDX) ? 2 : 0; > + > + return sizeof(*vq->used) + > + sizeof(*vq->used->ring) * num + event; > +} > + > +static size_t vhost_get_desc_size(struct vhost_virtqueue *vq, int num) > +{ > + return sizeof(*vq->desc) * num; > +} > + > void vhost_dev_init(struct vhost_dev *dev, > struct vhost_virtqueue **vqs, int nvqs, int iov_limit) > { > @@ -1253,13 +1274,9 @@ static bool vq_access_ok(struct vhost_virtqueue *vq, unsigned int num, > struct vring_used __user *used) > > { > - size_t s = vhost_has_feature(vq, VIRTIO_RING_F_EVENT_IDX) ? 2 : 0; > - > - return access_ok(desc, num * sizeof *desc) && > - access_ok(avail, > - sizeof *avail + num * sizeof *avail->ring + s) && > - access_ok(used, > - sizeof *used + num * sizeof *used->ring + s); > + return access_ok(desc, vhost_get_desc_size(vq, num)) && > + access_ok(avail, vhost_get_avail_size(vq, num)) && > + access_ok(used, vhost_get_used_size(vq, num)); > } > > static void vhost_vq_meta_update(struct vhost_virtqueue *vq, > @@ -1311,22 +1328,18 @@ static bool iotlb_access_ok(struct vhost_virtqueue *vq, > > int vq_meta_prefetch(struct vhost_virtqueue *vq) > { > - size_t s = vhost_has_feature(vq, VIRTIO_RING_F_EVENT_IDX) ? 2 : 0; > unsigned int num = vq->num; > > if (!vq->iotlb) > return 1; > > return iotlb_access_ok(vq, VHOST_ACCESS_RO, (u64)(uintptr_t)vq->desc, > - num * sizeof(*vq->desc), VHOST_ADDR_DESC) && > + vhost_get_desc_size(vq, num), VHOST_ADDR_DESC) && > iotlb_access_ok(vq, VHOST_ACCESS_RO, (u64)(uintptr_t)vq->avail, > - sizeof *vq->avail + > - num * sizeof(*vq->avail->ring) + s, > + vhost_get_avail_size(vq, num), > VHOST_ADDR_AVAIL) && > iotlb_access_ok(vq, VHOST_ACCESS_WO, (u64)(uintptr_t)vq->used, > - sizeof *vq->used + > - num * sizeof(*vq->used->ring) + s, > - VHOST_ADDR_USED); > + vhost_get_used_size(vq, num), VHOST_ADDR_USED); > } > EXPORT_SYMBOL_GPL(vq_meta_prefetch); > > @@ -1343,13 +1356,10 @@ bool vhost_log_access_ok(struct vhost_dev *dev) > static bool vq_log_access_ok(struct vhost_virtqueue *vq, > void __user *log_base) > { > - size_t s = vhost_has_feature(vq, VIRTIO_RING_F_EVENT_IDX) ? 2 : 0; > - > return vq_memory_access_ok(log_base, vq->umem, > vhost_has_feature(vq, VHOST_F_LOG_ALL)) && > (!vq->log_used || log_access_ok(log_base, vq->log_addr, > - sizeof *vq->used + > - vq->num * sizeof *vq->used->ring + s)); > + vhost_get_used_size(vq, vq->num))); > } > > /* Can we start vq? */ > -- > 1.8.3.1 >