From: Liam Howlett <liam.howlett@oracle.com> To: "maple-tree@lists.infradead.org" <maple-tree@lists.infradead.org>, "linux-mm@kvack.org" <linux-mm@kvack.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, Andrew Morton <akpm@linux-foundation.org> Cc: Song Liu <songliubraving@fb.com>, Davidlohr Bueso <dave@stgolabs.net>, "Paul E . McKenney" <paulmck@kernel.org>, Matthew Wilcox <willy@infradead.org>, Laurent Dufour <ldufour@linux.ibm.com>, David Rientjes <rientjes@google.com>, Axel Rasmussen <axelrasmussen@google.com>, Suren Baghdasaryan <surenb@google.com>, Vlastimil Babka <vbabka@suse.cz>, Rik van Riel <riel@surriel.com>, Peter Zijlstra <peterz@infradead.org>, Michel Lespinasse <walken.cr@gmail.com>, Liam Howlett <liam.howlett@oracle.com> Subject: [PATCH 00/94] Introducing the Maple Tree Date: Wed, 28 Apr 2021 15:35:43 +0000 [thread overview] Message-ID: <20210428153542.2814175-1-Liam.Howlett@Oracle.com> (raw) The maple tree is an RCU-safe range based B-tree designed to use modern processor cache efficiently. There are a number of places in the kernel that a non-overlapping range-based tree would be beneficial, especially one with a simple interface. The first user that is covered in this patch set is the vm_area_struct, where three data structures are replaced by the maple tree: the augmented rbtree, the vma cache, and the linked list of VMAs in the mm_struct. The long term goal is to reduce or remove the mmap_sem contention. The tree has a branching factor of 10 for non-leaf nodes and 16 for leaf nodes. With the increased branching factor, it is significantly shorter than the rbtree so it has fewer cache misses. The removal of the linked list between subsequent entries also reduces the cache misses and the need to pull in the previous and next VMA during many tree alterations. This patch is based on next-20210419 Link: https://github.com/oracle/linux-uek/releases/tag/howlett%2Fmaple%2F20210419 Performance on a 144 core x86: While still using the mmap_sem, the performance seems fairly similar on real-world workloads, while there are variations in micro-benchmarks. Increase in performance in the following micro-benchmarks in Hmean: - wis brk1-threads: Disregard, this is useless. - wis malloc1-threads: Increase of 15% to 500% - wis page_fault1-threads: Increase of up to 15% Decrease in performance in the following micro-benchmarks in Hmean: - wis brk1-processes: Decrease of 45% due to RCU required allocations - wis signal1-threads: -3% to -20% Mixed: - wis malloc1-processes: +9% to -20% - wis pthread_mutex1-threads: +9% to -16% - wis page_fault3-threads: +7% to -21% kernbench: Amean user-2 880.66 ( 0.00%) 885.49 * -0.55%* Amean syst-2 143.88 ( 0.00%) 152.64 * -6.09%* Amean elsp-2 518.11 ( 0.00%) 524.97 * -1.32%* Amean user-4 903.74 ( 0.00%) 908.41 * -0.52%* Amean syst-4 149.61 ( 0.00%) 158.42 * -5.89%* Amean elsp-4 270.00 ( 0.00%) 275.83 * -2.16%* Amean user-8 955.25 ( 0.00%) 961.88 * -0.69%* Amean syst-8 158.76 ( 0.00%) 169.04 * -6.48%* Amean elsp-8 146.95 ( 0.00%) 148.79 * -1.25%* Amean user-16 1033.15 ( 0.00%) 1037.42 * -0.41%* Amean syst-16 168.01 ( 0.00%) 177.40 * -5.59%* Amean elsp-16 84.63 ( 0.00%) 84.91 * -0.33%* Amean user-32 1135.48 ( 0.00%) 1130.56 * 0.43%* Amean syst-32 181.35 ( 0.00%) 190.54 * -5.06%* Amean elsp-32 50.53 ( 0.00%) 51.88 * -2.67%* Amean user-64 1191.24 ( 0.00%) 1205.41 * -1.19%* Amean syst-64 189.13 ( 0.00%) 200.28 * -5.89%* Amean elsp-64 31.75 ( 0.00%) 31.95 * -0.63%* Amean user-128 1608.94 ( 0.00%) 1613.01 * -0.25%* Amean syst-128 239.32 ( 0.00%) 253.50 * -5.93%* Amean elsp-128 25.34 ( 0.00%) 26.02 * -2.69%* gitcheckout: Amean User 0.00 ( 0.00%) 0.00 * 0.00%* Amean System 8.33 ( 0.00%) 7.86 * 5.59%* Amean Elapsed 21.85 ( 0.00%) 21.34 * 2.29%* Amean CPU 98.80 ( 0.00%) 99.00 * -0.20%* Patch organization: Patches 1-20 introduce a new VMA API: lookup_vma(). This looks up the VMA at a given address and returns either NULL or the VMA. In looking at the VMA code, find_vma() is often used to look up a vma and then check the limits (or incorrectly assume that find_vma() does not continue searching upwards). Initially, this is just a wrapper for find_vma_intersection() but becomes more efficient once the maple tree is used. Patches 21-25 update the radix tree test suite to support what is necessary for the maple tree. Patch 26 is the maple tree and test code: 36,152 lines are the test_maple_tree.c file alone. Patches 27-33 are the removal of the rbtree from the mm_struct. Patches 34-44 are the removal of the vmacache from the kernel. Patches 45-51 are optimizations for using the maple tree directly. Patches 52-91 are the removal of the linked list from the mm_struct. Patches 92-94 are to do with cleaning up the locking around the splitting of VMAs using the maple tree state. Liam R. Howlett (94): mm: Add vma_lookup() drm/i915/selftests: Use vma_lookup() in __igt_mmap() arch/arc/kernel/troubleshoot: use vma_lookup() instead of find_vma_intersection() arch/arm64/kvm: Use vma_lookup() instead of find_vma_intersection() arch/powerpc/kvm/book3s_hv_uvmem: Use vma_lookup() instead of find_vma_intersection() arch/powerpc/kvm/book3s: Use vma_lookup() in kvmppc_hv_setup_htab_rma() arch/mips/kernel/traps: Use vma_lookup() instead of find_vma_intersection() x86/sgx: Use vma_lookup() in sgx_encl_find() virt/kvm: Use vma_lookup() instead of find_vma_intersection() vfio: Use vma_lookup() instead of find_vma_intersection() net/ipv5/tcp: Use vma_lookup() in tcp_zerocopy_receive() drm/amdgpu: Use vma_lookup() in amdgpu_ttm_tt_get_user_pages() media: videobuf2: Use vma_lookup() in get_vaddr_frames() misc/sgi-gru/grufault: Use vma_lookup() in gru_find_vma() kernel/events/uprobes: Use vma_lookup() in find_active_uprobe() lib/test_hmm: Use vma_lookup() in dmirror_migrate() mm/ksm: Use vma_lookup() in find_mergeable_vma() mm/migrate: Use vma_lookup() in do_pages_stat_array() mm/mremap: Use vma_lookup() in vma_to_resize() mm/memory.c: Use vma_lookup() instead of find_vma_intersection() radix tree test suite: Enhancements for Maple Tree radix tree test suite: Add support for fallthrough attribute radix tree test suite: Add support for kmem_cache_free_bulk radix tree test suite: Add keme_cache_alloc_bulk() support radix tree test suite: Add __must_be_array() support Maple Tree: Add new data structure mm: Start tracking VMAs with maple tree mm/mmap: Introduce unlock_range() for code cleanup mm/mmap: Change find_vma() to use the maple tree mm/mmap: Change find_vma_prev() to use maple tree mm/mmap: Change unmapped_area and unmapped_area_topdown to use maple tree kernel/fork: Convert dup_mmap to use maple tree mm: Remove rb tree. arch/m68k/kernel/sys_m68k: Use vma_lookup() in sys_cacheflush() xen/privcmd: Optimized privcmd_ioctl_mmap() by using vma_lookup() mm: Optimize find_exact_vma() to use vma_lookup() mm/khugepaged: Optimize collapse_pte_mapped_thp() by using vma_lookup() mm/gup: Add mm_populate_vma() for use when the vma is known mm/mmap: Change do_brk_flags() to expand existing VMA and add do_brk_munmap() mm/mmap: Change vm_brk_flags() to use mm_populate_vma() mm: Change find_vma_intersection() to maple tree and make find_vma() to inline. mm/mmap: Change mmap_region() to use maple tree state mm/mmap: Drop munmap_vma_range() mm: Remove vmacache mm/mmap: Change __do_munmap() to avoid unnecessary lookups. mm/mmap: Move mmap_region() below do_munmap() mm/mmap: Add do_mas_munmap() and wraper for __do_munmap() mmap: Use find_vma_intersection in do_mmap() for overlap mmap: Remove __do_munmap() in favour of do_mas_munmap() mm/mmap: Change do_brk_munmap() to use do_mas_align_munmap() mmap: make remove_vma_list() inline mm: Introduce vma_next() and vma_prev() arch/arm64: Remove mmap linked list from vdso. arch/parisc: Remove mmap linked list from kernel/cache arch/powerpc: Remove mmap linked list from mm/book3s32/tlb arch/powerpc: Remove mmap linked list from mm/book3s64/subpage_prot arch/s390: Use maple tree iterators instead of linked list. arch/x86: Use maple tree iterators for vdso/vma arch/xtensa: Use maple tree iterators for unmapped area drivers/misc/cxl: Use maple tree iterators for cxl_prefault_vma() drivers/tee/optee: Use maple tree iterators for __check_mem_type() fs/binfmt_elf: Use maple tree iterators for fill_files_note() fs/coredump: Use maple tree iterators in place of linked list fs/exec: Use vma_next() instead of linked list fs/proc/base: Use maple tree iterators in place of linked list fs/proc/task_mmu: Stop using linked list and highest_vm_end fs/userfaultfd: Stop using vma linked list. ipc/shm: Stop using the vma linked list kernel/acct: Use maple tree iterators instead of linked list kernel/events/core: Use maple tree iterators instead of linked list kernel/events/uprobes: Use maple tree iterators instead of linked list kernel/sched/fair: Use maple tree iterators instead of linked list kernel/sys: Use maple tree iterators instead of linked list mm/gup: Use maple tree navigation instead of linked list mm/huge_memory: Use vma_next() instead of vma linked list mm/khugepaged: Use maple tree iterators instead of vma linked list mm/ksm: Use maple tree iterators instead of vma linked list mm/madvise: Use vma_next instead of vma linked list mm/memcontrol: Stop using mm->highest_vm_end mm/mempolicy: Use maple tree iterators instead of vma linked list mm/mlock: Use maple tree iterators instead of vma linked list mm/mprotect: Use maple tree navigation instead of vma linked list mm/mremap: Use vma_next() instead of vma linked list mm/msync: Use vma_next() instead of vma linked list mm/oom_kill: Use maple tree iterators instead of vma linked list mm/pagewalk: Use vma_next() instead of vma linked list mm/swapfile: Use maple tree iterator instead of vma linked list mm/util: Remove __vma_link_list() and __vma_unlink_list() arch/um/kernel/tlb: Stop using linked list bpf: Remove VMA linked list mm: Remove vma linked list. mm: Return a bool from anon_vma_interval_tree_verify() mm/mmap: Add mas_split_vma() and use it for munmap() mm: Move mas locking outside of munmap() path. Documentation/core-api/index.rst | 1 + Documentation/core-api/maple-tree.rst | 36 + MAINTAINERS | 12 + arch/arc/kernel/troubleshoot.c | 8 +- arch/arm64/kernel/vdso.c | 5 +- arch/arm64/kvm/mmu.c | 2 +- arch/m68k/kernel/sys_m68k.c | 4 +- arch/mips/kernel/traps.c | 4 +- arch/parisc/kernel/cache.c | 15 +- arch/powerpc/kvm/book3s_hv.c | 4 +- arch/powerpc/kvm/book3s_hv_uvmem.c | 2 +- arch/powerpc/mm/book3s32/tlb.c | 5 +- arch/powerpc/mm/book3s64/subpage_prot.c | 15 +- arch/s390/configs/debug_defconfig | 1 - arch/s390/mm/gmap.c | 8 +- arch/um/kernel/tlb.c | 16 +- arch/x86/entry/vdso/vma.c | 12 +- arch/x86/kernel/cpu/sgx/encl.h | 4 +- arch/x86/kernel/tboot.c | 2 +- arch/xtensa/kernel/syscall.c | 4 +- drivers/firmware/efi/efi.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 4 +- .../drm/i915/gem/selftests/i915_gem_mman.c | 2 +- drivers/media/common/videobuf2/frame_vector.c | 2 +- drivers/misc/cxl/fault.c | 6 +- drivers/misc/sgi-gru/grufault.c | 4 +- drivers/tee/optee/call.c | 15 +- drivers/vfio/vfio_iommu_type1.c | 2 +- drivers/xen/privcmd.c | 2 +- fs/binfmt_elf.c | 5 +- fs/coredump.c | 13 +- fs/exec.c | 9 +- fs/proc/base.c | 7 +- fs/proc/task_mmu.c | 45 +- fs/proc/task_nommu.c | 55 +- fs/userfaultfd.c | 43 +- include/linux/maple_tree.h | 449 + include/linux/mm.h | 62 +- include/linux/mm_types.h | 33 +- include/linux/mm_types_task.h | 5 - include/linux/sched.h | 1 - include/linux/sched/mm.h | 3 + include/linux/vm_event_item.h | 4 - include/linux/vmacache.h | 28 - include/linux/vmstat.h | 6 - include/trace/events/maple_tree.h | 227 + include/trace/events/mmap.h | 71 + init/main.c | 2 + ipc/shm.c | 13 +- kernel/acct.c | 8 +- kernel/bpf/task_iter.c | 6 +- kernel/debug/debug_core.c | 12 - kernel/events/core.c | 7 +- kernel/events/uprobes.c | 29 +- kernel/fork.c | 50 +- kernel/sched/fair.c | 14 +- kernel/sys.c | 6 +- lib/Kconfig.debug | 15 +- lib/Makefile | 3 +- lib/maple_tree.c | 6393 +++ lib/test_hmm.c | 5 +- lib/test_maple_tree.c | 36152 ++++++++++++++++ mm/Makefile | 2 +- mm/debug.c | 12 +- mm/gup.c | 27 +- mm/huge_memory.c | 4 +- mm/init-mm.c | 4 +- mm/internal.h | 51 +- mm/interval_tree.c | 6 +- mm/khugepaged.c | 13 +- mm/ksm.c | 32 +- mm/madvise.c | 2 +- mm/memcontrol.c | 6 +- mm/memory.c | 45 +- mm/mempolicy.c | 44 +- mm/migrate.c | 4 +- mm/mlock.c | 26 +- mm/mmap.c | 2271 +- mm/mprotect.c | 7 +- mm/mremap.c | 17 +- mm/msync.c | 2 +- mm/nommu.c | 135 +- mm/oom_kill.c | 5 +- mm/pagewalk.c | 2 +- mm/swapfile.c | 9 +- mm/util.c | 32 - mm/vmacache.c | 117 - mm/vmstat.c | 4 - net/ipv4/tcp.c | 4 +- tools/testing/radix-tree/.gitignore | 2 + tools/testing/radix-tree/Makefile | 13 +- tools/testing/radix-tree/generated/autoconf.h | 1 + tools/testing/radix-tree/linux.c | 78 +- tools/testing/radix-tree/linux/kernel.h | 10 + tools/testing/radix-tree/linux/maple_tree.h | 7 + tools/testing/radix-tree/linux/slab.h | 2 + tools/testing/radix-tree/maple.c | 59 + tools/testing/radix-tree/test.h | 1 + .../radix-tree/trace/events/maple_tree.h | 8 + virt/kvm/kvm_main.c | 2 +- 100 files changed, 45347 insertions(+), 1699 deletions(-) create mode 100644 Documentation/core-api/maple-tree.rst create mode 100644 include/linux/maple_tree.h delete mode 100644 include/linux/vmacache.h create mode 100644 include/trace/events/maple_tree.h create mode 100644 lib/maple_tree.c create mode 100644 lib/test_maple_tree.c delete mode 100644 mm/vmacache.c create mode 100644 tools/testing/radix-tree/linux/maple_tree.h create mode 100644 tools/testing/radix-tree/maple.c create mode 100644 tools/testing/radix-tree/trace/events/maple_tree.h -- 2.30.2
next reply other threads:[~2021-04-28 15:36 UTC|newest] Thread overview: 137+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-04-28 15:35 Liam Howlett [this message] 2021-04-28 15:35 ` [PATCH 01/94] mm: Add vma_lookup() Liam Howlett 2021-05-01 5:04 ` Michel Lespinasse 2021-05-03 16:08 ` Liam Howlett 2021-04-28 15:35 ` [PATCH 02/94] drm/i915/selftests: Use vma_lookup() in __igt_mmap() Liam Howlett 2021-04-28 15:35 ` [PATCH 03/94] arch/arc/kernel/troubleshoot: use vma_lookup() instead of find_vma_intersection() Liam Howlett 2021-04-28 15:35 ` [PATCH 04/94] arch/arm64/kvm: Use " Liam Howlett 2021-04-28 15:35 ` [PATCH 05/94] arch/powerpc/kvm/book3s_hv_uvmem: " Liam Howlett 2021-04-28 15:35 ` [PATCH 06/94] arch/powerpc/kvm/book3s: Use vma_lookup() in kvmppc_hv_setup_htab_rma() Liam Howlett 2021-04-28 15:35 ` [PATCH 08/94] x86/sgx: Use vma_lookup() in sgx_encl_find() Liam Howlett 2021-04-28 15:35 ` [PATCH 07/94] arch/mips/kernel/traps: Use vma_lookup() instead of find_vma_intersection() Liam Howlett 2021-04-28 15:35 ` [PATCH 09/94] virt/kvm: " Liam Howlett 2021-04-28 15:35 ` [PATCH 10/94] vfio: " Liam Howlett 2021-04-28 15:35 ` [PATCH 12/94] drm/amdgpu: Use vma_lookup() in amdgpu_ttm_tt_get_user_pages() Liam Howlett 2021-04-28 15:35 ` [PATCH 11/94] net/ipv5/tcp: Use vma_lookup() in tcp_zerocopy_receive() Liam Howlett 2021-04-28 15:35 ` [PATCH 15/94] kernel/events/uprobes: Use vma_lookup() in find_active_uprobe() Liam Howlett 2021-04-28 15:35 ` [PATCH 14/94] misc/sgi-gru/grufault: Use vma_lookup() in gru_find_vma() Liam Howlett 2021-04-28 15:35 ` [PATCH 13/94] media: videobuf2: Use vma_lookup() in get_vaddr_frames() Liam Howlett 2021-04-28 15:35 ` [PATCH 16/94] lib/test_hmm: Use vma_lookup() in dmirror_migrate() Liam Howlett 2021-04-28 15:35 ` [PATCH 18/94] mm/migrate: Use vma_lookup() in do_pages_stat_array() Liam Howlett 2021-04-28 15:35 ` [PATCH 17/94] mm/ksm: Use vma_lookup() in find_mergeable_vma() Liam Howlett 2021-04-28 15:35 ` [PATCH 19/94] mm/mremap: Use vma_lookup() in vma_to_resize() Liam Howlett 2021-04-28 15:35 ` [PATCH 20/94] mm/memory.c: Use vma_lookup() instead of find_vma_intersection() Liam Howlett 2021-04-28 15:35 ` [PATCH 21/94] radix tree test suite: Enhancements for Maple Tree Liam Howlett 2021-05-28 17:30 ` Suren Baghdasaryan 2021-05-28 18:54 ` Liam Howlett 2021-04-28 15:35 ` [PATCH 23/94] radix tree test suite: Add support for kmem_cache_free_bulk Liam Howlett 2021-05-28 17:55 ` Suren Baghdasaryan 2021-05-28 19:07 ` Liam Howlett 2021-04-28 15:35 ` [PATCH 22/94] radix tree test suite: Add support for fallthrough attribute Liam Howlett 2021-04-28 15:35 ` [PATCH 24/94] radix tree test suite: Add keme_cache_alloc_bulk() support Liam Howlett 2021-05-28 18:17 ` Suren Baghdasaryan 2021-05-28 19:28 ` Liam Howlett 2021-04-28 15:35 ` [PATCH 25/94] radix tree test suite: Add __must_be_array() support Liam Howlett 2021-04-28 15:36 ` [PATCH 26/94] Maple Tree: Add new data structure Liam Howlett 2021-05-14 10:40 ` Peter Zijlstra 2021-05-14 20:36 ` Liam Howlett 2021-05-14 10:56 ` Peter Zijlstra 2021-05-14 20:45 ` Liam Howlett 2021-05-14 11:13 ` Peter Zijlstra 2021-05-14 11:27 ` Peter Zijlstra 2021-05-14 21:23 ` Liam Howlett 2021-05-14 11:20 ` Peter Zijlstra 2021-05-14 20:46 ` Liam Howlett 2021-05-14 11:54 ` Peter Zijlstra 2021-05-14 21:25 ` Liam Howlett 2021-05-14 12:17 ` Peter Zijlstra 2021-05-14 12:43 ` Matthew Wilcox 2021-05-14 21:29 ` Liam Howlett 2021-05-14 13:42 ` Peter Zijlstra 2021-05-14 21:42 ` Liam Howlett 2021-05-14 15:32 ` Peter Zijlstra 2021-05-14 15:34 ` Peter Zijlstra 2021-05-14 21:57 ` Liam Howlett 2021-05-14 21:43 ` Liam Howlett 2021-05-14 15:40 ` Peter Zijlstra 2021-05-15 0:02 ` Liam Howlett 2021-04-28 15:36 ` [PATCH 28/94] mm/mmap: Introduce unlock_range() for code cleanup Liam Howlett 2021-04-28 15:36 ` [PATCH 27/94] mm: Start tracking VMAs with maple tree Liam Howlett 2021-04-28 15:36 ` [PATCH 30/94] mm/mmap: Change find_vma_prev() to use " Liam Howlett 2021-04-28 15:36 ` [PATCH 29/94] mm/mmap: Change find_vma() to use the " Liam Howlett 2021-04-28 15:36 ` [PATCH 32/94] kernel/fork: Convert dup_mmap to use " Liam Howlett 2021-05-29 0:42 ` Suren Baghdasaryan 2021-05-31 13:39 ` Liam Howlett 2021-04-28 15:36 ` [PATCH 31/94] mm/mmap: Change unmapped_area and unmapped_area_topdown " Liam Howlett 2021-04-28 15:36 ` [PATCH 33/94] mm: Remove rb tree Liam Howlett 2021-05-29 1:26 ` Suren Baghdasaryan 2021-05-31 13:42 ` Liam Howlett 2021-04-28 15:36 ` [PATCH 35/94] xen/privcmd: Optimized privcmd_ioctl_mmap() by using vma_lookup() Liam Howlett 2021-04-28 15:36 ` [PATCH 34/94] arch/m68k/kernel/sys_m68k: Use vma_lookup() in sys_cacheflush() Liam Howlett 2021-04-28 15:36 ` [PATCH 37/94] mm/khugepaged: Optimize collapse_pte_mapped_thp() by using vma_lookup() Liam Howlett 2021-04-28 15:36 ` [PATCH 36/94] mm: Optimize find_exact_vma() to use vma_lookup() Liam Howlett 2021-04-28 15:36 ` [PATCH 38/94] mm/gup: Add mm_populate_vma() for use when the vma is known Liam Howlett 2021-05-01 5:13 ` Michel Lespinasse 2021-05-03 15:53 ` Liam Howlett 2021-05-03 16:00 ` Matthew Wilcox 2021-05-03 23:01 ` Liam Howlett 2021-04-28 15:36 ` [PATCH 39/94] mm/mmap: Change do_brk_flags() to expand existing VMA and add do_brk_munmap() Liam Howlett 2021-04-28 15:36 ` [PATCH 40/94] mm/mmap: Change vm_brk_flags() to use mm_populate_vma() Liam Howlett 2021-04-28 15:36 ` [PATCH 41/94] mm: Change find_vma_intersection() to maple tree and make find_vma() to inline Liam Howlett 2021-04-28 15:36 ` [PATCH 44/94] mm: Remove vmacache Liam Howlett 2021-04-28 15:36 ` [PATCH 43/94] mm/mmap: Drop munmap_vma_range() Liam Howlett 2021-04-28 15:36 ` [PATCH 42/94] mm/mmap: Change mmap_region() to use maple tree state Liam Howlett 2021-04-28 15:36 ` [PATCH 45/94] mm/mmap: Change __do_munmap() to avoid unnecessary lookups Liam Howlett 2021-04-28 15:36 ` [PATCH 46/94] mm/mmap: Move mmap_region() below do_munmap() Liam Howlett 2021-04-28 15:36 ` [PATCH 47/94] mm/mmap: Add do_mas_munmap() and wraper for __do_munmap() Liam Howlett 2021-04-28 15:36 ` [PATCH 48/94] mmap: Use find_vma_intersection in do_mmap() for overlap Liam Howlett 2021-04-28 15:36 ` [PATCH 49/94] mmap: Remove __do_munmap() in favour of do_mas_munmap() Liam Howlett 2021-04-28 15:36 ` [PATCH 50/94] mm/mmap: Change do_brk_munmap() to use do_mas_align_munmap() Liam Howlett 2021-04-28 15:36 ` [PATCH 51/94] mmap: make remove_vma_list() inline Liam Howlett 2021-04-28 15:36 ` [PATCH 52/94] mm: Introduce vma_next() and vma_prev() Liam Howlett 2021-04-28 15:36 ` [PATCH 53/94] arch/arm64: Remove mmap linked list from vdso Liam Howlett 2021-04-28 15:36 ` [PATCH 54/94] arch/parisc: Remove mmap linked list from kernel/cache Liam Howlett 2021-04-28 15:36 ` [PATCH 55/94] arch/powerpc: Remove mmap linked list from mm/book3s32/tlb Liam Howlett 2021-04-28 15:36 ` [PATCH 56/94] arch/powerpc: Remove mmap linked list from mm/book3s64/subpage_prot Liam Howlett 2021-04-28 15:36 ` [PATCH 57/94] arch/s390: Use maple tree iterators instead of linked list Liam Howlett 2021-04-28 15:36 ` [PATCH 58/94] arch/x86: Use maple tree iterators for vdso/vma Liam Howlett 2021-04-28 15:36 ` [PATCH 59/94] arch/xtensa: Use maple tree iterators for unmapped area Liam Howlett 2021-04-28 15:36 ` [PATCH 60/94] drivers/misc/cxl: Use maple tree iterators for cxl_prefault_vma() Liam Howlett 2021-04-28 15:36 ` [PATCH 61/94] drivers/tee/optee: Use maple tree iterators for __check_mem_type() Liam Howlett 2021-04-28 15:36 ` [PATCH 63/94] fs/coredump: Use maple tree iterators in place of linked list Liam Howlett 2021-04-28 15:36 ` [PATCH 62/94] fs/binfmt_elf: Use maple tree iterators for fill_files_note() Liam Howlett 2021-04-28 15:36 ` [PATCH 64/94] fs/exec: Use vma_next() instead of linked list Liam Howlett 2021-04-28 15:36 ` [PATCH 65/94] fs/proc/base: Use maple tree iterators in place " Liam Howlett 2021-04-28 15:36 ` [PATCH 66/94] fs/proc/task_mmu: Stop using linked list and highest_vm_end Liam Howlett 2021-04-28 15:36 ` [PATCH 67/94] fs/userfaultfd: Stop using vma linked list Liam Howlett 2021-04-28 15:36 ` [PATCH 68/94] ipc/shm: Stop using the " Liam Howlett 2021-04-28 15:36 ` [PATCH 69/94] kernel/acct: Use maple tree iterators instead of " Liam Howlett 2021-04-28 15:36 ` [PATCH 70/94] kernel/events/core: " Liam Howlett 2021-04-28 15:36 ` [PATCH 71/94] kernel/events/uprobes: " Liam Howlett 2021-04-28 15:36 ` [PATCH 73/94] kernel/sys: " Liam Howlett 2021-04-28 15:36 ` [PATCH 72/94] kernel/sched/fair: " Liam Howlett 2021-04-28 15:36 ` [PATCH 75/94] mm/huge_memory: Use vma_next() instead of vma " Liam Howlett 2021-04-28 15:36 ` [PATCH 76/94] mm/khugepaged: Use maple tree iterators " Liam Howlett 2021-05-04 4:29 ` [PATCH 76/94] mm/khugepaged: Use maple tree iterators instead of vma Hillf Danton 2021-05-04 14:05 ` Liam Howlett 2021-04-28 15:36 ` [PATCH 74/94] mm/gup: Use maple tree navigation instead of linked list Liam Howlett 2021-04-28 15:36 ` [PATCH 77/94] mm/ksm: Use maple tree iterators instead of vma " Liam Howlett 2021-04-28 15:36 ` [PATCH 78/94] mm/madvise: Use vma_next " Liam Howlett 2021-04-28 15:36 ` [PATCH 79/94] mm/memcontrol: Stop using mm->highest_vm_end Liam Howlett 2021-04-28 15:36 ` [PATCH 81/94] mm/mlock: Use maple tree iterators instead of vma linked list Liam Howlett 2021-04-28 15:36 ` [PATCH 80/94] mm/mempolicy: " Liam Howlett 2021-04-28 15:36 ` [PATCH 82/94] mm/mprotect: Use maple tree navigation " Liam Howlett 2021-04-28 15:36 ` [PATCH 84/94] mm/msync: Use vma_next() " Liam Howlett 2021-04-28 15:36 ` [PATCH 83/94] mm/mremap: " Liam Howlett 2021-04-28 15:36 ` [PATCH 86/94] mm/pagewalk: " Liam Howlett 2021-04-28 15:36 ` [PATCH 85/94] mm/oom_kill: Use maple tree iterators " Liam Howlett 2021-04-28 15:36 ` [PATCH 87/94] mm/swapfile: Use maple tree iterator " Liam Howlett 2021-04-28 15:36 ` [PATCH 88/94] mm/util: Remove __vma_link_list() and __vma_unlink_list() Liam Howlett 2021-04-28 15:36 ` [PATCH 89/94] arch/um/kernel/tlb: Stop using linked list Liam Howlett 2021-04-28 15:36 ` [PATCH 90/94] bpf: Remove VMA " Liam Howlett 2021-04-28 15:36 ` [PATCH 91/94] mm: Remove vma " Liam Howlett 2021-04-28 15:36 ` [PATCH 92/94] mm: Return a bool from anon_vma_interval_tree_verify() Liam Howlett 2021-04-28 15:36 ` [PATCH 94/94] mm: Move mas locking outside of munmap() path Liam Howlett 2021-05-01 6:13 ` Michel Lespinasse 2021-05-03 16:05 ` Liam Howlett 2021-04-28 15:36 ` [PATCH 93/94] mm/mmap: Add mas_split_vma() and use it for munmap() Liam Howlett
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210428153542.2814175-1-Liam.Howlett@Oracle.com \ --to=liam.howlett@oracle.com \ --cc=akpm@linux-foundation.org \ --cc=axelrasmussen@google.com \ --cc=dave@stgolabs.net \ --cc=ldufour@linux.ibm.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=maple-tree@lists.infradead.org \ --cc=paulmck@kernel.org \ --cc=peterz@infradead.org \ --cc=riel@surriel.com \ --cc=rientjes@google.com \ --cc=songliubraving@fb.com \ --cc=surenb@google.com \ --cc=vbabka@suse.cz \ --cc=walken.cr@gmail.com \ --cc=willy@infradead.org \ --subject='Re: [PATCH 00/94] Introducing the Maple Tree' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).