Linus, please merge the MM updates for this -rc cycle, thanks. Present and forthcoming build issues (not flagged by a merging error) and their linux-next resolutions: kvm tree, virt/kvm/guest_memfd.c https://lkml.kernel.org/r/20231117092833.f143fa4bbf0abfbd2e58661d@xxxxxxxxxxxxxxxxxxxx virt/kvm/guest_memfd.c is new in the KVM tree. The above email identified the changes which this file will been when combined with mm.git's af7628d6ec19 ("fs: convert error_remove_page to error_remove_folio") See also https://lkml.kernel.org/r/20231211135052.4fb016a6@xxxxxxxxxxxxxxxx vfs-brauner tree, fs/netfs/buffered_write.c https://lkml.kernel.org/r/20231222104128.395c9f7b@xxxxxxxxxxxxxxxx Present and forthcoming merge issues and their linux-next resolutions include: drm-misc tree, drivers/accel/ivpu/ivpu_job.c: https://lkml.kernel.org/r/20231114113654.3bd7f0ee@xxxxxxxxxxxxxxxx vfs-brauner tree, fs/buffer.c: https://lkml.kernel.org/r/20231122103119.34d23955@xxxxxxxxxxxxxxxx slab tree, mm/kasan/quarantine.c: https://lkml.kernel.org/r/20231127122902.566de6d1@xxxxxxxxxxxxxxxx https://lkml.kernel.org/r/20231221173124.78c7df98@xxxxxxxxxxxxxxxx https://lkml.kernel.org/r/20240102151332.48a87d86@xxxxxxxxxxxxxxxx slab tree, mm/slab.c: https://lkml.kernel.org/r/20231221173412.24b78407@xxxxxxxxxxxxxxxx slab tree, mm/slab_common.c: https://lkml.kernel.org/r/20240102153438.5b29f8c5@xxxxxxxxxxxxxxxx asm-generic tree, arch/mips/include/asm/traps.h: https://lkml.kernel.org/r/20231205090546.7dffe3aa@xxxxxxxxxxxxxxxx char-misc tree, drivers/android/binder_alloc.c: https://lkml.kernel.org/r/20231207134213.25631ae9@xxxxxxxxxxxxxxxx vfs-brauner tree, fs/afs/write.c: https://lkml.kernel.org/r/20231221105238.4d16892a@xxxxxxxxxxxxxxxx drm tree, drivers/accel/qaic/qaic_data.c: https://lkml.kernel.org/r/20240102105223.7634699d@xxxxxxxxxxxxxxxx slab tree, include/linux/slab.h: https://lkml.kernel.org/r/20240102150224.3c091932@xxxxxxxxxxxxxxxx The following changes since commit 1803d0c5ee1a3bbee23db2336e21add067824f02: mailmap: add an old address for Naoya Horiguchi (2023-12-20 13:46:20 -0800) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm tags/mm-stable-2024-01-08-15-31 for you to fetch changes up to 5e0a760b44417f7cadd79de2204d6247109558a0: mm, treewide: rename MAX_ORDER to MAX_PAGE_ORDER (2024-01-08 15:27:15 -0800) ---------------------------------------------------------------- Many singleton patches against the MM code. The patch series which are included in this merge do the following: - Peng Zhang has done some mapletree maintainance work in the series "maple_tree: add mt_free_one() and mt_attr() helpers" "Some cleanups of maple tree" - In the series "mm: use memmap_on_memory semantics for dax/kmem" Vishal Verma has altered the interworking between memory-hotplug and dax/kmem so that newly added 'device memory' can more easily have its memmap placed within that newly added memory. - Matthew Wilcox continues folio-related work (including a few fixes) in the patch series "Add folio_zero_tail() and folio_fill_tail()" "Make folio_start_writeback return void" "Fix fault handler's handling of poisoned tail pages" "Convert aops->error_remove_page to ->error_remove_folio" "Finish two folio conversions" "More swap folio conversions" - Kefeng Wang has also contributed folio-related work in the series "mm: cleanup and use more folio in page fault" - Jim Cromie has improved the kmemleak reporting output in the series "tweak kmemleak report format". - In the series "stackdepot: allow evicting stack traces" Andrey Konovalov to permits clients (in this case KASAN) to cause eviction of no longer needed stack traces. - Charan Teja Kalla has fixed some accounting issues in the page allocator's atomic reserve calculations in the series "mm: page_alloc: fixes for high atomic reserve caluculations". - Dmitry Rokosov has added to the samples/ dorectory some sample code for a userspace memcg event listener application. See the series "samples: introduce cgroup events listeners". - Some mapletree maintanance work from Liam Howlett in the series "maple_tree: iterator state changes". - Nhat Pham has improved zswap's approach to writeback in the series "workload-specific and memory pressure-driven zswap writeback". - DAMON/DAMOS feature and maintenance work from SeongJae Park in the series "mm/damon: let users feed and tame/auto-tune DAMOS" "selftests/damon: add Python-written DAMON functionality tests" "mm/damon: misc updates for 6.8" - Yosry Ahmed has improved memcg's stats flushing in the series "mm: memcg: subtree stats flushing and thresholds". - In the series "Multi-size THP for anonymous memory" Ryan Roberts has added a runtime opt-in feature to transparent hugepages which improves performance by allocating larger chunks of memory during anonymous page faults. - Matthew Wilcox has also contributed some cleanup and maintenance work against eh buffer_head code int he series "More buffer_head cleanups". - Suren Baghdasaryan has done work on Andrea Arcangeli's series "userfaultfd move option". UFFDIO_MOVE permits userspace heap compaction algorithms to move userspace's pages around rather than UFFDIO_COPY'a alloc/copy/free. - Stefan Roesch has developed a "KSM Advisor", in the series "mm/ksm: Add ksm advisor". This is a governor which tunes KSM's scanning aggressiveness in response to userspace's current needs. - Chengming Zhou has optimized zswap's temporary working memory use in the series "mm/zswap: dstmem reuse optimizations and cleanups". - Matthew Wilcox has performed some maintenance work on the writeback code, both code and within filesystems. The series is "Clean up the writeback paths". - Andrey Konovalov has optimized KASAN's handling of alloc and free stack traces for secondary-level allocators, in the series "kasan: save mempool stack traces". - Andrey also performed some KASAN maintenance work in the series "kasan: assorted clean-ups". - David Hildenbrand has gone to town on the rmap code. Cleanups, more pte batching, folio conversions and more. See the series "mm/rmap: interface overhaul". - Kinsey Ho has contributed some maintenance work on the MGLRU code in the series "mm/mglru: Kconfig cleanup". - Matthew Wilcox has contributed lruvec page accounting code cleanups in the series "Remove some lruvec page accounting functions". ---------------------------------------------------------------- Alexander Gordeev (2): pgtable: fix s390 ptdesc field comments pgtable: rename ptdesc _refcount field to __page_refcount Andrea Arcangeli (2): mm/rmap: support move to different root anon_vma in folio_move_anon_rmap() userfaultfd: UFFDIO_MOVE uABI Andrei Vagin (2): fs/proc/task_mmu: report SOFT_DIRTY bits through the PAGEMAP_SCAN ioctl selftests/mm: check that PAGEMAP_SCAN returns correct categories Andrew Morton (3): sync mm-stable with mm-hotfixes-stable to pick up depended-upon changes lib/maple_tree.c: fix build error due to hotfix alteration mm/list_lru.c: remove unused list_lru_from_kmem() Andrey Konovalov (65): lib/stackdepot: print disabled message only if truly disabled lib/stackdepot: check disabled flag when fetching lib/stackdepot: simplify __stack_depot_save lib/stackdepot: drop valid bit from handles lib/stackdepot: add depot_fetch_stack helper lib/stackdepot: use fixed-sized slots for stack records lib/stackdepot: fix and clean-up atomic annotations lib/stackdepot: rework helpers for depot_alloc_stack lib/stackdepot: rename next_pool_required to new_pool_required lib/stackdepot: store next pool pointer in new_pool lib/stackdepot: store free stack records in a freelist lib/stackdepot: use read/write lock lib/stackdepot: use list_head for stack record links kmsan: use stack_depot_save instead of __stack_depot_save lib/stackdepot, kasan: add flags to __stack_depot_save and rename lib/stackdepot: add refcount for records lib/stackdepot: allow users to evict stack traces kasan: remove atomic accesses to stack ring entries kasan: check object_size in kasan_complete_mode_report_info kasan: use stack_depot_put for tag-based modes slub, kasan: improve interaction of KASAN and slub_debug poisoning kasan: use stack_depot_put for Generic mode lib/stackdepot: adjust DEPOT_POOLS_CAP for KMSAN kasan: rename kasan_slab_free_mempool to kasan_mempool_poison_object kasan: move kasan_mempool_poison_object kasan: document kasan_mempool_poison_object kasan: add return value for kasan_mempool_poison_object kasan: introduce kasan_mempool_unpoison_object kasan: introduce kasan_mempool_poison_pages kasan: introduce kasan_mempool_unpoison_pages kasan: clean up __kasan_mempool_poison_object kasan: save free stack traces for slab mempools kasan: clean up and rename ____kasan_kmalloc kasan: introduce poison_kmalloc_large_redzone kasan: save alloc stack traces for mempool mempool: skip slub_debug poisoning when KASAN is enabled mempool: use new mempool KASAN hooks mempool: introduce mempool_use_prealloc_only kasan: add mempool tests kasan: rename pagealloc tests kasan: reorder tests kasan: rename and document kasan_(un)poison_object_data skbuff: use mempool KASAN hooks io_uring: use mempool KASAN hook lib/stackdepot: add printk_deferred_enter/exit guards kasan: handle concurrent kasan_record_aux_stack calls kasan: memset free track in qlink_free lib/stackdepot: fix comment in include/linux/stackdepot.h xtensa, kasan: define KASAN_SHADOW_END kasan/arm64: improve comments for KASAN_SHADOW_START/END mm, kasan: use KASAN_TAG_KERNEL instead of 0xff kasan: improve kasan_non_canonical_hook kasan: clean up kasan_requires_meta kasan: update kasan_poison documentation comment kasan: clean up is_kfence_address checks kasan: respect CONFIG_KASAN_VMALLOC for kasan_flag_vmalloc kasan: check kasan_vmalloc_enabled in vmalloc tests kasan: export kasan_poison as GPL kasan: remove SLUB checks for page_alloc fallbacks in tests kasan: speed up match_all_mem_tag test for SW_TAGS kasan: clean up kasan_cache_create kasan: reuse kasan_track in kasan_stack_ring_entry kasan: simplify saving extra info into tracks kasan: simplify kasan_complete_mode_report_info for tag-based modes kasan: stop leaking stack trace handles Andy Shevchenko (1): mm: list_lru: Update kernel documentation to follow the requirements Anshuman Khandual (1): Documentation/mm: drop pte_bad() descriptions from arch page table helpers Baolin Wang (2): mm: huge_memory: batch tlb flush when splitting a pte-mapped THP mm: migrate: fix getting incorrect page mapping during page migration Barry Song (3): mm/page_owner: record and dump free_pid and free_tgid mm: compaction: avoid fast_isolate_freepages blindly choose improper pageblock mm: zsmalloc: return -ENOSPC rather than -EINVAL in zs_malloc while size is too large Borislav Petkov (AMD) (1): UBSAN: use the kernel panic message markers Brendan Jackman (1): mm/page_alloc: dedupe some memcg uncharging logic Catalin Marinas (1): kmemleak: avoid RCU stalls when freeing metadata for per-CPU pointers Charan Teja Kalla (4): mm: page_alloc: correct high atomic reserve calculations mm: page_alloc: enforce minimum zone size to do high atomic reserves mm: page_alloc: unreserve highatomic page blocks before oom mm/sparsemem: fix race in accessing memory_section->usage Chen Haonan (1): mm: use vma_pages() for vma objects Chengming Zhou (5): mm/zswap: reuse dstmem when decompress mm/zswap: refactor out __zswap_load() mm/zswap: cleanup zswap_load() mm/zswap: cleanup zswap_writeback_entry() mm/zswap: change per-cpu mutex and buffer to per-acomp_ctx David Hildenbrand (41): mm/rmap: rename hugepage_add* to hugetlb_add* mm/rmap: introduce and use hugetlb_remove_rmap() mm/rmap: introduce and use hugetlb_add_file_rmap() mm/rmap: introduce and use hugetlb_try_dup_anon_rmap() mm/rmap: introduce and use hugetlb_try_share_anon_rmap() mm/rmap: add hugetlb sanity checks for anon rmap handling mm/rmap: convert folio_add_file_rmap_range() into folio_add_file_rmap_[pte|ptes|pmd]() mm/memory: page_add_file_rmap() -> folio_add_file_rmap_[pte|pmd]() mm/huge_memory: page_add_file_rmap() -> folio_add_file_rmap_pmd() mm/migrate: page_add_file_rmap() -> folio_add_file_rmap_pte() mm/userfaultfd: page_add_file_rmap() -> folio_add_file_rmap_pte() mm/rmap: remove page_add_file_rmap() mm/rmap: factor out adding folio mappings into __folio_add_rmap() mm/rmap: introduce folio_add_anon_rmap_[pte|ptes|pmd]() mm/huge_memory: batch rmap operations in __split_huge_pmd_locked() mm/huge_memory: page_add_anon_rmap() -> folio_add_anon_rmap_pmd() mm/migrate: page_add_anon_rmap() -> folio_add_anon_rmap_pte() mm/ksm: page_add_anon_rmap() -> folio_add_anon_rmap_pte() mm/swapfile: page_add_anon_rmap() -> folio_add_anon_rmap_pte() mm/memory: page_add_anon_rmap() -> folio_add_anon_rmap_pte() mm/rmap: remove page_add_anon_rmap() mm/rmap: remove RMAP_COMPOUND mm/rmap: introduce folio_remove_rmap_[pte|ptes|pmd]() kernel/events/uprobes: page_remove_rmap() -> folio_remove_rmap_pte() mm/huge_memory: page_remove_rmap() -> folio_remove_rmap_pmd() mm/khugepaged: page_remove_rmap() -> folio_remove_rmap_pte() mm/ksm: page_remove_rmap() -> folio_remove_rmap_pte() mm/memory: page_remove_rmap() -> folio_remove_rmap_pte() mm/migrate_device: page_remove_rmap() -> folio_remove_rmap_pte() mm/rmap: page_remove_rmap() -> folio_remove_rmap_pte() Documentation: stop referring to page_remove_rmap() mm/rmap: remove page_remove_rmap() mm/rmap: convert page_dup_file_rmap() to folio_dup_file_rmap_[pte|ptes|pmd]() mm/rmap: introduce folio_try_dup_anon_rmap_[pte|ptes|pmd]() mm/huge_memory: page_try_dup_anon_rmap() -> folio_try_dup_anon_rmap_pmd() mm/memory: page_try_dup_anon_rmap() -> folio_try_dup_anon_rmap_pte() mm/rmap: remove page_try_dup_anon_rmap() mm: convert page_try_share_anon_rmap() to folio_try_share_anon_rmap_[pte|pmd]() mm/rmap: rename COMPOUND_MAPPED to ENTIRELY_MAPPED mm: remove one last reference to page_add_*_rmap() mm/rmap: silence VM_WARN_ON_FOLIO() in __folio_rmap_sanity_checks() Dmitry Rokosov (3): samples: introduce new samples subdir for cgroup samples/cgroup: introduce memcg memory.events listener mm: memcg: add reminder comment for the memcg v2 events Dmytro Maluka (1): mm/thp: add CONFIG_TRANSPARENT_HUGEPAGE_NEVER option Domenico Cerasuolo (3): zswap: make shrinking memcg-aware mm: memcg: add per-memcg zswap writeback stat selftests: cgroup: update per-memcg zswap writeback selftest Fabio De Francesco (1): mm/util: use kmap_local_page() in memcmp_pages() Fabio M. De Francesco (7): mm/ksm: use kmap_local_page() in calc_checksum() mm/memory: use kmap_local_page() in __wp_page_copy_user() mm/mempool: replace kmap_atomic() with kmap_local_page() mm/page_poison: replace kmap_atomic() with kmap_local_page() mm/zswap: replace kmap_atomic() with kmap_local_page() mm/swapfile: replace kmap_atomic() with kmap_local_page() mm/memory: replace kmap() with kmap_local_page() Fangrui Song (1): mm: remove VM_EXEC requirement for THP eligibility Jiapeng Chong (2): maple_tree: remove unused function maple_tree: fix warning comparing pointer to 0 Jim Cromie (2): kmemleak: drop (age <increasing>) from leak record kmemleak: add checksum to backtrace report Juntong Deng (2): kasan: improve free meta storage in Generic KASAN kasan: record and report more information Kefeng Wang (7): mm: ksm: use more folio api in ksm_might_need_to_copy() mm: memory: use a folio in validate_page_before_insert() mm: memory: rename page_copy_prealloc() to folio_prealloc() mm: memory: use a folio in do_cow_fault() mm: memory: use folio_prealloc() in wp_page_copy() mm: huge_memory: use more folio api in __split_huge_page_tail() mm: remove unnecessary ia64 code and comment Kevin Hao (2): mm: ksm: remove unnecessary try_to_freeze() mm/khugepaged: remove redundant try_to_freeze() Kinsey Ho (5): mm/mglru: add CONFIG_ARCH_HAS_HW_PTE_YOUNG mm/mglru: add CONFIG_LRU_GEN_WALKS_MMU mm/mglru: remove CONFIG_MEMCG mm/mglru: add dummy pmd_dirty() mm/mglru: remove CONFIG_TRANSPARENT_HUGEPAGE Kirill A. Shutemov (2): mm, treewide: introduce NR_PAGE_ORDERS mm, treewide: rename MAX_ORDER to MAX_PAGE_ORDER Levi Yun (1): maple_tree: change return type of mas_split_final_node as void. Li Zhijian (2): mm/vmstat: move pgdemote_* to per-node stats mm/vmstat: move pgdemote_* out of CONFIG_NUMA_BALANCING Li zeming (2): mm: filemap: remove unnecessary iitialization of ret mm: cma: remove unnecessary initialization of ret Liam Ni (1): NUMA: optimize detection of memory with no node id assigned by firmware Liam R. Howlett (12): maple_tree: remove unnecessary default labels from switch statements maple_tree: make mas_erase() more robust maple_tree: move debug check to __mas_set_range() maple_tree: add end of node tracking to the maple state maple_tree: use cached node end in mas_next() maple_tree: use cached node end in mas_destroy() maple_tree: clean up inlines for some functions maple_tree: separate ma_state node from status maple_tree: remove mas_searchable() maple_tree: use maple state end for write operations maple_tree: don't find node end in mtree_lookup_walk() maple_tree: mtree_range_walk() clean up Lukas Bulwahn (1): mmap: remove the IA64-specific vma expansion implementation Matthew Wilcox (Oracle) (70): mm: add folio_zero_tail() and use it in ext4 mm: add folio_fill_tail() and use it in iomap gfs2: convert stuffed_readpage() to stuffed_read_folio() mm: remove test_set_page_writeback() afs: do not test the return value of folio_start_writeback() smb: do not test the return value of folio_start_writeback() mm: return void from folio_start_writeback() and related functions mm: make mapping_evict_folio() the preferred way to evict clean folios mm: convert __do_fault() to use a folio mm: use mapping_evict_folio() in truncate_error_page() mm: convert soft_offline_in_use_page() to use a folio mm: convert isolate_page() to mf_isolate_folio() mm: remove invalidate_inode_page() gfp: include __GFP_NOWARN in GFP_NOWAIT memory-failure: use a folio in me_pagecache_clean() memory-failure: use a folio in me_pagecache_dirty() memory-failure: convert delete_from_lru_cache() to take a folio memory-failure: use a folio in me_huge_page() memory-failure: convert truncate_error_page to truncate_error_folio fs: convert error_remove_page to error_remove_folio buffer: return bool from grow_dev_folio() buffer: calculate block number inside folio_init_buffers() buffer: fix grow_buffers() for block size > PAGE_SIZE buffer: cast block to loff_t before shifting it buffer: fix various functions for block size > PAGE_SIZE buffer: handle large folios in __block_write_begin_int() buffer: fix more functions for block size > PAGE_SIZE mm: convert ksm_might_need_to_copy() to work on folios mm: remove PageAnonExclusive assertions in unuse_pte() mm: convert unuse_pte() to use a folio throughout mm: remove some calls to page_add_new_anon_rmap() mm: remove stale example from comment mm: remove references to page_add_new_anon_rmap in comments mm: convert migrate_vma_insert_page() to use a folio mm: convert collapse_huge_page() to use a folio mm: remove page_add_new_anon_rmap and lru_cache_add_inactive_or_unevictable mm: return the folio from __read_swap_cache_async() mm: pass a folio to __swap_writepage() mm: pass a folio to swap_writepage_fs() mm: pass a folio to swap_writepage_bdev_sync() mm: pass a folio to swap_writepage_bdev_async() mm: pass a folio to swap_readpage_fs() mm: pass a folio to swap_readpage_bdev_sync() mm: pass a folio to swap_readpage_bdev_async() mm: convert swap_page_sector() to swap_folio_sector() mm: convert swap_readpage() to swap_read_folio() mm: remove page_swap_info() mm: return a folio from read_swap_cache_async() mm: convert swap_cluster_readahead and swap_vma_readahead to return a folio fs: remove clean_page_buffers() fs: convert clean_buffers() to take a folio fs: reduce stack usage in __mpage_writepage fs: reduce stack usage in do_mpage_readpage adfs: remove writepage implementation bfs: remove writepage implementation hfs: really remove hfs_writepage hfsplus: really remove hfsplus_writepage minix: remove writepage implementation ocfs2: remove writepage implementation sysv: remove writepage implementation ufs: remove writepage implementation fs: convert block_write_full_page to block_write_full_folio fs: remove the bh_end_io argument from __block_write_full_folio buffer: fix unintended successful return mm: remove inc/dec lruvec page state functions slub: use alloc_pages_node() in alloc_slab_page() slub: use folio APIs in free_large_kmalloc() slub: use a folio in __kmalloc_large_node mm/khugepaged: use a folio more in collapse_file() mm/memcontrol: remove __mod_lruvec_page_state() Minjie Du (1): mm/filemap: increase usage of folio_next_index() helper Muchun Song (6): mm: pagewalk: assert write mmap lock only for walking the user page tables mm: hugetlb_vmemmap: use walk_page_range_novma() to simplify the code mm: hugetlb_vmemmap: move PageVmemmapSelfHosted() check to split_vmemmap_huge_pmd() mm: hugetlb_vmemmap: convert page to folio mm: hugetlb_vmemmap: add check of CONFIG_MEMORY_HOTPLUG back mm: hugetlb_vmemmap: move mmap lock to vmemmap_remap_range() Muhammad Usama Anjum (5): mm/selftests: hugepage-mremap: conform test to TAP format output selftests/mm: gup_test: conform test to TAP format output selftests: mm: hugepage-mmap: conform to TAP format output selftests/mm: conform test to TAP format output selftests/mm: skip test if application doesn't has root privileges Nhat Pham (4): list_lru: allow explicit memcg and NUMA node selection memcontrol: implement mem_cgroup_tryget_online() zswap: shrink zswap pool based on memory pressure zswap: memcontrol: implement zswap writeback disabling Nico Pache (1): selftests/mm: dont run ksm_functional_tests twice Paul Heidekrüger (1): kasan: default to inline instrumentation Peng Zhang (16): maple_tree: add mt_free_one() and mt_attr() helpers maple_tree: introduce {mtree,mas}_lock_nested() maple_tree: introduce interfaces __mt_dup() and mtree_dup() radix tree test suite: align kmem_cache_alloc_bulk() with kernel behavior. maple_tree: add test for mtree_dup() maple_tree: update the documentation of maple tree maple_tree: skip other tests when BENCH is enabled maple_tree: update check_forking() and bench_forking() maple_tree: preserve the tree attributes when destroying maple tree fork: use __mt_dup() to duplicate maple tree in dup_mmap() maple_tree: move the check forward to avoid static check warning maple_tree: avoid ascending when mas->min is also the parent's minimum maple_tree: remove an unused parameter for ma_meta_end() maple_tree: delete one of the two identical checks maple_tree: simplify mas_leaf_set_meta() maple_tree: avoid checking other gaps after getting the largest gap Peter Xu (2): fs/Kconfig: make hugetlbfs a menuconfig mm/gup: fix follow_devmap_p[mu]d() on page==NULL handling Randy Dunlap (2): maple_tree: fix typos/spellos etc gfp: gfp_types.h: fix typos & punctuation Ryan Roberts (12): mm/readahead: do not allow order-1 folio mm: allow deferred splitting of arbitrary anon large folios mm: non-pmd-mappable, large folios for folio_add_new_anon_rmap() mm: thp: introduce multi-size THP sysfs interface mm: thp: support allocation of anonymous multi-size THP selftests/mm/kugepaged: restore thp settings at exit selftests/mm: factor out thp settings management selftests/mm: support multi-size THP interface in thp_settings selftests/mm/khugepaged: enlighten for multi-size THP selftests/mm/cow: generalize do_run_with_thp() helper selftests/mm/cow: add tests for anonymous multi-size THP selftests/mm: log run_vmtests.sh results in TAP format SeongJae Park (21): mm/damon/core-test: test damon_split_region_at()'s access rate copying mm/damon/core: implement goal-oriented feedback-driven quota auto-tuning mm/damon/sysfs-schemes: implement files for scheme quota goals setup mm/damon/sysfs-schemes: commit damos quota goals user input to DAMOS mm/damon/sysfs-schemes: implement a command for scheme quota goals only commit mm/damon/core-test: add a unit test for the feedback loop algorithm selftests/damon: test quota goals directory Docs/mm/damon/design: document DAMOS quota auto tuning Docs/ABI/damon: document DAMOS quota goals Docs/admin-guide/mm/damon/usage: document for quota goals selftests/damon: implement a python module for test-purpose DAMON sysfs controls selftests/damon/_damon_sysfs: implement kdamonds start function selftests/damon/_damon_sysfs: implement updat_schemes_tried_bytes command selftests/damon: add a test for update_schemes_tried_regions sysfs command selftests/damon: add a test for update_schemes_tried_regions hang bug mm/damon: update email of SeongJae mm/damon/core-test: test max_nr_accesses overflow caused divide-by-zero Docs/mm/damon/design: place execution model and data structures at the beginning Docs/admin-guide/mm/damon/usage: update context directory section label Docs/admin-guide/mm/damon/usage: add links to sysfs files hierarchy Docs/admin-guide/mm/damon/usage: use a list for 'state' sysfs file input commands Serge Semin (2): mm/mm_init.c: extend init unavailable range doc info mm/mm_init.c: append newline to the unavailable ranges log-message Sergey Senozhatsky (3): zram: split memory-tracking and ac-time tracking zram: tweak writeback config help zram: use kmap_local_page() Shakeel Butt (1): mm: ratelimit stat flush from workingset shrinker Stefan Roesch (4): mm/ksm: add ksm advisor mm/ksm: add sysfs knobs for advisor mm/ksm: add tracepoint for ksm advisor mm/ksm: document ksm advisor and its sysfs knobs Steven Rostedt (Google) (1): mm/rmap: fix misplaced parenthesis of a likely() Sumanth Korikkar (1): mm: use vmem_altmap code without CONFIG_ZONE_DEVICE Suren Baghdasaryan (5): selftests/mm: call uffd_test_ctx_clear at the end of the test selftests/mm: add uffd_test_case_ops to allow test case-specific operations selftests/mm: add UFFDIO_MOVE ioctl test userfaultfd: fix move_pages_pte() splitting folio under RCU read lock selftests/mm: add separate UFFDIO_MOVE test for PMD splitting Tanzir Hasan (1): mm/damon/vaddr: change asm-generic/mman-common.h to linux/mman.h Vishal Verma (3): mm/memory_hotplug: replace an open-coded kmemdup() in add_memory_resource() mm/memory_hotplug: split memmap_on_memory requests across memblocks dax/kmem: allow kmem to add memory with memmap_on_memory Yajun Deng (1): mm: page_alloc: simplify __free_pages_ok() Yong Wang (1): mm, oom:dump_tasks add rss detailed information printing York Jasper Niebuhr (1): mm: fix process_vm_rw page counts Yosry Ahmed (5): mm: memcg: change flush_next_time to flush_last_time mm: memcg: move vmstats structs definition above flushing code mm: memcg: make stats flushing threshold per-memcg mm: workingset: move the stats flush into workingset_test_recent() mm: memcg: restore subtree stats flushing Documentation/ABI/testing/sysfs-kernel-mm-damon | 33 +- Documentation/admin-guide/blockdev/zram.rst | 2 +- Documentation/admin-guide/cgroup-v2.rst | 15 + Documentation/admin-guide/kdump/vmcoreinfo.rst | 8 +- Documentation/admin-guide/kernel-parameters.txt | 24 +- Documentation/admin-guide/mm/damon/usage.rst | 147 ++- Documentation/admin-guide/mm/ksm.rst | 55 + Documentation/admin-guide/mm/pagemap.rst | 1 + Documentation/admin-guide/mm/transhuge.rst | 97 +- Documentation/admin-guide/mm/userfaultfd.rst | 3 + Documentation/admin-guide/mm/zswap.rst | 20 + Documentation/core-api/maple_tree.rst | 4 + Documentation/filesystems/locking.rst | 4 +- Documentation/filesystems/proc.rst | 6 +- Documentation/filesystems/vfs.rst | 6 +- Documentation/mm/arch_pgtable_helpers.rst | 2 - Documentation/mm/damon/design.rst | 37 +- Documentation/mm/transhuge.rst | 4 +- Documentation/mm/unevictable-lru.rst | 4 +- Documentation/networking/packet_mmap.rst | 14 +- MAINTAINERS | 1 + arch/Kconfig | 8 + arch/arm/Kconfig | 2 +- arch/arm64/Kconfig | 21 +- arch/arm64/include/asm/kasan.h | 22 +- arch/arm64/include/asm/memory.h | 38 +- arch/arm64/include/asm/sparsemem.h | 2 +- arch/arm64/kvm/hyp/include/nvhe/gfp.h | 2 +- arch/arm64/kvm/hyp/nvhe/page_alloc.c | 3 +- arch/arm64/mm/hugetlbpage.c | 2 +- arch/arm64/mm/kasan_init.c | 5 + arch/loongarch/include/asm/pgtable.h | 1 + arch/loongarch/kernel/numa.c | 28 +- arch/m68k/Kconfig.cpu | 2 +- arch/mips/include/asm/pgtable.h | 1 + arch/nios2/Kconfig | 2 +- arch/powerpc/Kconfig | 2 +- arch/powerpc/mm/book3s64/iommu_api.c | 2 +- arch/powerpc/mm/hugetlbpage.c | 2 +- arch/powerpc/platforms/powernv/pci-ioda.c | 2 +- arch/riscv/include/asm/pgtable.h | 1 + arch/s390/include/asm/pgtable.h | 1 + arch/sh/mm/Kconfig | 2 +- arch/sparc/Kconfig | 2 +- arch/sparc/include/asm/pgtable_64.h | 1 + arch/sparc/kernel/pci_sun4v.c | 2 +- arch/sparc/kernel/traps_64.c | 2 +- arch/sparc/mm/tsb.c | 4 +- arch/um/kernel/um_arch.c | 4 +- arch/x86/Kconfig | 1 + arch/x86/include/asm/pgtable.h | 7 +- arch/x86/mm/numa.c | 34 +- arch/xtensa/Kconfig | 2 +- arch/xtensa/include/asm/kasan.h | 2 + block/fops.c | 23 +- drivers/accel/qaic/qaic_data.c | 2 +- drivers/android/binder_alloc.c | 7 +- drivers/base/regmap/regmap-debugfs.c | 8 +- drivers/block/floppy.c | 2 +- drivers/block/zram/Kconfig | 15 +- drivers/block/zram/zram_drv.c | 57 +- drivers/block/zram/zram_drv.h | 2 +- drivers/crypto/ccp/sev-dev.c | 2 +- drivers/crypto/hisilicon/sgl.c | 6 +- drivers/dax/bus.c | 3 + drivers/dax/bus.h | 1 + drivers/dax/cxl.c | 1 + drivers/dax/dax-private.h | 1 + drivers/dax/hmem/hmem.c | 1 + drivers/dax/kmem.c | 8 +- drivers/dax/pmem.c | 1 + drivers/gpu/drm/i915/gem/i915_gem_internal.c | 2 +- drivers/gpu/drm/i915/gem/selftests/huge_pages.c | 2 +- drivers/gpu/drm/ttm/tests/ttm_device_test.c | 2 +- drivers/gpu/drm/ttm/tests/ttm_pool_test.c | 8 +- drivers/gpu/drm/ttm/ttm_pool.c | 22 +- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 2 +- drivers/iommu/dma-iommu.c | 2 +- drivers/irqchip/irq-gic-v3-its.c | 4 +- drivers/md/dm-bufio.c | 2 +- drivers/md/dm-crypt.c | 2 +- drivers/md/dm-flakey.c | 2 +- drivers/misc/genwqe/card_dev.c | 2 +- drivers/misc/genwqe/card_utils.c | 4 +- drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 2 +- drivers/net/ethernet/ibm/ibmvnic.h | 4 +- drivers/video/fbdev/hyperv_fb.c | 6 +- drivers/video/fbdev/vermilion/vermilion.c | 2 +- drivers/virtio/virtio_balloon.c | 2 +- drivers/virtio/virtio_mem.c | 8 +- fs/Kconfig | 22 +- fs/adfs/inode.c | 11 +- fs/afs/write.c | 8 +- fs/bcachefs/fs.c | 2 +- fs/bfs/file.c | 9 +- fs/btrfs/inode.c | 2 +- fs/buffer.c | 175 ++-- fs/ceph/addr.c | 4 +- fs/dcache.c | 8 +- fs/ext2/inode.c | 2 +- fs/ext4/inline.c | 3 +- fs/ext4/inode.c | 6 +- fs/ext4/page-io.c | 2 +- fs/f2fs/compress.c | 2 +- fs/f2fs/inode.c | 2 +- fs/gfs2/aops.c | 47 +- fs/gfs2/quota.c | 6 +- fs/hfs/inode.c | 8 +- fs/hfsplus/inode.c | 8 +- fs/hugetlbfs/inode.c | 6 +- fs/inode.c | 4 +- fs/iomap/buffered-io.c | 14 +- fs/minix/inode.c | 9 +- fs/mpage.c | 62 +- fs/nfs/file.c | 2 +- fs/nfs/nfs42xattr.c | 8 +- fs/nfsd/filecache.c | 4 +- fs/ntfs/aops.c | 10 +- fs/ocfs2/alloc.c | 2 +- fs/ocfs2/aops.c | 17 +- fs/ocfs2/file.c | 2 +- fs/ocfs2/ocfs2_trace.h | 2 - fs/proc/task_mmu.c | 20 +- fs/ramfs/file-nommu.c | 2 +- fs/smb/client/file.c | 6 +- fs/sysv/itree.c | 9 +- fs/ufs/inode.c | 11 +- fs/userfaultfd.c | 72 ++ fs/xfs/xfs_aops.c | 2 +- fs/xfs/xfs_buf.c | 6 +- fs/xfs/xfs_dquot.c | 2 +- fs/xfs/xfs_qm.c | 2 +- fs/zonefs/file.c | 2 +- include/drm/ttm/ttm_pool.h | 2 +- include/linux/buffer_head.h | 9 +- include/linux/cpuhotplug.h | 1 - include/linux/damon.h | 22 +- include/linux/fs.h | 2 +- include/linux/gfp_types.h | 17 +- include/linux/highmem.h | 76 ++ include/linux/huge_mm.h | 184 +++- include/linux/hugetlb.h | 2 +- include/linux/kasan.h | 162 ++- include/linux/ksm.h | 10 +- include/linux/list_lru.h | 88 +- include/linux/maple_tree.h | 349 ++++--- include/linux/memblock.h | 1 + include/linux/memcontrol.h | 37 +- include/linux/mempool.h | 1 + include/linux/memremap.h | 12 - include/linux/mm.h | 50 +- include/linux/mm_types.h | 27 +- include/linux/mmzone.h | 66 +- include/linux/page-flags.h | 9 +- include/linux/pageblock-flags.h | 4 +- include/linux/pgtable.h | 9 +- include/linux/rmap.h | 411 ++++++-- include/linux/slab.h | 4 +- include/linux/stackdepot.h | 61 +- include/linux/swap.h | 8 +- include/linux/userfaultfd_k.h | 11 + include/linux/vm_event_item.h | 4 +- include/linux/vmstat.h | 60 +- include/linux/zswap.h | 32 +- include/trace/events/ksm.h | 33 + include/uapi/linux/fs.h | 1 + include/uapi/linux/userfaultfd.h | 29 +- io_uring/alloc_cache.h | 5 +- kernel/crash_core.c | 2 +- kernel/dma/pool.c | 6 +- kernel/dma/swiotlb.c | 4 +- kernel/events/ring_buffer.c | 10 +- kernel/events/uprobes.c | 4 +- kernel/fork.c | 42 +- lib/Kconfig | 10 + lib/Kconfig.kasan | 23 +- lib/maple_tree.c | 1088 +++++++++++++------- lib/stackdepot.c | 461 ++++++--- lib/test_maple_tree.c | 331 +++--- lib/test_meminit.c | 2 +- lib/ubsan.c | 7 +- mm/Kconfig | 32 +- mm/cma.c | 2 +- mm/compaction.c | 9 +- mm/damon/core-test.h | 60 +- mm/damon/core.c | 70 +- mm/damon/dbgfs-test.h | 2 +- mm/damon/dbgfs.c | 2 +- mm/damon/modules-common.c | 2 +- mm/damon/sysfs-common.h | 3 + mm/damon/sysfs-schemes.c | 272 ++++- mm/damon/sysfs.c | 27 + mm/damon/vaddr-test.h | 2 +- mm/damon/vaddr.c | 4 +- mm/debug_page_alloc.c | 2 +- mm/debug_vm_pgtable.c | 4 +- mm/filemap.c | 14 +- mm/folio-compat.c | 20 +- mm/gup.c | 4 +- mm/huge_memory.c | 456 ++++++-- mm/hugetlb.c | 25 +- mm/hugetlb_vmemmap.c | 276 ++--- mm/internal.h | 41 +- mm/kasan/common.c | 280 +++-- mm/kasan/generic.c | 175 +++- mm/kasan/hw_tags.c | 8 + mm/kasan/kasan.h | 93 +- mm/kasan/kasan_test.c | 877 +++++++++++----- mm/kasan/quarantine.c | 14 +- mm/kasan/report.c | 46 +- mm/kasan/report_generic.c | 6 +- mm/kasan/report_tags.c | 27 +- mm/kasan/shadow.c | 18 +- mm/kasan/tags.c | 24 +- mm/khugepaged.c | 73 +- mm/kmemleak.c | 186 ++-- mm/kmsan/core.c | 7 +- mm/kmsan/init.c | 8 +- mm/ksm.c | 388 ++++++- mm/list_lru.c | 79 +- mm/madvise.c | 22 +- mm/memblock.c | 41 +- mm/memcontrol.c | 319 +++--- mm/memory-failure.c | 119 ++- mm/memory.c | 292 ++++-- mm/memory_hotplug.c | 219 ++-- mm/mempool.c | 75 +- mm/memremap.c | 32 +- mm/migrate.c | 39 +- mm/migrate_device.c | 64 +- mm/mm_init.c | 71 +- mm/mmap.c | 46 +- mm/mmu_gather.c | 2 +- mm/mmzone.c | 1 + mm/oom_kill.c | 7 +- mm/page-writeback.c | 54 +- mm/page_alloc.c | 84 +- mm/page_io.c | 84 +- mm/page_isolation.c | 17 +- mm/page_owner.c | 16 +- mm/page_poison.c | 8 +- mm/page_reporting.c | 6 +- mm/page_vma_mapped.c | 3 +- mm/pagewalk.c | 29 +- mm/process_vm_access.c | 15 +- mm/readahead.c | 14 +- mm/rmap.c | 499 +++++---- mm/shmem.c | 17 +- mm/show_mem.c | 8 +- mm/shuffle.h | 2 +- mm/slab.c | 12 +- mm/slab_common.c | 14 +- mm/slub.c | 55 +- mm/sparse.c | 17 +- mm/swap.h | 28 +- mm/swap_state.c | 121 ++- mm/swapfile.c | 105 +- mm/truncate.c | 51 +- mm/userfaultfd.c | 627 ++++++++++- mm/util.c | 8 +- mm/vmscan.c | 280 ++--- mm/vmstat.c | 21 +- mm/workingset.c | 46 +- mm/zsmalloc.c | 5 +- mm/zswap.c | 746 +++++++++----- net/core/skbuff.c | 10 +- net/smc/smc_ib.c | 2 +- samples/Kconfig | 6 + samples/Makefile | 1 + samples/cgroup/Makefile | 5 + {tools => samples}/cgroup/cgroup_event_listener.c | 0 samples/cgroup/memcg_event_listener.c | 330 ++++++ security/integrity/ima/ima_crypto.c | 2 +- tools/cgroup/Makefile | 11 - tools/include/linux/rwsem.h | 4 + tools/include/linux/spinlock.h | 1 + tools/include/uapi/linux/fs.h | 1 + tools/perf/Documentation/perf-intel-pt.txt | 2 +- tools/testing/memblock/linux/mmzone.h | 6 +- tools/testing/radix-tree/linux.c | 45 +- tools/testing/radix-tree/linux/maple_tree.h | 2 +- tools/testing/radix-tree/maple.c | 396 ++++++- tools/testing/selftests/cgroup/test_zswap.c | 74 +- tools/testing/selftests/damon/Makefile | 3 + tools/testing/selftests/damon/_damon_sysfs.py | 322 ++++++ tools/testing/selftests/damon/access_memory.c | 41 + tools/testing/selftests/damon/sysfs.sh | 27 + .../sysfs_update_schemes_tried_regions_hang.py | 33 + ..._update_schemes_tried_regions_wss_estimation.py | 55 + tools/testing/selftests/mm/Makefile | 4 +- tools/testing/selftests/mm/compaction_test.c | 91 +- tools/testing/selftests/mm/cow.c | 183 +++- tools/testing/selftests/mm/gup_test.c | 65 +- tools/testing/selftests/mm/hugepage-mmap.c | 23 +- tools/testing/selftests/mm/hugepage-mremap.c | 87 +- tools/testing/selftests/mm/khugepaged.c | 410 ++------ tools/testing/selftests/mm/run_vmtests.sh | 55 +- tools/testing/selftests/mm/thp_settings.c | 349 +++++++ tools/testing/selftests/mm/thp_settings.h | 80 ++ tools/testing/selftests/mm/thuge-gen.c | 3 +- tools/testing/selftests/mm/uffd-common.c | 39 +- tools/testing/selftests/mm/uffd-common.h | 9 + tools/testing/selftests/mm/uffd-stress.c | 5 +- tools/testing/selftests/mm/uffd-unit-tests.c | 209 ++++ tools/testing/selftests/mm/vm_util.c | 80 +- 305 files changed, 11329 insertions(+), 5032 deletions(-) create mode 100644 samples/cgroup/Makefile rename {tools => samples}/cgroup/cgroup_event_listener.c (100%) create mode 100644 samples/cgroup/memcg_event_listener.c delete mode 100644 tools/cgroup/Makefile create mode 100644 tools/testing/selftests/damon/_damon_sysfs.py create mode 100644 tools/testing/selftests/damon/access_memory.c create mode 100644 tools/testing/selftests/damon/sysfs_update_schemes_tried_regions_hang.py create mode 100644 tools/testing/selftests/damon/sysfs_update_schemes_tried_regions_wss_estimation.py create mode 100644 tools/testing/selftests/mm/thp_settings.c create mode 100644 tools/testing/selftests/mm/thp_settings.h