From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1FD15ECE58E for ; Thu, 10 Oct 2019 05:49:29 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id E060E2190F for ; Thu, 10 Oct 2019 05:49:28 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E060E2190F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 6256C6B0003; Thu, 10 Oct 2019 01:49:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5D6A66B0005; Thu, 10 Oct 2019 01:49:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5124D6B0006; Thu, 10 Oct 2019 01:49:28 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0151.hostedemail.com [216.40.44.151]) by kanga.kvack.org (Postfix) with ESMTP id 2D8B76B0003 for ; Thu, 10 Oct 2019 01:49:28 -0400 (EDT) Received: from smtpin16.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with SMTP id DF28F485F for ; Thu, 10 Oct 2019 05:49:27 +0000 (UTC) X-FDA: 76026797574.16.rest46_527b421fc7414 X-HE-Tag: rest46_527b421fc7414 X-Filterd-Recvd-Size: 6244 Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by imf49.hostedemail.com (Postfix) with ESMTP for ; Thu, 10 Oct 2019 05:49:26 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 371DB2A09A3; Thu, 10 Oct 2019 05:49:25 +0000 (UTC) Received: from [10.72.12.46] (ovpn-12-46.pek2.redhat.com [10.72.12.46]) by smtp.corp.redhat.com (Postfix) with ESMTP id 69C6D600C4; Thu, 10 Oct 2019 05:49:18 +0000 (UTC) Subject: Re: [PATCH 07/11] vhost: convert vhost_umem_interval_tree to half closed intervals To: Davidlohr Bueso , akpm@linux-foundation.org Cc: walken@google.com, peterz@infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, dri-devel@lists.freedesktop.org, linux-rdma@vger.kernel.org, "Michael S. Tsirkin" , virtualization@lists.linux-foundation.org, Davidlohr Bueso References: <20191003201858.11666-1-dave@stgolabs.net> <20191003201858.11666-8-dave@stgolabs.net> From: Jason Wang Message-ID: <294467e3-5545-9a76-a975-4798f096ac4b@redhat.com> Date: Thu, 10 Oct 2019 13:49:17 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: <20191003201858.11666-8-dave@stgolabs.net> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Thu, 10 Oct 2019 05:49:25 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On 2019/10/4 =E4=B8=8A=E5=8D=884:18, Davidlohr Bueso wrote: > The vhost_umem interval tree really wants [a, b) intervals, > not fully closed as currently. As such convert it to use the > new interval_tree_gen.h, and also rename the 'last' endpoint > in the node to 'end', which both a more suitable name for > the half closed interval and also reduces the chances of some > caller being missed. > > Cc: Michael S. Tsirkin" > Cc: Jason Wang > Cc: virtualization@lists.linux-foundation.org > Signed-off-by: Davidlohr Bueso > --- > drivers/vhost/vhost.c | 19 +++++++++---------- > drivers/vhost/vhost.h | 4 ++-- > 2 files changed, 11 insertions(+), 12 deletions(-) > > diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c > index 36ca2cf419bf..80c3cca24dc7 100644 > --- a/drivers/vhost/vhost.c > +++ b/drivers/vhost/vhost.c > @@ -28,7 +28,7 @@ > #include > #include > #include > -#include > +#include > #include > =20 > #include "vhost.h" > @@ -51,7 +51,7 @@ enum { > =20 > INTERVAL_TREE_DEFINE(struct vhost_umem_node, > rb, __u64, __subtree_last, > - START, LAST, static inline, vhost_umem_interval_tree); > + START, END, static inline, vhost_umem_interval_tree); > =20 > #ifdef CONFIG_VHOST_CROSS_ENDIAN_LEGACY > static void vhost_disable_cross_endian(struct vhost_virtqueue *vq) > @@ -1034,7 +1034,7 @@ static int vhost_new_umem_range(struct vhost_umem= *umem, > =20 > node->start =3D start; > node->size =3D size; > - node->last =3D end; > + node->end =3D end; > node->userspace_addr =3D userspace_addr; > node->perm =3D perm; > INIT_LIST_HEAD(&node->link); > @@ -1112,7 +1112,7 @@ static int vhost_process_iotlb_msg(struct vhost_d= ev *dev, > } > vhost_vq_meta_reset(dev); > if (vhost_new_umem_range(dev->iotlb, msg->iova, msg->size, > - msg->iova + msg->size - 1, > + msg->iova + msg->size, > msg->uaddr, msg->perm)) { > ret =3D -ENOMEM; > break; > @@ -1126,7 +1126,7 @@ static int vhost_process_iotlb_msg(struct vhost_d= ev *dev, > } > vhost_vq_meta_reset(dev); > vhost_del_umem_range(dev->iotlb, msg->iova, > - msg->iova + msg->size - 1); > + msg->iova + msg->size); > break; > default: > ret =3D -EINVAL; > @@ -1320,15 +1320,14 @@ static bool iotlb_access_ok(struct vhost_virtqu= eue *vq, > { > const struct vhost_umem_node *node; > struct vhost_umem *umem =3D vq->iotlb; > - u64 s =3D 0, size, orig_addr =3D addr, last =3D addr + len - 1; > + u64 s =3D 0, size, orig_addr =3D addr, last =3D addr + len; > =20 > if (vhost_vq_meta_fetch(vq, addr, len, type)) > return true; > =20 > while (len > s) { > node =3D vhost_umem_interval_tree_iter_first(&umem->umem_tree, > - addr, > - last); > + addr, last); > if (node =3D=3D NULL || node->start > addr) { > vhost_iotlb_miss(vq, addr, access); > return false; > @@ -1455,7 +1454,7 @@ static long vhost_set_memory(struct vhost_dev *d,= struct vhost_memory __user *m) > region->guest_phys_addr, > region->memory_size, > region->guest_phys_addr + > - region->memory_size - 1, > + region->memory_size, > region->userspace_addr, > VHOST_ACCESS_RW)) > goto err; > @@ -2055,7 +2054,7 @@ static int translate_desc(struct vhost_virtqueue = *vq, u64 addr, u32 len, > } > =20 > node =3D vhost_umem_interval_tree_iter_first(&umem->umem_tree, > - addr, addr + len - 1); > + addr, addr + len); > if (node =3D=3D NULL || node->start > addr) { > if (umem !=3D dev->iotlb) { > ret =3D -EFAULT; > diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h > index e9ed2722b633..bb36cb9ed5ec 100644 > --- a/drivers/vhost/vhost.h > +++ b/drivers/vhost/vhost.h > @@ -53,13 +53,13 @@ struct vhost_log { > }; > =20 > #define START(node) ((node)->start) > -#define LAST(node) ((node)->last) > +#define END(node) ((node)->end) > =20 > struct vhost_umem_node { > struct rb_node rb; > struct list_head link; > __u64 start; > - __u64 last; > + __u64 end; > __u64 size; > __u64 userspace_addr; > __u32 perm; Reviewed-by: Jason Wang