The quilt patch titled Subject: sched: use maple tree iterator to walk VMAs has been removed from the -mm tree. Its filename was sched-use-maple-tree-iterator-to-walk-vmas.patch This patch was dropped because it was merged into the mm-stable branch of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm ------------------------------------------------------ From: "Matthew Wilcox (Oracle)" <willy@xxxxxxxxxxxxx> Subject: sched: use maple tree iterator to walk VMAs Date: Tue, 6 Sep 2022 19:48:59 +0000 The linked list is slower than walking the VMAs using the maple tree. We can't use the VMA iterator here because it doesn't support moving to an earlier position. Link: https://lkml.kernel.org/r/20220906194824.2110408-49-Liam.Howlett@xxxxxxxxxx Signed-off-by: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> Signed-off-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> Acked-by: Vlastimil Babka <vbabka@xxxxxxx> Tested-by: Yu Zhao <yuzhao@xxxxxxxxxx> Cc: Catalin Marinas <catalin.marinas@xxxxxxx> Cc: David Hildenbrand <david@xxxxxxxxxx> Cc: David Howells <dhowells@xxxxxxxxxx> Cc: Davidlohr Bueso <dave@xxxxxxxxxxxx> Cc: SeongJae Park <sj@xxxxxxxxxx> Cc: Sven Schnelle <svens@xxxxxxxxxxxxx> Cc: Will Deacon <will@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- kernel/sched/fair.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) --- a/kernel/sched/fair.c~sched-use-maple-tree-iterator-to-walk-vmas +++ a/kernel/sched/fair.c @@ -2930,6 +2930,7 @@ static void task_numa_work(struct callba struct task_struct *p = current; struct mm_struct *mm = p->mm; u64 runtime = p->se.sum_exec_runtime; + MA_STATE(mas, &mm->mm_mt, 0, 0); struct vm_area_struct *vma; unsigned long start, end; unsigned long nr_pte_updates = 0; @@ -2986,13 +2987,16 @@ static void task_numa_work(struct callba if (!mmap_read_trylock(mm)) return; - vma = find_vma(mm, start); + mas_set(&mas, start); + vma = mas_find(&mas, ULONG_MAX); if (!vma) { reset_ptenuma_scan(p); start = 0; - vma = mm->mmap; + mas_set(&mas, start); + vma = mas_find(&mas, ULONG_MAX); } - for (; vma; vma = vma->vm_next) { + + for (; vma; vma = mas_find(&mas, ULONG_MAX)) { if (!vma_migratable(vma) || !vma_policy_mof(vma) || is_vm_hugetlb_page(vma) || (vma->vm_flags & VM_MIXEDMAP)) { continue; _ Patches currently in -mm which might be from willy@xxxxxxxxxxxxx are mm-vmscan-fix-a-lot-of-comments.patch mm-add-the-first-tail-page-to-struct-folio.patch mm-reimplement-folio_order-and-folio_nr_pages.patch mm-add-split_folio.patch mm-add-folio_add_lru_vma.patch shmem-convert-shmem_writepage-to-use-a-folio-throughout.patch shmem-convert-shmem_delete_from_page_cache-to-take-a-folio.patch shmem-convert-shmem_replace_page-to-use-folios-throughout.patch mm-swapfile-remove-page_swapcount.patch mm-swapfile-convert-try_to_free_swap-to-folio_free_swap.patch mm-swap-convert-__read_swap_cache_async-to-use-a-folio.patch mm-swap-convert-add_to_swap_cache-to-take-a-folio.patch mm-swap-convert-put_swap_page-to-put_swap_folio.patch mm-convert-do_swap_page-to-use-a-folio.patch mm-convert-do_swap_pages-swapcache-variable-to-a-folio.patch memcg-convert-mem_cgroup_swapin_charge_page-to-mem_cgroup_swapin_charge_folio.patch shmem-convert-shmem_mfill_atomic_pte-to-use-a-folio.patch shmem-convert-shmem_replace_page-to-shmem_replace_folio.patch swap-add-swap_cache_get_folio.patch shmem-eliminate-struct-page-from-shmem_swapin_folio.patch shmem-convert-shmem_getpage_gfp-to-shmem_get_folio_gfp.patch shmem-convert-shmem_fault-to-use-shmem_get_folio_gfp.patch shmem-convert-shmem_read_mapping_page_gfp-to-use-shmem_get_folio_gfp.patch shmem-add-shmem_get_folio.patch shmem-convert-shmem_get_partial_folio-to-use-shmem_get_folio.patch shmem-convert-shmem_write_begin-to-use-shmem_get_folio.patch shmem-convert-shmem_file_read_iter-to-use-shmem_get_folio.patch shmem-convert-shmem_fallocate-to-use-a-folio.patch shmem-convert-shmem_symlink-to-use-a-folio.patch shmem-convert-shmem_get_link-to-use-a-folio.patch khugepaged-call-shmem_get_folio.patch userfaultfd-convert-mcontinue_atomic_pte-to-use-a-folio.patch shmem-remove-shmem_getpage.patch swapfile-convert-try_to_unuse-to-use-a-folio.patch swapfile-convert-__try_to_reclaim_swap-to-use-a-folio.patch swapfile-convert-unuse_pte_range-to-use-a-folio.patch mm-convert-do_swap_page-to-use-swap_cache_get_folio.patch mm-remove-lookup_swap_cache.patch swap_state-convert-free_swap_cache-to-use-a-folio.patch swap-convert-swap_writepage-to-use-a-folio.patch mm-convert-do_wp_page-to-use-a-folio.patch huge_memory-convert-do_huge_pmd_wp_page-to-use-a-folio.patch madvise-convert-madvise_free_pte_range-to-use-a-folio.patch uprobes-use-folios-more-widely-in-__replace_page.patch ksm-use-a-folio-in-replace_page.patch mm-convert-do_swap_page-to-use-folio_free_swap.patch memcg-convert-mem_cgroup_swap_full-to-take-a-folio.patch mm-remove-try_to_free_swap.patch rmap-convert-page_move_anon_rmap-to-use-a-folio.patch migrate-convert-__unmap_and_move-to-use-folios.patch migrate-convert-unmap_and_move_huge_page-to-use-folios.patch huge_memory-convert-split_huge_page_to_list-to-use-a-folio.patch huge_memory-convert-unmap_page-to-unmap_folio.patch mm-convert-page_get_anon_vma-to-folio_get_anon_vma.patch rmap-remove-page_unlock_anon_vma_read.patch uprobes-use-new_folio-in-__replace_page.patch mm-convert-lock_page_or_retry-to-folio_lock_or_retry.patch