Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp271299ybp; Thu, 3 Oct 2019 13:20:46 -0700 (PDT) X-Google-Smtp-Source: APXvYqyPU+igzRUuaIVVoJiiprJIgosO3ohqssTHtfHP3EaMCrH338LnEvwoELz7TXg4CzMkhPZO X-Received: by 2002:aa7:c812:: with SMTP id a18mr11867134edt.240.1570134045987; Thu, 03 Oct 2019 13:20:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570134045; cv=none; d=google.com; s=arc-20160816; b=bRkAeu5Ry+6safx4rk258p8iiPrHQYrSZ7EwgCfPMHT9jl6HYk7QahiZTMNid3beZH 4I0ZF4dZgVtilvWolDqPlMDBV2+a2GYY8yyJuPSkdlTjfXRk5EMdVk7KM2kakDzIkLNv 5lIR+AH9RIIwZZOhVPEInfSgxAKvORZtBLbFBWodh5Q8GnBcpFsjjFXSYLuDFk78/YWu APMaEKNbAtTol5n3XmbR16NX0SdfR7l4l+I4ybCKLt8OoAEF90sUSti3Cu5G+CbLJ6hR IonLmqZf1tG2PgCa6aaK3MtCQpJ1I/VbXDnCSBFYYaXmp5VZ2du2tvewA3NSvEQIu+Az wC3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=+InpMM17OqMeyC7iX4pqXm6RD8vAgtaN5aQ81RNzxMA=; b=X716tujtxihcml7BeRa1IwxDIZVHoTMk6K16qWfFqvdyG9SSIhwSGIT4Lg+h2PfqyF 4hltht6wgiNTLnjxfO6Q39e9TUyiiTANaKHQnzKrW2AlXPBm17ZARHGv6WOP8GK9pQBX pja1Y4lNJ1SGtcyb9jXrqVp6HtT8MicA+P37AkgEbnCUcD/+wMqevFV5NGmEcARcYrms 4CO1Eral92pOKztMvit8MYEcFpC9o7DWU7BVMwN/zZj68iojJc0qrgYceX78dC8I9/bO ie1nIi6Cx1tNAFAXgQ2mmJwjAV/3bckPxnypxvPfwY/sm+JHrhb2Z55X3/fMTWSw9j2C triA== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z55si2210069edb.41.2019.10.03.13.20.21; Thu, 03 Oct 2019 13:20:45 -0700 (PDT) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388428AbfJCUUL (ORCPT + 99 others); Thu, 3 Oct 2019 16:20:11 -0400 Received: from mx2.suse.de ([195.135.220.15]:46344 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725932AbfJCUUL (ORCPT ); Thu, 3 Oct 2019 16:20:11 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 94374B03B; Thu, 3 Oct 2019 20:20:08 +0000 (UTC) From: Davidlohr Bueso To: 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, dave@stgolabs.net Subject: [PATCH -next 00/11] lib/interval-tree: move to half closed intervals Date: Thu, 3 Oct 2019 13:18:47 -0700 Message-Id: <20191003201858.11666-1-dave@stgolabs.net> X-Mailer: git-send-email 2.16.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, It has been discussed[1,2] that almost all users of interval trees would better be served if the intervals were actually not [a,b], but instead [a, b). This series attempts to convert all callers by way of transitioning from using "interval_tree_generic.h" to "interval_tree_gen.h". Once all users are converted, we remove the former. Patch 1: adds a call that will make patch 8 easier to review by introducing stab queries for the vma interval tree. Patch 2: adds the new interval_tree_gen.h which is the same as the old one but uses [a,b) intervals. Patch 3-9: converts, in baby steps (as much as possible), each interval tree to the new [a,b) one. It is done this way also to maintain bisectability. Most conversions are pretty straightforward, however, there are some creative ways in which some callers use the interval 'end' when going through intersecting ranges within a tree. Ie: patch 3, 6 and 9. Patch 10: deletes the interval_tree_generic.h header; there are no longer any users. Patch 11: finally simplifies x86 pat tree to use the new interval tree machinery. This has been lightly tested, and certainly not on driver paths that do non trivial conversions. Also needs more eyeballs as conversions can be easily missed (even when I've tried mitigating this by renaming the endpoint from 'last' to 'end' in each corresponding structure). Because this touches a lot of drivers, I'm Cc'ing the whole thing to a couple of relevant lists (mm, dri, rdma); sorry if you consider this spam. Applies on top of today's linux-next tree. Please consider for v5.5. Thanks! [1] https://lore.kernel.org/lkml/CANN689HVDJXKEwB80yPAVwvRwnV4HfiucQVAho=dupKM_iKozw@mail.gmail.com/ [2] https://lore.kernel.org/patchwork/patch/1114629/ Davidlohr Bueso (11): mm: introduce vma_interval_tree_foreach_stab() lib/interval-tree: add an equivalent tree with [a,b) intervals drm/amdgpu: convert amdgpu_vm_it to half closed intervals drm: convert drm_mm_interval_tree to half closed intervals IB/hfi1: convert __mmu_int_rb to half closed intervals IB,usnic: convert usnic_uiom_interval_tree to half closed intervals vhost: convert vhost_umem_interval_tree to half closed intervals mm: convert vma_interval_tree to half closed intervals lib/interval-tree: convert interval_tree to half closed intervals lib: drop interval_tree_generic.h x86/mm, pat: convert pat tree to generic interval tree arch/arm/mm/fault-armv.c | 2 +- arch/arm/mm/flush.c | 2 +- arch/nios2/mm/cacheflush.c | 2 +- arch/parisc/kernel/cache.c | 2 +- arch/x86/mm/pat.c | 22 +-- arch/x86/mm/pat_rbtree.c | 151 +++++---------------- drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c | 12 +- drivers/gpu/drm/amd/amdgpu/amdgpu_object.h | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h | 18 +-- drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | 3 +- drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 47 ++++--- drivers/gpu/drm/drm_mm.c | 8 +- drivers/gpu/drm/i915/gem/i915_gem_userptr.c | 5 +- .../gpu/drm/i915/gem/selftests/i915_gem_context.c | 2 +- drivers/gpu/drm/radeon/radeon_mn.c | 11 +- drivers/gpu/drm/radeon/radeon_trace.h | 2 +- drivers/gpu/drm/radeon/radeon_vm.c | 26 ++-- drivers/gpu/drm/selftests/test-drm_mm.c | 2 +- drivers/infiniband/core/umem_odp.c | 21 +-- drivers/infiniband/hw/hfi1/mmu_rb.c | 15 +- drivers/infiniband/hw/usnic/usnic_uiom.c | 8 +- .../infiniband/hw/usnic/usnic_uiom_interval_tree.c | 26 ++-- .../infiniband/hw/usnic/usnic_uiom_interval_tree.h | 2 +- drivers/iommu/virtio-iommu.c | 6 +- drivers/vhost/vhost.c | 19 ++- drivers/vhost/vhost.h | 4 +- fs/dax.c | 2 +- include/drm/drm_mm.h | 6 +- include/linux/interval_tree.h | 2 +- ...interval_tree_generic.h => interval_tree_gen.h} | 72 +++++----- include/linux/mm.h | 6 + include/rdma/ib_umem_odp.h | 4 +- kernel/events/uprobes.c | 2 +- lib/interval_tree.c | 6 +- mm/hugetlb.c | 4 +- mm/interval_tree.c | 4 +- mm/khugepaged.c | 2 +- mm/memory-failure.c | 6 +- mm/memory.c | 2 +- mm/nommu.c | 2 +- mm/rmap.c | 6 +- 43 files changed, 217 insertions(+), 333 deletions(-) rename include/linux/{interval_tree_generic.h => interval_tree_gen.h} (72%) -- 2.16.4