Almost all of MM here. A few things are still getting finished off, reviewed, etc. - there's a trivial conflict in arch/x86/mm/Makefile - conflict in mm/page_io.c we resolved thusly: if (data_race(sis->flags & SWP_FS_OPS)) { swap_readpage_fs(page, plug); goto out; } - conflict in fs/nfs/file.c thusly: .write_begin = nfs_write_begin, .write_end = nfs_write_end, .invalidate_folio = nfs_invalidate_folio, .release_folio = nfs_release_folio, #ifdef CONFIG_MIGRATION .migratepage = nfs_migrate_page, #endif The following changes since commit 38d741cb70b30741c0e802cbed7bd9cf4fd15fa4: Merge tag 'drm-fixes-2022-04-29' of git://anongit.freedesktop.org/drm/drm (2022-04-28 18:00:34 -0700) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm tags/mm-stable-2022-05-25 for you to fetch changes up to f403f22f8ccb12860b2b62fec3173c6ccd45938b: mm: kfence: use PAGE_ALIGNED helper (2022-05-25 10:47:49 -0700) ---------------------------------------------------------------- Yang Shi has improved the behaviour of khugepaged collapsing of readonly file-backed transparent hugepages. Johannes Weiner has arranged for zswap memory use to be tracked and managed on a per-cgroup basis. Munchun Song adds a /proc knob ("hugetlb_optimize_vmemmap") for runtime enablement of the recent huge page vmemmap optimization feature. Baolin Wang contributes a series to fix some issues around hugetlb pagetable invalidation. Zhenwei Pi has fixed some interactions between hwpoisoned pages and virtualization. Tong Tiangen has enabled the use of the presently x86-only page_table_check debugging feature on arm64 and riscv. David Vernet has done some fixup work on the memcg selftests. Peter Xu has taught userfaultfd to handle write protection faults against shmem- and hugetlbfs-backed files. More DAMON development from SeongJae Park - adding online tuning of the feature and support for monitoring of fixed virtual address ranges. Also easier discovery of which monitoring operations are available. Nadav Amit has done some optimization of TLB flushing during mprotect(). Neil Brown continues to labor away at improving our swap-over-NFS support. David Hildenbrand has some fixes to anon page COWing versus get_user_pages(). Peng Liu fixed some errors in the core hugetlb code. Joao Martins has reduced the amount of memory consumed by device-dax's compound devmaps. Some cleanups of the arch-specific pagemap code from Anshuman Khandual. Muchun Song has found and fixed some errors in the TLB flushing of transparent hugepages. Roman Gushchin has done more work on the memcg selftests. And, of course, many smaller fixes and cleanups. Notably, the customary million cleanup serieses from Miaohe Lin. ---------------------------------------------------------------- Adrian Huang (1): mm/rmap: Fix typos in comments Akira Yokosawa (1): docs: vm/page_owner: tweak literal block in STANDARD FORMAT SPECIFIERS Alexey Romanov (1): zram: remove double compression logic Alistair Popple (1): mm: add selftests for migration entries Andrey Konovalov (7): kasan: mark KASAN_VMALLOC flags as kasan_vmalloc_flags_t kasan: clean up comments in internal kasan.h kasan: use tabs to align shadow values kasan: give better names to shadow values kasan: update documentation kasan: move boot parameters section in documentation kasan: clean-up kconfig options descriptions Anshuman Khandual (8): mm/debug_vm_pgtable: drop protection_map[] usage mm/mmap: clarify protection_map[] indices mm/mmap: add new config ARCH_HAS_VM_GET_PAGE_PROT powerpc/mm: enable ARCH_HAS_VM_GET_PAGE_PROT arm64/mm: enable ARCH_HAS_VM_GET_PAGE_PROT sparc/mm: enable ARCH_HAS_VM_GET_PAGE_PROT mm/mmap: drop arch_filter_pgprot() mm/mmap: drop arch_vm_get_page_pgprot() Axel Rasmussen (2): selftests: vm: refactor run_vmtests.sh to reduce boilerplate selftests: vm: fix shellcheck warnings in run_vmtests.sh Baolin Wang (8): mm: migrate: simplify the refcount validation when migrating hugetlb mapping mm: hugetlb: add missing cache flushing in hugetlb_unshare_all_pmds() mm: hugetlb: considering PMD sharing when flushing cache/TLBs mm: rmap: move the cache flushing to the correct place for hugetlb PMD sharing mm: rmap: use flush_cache_range() to flush cache for hugetlb pages mm: change huge_ptep_clear_flush() to return the original pte mm: rmap: fix CONT-PTE/PMD size hugetlb issue when migration mm: rmap: fix CONT-PTE/PMD size hugetlb issue when unmapping Brian Geffon (1): zram: add a huge_idle writeback mode Chen Wandun (2): mm: rework calculation of bdi_min_ratio in bdi_set_min_ratio mm/page_alloc: simplify update of pgdat in wake_all_kswapds Christoph Hellwig (1): x86/mm: enable ARCH_HAS_VM_GET_PAGE_PROT Christophe JAILLET (2): drivers/base/memory: fix an unlikely reference counting issue in __add_memory_block() cgroup: fix an error handling path in alloc_pagecache_max_30M() Christophe de Dinechin (1): nodemask.h: fix compilation error with GCC12 David Hildenbrand (25): mm/rmap: fix missing swap_free() in try_to_unmap() after arch_unmap_one() failed mm/hugetlb: take src_mm->write_protect_seq in copy_hugetlb_page_range() mm/memory: slightly simplify copy_present_pte() mm/rmap: split page_dup_rmap() into page_dup_file_rmap() and page_try_dup_anon_rmap() mm/rmap: convert RMAP flags to a proper distinct rmap_t type mm/rmap: remove do_page_add_anon_rmap() mm/rmap: pass rmap flags to hugepage_add_anon_rmap() mm/rmap: drop "compound" parameter from page_add_new_anon_rmap() mm/rmap: use page_move_anon_rmap() when reusing a mapped PageAnon() page exclusively mm/huge_memory: remove outdated VM_WARN_ON_ONCE_PAGE from unmap_page() mm/page-flags: reuse PG_mappedtodisk as PG_anon_exclusive for PageAnon() pages mm: remember exclusively mapped anonymous pages with PG_anon_exclusive mm/rmap: fail try_to_migrate() early when setting a PMD migration entry fails mm/gup: disallow follow_page(FOLL_PIN) mm: support GUP-triggered unsharing of anonymous pages mm/gup: trigger FAULT_FLAG_UNSHARE when R/O-pinning a possibly shared anonymous page mm/gup: sanity-check with CONFIG_DEBUG_VM that anonymous pages are exclusive when (un)pinning mm/swap: remember PG_anon_exclusive via a swp pte bit mm/debug_vm_pgtable: add tests for __HAVE_ARCH_PTE_SWP_EXCLUSIVE x86/pgtable: support __HAVE_ARCH_PTE_SWP_EXCLUSIVE arm64/pgtable: support __HAVE_ARCH_PTE_SWP_EXCLUSIVE s390/pgtable: cleanup description of swp pte layout s390/pgtable: support __HAVE_ARCH_PTE_SWP_EXCLUSIVE powerpc/pgtable: remove _PAGE_BIT_SWAP_TYPE for book3s powerpc/pgtable: support __HAVE_ARCH_PTE_SWP_EXCLUSIVE for book3s David Vernet (5): cgroups: refactor children cgroups in memcg tests cgroup: account for memory_recursiveprot in test_memcg_low() cgroup: account for memory_localevents in test_memcg_oom_group_leaf_events() cgroup: remove racy check in test_memcg_sock() cgroup: fix racy check in alloc_pagecache_max_30M() helper function Eric Dumazet (1): mm/page_owner: use strscpy() instead of strlcpy() Fabio M. De Francesco (5): mm/highmem: VM_BUG_ON() if offset + len > PAGE_SIZE mm/highmem: fix kernel-doc warnings in highmem*.h Documentation/vm: include kdocs from highmem*.h into highmem.rst Documentation/vm: move "Using kmap-atomic" to highmem.h Documentation/vm: rework "Temporary Virtual Mappings" section Fanjun Kong (1): mm/page_owner.c: add missing __initdata attribute Florian Rommel (1): mmap locking API: fix missed mmap_sem references in comments Gabriel Krisman Bertazi (1): selftests: vm: add test for Soft-Dirty PTE bit Ganesan Rajagopal (1): mm/memcontrol: export memcg->watermark via sysfs for v2 memcg Gautam Menghani (1): mm/damon: add documentation for Enum value Guo Zhengkui (1): userfaultfd/selftests: use swap() instead of open coding it Hailong Tu (1): mm/damon/reclaim: fix the timer always stays active Haowen Bai (1): tools/vm/page_owner: support debug log to avoid huge log print Hongchen Zhang (1): mm/swapops: make is_pmd_migration_entry more strict Hugh Dickins (1): mm/shmem: fix shmem folio swapoff hang Jackie Liu (1): mm/kfence: print disabling or re-enabling message Jagdish Gediya (2): lib/kstrtox.c: add "false"/"true" support to kstrtobool() mm: convert sysfs input to bool using kstrtobool() Jakob Koschel (1): hugetlb: remove use of list iterator variable after loop Jiajian Ye (3): tools/vm/page_owner_sort.c: use fprintf() to send error messages to stderr tools/vm/page_owner_sort.c: support for multi-value selection in single argument tools/vm/page_owner_sort.c: support sorting blocks by multiple keys Jianxing Wang (1): mm/mmu_gather: limit free batch count and add schedule point in tlb_batch_pages_flush Jiapeng Chong (1): mm/damon/reclaim: use resource_size function on resource object Joao Martins (5): mm/sparse-vmemmap: add a pgmap argument to section activation mm/sparse-vmemmap: refactor core of vmemmap_populate_basepages() to helper mm/hugetlb_vmemmap: move comment block to Documentation/vm mm/sparse-vmemmap: improve memory savings for compound devmaps mm/page_alloc: reuse tail struct pages for compound devmaps Joel Savitz (2): Documentation/sysctl: document page_lock_unfairness selftests: clarify common error when running gup_test Johannes Weiner (7): Documentation: filesystems: proc: update meminfo section mm: Kconfig: move swap and slab config options to the MM section mm: Kconfig: group swap, slab, hotplug and thp options into submenus mm: Kconfig: simplify zswap configuration mm: zswap: add basic meminfo and vmstat coverage zswap: memcg accounting Revert "mm/vmscan: never demote for memcg reclaim" Julia Lawall (2): ksm: fix typo in comment selftests/vm/pkeys: fix typo in comment Kefeng Wang (4): mm: page_table_check: move pxx_user_accessible_page into x86 arm64/mm: enable ARCH_SUPPORTS_PAGE_TABLE_CHECK mm: damon: use HPAGE_PMD_SIZE mm: kfence: use PAGE_ALIGNED helper Li kunyu (1): mm: functions may simplify the use of return values Lu Jialin (2): mm/memcontrol.c: make cgroup_memory_noswap static mm/memcontrol.c: remove unused private flag of memory.oom_control Luo Meng (1): tmpfs: fix undefined-behaviour in shmem_reconfigure() Ma Wupeng (1): mm/page_alloc.c: calc the right pfn if page size is not 4K Matthew Wilcox (Oracle) (26): shmem: convert shmem_alloc_hugepage() to use vma_alloc_folio() mm/huge_memory: convert do_huge_pmd_anonymous_page() to use vma_alloc_folio() alpha: fix alloc_zeroed_user_highpage_movable() mm: remove alloc_pages_vma() vmscan: use folio_mapped() in shrink_page_list() vmscan: convert the writeback handling in shrink_page_list() to folios swap: turn get_swap_page() into folio_alloc_swap() swap: convert add_to_swap() to take a folio vmscan: convert dirty page handling to folios vmscan: convert page buffer handling to use folios vmscan: convert lazy freeing to folios vmscan: move initialisation of mapping down vmscan: convert the activate_locked portion of shrink_page_list to folios mm: allow can_split_folio() to be called when THP are disabled vmscan: remove remaining uses of page in shrink_page_list mm/shmem: use a folio in shmem_unused_huge_shrink mm/swap: add folio_throttle_swaprate mm/shmem: convert shmem_add_to_page_cache to take a folio mm/shmem: turn shmem_should_replace_page into shmem_should_replace_folio mm/shmem: add shmem_alloc_folio() mm/shmem: convert shmem_alloc_and_acct_page to use a folio mm/shmem: convert shmem_getpage_gfp to use a folio mm/shmem: convert shmem_swapin_page() to shmem_swapin_folio() mm: add folio_mapping_flags() mm: add folio_test_movable() mm/migrate: convert move_to_new_page() into move_to_new_folio() Miaohe Lin (63): mm: shmem: make shmem_init return void mm/memcg: remove unneeded nr_scanned mm/memory-failure.c: minor cleanup for HWPoisonHandlable mm/memory-failure.c: dissolve truncated hugetlb page mm/vmscan: remove obsolete comment in get_scan_count mm/vmscan: fix comment for current_may_throttle mm/vmscan: fix comment for isolate_lru_pages mm/z3fold: declare z3fold_mount with __init mm/z3fold: remove obsolete comment in z3fold_alloc mm/z3fold: minor clean up for z3fold_free mm/z3fold: remove unneeded page_mapcount_reset and ClearPagePrivate mm/z3fold: remove confusing local variable l reassignment mm/z3fold: move decrement of pool->pages_nr into __release_z3fold_page() mm/z3fold: remove redundant list_del_init of zhdr->buddy in z3fold_free mm/z3fold: remove unneeded PAGE_HEADLESS check in free_handle() mm: compaction: use helper isolation_suitable() drivers/base/node.c: fix compaction sysfs file leak mm/mempolicy: clean up the code logic in queue_pages_pte_range mm/migration: remove unneeded local variable mapping_locked mm/migration: remove unneeded local variable page_lru mm/migration: use helper function vma_lookup() in add_page_for_migration mm/migration: use helper macro min in do_pages_stat mm/migration: avoid unneeded nodemask_t initialization mm/migration: remove some duplicated codes in migrate_pages mm/migration: fix potential page refcounts leak in migrate_pages mm/migration: fix potential invalid node access for reclaim-based migration mm/migration: fix possible do_pages_stat_array racing with memory offline mm/madvise: fix potential pte_unmap_unlock pte error mm/mmap.c: use helper mlock_future_check() mm/mremap: use helper mlock_future_check() mm/mremap: avoid unneeded do_munmap call mm: compaction: remove unneeded return value of kcompactd_run mm: compaction: remove unneeded pfn update mm: compaction: remove unneeded assignment to isolate_start_pfn mm: compaction: clean up comment for sched contention mm: compaction: clean up comment about suitable migration target recheck mm: compaction: use COMPACT_CLUSTER_MAX in compaction.c mm: compaction: use helper compound_nr in isolate_migratepages_block mm: compaction: clean up comment about async compaction in isolate_migratepages mm: compaction: avoid possible NULL pointer dereference in kcompactd_cpu_online mm: compaction: make compaction_zonelist_suitable return false when COMPACT_SUCCESS mm: compaction: simplify the code in __compact_finished mm: compaction: make sure highest is above the min_pfn mm/vmscan: take min_slab_pages into account when try to call shrink_node mm/vmscan: add a comment about MADV_FREE pages check in folio_check_dirty_writeback mm/vmscan: introduce helper function reclaim_page_list() mm/vmscan: take all base pages of THP into account when race with speculative reference mm/vmscan: remove obsolete comment in kswapd_run mm/vmscan: use helper folio_is_file_lru() mm/swap: use helper is_swap_pte() in swap_vma_readahead mm/swap: use helper macro __ATTR_RW mm/swap: fold __swap_info_get() into its sole caller mm/swap: remove unneeded return value of free_swap_slot mm/swap: print bad swap offset entry in get_swap_device mm/swap: remove buggy cache->nr check in refill_swap_slots_cache mm/swap: remove unneeded p != NULL check in __swap_duplicate mm/swap: make page_swapcount and __lru_add_drain_all static mm/swap: avoid calling swp_swap_info when try to check SWP_STABLE_WRITES mm/swap: add helper swap_offset_available() mm/swap: fix the obsolete comment for SWP_TYPE_SHIFT mm/swap: clean up the comment of find_next_to_unuse mm/swap: fix the comment of get_kernel_pages mm/swap: fix comment about swap extent Mina Almasry (1): hugetlbfs: fix hugetlbfs_statfs() locking Minchan Kim (1): mm: don't be stuck to rmap lock on reclaim path Muchun Song (16): mm: hugetlb_vmemmap: introduce ARCH_WANT_HUGETLB_PAGE_FREE_VMEMMAP arm64: mm: hugetlb: enable HUGETLB_PAGE_FREE_VMEMMAP for arm64 mm: rmap: fix cache flush on THP pages dax: fix cache flush on PMD-mapped pages mm: rmap: introduce pfn_mkclean_range() to cleans PTEs mm: pvmw: add support for walking devmap pages dax: fix missing writeprotect the pte entry mm: simplify follow_invalidate_pte() mm: hugetlb_vmemmap: cleanup hugetlb_vmemmap related functions mm: hugetlb_vmemmap: cleanup hugetlb_free_vmemmap_enabled* mm: hugetlb_vmemmap: cleanup CONFIG_HUGETLB_PAGE_FREE_VMEMMAP* mm: hugetlb_vmemmap: disable hugetlb_optimize_vmemmap when struct page crosses page boundaries mm: memory_hotplug: override memmap_on_memory when hugetlb_free_vmemmap=on mm: hugetlb_vmemmap: use kstrtobool for hugetlb_vmemmap param parsing mm: hugetlb_vmemmap: add hugetlb_optimize_vmemmap sysctl MAINTAINERS: add Muchun as co-maintainer for HugeTLB Muhammad Usama Anjum (2): selftests: vm: bring common functions to a new file selftests: vm: add migration to the .gitignore Nadav Amit (3): mm/mprotect: use mmu_gather mm/mprotect: do not flush when not required architecturally mm: avoid unnecessary flush on change_huge_pmd() Naoya Horiguchi (3): mm/hwpoison: put page in already hwpoisoned case with MF_COUNT_INCREASED Revert "mm/memory-failure.c: fix race with changing page compound again" mm, hugetlb, hwpoison: separate branch for free and in-use hugepage NeilBrown (13): mm: create new mm/swap.h header file mm: drop swap_dirty_folio mm: move responsibility for setting SWP_FS_OPS to ->swap_activate mm: reclaim mustn't enter FS for SWP_FS_OPS swap-space mm: introduce ->swap_rw and use it for reads from SWP_FS_OPS swap-space nfs: rename nfs_direct_IO and use as ->swap_rw mm: perform async writes to SWP_FS_OPS swap-space using ->swap_rw doc: update documentation for swap_activate and swap_rw mm: submit multipage reads for SWP_FS_OPS swap-space mm: submit multipage write for SWP_FS_OPS swap-space mm: handle THP in swap_*page_fs() MM: handle THP in swap_*page_fs() - count_vm_events() VFS: add FMODE_CAN_ODIRECT file flag Niels Dossche (1): selftest/vm: test that mremap fails on non-existent vma Oscar Salvador (1): mm: untangle config dependencies for demote-on-reclaim Patrick Wang (3): selftests: vm: check numa_available() before operating "merge_across_nodes" in ksm_tests selftests: vm: add "test_hmm.sh" to TEST_FILES selftests: vm: add the "settings" file with timeout variable Peng Liu (4): hugetlb: fix wrong use of nr_online_nodes hugetlb: fix hugepages_setup when deal with pernode hugetlb: fix return value of __setup handlers mm: use for_each_online_node and node_online instead of open coding Peter Collingbourne (2): printk: stop including cache.h from printk.h mm: make minimum slab alignment a runtime property Peter Xu (25): include/linux/swapops.h: remove stub for non_swap_entry() mm: introduce PTE_MARKER swap entry mm: teach core mm about pte markers mm: check against orig_pte for finish_fault() mm/uffd: PTE_MARKER_UFFD_WP mm/shmem: take care of UFFDIO_COPY_MODE_WP mm/shmem: handle uffd-wp special pte in page fault handler mm/shmem: persist uffd-wp bit across zapping for file-backed mm/shmem: allow uffd wr-protect none pte for file-backed mem mm/shmem: allows file-back mem to be uffd wr-protected on thps mm/shmem: handle uffd-wp during fork() mm/hugetlb: introduce huge pte version of uffd-wp helpers mm/hugetlb: hook page faults for uffd write protection mm/hugetlb: take care of UFFDIO_COPY_MODE_WP mm/hugetlb: handle UFFDIO_WRITEPROTECT mm/hugetlb: handle pte markers in page faults mm/hugetlb: allow uffd wr-protect none ptes mm/hugetlb: only drop uffd-wp special pte if required mm/hugetlb: handle uffd-wp during fork() mm/khugepaged: don't recycle vma pgtable if uffd-wp registered mm/pagemap: recognize uffd-wp bit for shmem/hugetlbfs mm/uffd: enable write protection for shmem & hugetlbfs mm: enable PTE markers by default selftests/uffd: enable uffd-wp for shmem/hugetlbfs mm/uffd: move USERFAULTFD configs into mm/ Qi Zheng (1): mm: fix missing handler for __GFP_NOWARN Randy Dunlap (1): zram: fix Kconfig dependency warning Rei Yamamoto (1): mm, compaction: fast_find_migrateblock() should return pfn in the target zone Rolf Eike Beer (1): mm/mmap.c: use mmap_assert_write_locked() instead of open coding it Roman Gushchin (4): kselftests: memcg: update the oom group leaf events test kselftests: memcg: speed up the memory.high test MAINTAINERS: add corresponding kselftests to cgroup entry MAINTAINERS: add corresponding kselftests to memcg entry Sebastian Andrzej Siewior (1): mm/vmalloc: use raw_cpu_ptr() for vmap_block_queue access SeongJae Park (22): mm/damon/core-test: add a kunit test case for ops registration mm/damon/core: add a function for damon_operations registration checks mm/damon/sysfs: add a file for listing available monitoring ops selftets/damon/sysfs: test existence and permission of avail_operations Docs/{ABI,admin-guide}/damon: document 'avail_operations' sysfs file mm/damon/vaddr: register a damon_operations for fixed virtual address ranges monitoring mm/damon/sysfs: support fixed virtual address ranges monitoring Docs/{ABI,admin-guide}/damon: update for fixed virtual address ranges monitoring mm/damon/core: add a new callback for watermarks checks mm/damon/core: finish kdamond as soon as any callback returns an error mm/damon/vaddr: generalize damon_va_apply_three_regions() mm/damon/vaddr: move 'damon_set_regions()' to core mm/damon/vaddr: remove damon_va_apply_three_regions() mm/damon/sysfs: prohibit multiple physical address space monitoring targets mm/damon/sysfs: move targets setup code to a separated function mm/damon/sysfs: reuse damon_set_regions() for regions setting mm/damon/sysfs: use enum for 'state' input handling mm/damon/sysfs: update schemes stat in the kdamond context mm/damon/sysfs: support online inputs update Docs/{ABI,admin-guide}/damon: Update for 'state' sysfs file input keyword, 'commit' mm/damon/reclaim: support online inputs update Docs/admin-guide/mm/damon/reclaim: document 'commit_inputs' parameter Shakeel Butt (1): memcg: introduce per-memcg reclaim interface Sidhartha Kumar (1): tools/testing/selftests/vm/gup_test.c: clarify error statement Suren Baghdasaryan (1): selftests: vm: add process_mrelease tests Tong Tiangen (6): mm: page_table_check: using PxD_SIZE instead of PxD_PAGE_SIZE mm: page_table_check: add hooks to public helpers mm: remove __HAVE_ARCH_PTEP_CLEAR in pgtable.h riscv/mm: enable ARCH_SUPPORTS_PAGE_TABLE_CHECK riscv/mm: fix two page table check related issues arm64/mm: fix page table check compile error for CONFIG_PGTABLE_LEVELS=2 Vasily Averin (5): percpu: improve percpu_alloc_percpu event trace tracing: incorrect gfp_t conversion tracing: incorrect isolate_mote_t cast in mm_vmscan_lru_isolate include/trace/events/mmflags.h: cleanup for "tracing: incorrect gfp_t conversion" include/trace/events/percpu.h: cleanup for "percpu: improve percpu_alloc_percpu event trace" Wan Jiabing (1): mm/shmem: remove duplicate include in memory.c Wang Cheng (1): mm/mempolicy: fix uninit-value in mpol_rebind_policy() Wei Yang (12): mm/memcg: mz already removed from rb_tree if not NULL mm/memcg: set memcg after css verified and got reference mm/memcg: set pos explicitly for reclaim and !reclaim mm/memcg: move generation assignment and comparison together mm/memcg: non-hierarchical mode is deprecated mm/page_alloc: adding same penalty is enough to get round-robin order mm/vmscan: reclaim only affects managed_zones mm/vmscan: make sure wakeup_kswapd with managed zone mm/vmscan: sc->reclaim_idx must be a valid zone index mm/vmscan: not necessary to re-init the list for each iteration mm/vmscan: filter empty page_list at the beginning mm/vmscan: don't use NUMA_NO_NODE as indicator of page on different node Wonhyuk Yang (2): mm/page_alloc: cache the result of node_dirty_ok() mm/page_alloc: fix tracepoint mm_page_alloc_zone_locked() Xianting Tian (1): fs/proc/task_mmu.c: remove redundant page validation of pte_page Xiaomeng Tong (1): damon: vaddr-test: tweak code to make the logic clearer Yang Shi (8): sched: coredump.h: clarify the use of MMF_VM_HUGEPAGE mm: khugepaged: remove redundant check for VM_NO_KHUGEPAGED mm: khugepaged: skip DAX vma mm: thp: only regular file could be THP eligible mm: khugepaged: make khugepaged_enter() void function mm: khugepaged: make hugepage_vma_check() non-static mm: khugepaged: introduce khugepaged_enter_vma() helper mm: mmap: register suitable readonly file vmas for khugepaged Yang Yang (1): mm/vmstat: add events for ksm cow Yixuan Cao (3): tools/vm/page_owner_sort.c: provide allocator labelling and update --cull and --sort options tools/vm/page_owner_sort.c: avoid repeated judgments mm/vmalloc: fix a comment Yosry Ahmed (3): selftests: cgroup: return -errno from cg_read()/cg_write() on failure selftests: cgroup: fix alloc_anon_noexit() instantly freeing memory selftests: cgroup: add a selftest for memory.reclaim Yu Zhe (1): mm/damon: remove unnecessary type castings Yury Norov (2): vmap(): don't allow invalid pages mm/gup: fix comments to pin_user_pages_*() Zi Yan (9): mm: page_alloc: simplify pageblock migratetype check in __free_one_page() mm: wrap __find_buddy_pfn() with a necessary buddy page validation mm: page_isolation: move has_unmovable_pages() to mm/page_isolation.c mm: page_isolation: check specified range for unmovable pages mm: make alloc_contig_range work at pageblock granularity mm: page_isolation: enable arbitrary range page isolation. mm: cma: use pageblock_order as the single alignment drivers: virtio_mem: use pageblock size as the minimum virtio_mem size. mm: fix a potential infinite loop in start_isolate_page_range() Zqiang (1): kasan: fix sleeping function called from invalid context on RT kernel huangshaobo (1): kfence: enable check kfence canary on panic via boot param liqiong (1): mm/memory-failure.c: remove unnecessary (void*) conversions liusongtang (1): mm/memory_hotplug: use pgprot_val to get value of pgprot xu xin (2): ksm: count ksm merging pages for each process mm/khugepaged: use vma_is_anonymous zhenwei pi (5): mm/memory-failure.c: move clear_hwpoisoned_pages mm/memory-failure.c: simplify num_poisoned_pages_dec mm/memory-failure.c: add hwpoison_filter for soft offline mm/hwpoison: disable hwpoison filter during removing mm/memory-failure.c: simplify num_poisoned_pages_inc/dec Documentation/ABI/testing/sysfs-kernel-mm-damon | 25 +- Documentation/admin-guide/blockdev/zram.rst | 5 + Documentation/admin-guide/cgroup-v2.rst | 49 ++ Documentation/admin-guide/kernel-parameters.txt | 10 +- Documentation/admin-guide/mm/damon/reclaim.rst | 11 + Documentation/admin-guide/mm/damon/usage.rst | 41 +- Documentation/admin-guide/mm/hugetlbpage.rst | 2 +- Documentation/admin-guide/mm/ksm.rst | 18 + Documentation/admin-guide/sysctl/vm.rst | 48 ++ Documentation/dev-tools/kasan.rst | 228 +++++---- Documentation/filesystems/locking.rst | 18 +- Documentation/filesystems/proc.rst | 154 +++--- Documentation/filesystems/vfs.rst | 17 +- Documentation/vm/highmem.rst | 100 ++-- Documentation/vm/index.rst | 1 + Documentation/vm/page_owner.rst | 45 +- Documentation/vm/vmemmap_dedup.rst | 223 +++++++++ MAINTAINERS | 9 +- arch/alpha/include/asm/page.h | 2 +- arch/arm64/Kconfig | 3 + arch/arm64/include/asm/cache.h | 17 +- arch/arm64/include/asm/hugetlb.h | 4 +- arch/arm64/include/asm/mman.h | 24 - arch/arm64/include/asm/mte-kasan.h | 1 + arch/arm64/include/asm/percpu.h | 1 + arch/arm64/include/asm/pgtable-prot.h | 1 + arch/arm64/include/asm/pgtable.h | 91 +++- arch/arm64/mm/flush.c | 14 + arch/arm64/mm/hugetlbpage.c | 12 +- arch/arm64/mm/mmap.c | 25 + arch/csky/include/asm/processor.h | 2 +- arch/ia64/include/asm/hugetlb.h | 5 +- arch/ia64/kernel/uncached.c | 2 +- arch/mips/include/asm/hugetlb.h | 9 +- arch/parisc/include/asm/hugetlb.h | 5 +- arch/powerpc/Kconfig | 1 + arch/powerpc/include/asm/book3s/64/pgtable.h | 31 +- arch/powerpc/include/asm/hugetlb.h | 9 +- arch/powerpc/include/asm/mman.h | 12 - arch/powerpc/mm/book3s64/pgtable.c | 17 + arch/riscv/Kconfig | 1 + arch/riscv/include/asm/pgtable-64.h | 5 + arch/riscv/include/asm/pgtable.h | 66 ++- arch/s390/include/asm/hugetlb.h | 26 +- arch/s390/include/asm/pgtable.h | 36 +- arch/sh/include/asm/hugetlb.h | 5 +- arch/sparc/Kconfig | 1 + arch/sparc/include/asm/hugetlb.h | 5 +- arch/sparc/include/asm/mman.h | 6 - arch/sparc/mm/init_64.c | 12 + arch/x86/Kconfig | 3 +- arch/x86/include/asm/pgtable.h | 54 +- arch/x86/include/asm/pgtable_64.h | 4 +- arch/x86/include/asm/pgtable_64_types.h | 5 + arch/x86/include/asm/pgtable_types.h | 2 + arch/x86/include/asm/tlbflush.h | 97 ++++ arch/x86/include/uapi/asm/mman.h | 14 - arch/x86/mm/Makefile | 2 +- arch/x86/mm/init_64.c | 2 +- arch/x86/mm/pgprot.c | 35 ++ arch/x86/mm/pgtable.c | 13 +- drivers/base/memory.c | 5 +- drivers/base/node.c | 1 + drivers/block/loop.c | 4 +- drivers/block/zram/Kconfig | 3 +- drivers/block/zram/zram_drv.c | 52 +- drivers/block/zram/zram_drv.h | 1 - drivers/firmware/smccc/kvm_guest.c | 1 + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c | 2 +- drivers/gpu/drm/ttm/ttm_bo_vm.c | 2 +- drivers/virtio/virtio_mem.c | 6 +- fs/Kconfig | 22 +- fs/cifs/file.c | 7 +- fs/dax.c | 98 +--- fs/exec.c | 6 +- fs/fcntl.c | 9 +- fs/hugetlbfs/inode.c | 19 +- fs/nfs/direct.c | 23 +- fs/nfs/file.c | 18 +- fs/open.c | 9 +- fs/overlayfs/file.c | 13 +- fs/proc/base.c | 22 + fs/proc/meminfo.c | 7 + fs/proc/task_mmu.c | 9 +- fs/userfaultfd.c | 32 +- include/asm-generic/hugetlb.h | 28 +- include/asm-generic/pgtable-nopmd.h | 2 + include/asm-generic/tlb.h | 14 + include/linux/cma.h | 4 +- include/linux/compaction.h | 5 +- include/linux/damon.h | 14 + include/linux/fault-inject.h | 2 + include/linux/fs.h | 9 + include/linux/gfp.h | 20 +- include/linux/highmem-internal.h | 18 +- include/linux/highmem.h | 53 +- include/linux/huge_mm.h | 20 +- include/linux/hugetlb.h | 42 +- include/linux/kasan.h | 8 +- include/linux/khugepaged.h | 44 +- include/linux/ksm.h | 4 +- include/linux/memcontrol.h | 72 ++- include/linux/memory_hotplug.h | 14 +- include/linux/migrate.h | 39 +- include/linux/mm.h | 70 ++- include/linux/mm_inline.h | 43 ++ include/linux/mm_types.h | 20 + include/linux/mman.h | 4 - include/linux/mmzone.h | 5 +- include/linux/nfs_fs.h | 2 +- include/linux/nodemask.h | 13 +- include/linux/page-flags.h | 62 ++- include/linux/page-isolation.h | 6 +- include/linux/pgtable.h | 84 +++- include/linux/printk.h | 1 - include/linux/rmap.h | 149 +++++- include/linux/sched/coredump.h | 3 +- include/linux/shmem_fs.h | 6 +- include/linux/slab.h | 12 + include/linux/swap.h | 191 ++----- include/linux/swap_slots.h | 2 +- include/linux/swapops.h | 124 ++++- include/linux/userfaultfd_k.h | 84 ++++ include/linux/vm_event_item.h | 7 + include/linux/writeback.h | 7 + include/ras/ras_event.h | 1 - include/trace/events/btrfs.h | 4 +- include/trace/events/compaction.h | 4 +- include/trace/events/kmem.h | 26 +- include/trace/events/mmflags.h | 84 ++-- include/trace/events/percpu.h | 23 +- include/trace/events/vmscan.h | 20 +- include/uapi/linux/userfaultfd.h | 10 +- init/Kconfig | 140 ------ kernel/bpf/bpf_lru_list.h | 1 + kernel/events/uprobes.c | 2 +- kernel/fork.c | 4 +- lib/Kconfig.kasan | 168 +++---- lib/fault-inject.c | 3 + lib/kstrtox.c | 6 +- mm/Kconfig | 577 ++++++++++++++-------- mm/Makefile | 2 +- mm/compaction.c | 93 ++-- mm/damon/core-test.h | 36 ++ mm/damon/core.c | 115 ++++- mm/damon/ops-common.c | 3 +- mm/damon/paddr.c | 2 +- mm/damon/reclaim.c | 124 +++-- mm/damon/sysfs.c | 406 ++++++++++++--- mm/damon/vaddr-test.h | 14 +- mm/damon/vaddr.c | 90 +--- mm/debug_vm_pgtable.c | 46 +- mm/failslab.c | 3 + mm/filemap.c | 5 + mm/gup.c | 127 ++++- mm/hmm.c | 2 +- mm/huge_memory.c | 177 +++++-- mm/hugetlb.c | 428 +++++++++++----- mm/hugetlb_vmemmap.c | 323 +++++------- mm/hugetlb_vmemmap.h | 24 +- mm/hwpoison-inject.c | 1 + mm/internal.h | 177 +++++-- mm/kasan/common.c | 12 +- mm/kasan/generic.c | 6 +- mm/kasan/kasan.h | 92 ++-- mm/kasan/quarantine.c | 54 +- mm/kasan/report_generic.c | 8 +- mm/kfence/core.c | 40 +- mm/kfence/kfence_test.c | 5 +- mm/khugepaged.c | 81 +-- mm/ksm.c | 35 +- mm/madvise.c | 17 +- mm/memcontrol.c | 329 ++++++++++-- mm/memory-failure.c | 126 ++--- mm/memory.c | 573 ++++++++++++++------- mm/memory_hotplug.c | 35 +- mm/mempolicy.c | 74 +-- mm/memremap.c | 10 + mm/migrate.c | 194 ++++---- mm/migrate_device.c | 23 +- mm/mincore.c | 4 +- mm/mmap.c | 67 +-- mm/mmu_gather.c | 16 +- mm/mprotect.c | 176 +++++-- mm/mremap.c | 16 +- mm/page-writeback.c | 17 +- mm/page_alloc.c | 375 +++++--------- mm/page_ext.c | 2 +- mm/page_idle.c | 7 +- mm/page_io.c | 253 +++++++--- mm/page_isolation.c | 391 ++++++++++++++- mm/page_owner.c | 4 +- mm/page_table_check.c | 25 +- mm/page_vma_mapped.c | 17 +- mm/percpu-internal.h | 8 +- mm/percpu.c | 5 +- mm/pgtable-generic.c | 8 + mm/rmap.c | 409 ++++++++++----- mm/shmem.c | 353 +++++++------ mm/slab.c | 7 +- mm/slab_common.c | 3 +- mm/slob.c | 16 +- mm/sparse-vmemmap.c | 176 ++++++- mm/sparse.c | 53 +- mm/swap.c | 10 +- mm/swap.h | 157 ++++++ mm/swap_slots.c | 20 +- mm/swap_state.c | 90 ++-- mm/swapfile.c | 135 ++--- mm/userfaultfd.c | 62 ++- mm/util.c | 1 + mm/vmalloc.c | 18 +- mm/vmscan.c | 476 +++++++++--------- mm/vmstat.c | 9 +- mm/z3fold.c | 64 +-- mm/zswap.c | 52 +- tools/testing/selftests/cgroup/cgroup_util.c | 56 ++- tools/testing/selftests/cgroup/cgroup_util.h | 1 + tools/testing/selftests/cgroup/test_memcontrol.c | 199 ++++++-- tools/testing/selftests/damon/sysfs.sh | 1 + tools/testing/selftests/vm/.gitignore | 3 + tools/testing/selftests/vm/Makefile | 14 +- tools/testing/selftests/vm/config | 2 + tools/testing/selftests/vm/gup_test.c | 24 +- tools/testing/selftests/vm/hugepage-mremap.c | 6 + tools/testing/selftests/vm/ksm_tests.c | 9 +- tools/testing/selftests/vm/madv_populate.c | 34 +- tools/testing/selftests/vm/migration.c | 193 ++++++++ tools/testing/selftests/vm/mrelease_test.c | 200 ++++++++ tools/testing/selftests/vm/protection_keys.c | 2 +- tools/testing/selftests/vm/run_vmtests.sh | 525 ++++---------------- tools/testing/selftests/vm/settings | 1 + tools/testing/selftests/vm/soft-dirty.c | 145 ++++++ tools/testing/selftests/vm/split_huge_page_test.c | 79 +-- tools/testing/selftests/vm/userfaultfd.c | 13 +- tools/testing/selftests/vm/vm_util.c | 108 ++++ tools/testing/selftests/vm/vm_util.h | 9 + tools/vm/page-types.c | 8 +- tools/vm/page_owner_sort.c | 386 ++++++++++++--- 240 files changed, 9207 insertions(+), 4664 deletions(-) create mode 100644 Documentation/vm/vmemmap_dedup.rst create mode 100644 arch/x86/mm/pgprot.c create mode 100644 mm/swap.h create mode 100644 tools/testing/selftests/vm/migration.c create mode 100644 tools/testing/selftests/vm/mrelease_test.c create mode 100644 tools/testing/selftests/vm/settings create mode 100644 tools/testing/selftests/vm/soft-dirty.c create mode 100644 tools/testing/selftests/vm/vm_util.c create mode 100644 tools/testing/selftests/vm/vm_util.h