[GIT PULL] MM updates for 7.3-rc1
Andrew Morton <[email protected]>
| Newsgroups | org.kernel.vger.mm-commits,org.kernel.vger.linux-kernel,org.kvack.linux-mm |
|---|---|
| Message-ID | <[email protected]> |
Linus, please merge the first batch of MM updates for the upcoming -rc cycle. It's been busy. This cycle I squirted out 1250 "added-to-mm" emails. In the previous cycle it was 920. So lots of material. 500 patches here, nearly 200 lined up for next week. I don't enjoy typing up those patch series summaries, so I haven't been doing them well. This time I recruited Gemini to draft many of the bullets and then I did a review/edit pass. I think the result is better(?). I'm seeing no merge conflicts at this time. Possible upcoming merge and build issues and their linux-next resolutions are: arch/riscv/Kconfig, vs risc-v tree: https://lore.kernel.org/[email protected] drivers/gpu/drm/ttm/ttm_backup.c, vs drm tree: https://lore.kernel.org/[email protected] mm/hugetlb.c, mm/mm_init.c vs liveupdate tree: https://lore.kernel.org/[email protected] drivers/misc/sgi-xp/xpc_uv.c vs char-misc tree: https://lore.kernel.org/[email protected] Thanks. The following changes since commit 9f1d75a4ce04095afdb63d8e540092ff8151dacf: selftests/mm: fix potential wild pointer access of getline due to missing init (2026-07-28 17:37:34 -0700) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm tags/mm-stable-2026-08-18-18-39 for you to fetch changes up to 08745c62350126bc31b09548137be87e2866f628: selftests/mm: thuge-gen: fix test_shmget() for PAGE_SIZE check (2026-08-15 21:12:24 -0700) ---------------------------------------------------------------- mm.git review status for mm-hotfixes-stable..mm-stable Everything: Total patches: 501 Reviews/patch: 1.66 Reviewed rate: 70% Excluding DAMON: Total patches: 356 Reviews/patch: 2.26 Reviewed rate: 90% Excluding DAMON and selftests: Total patches: 329 Reviews/patch: 2.31 Reviewed rate: 92% Excluding DAMON, selftests and maple_tree: Total patches: 328 Reviews/patch: 2.31 Reviewed rate: 92% Summary of patch series in this merge: - The 2 patch series "mm: drop "sub" prefix from various places" from Dev Jain implements some page->folio conversion and a naming cleanup. - The 2 patch series "mm/kasan: remove redundant initialization for kasan_flag_write_only" from Igor Putko provides some KASAN cleanup work. - The 2 patch series "mm/filemap: reduce unnecessary xarray lookups" from Chi Zhiling provides a small speedup in the pagecaache read code. - The 4 patch series "mm/percpu: Fix possible NOFS/NOIO reclaim recursion" from Kaitao Cheng improves a few things in the vmalloc code - mainly the avoidance of GFP_KERNEL allocations when the caller asked for GFP_NOFS or GFP_NOIO. - The 3 patch series "mm/kmemleak: avoid soft lockup when scanning task stacks" from Breno Leitao avoids a soft lockup watchdog trigger from the kmemleak scanning code in extreme situations. - The 6 patch series "mm/page_owner: misc cleanups" from Ye Liu is a collection of unrelated cleanups to the page_owner code. For some reason lots of people have been working on the page_owner code this cycle. - The 4 patch series "mm: convert to walk_page_range_vma() to eliminate find_vma()" from Kefeng Wang simplifies and accelerates the page walking library function. - The 3 patch series "mm/migrate: preparatory cleanups for batch copy and offload" from Shivank Garg implements cleanups in the migration code. - The 4 patch series "mm/page_owner: add per-fd filter infrastructure for print_mode and NUMA filtering" from Zhen Ni provides per-fd filtering to page_owner in order to reduce the sometimes vast amount of output it can produce. - The 19 patch series "mm: Refactor bootmem gigantic hugepage allocation" from Muchun Song is a "set of fixes and preparatory cleanups around bootmem HugeTLB handling, sparse initialization ordering, and related vmemmap setup". - The 4 patch series "mm/zsmalloc: reduce lock contention in zs_free()" from Wenchao Hao reduces lock contention in zs_free(), which dominates the unmap path under memory pressure on Android (LMK kills) and on x86 servers running zswap-heavy workloads. Up to 1.83x improvement in microbenchmarking. - The 2 patch series "move alloc_tag.c file under mm/" from Suren Baghdasaryan does that. - The 6 patch series "samples/damon: handle damon_{start,stop}() failures" from SJ Park fixes improper handling of damon_start(), damon_stop(), and damon_call() failures across DAMON sample modules to prevent potential memory leaks, operation disruptions and use-after-free bugs. - The 11 patch series "mm/damon/sysfs: kobject_del() directories that users can create/remove" from SJ Park resolves an issue where delayed sysfs directory removal under CONFIG_DEBUG_KOBJECT_RELEASE causes creation failures due to duplicate directory names by adding missing kobject_del() calls before creating new directories. - The 3 patch series "mm: cleanup clear_not_present_full_ptes()" from David Hildenbrand cleans up the core pte handling code. - The 3 patch series "selftests/damon: misc fixes for test bugs" from Kunwu Chan fixes several bugs in the DAMON selftests. - The 2 patch series "selftests/damon: fix memcg_path staging handling" from Cheng Nie fixes a bug in _damon_sysfs.py for damos_filter memcg_path setup, and adds a test case for it in sysfs.py. - The 2 patch series "selftests/damon: test kdamond refresh_ms" from Ruslan Valiyev introduces selftest coverage for DAMON's refresh_ms sysfs feature by updating the test control module and verifying that scheme stats update automatically without manual intervention. - The 5 patch series "mm/damon: five misc fixups" from Akinobu Mita contains miscellaneous DAMON fixups. - The 2 patch series "mm/damon/core: detect internal variation above max_nr_regions/2" from Jiayuan Chen fixes DAMON's region splitting behavior when region counts exceed half the maximum budget by dynamically scaling down the split fraction as the limit approaches, preventing large regions from staying un-split, and adds corresponding KUnit test coverage. - The 6 patch series "mm: preparatory patches for PMD level swap entries" from Usama Arif refactors and cleans up PMD softleaf helpers, call sites, and architecture flags to lay the groundwork for a follow-up series that introduces PMD page table swap entries. - The 11 patch series "mm/damon: update, optimize, and clean up doc, tests, and code" from SJ Park updates DAMON design and ABI documentation, expands unit and selftest coverage, optimizes damon_commit_target_regions(), and cleans up recently added sysfs interface code for better readability. - The 2 patch series "mm/vmpressure: reduce CPU, memory and code overhead on cgroup v2" from Usama Arif optimizes vmpressure() by skipping unnecessary work on cgroup v2 for userspace event notifications and refactors v1-only eventfd handling into mm/memcontrol-v1.c to reduce memory overhead and code complexity. - The 10 patch series "selftests/mm: refactor pkey helpers and fix mmap error handling" from Hongfu Li refactors pkeys shared tracing and assertion helpers into a common file, unifies protection key selftests to use consistent diagnostic logging and assertions, and enforces standardized MAP_FAILED return checks for mmap() calls across the tests. - The 18 patch series "mm/damon: optimize out nr_accesses_bp" from SJ Park replaces the error-prone, continuously updated nr_accesses_bp field in damon_region with an on-demand moving sum function (damon_nr_accesses_mvsum()), reducing structure memory overhead and avoiding state corruption bugs. - The 6 patch series "Open HugeTLB allocation routine for more generic use" from Ackerley Tng decouples HugeTLB folio allocation from VMA dependencies by introducing hugetlb_alloc_folio(), enabling subsystems like guest_memfd to allocate HugeTLB folios without standard VMA reservations or pseudo-VMAs. - The 3 patch series "mm/damon: provide pseudo moving sum probe_hits" from SJ Park integrates DAMON's probe_hits attribute counter into the pseudo moving sum infrastructure, enabling real-time, online monitoring without waiting for full aggregation intervals. - The 18 patch series "mm: Some cleanups for page allocator APIs" from Brendan Jackman simplifies and refactors the page allocator entry points and flags by unifying allocation paths, adding internal alloc_flags arguments, and eliminating redundant __ prefixed alloc_pages variants. - The 5 patch series "Fix incorrect access of hugetlb pte entries" from Dev Jain enforces the consistent use of huge_ptep_get() instead of ptep_get() for HugeTLB entries and fixes an unaligned address issue in arm64's huge_ptep_get() implementation. - The 8 patch series "mm/damon: validate all parameters in the core" from SJ Park consolidates parameter validation into the DAMON core specifically within damon_start() and damon_commit_ctx() to centralize error checking, eliminate caller-side redundant checks and to improve maintenance efficiency. - The 3 patch series "tools/mm/page_owner_sort: fix filtering and cleanup issues" from Yichong Chen renames is_need() to filter_record() for clearer return semantics, fixes per-record allocation memory leaks and bounds output copies in search_pattern() to address an existing buffer issue. - The 4 patch series "memcg: bail out reclaim when memcg is dying" from Jiayuan Chen mitigates a system-wide stall which occurs when a cgroup is removed while one of its memory control files is doing synchronous reclaim. - The 5 patch series "mm/memory-failure: add panic option for unrecoverable pages" from Breno Leitao introduces an opt-in vm.panic_on_unrecoverable_memory_failure sysctl that immediately panics the kernel on unrecoverable memory errors in kernel-owned pages to preserve error context and prevent delayed, silent data corruption. - The 11 patch series "mm/damon: refactor damon_{start,stop,commit}() for simple error handling" from SJ Park refactors the DAMON core API functions to guarantee that all contexts are fully stopped when damon_start(), damon_stop(), or damon_commit() fail, eliminating the need for complex and error-prone caller-side cleanup code. - The 5 patch series "Keep tail page private zero at free and folio split" from Zi Yan adds checks to ensure tail_page->private is zero when freeing compound or high-order pages and when promoting tail pages during large folio splits. By validating these fields at free and split time, it allows the removal of redundant private field clearing inside prep_compound_tail(). - The 4 patch series "mm: drop redundant lru_add_drain in anon folio reuse paths" from Barry Song eliminates redundant lru_add_drain() calls in wp_can_reuse_anon_folio() and do_swap_page() to reduce LRU lock contention and system overhead. By validating folio refcounts against the LRU cache before draining and removing unnecessary drains in the swap path, it achieves up to a 30.5% reduction in drain calls during heavy swap workloads. - The 3 patch series "mm: clean up folio LRU and swap declarations" from Jianyue Wu reorganizes folio LRU and swap code by relocating page-cluster state to mm/swap_state.c, renaming mm/swap.c to mm/folio.c, and moving MM-internal reclaim declarations into mm/internal.h. - The 15 patch series "userfaultfd: working set tracking for VM guest memory" from Kiryl Shutsemau adds userfaultfd support for tracking the working set of VM guest memory, so a VMM can identify hot pages and reclaim cold ones to tiered or remote storage. - The 10 patch series "mm: remove CONFIG_HAVE_BOOTMEM_INFO_NODE (Part 2)" from David Hildenbrand removes the remaining pieces of CONFIG_HAVE_BOOTMEM_INFO_NODE, performing some smaller cleanups around freeing of reserved vmemmap pages on the way. - The 7 patch series "mm/damon: update probe hits for runtime parameter commits" from SJ Park ensures that DAMON's probe_hits attribute counter is properly updated when monitoring intervals are changed at runtime, matching the behavior of nr_accesses. To achieve this, it refactors and renames existing helper functions for shared use, applies the updates to probe_hits, and handles edge cases in damon_probe_hits_mvsum() to maintain measurement accuracy. - The 3 patch series "KSM: performance optimizations for rmap_walk_ksm" from xu xin resolves a severe KSM reverse-mapping performance bottleneck where thousands of split VMAs sharing a single anon_vma cause extended lock contention. By adding an interval-filtering check during the rmap walk, it reduces worst-case anon_vma lock hold times from over 500ms down to under 2ms, preventing application freezes and latency spikes under memory pressure. - The 3 patch series "mm: split a couple of headers from internal.h" from Mike Rapoport splits declarations related to mm_init, memblock, vmalloc and sparse into new headers. - The 2 patch series "KSM: use linear_page_index in collect_procs_ksm()" from xu xin applies the interval tree optimization from rmap_walk_ksm() to collect_procs_ksm() to avoid iterating over non-matching VMAs during KSM memory error handling. It hoists loop-invariant address initialization and restricts the anon_vma_interval_tree_foreach walk to a targeted page offset range, reducing redundant checks and improving lookup efficiency. - The 3 patch series "selftests/mm: avoid false failures in hugetlb and KSM tests" from Sayali Patil fixes issues in the hugetlb and KSM MM selftest categories that can report failures when the prerequisites for the tests are not satisfied. - The 19 patch series "mm/damon: introduce data attributes only monitoring" from SJ Park introduces attribute-weighted region management in DAMON, allowing users to prioritize specific data attributes (such as page sizes or cgroups) over or instead of access monitoring. By assigning weights to attribute probes, DAMON can completely disable access tracking and adjust monitoring regions based on weighted probe-hit counters to optimize monitoring quality for attribute-focused workloads. - The 8 patch series "mm/hmm: Add mmap lock-drop support for userfaultfd-backed mappings" from Stanislav Kinsburskii extends hmm_range_fault() to support userfaultfd-backed regions by allowing the mmap lock to be dropped during fault handling via a new hmm_range_fault_locked() helper. By accepting a locked pointer and signaling retry status when lock release occurs, it enables page fault resolution in userfaultfd regions while preserving backward compatibility for existing callers. - The 33 patch series "mm: make VMA page offset handling more consistent" from Lorenzo Stoakes cleans up and standardizes how vma->vm_pgoff is accessed and manipulated across file-backed and anonymous mappings in the kernel. It introduces dedicated helper functions such as vma_start_pgoff(), vma_end_pgoff(), vma_set_pgoff() and linear_page_delta() while renaming rmap interval tree helpers to better reflect their functionality. These changes establish a cleaner foundation for future work that will unify virtual page offset indexing for all anonymous and CoW'd folios. - The 3 patch series "mm: handle device-private PMDs in walk callbacks" from Usama Arif addresses kernel panics and state corruption caused by MM walk callbacks reaching non-present device-private PMD swap entries created during HMM migrations. It ensures that functions which acquire pmd_trans_huge_lock() properly recognize device-private PMDs instead of assuming a present THP or a standard migration entry. - The 5 patch series "mm/rmap: Refactor try_to_unmap_one" from Dev Jain refactors try_to_unmap_one by modularizing Hugetlb, anonymous-lazyfree, and anonymous-swapbacked logic into dedicated functions, laying the structural groundwork for batched anonymous large folio unmapping. - The 4 patch series "Docs/ABI/damon: sysfs ABI document fixes and additions" from Song Hu fixes typos and fills in missing entries in the DAMON sysfs ABI document. - The 10 patch series "dax/kmem: atomic whole-device hotplug via sysfs" from Gregory Price introduces an atomic sysfs state attribute and supporting DAX/MM infrastructure to prevent userland races when offlining and removing entire memory regions. By adding an unplugged state alongside standard online modes, it enables whole-device atomic hotplug control while preserving backward compatibility. - The 13 patch series "mm: convert more vm_flags_t users to vma_flags_t" from Lorenzo Stoakes continues transitioning the kernel from the deprecated vm_flags_t type to vma_flags_t across core memory management infrastructure. It replaces legacy type usage in core functions such as do_mmap(), unmapped area allocation, mm->def_vma_flags, and VMA operations like mlock, mprotect, and mremap. - The 2 patch series "Two small patches to clean up mm/mm_slot.h" from xu xin refactors mm_slot.h by introducing mm_slot_remove() to unify duplicate slot deletion sequences in khugepaged and KSM. It also adds code documentation explaining why mm_slot_lookup and mm_slot_insert must remain as preprocessor macros rather than static inline functions. - The 10 patch series "mm/damon/core: hide core-private struct fields" from SJ Park cleans up DAMON core structures by consistently marking internal-only fields with private: comment tags to prevent improper direct access from outer layers. It enforces encapsulation across core structures including damon_region, damon_target, and damon_ctx and updates DAMON_SYSFS to interact through approved access APIs instead of exposing raw struct members. - The 6 patch series "mm/damon: unurgent fixes for infinite loop, NULL de-ref and races" from SJ Park addresses potential infinite loops, NULL dereferences, and race conditions identified in DAMON. It fixes an infinite loop triggered by extreme user configurations, a NULL pointer dereference within unit tests and minor monitoring accuracy degradation caused by subtle runtime races. - The 2 patch series "mm/page_alloc: fixes for free_pages_nolock() on RT/UP" from Brendan Jackman fixes an NMI safety flaw in __free_frozen_pages() where freeing pages on non-SMP or PREEMPT_RT kernels can bypass can_spin_trylock() checks via non-PCP or isolated migration paths. It also resolves potential kernel crashes and privilege escalation risks triggered when BPF tracing runs in NMI context alongside memory hotplug or large allocation frees. - The 4 patch series "mm/page_alloc: couple of followups for recent cleanups" from Brendan Jackman cleans up and updates page allocator nomenclature, documentation, and debug assertions. It aligns internal FPI_ flags with the public "nolock" naming convention, removes outdated internal implementation details from high-level page allocator comments, and eliminates obsolete VM_BUG_ON() assertions in allocation paths. - The 3 patch series "mm/mseal: further cleanups" from Lorenzo Stoakes refactors and simplifies the mseal implementation by clarifying API boundaries and removing unnecessary code complexity. It replaces generic do_mseal() usage outside the syscall with a dedicated mseal_mmap_page_zero() helper for MMAP_PAGE_ZERO, eliminates mm_struct parameters to enforce that sealing applies only to current->mm, and streamlines overall logic and comments with no functional changes intended. - The 4 patch series "mm/vmscan: fix swappiness=max and clean up per-node proactive reclaim" from Ridong Chen resolves reclaim behavior bugs and cleans up function parameters across memory reclaim paths. It fixes swappiness=max in both standard reclaim and MGLRU so unswappable anonymous memory no longer falls back to evicting page cache, ensures reclaim_store() returns accurate error codes instead of collapsing all failures into -EAGAIN, and removes the obsolete gfp_mask parameter from __node_reclaim(). - The 6 patch series "mm: mincore: misc cleanups" from Kefeng Wang cleans up and simplifies the mincore code. Most importantly, it removes the historical special behavior that always reports VM_PFNMAP pages as non-resident. - The 2 patch series "mm/huge_memory: drop dead split helper variants" from Kiryl Shutsemau implements two trivial cleanups in the folio split API. - The 7 patch series "mm/damon: fix uninitialized DAMOS field and kunit exec expectation bugs" from SJ Park resolves minor operational and testing bugs in DAMON identified by Sashiko. It initializes the damos->last_applied field to prevent occasional efficiency degradation and fixes invalid memory accesses in DAMON KUnit tests during test failure handling. - The 3 patch series "cleanup for stable_page_flags()" from Jinjiang Tu cleans up and refactors stable_page_flags() used by /proc/kpageflags without altering functionality. It uses BIT_ULL() to prevent shift-overflow warnings on 64-bit flag bits, converts folio-specific flag checks to standard folio_test_*() helpers, and removes redundant CONFIG_PAGE_IDLE_FLAG handling. - The 3 patch series "Batch unmap of uffd-wp file folios" from Dev Jain extends batched folio unmapping support to file folios within userfaultfd write-protect (uffd-wp) VMAs by adding batching capabilities to pte_install_uffd_wp_if_needed(). This removes special-case restrictions on uffd-wp VMAs in try_to_unmap_one(), significantly simplifying the function's control flow and complexity. - The 3 patch series "mm/early_ioremap: clarify and clean up early_ioremap_reset()" from Sang-Heon Jeon clarifies and cleans up the architecture-specific usage of __late_set_fixmap() and __late_clear_fixmap() after early_ioremap_reset(). It adds explicit documentation regarding when early_ioremap_reset() must be called and removes redundant macro definitions and reset calls in the RISC-V and ARM64 architectures. - The 4 patch series "mm: fix reclaim storms in defrag_mode" from Johannes Weiner addresses severe performance regressions, swap storms, and spurious OOMs caused by vm.defrag_mode=1 under high memory pressure in Meta production. It updates the page allocator slowpath so non-movable allocation requests actively trigger direct reclaim and direct compaction at pageblock_order scale, allowing them to claim whole pageblocks rather than spinning unproductively. - The 2 patch series "zram: lockmap tweaks" from Sebastian Siewior optimizes and fixes lockdep tracking for zram devices by consolidating per-entry lockmaps and isolating lock classes across multiple instances. It reduces memory overhead by replacing per-entry lockdep_map instances with a single map per struct zram, and assigns a dynamic lock_class_key to each instance to prevent false deadlock reports when different zram devices are backed by distinct filesystems. ---------------------------------------------------------------- Ackerley Tng (6): mm: hugetlb: consolidate interpretation of gbl_chg within alloc_hugetlb_folio() mm: hugetlb: move mpol interpretation out of alloc_buddy_hugetlb_folio_with_mpol() mm: hugetlb: move mpol interpretation out of dequeue_hugetlb_folio_vma() mm: hugetlb: use error variable in alloc_hugetlb_folio mm: hugetlb: move mem_cgroup_charge_hugetlb() earlier in allocation mm: hugetlb: refactor out hugetlb_alloc_folio() Akinobu Mita (1): mm/damon/core: use kvmalloc for target regions array Andreas Gruenbacher (1): writeback.h: fix a typo in the wbc_init_bio() description Andrew Morton (3): csky: implement flush_cache_vmap() in C Merge branch 'mm-hotfixes-stable' into mm-stable in order to pick up vmscan.c changes which are required by "memcg: bail out proactive reclaim when memcg is dying". mm/hmm: make CONFIG_HMM_MIRROR select CONFIG_MMU_NOTIFIER Arnd Bergmann (1): mm/damon/core: reduce kernel stack usage Arukonda Rahul (1): docs: ABI: zram: fix spelling mistakes Asier Gutierrez (1): samples/damon: fix typos in Kconfig help text Baolin Wang (1): mm: vmscan: remove the redundant FOLIOREF_RECLAIM_CLEAN logic Barry Song (Xiaomi) (4): mm: avoid unnecessary lru drain for wp_can_reuse_anon_folio() mm: drop stale folio_ref_count()==1 check in do_swap_page reuse logic mm: entirely remove lru_add_drain in do_swap_page mm: clarify the folio_free_swap() for do_swap_page() Ben Dooks (1): mm/page_alloc: don't build vm_numa_stat_key if CONFIG_NUMA=n Brendan Jackman (25): mm/page_alloc: drop flag-conversion "optimisation" mm/page_alloc: rename ALLOC_TRYLOCK -> ALLOC_NOLOCK mm/page_alloc: some renames to clarify alloc_flags scopes mm: name some args in a function declaration mm: split out internal page_alloc.h mm/page_alloc: unify __alloc_frozen_pages[_nolock]_noprof() mm/page_alloc: relax GFP WARN in nolock allocs mm: move some stuff to mm/page_alloc.h perf/x86/intel: use higher-level allocator API KVM: VMX: use higher-level allocator API x86/virt: use higher-level allocator API sgi-xp: use higher-level allocator API net/funeth: switch to higher-level allocator API mm: remove __alloc_pages_node() mm: move __alloc_pages() to mm/page_alloc.h mm: replace __GFP_NO_CODETAG with ALLOC_NO_CODETAG mm/page_alloc: drop alloc_flags arg from alloc_flags_cma() mm: factor out can_spin_trylock() mm/secretmem: don't allow highmem folios mm/page_alloc: don't spin_trylock() in NMI on UP mm/page_alloc: don't spin_trylock() when disallowed in free_one_page() mm/page_alloc: rename FPI_TRYLOCK -> FPI_NOLOCK cgroup/cpuset: update some comments about the page allocator mm/page_alloc: fixup alloc_pages_nolock_noprof() comment mm/page_alloc: remove a couple of VM_BUG_ON()st Breno Leitao (10): mm/kmemleak: avoid soft lockup when scanning task stacks mm/kmemleak: stop the task stack scan early when interrupted mm/kmemleak: stop the per-cpu and struct page scans early too mm/kmemleak: skip the remaining scan phases when interrupted mm/memory-failure: drop dead error_states[] entry for reserved pages mm/memory-failure: surface unhandlable kernel pages as -ENOTRECOVERABLE mm/memory-failure: report MF_MSG_KERNEL for unrecoverable kernel pages mm/memory-failure: add panic option for unrecoverable pages Documentation: document panic_on_unrecoverable_memory_failure sysctl mm/migrate: report RCU-tasks quiescent states in migrate_pages_batch() Cheng Nie (2): selftests/damon/_damon_sysfs.py: fix memcg_path assignment selftests/damon/sysfs.py: validate memcg_path staging readback Chi Zhiling (2): mm/filemap: reduce unnecessary xarray lookups when read cached pages mm/filemap: reduce unnecessary xarray lookups in filemap_get_folios_contig() Christoph Hellwig (1): mm: remove wb_writeout_inc David Hildenbrand (Arm) (13): sparc/mm: drop custom pte_clear_not_present_full() mm: drop pte_clear_not_present_full() mm: cleanup clear_not_present_full_ptes() and rename to clear_non_present_ptes() x86/mm: drop order parameter from free_pagetable() mm: provide free_reserved_pages(), removing x86 variant s390/mm: use free_reserved_pages() in vmem_free_pages() mm/bootmem_info: allow calling free_bootmem_page() on pages without a bootmem_type x86/mm: stop marking vmemmap as SECTION_INFO x86/mm: stop marking page tables as MIX_SECTION_INFO x86/mm: remove CONFIG_HAVE_BOOTMEM_INFO_NODE mm/hugetlb_vmemmap: remove bootmem_info leftovers mm/sparse: remove bootmem_info.h include mm/bootmem_info: remove CONFIG_HAVE_BOOTMEM_INFO_NODE Dev Jain (15): mm/swap: rename subpage->page in folio_dup_swap/folio_put_swap mm/mprotect: drop 'sub' from batching context mm/rmap: use huge_ptep_get() in try_to_unmap_one() mm/rmap: use huge_ptep_get() in try_to_migrate_one() mm/migrate: use huge_ptep_get() in remove_migration_pte() mm/page_vma_mapped: use huge_ptep_get() for hugetlb mm/mprotect: use huge_ptep_get() for hugetlb mm/rmap: convert page -> folio for hwpoison checks mm/rmap: add try_to_unmap_poisoned_hugetlb_one mm/rmap: refactor some code around lazyfree folio unmapping mm/rmap: refactor anon folio unmap in try_to_unmap_one mm/rmap: add anon folio unmap dispatcher mm/memory: move pte_install_uffd_wp_if_needed() into memory.c mm/memory: batch set uffd-wp markers during zapping mm/rmap: batch unmap file folios belonging to uffd-wp VMAs Doehyun Baek (1): Docs/{admin-guide,mm}/damon: fix DAMON documentation details Enze Li (1): mm/damon/ops-common: remove redundant local variable in damon_migrate_folio_list() Ethan Nelson-Moore (1): mm: hugetlb: correct CONFIG_CGROUP_HUGETLB macro name in comment Feng Tang (1): mm/vmalloc: add alignment info in warning print as possible failure reason Gregory Price (12): mm: constify oom_control, scan_control, and alloc_context nodemask mm/mm_init: handle alloc_percpu failure in free_area_init_core_hotplug mm/memory: add memory_block_aligned_range() helper mm/memory_hotplug: add mhp_online_type_to_str() and export string helpers mm/memory_hotplug: pass online_type to online_memory_block() via arg mm/memory_hotplug: export mhp_get_default_online_type mm/memory_hotplug: add __add_memory_driver_managed() with online_type arg mm/memory_hotplug: add offline_and_remove_memory_ranges() dax/kmem: resolve default online type at probe time dax/kmem: extract hotplug/hotremove helper functions dax/kmem: add sysfs interface for atomic whole-device hotplug selftests/dax: add dax/kmem hotplug sysfs regression test Guopeng Zhang (7): mm: memcg: remove stray text from obj_stock_pcp comment mm: memcontrol: update state_local when flushing NMI stats mm: memcg-v1: account vmpressure event allocations mm: memcg-v1: fix wrong linux-mm list address in deprecation warnings mm: memcontrol: drop unused cpu argument from flush_nmi_stats mm: memcontrol: factor out memcg kmem uncharge sequence mm: memcg-v1: make mem_cgroup_oom_notify_cb() return void Hajime Tazaki (2): mm: nommu: add sysctl_max_map_count() check for do_mmap() mm: nommu: fix the error path when vma_iter_prealloc() fails Hongfu Li (9): selftests/mm: move pkey selftest helpers to pkey_util.c selftests/mm: unify pkey sighandler selftest assertions and tracing selftests/mm: use pkey_assert on clone_raw failure in pkey test selftests/mm: add missing mmap() return checks in pkey tests selftests/mm: add missing pthread_create() return checks in pkey tests selftests/mm: fix clone cleartid race in pkey sighandler tests selftests/mm: fix memleak in migration benchmark selftests/mm: factor out hmm_buffer_alloc() to consolidate buffer setup selftests/mm: fix BUG_ON checking wrong variable in mremap_dontunmap Hongling Zeng (1): mm: huge_memory: fix kobject cleanup in thpsize_create error Hui Zhu (1): mm: fix ASSERT_EXCLUSIVE_BITS by passing memdesc_flags_t by pointer Igor Putko (2): mm/kasan: remove redundant initialization for kasan_flag_write_only mm/memory-failure: remove redundant initialization for hw_memory_failure Imran Khan (1): mm/vmstat: avoid taking zone lock in /proc/buddyinfo reads Injae Ryou (1): selftests/mm: fix on-fault-limit false failure under sudo-rs JP Kobryn (2): mm/lruvec: trace LRU add drains and drain-all requests mm/page_alloc: use existing highatomic reserves on the buddy fastpath Jaeyeon Lee (1): mm/shmem: annotate benign data-race in shmem_getattr() Jakov Novak (1): mm/khugepaged: replace mutex_lock/mutex_unlock usage with guard macro Jiacheng Yu (1): mm/shmem: downgrade final i_blocks check in shmem_evict_inode() to pr_warn() Jiahui Zhang (1): mm/damon/ops-common: prevent migration fallback to non-target nodes Jianyue Wu (3): mm/swap: colocate page-cluster sysctl with swap readahead mm: rename swap.c to folio.c mm: move reclaim-internal declarations out of swap.h Jiayuan Chen (8): mm/damon/core: split a fraction of regions when nr_regions exceeds max/2 mm/damon/tests/core-kunit: test split above max_nr_regions/2 mm: memcg: reset zswap settings in css_reset mm: memcg: reset oom_group in css_reset memcg: bail out memory.high when memcg is dying memcg: bail out memory.max when memcg is dying memcg: bail out proactive reclaim when memcg is dying memcg-v1: bail out reclaim when memcg is dying Jinjiang Tu (3): fs: stable_page_flags(): use BIT_ULL() for KPF flags fs: stable_page_flags(): use folio_test_*() helpers fs: stable_page_flags(): simplify KPF_IDLE handling Johannes Weiner (4): mm: gfp_types: fix __GFP_ACCOUNT, GFP_KERNEL_ACCOUNT documentation mm: page_alloc: __GFP_FS lockdep annotation for direct compaction mm: compaction: support non-movable compaction for pageblock requests mm: page_alloc: fix non-movable reclaim storm in defrag_mode John Hubbard (1): mm/gup: fix GUP-fast fallback for NULL-mapping order-0 folios Joshua Hahn (1): mm/memcontrol: remove unused for_each_mem_cgroup macro and cleanup Kaitao Cheng (4): mm/vmalloc: honor GFP constraints in pcpu_get_vm_areas() mm/percpu: honor GFP constraints when populating chunks mm/percpu: make cached pages lookup explicit mm/percpu: avoid IO/FS reclaim in backing allocations Kefeng Wang (11): mm: remove PageTransCompound() mm: mincore: use walk_page_range_vma() in do_mincore() mm: mprotect: use walk_page_range_vma() in mprotect_fixup() mm: mlock: use walk_page_range_vma() in mlock_vma_pages_range() mm: migrate_device: use walk_page_range_vma() in migrate_vma_collect() mm: introduce pud_is_huge() helper mm: mincore: remove special handling for VM_PFNMAP mm: mincore: replace __get_free_page() with kmalloc() mm: mincore: remove xa_is_value() in mincore_swap() mm: mincore: improve mincore_hugetlb() mm: mincore: refactor mincore_page() Kiryl Shutsemau (Meta) (19): mm: decouple protnone helpers from CONFIG_NUMA_BALANCING mm: rename uffd-wp PTE bit macros to uffd mm: rename uffd-wp PTE accessors to uffd userfaultfd: test uffd VMA flags through the vma_flags_t API mm: add VM_UFFD_RWP VMA flag mm: add MM_CP_UFFD_RWP change_protection() flag mm: preserve RWP marker across PTE rewrites mm: handle VM_UFFD_RWP in khugepaged, rmap, and GUP userfaultfd: add UFFDIO_REGISTER_MODE_RWP and UFFDIO_RWPROTECT plumbing mm/userfaultfd: add RWP fault delivery and expose UFFDIO_REGISTER_MODE_RWP mm/pagemap: add PAGE_IS_ACCESSED for RWP tracking userfaultfd: add UFFD_FEATURE_RWP_ASYNC for async fault resolution userfaultfd: add UFFDIO_SET_MODE for runtime sync/async toggle selftests/mm: add userfaultfd RWP tests Documentation/userfaultfd: document RWP working set tracking selftests/mm: add PAGEMAP_SCAN test for THP PMD holes mm/huge_memory: remove unused can_split_folio() mm/huge_memory: fold split_folio_to_list_to_order() into split_folio_to_order() mm: fold userfaultfd_rwp() to false without CONFIG_ARCH_HAS_PTE_PROTNONE Kunwu Chan (3): selftests/damon: prevent cross-context state pollution in DamonCtx selftests/damon/damos_tried_regions: fix expectation output and join TypeError selftests/damon: fix dead code, skipped checks, and broken lookups Leon Hwang (1): mm/mseal: fix mseal documentation for 32-bit kernels Lorenzo Stoakes (47): mm: move alloc tag to mm mm: move vma_start_pgoff() into mm.h and clean up mm: add kdoc comments for vma_start/last_pgoff() tools/testing/vma: use vma_start_pgoff() in merge tests mm: introduce and use vma_end_pgoff() mm/rmap: update mm/interval_tree.c comments mm/rmap: parameterise vma_interval_tree_*() by address_space mm/rmap: elide unnecessary static inline's in interval_tree.c mm/rmap: rename vma_interval_tree_*() to mapping_rmap_tree_*() mm/rmap: parameterise anon_vma_interval_tree_*() by anon_vma mm/rmap: rename anon_vma_interval_tree_*() params and use pgoff_t mm/rmap: rename anon_vma_interval_tree_*() to anon_rmap_tree_*() MAINTAINERS: move mm/interval_tree.c to rmap section mm/vma: introduce and use vmg_pages(), vmg_[start, end]_pgoff() mm/vma: clean up anon_vma_compatible() mm/vma: refactor vmg_adjust_set_range() for clarity mm/vma: minor cleanup of expand_[upwards, downwards]() mm: introduce and use linear_page_delta() mm/vma: use vma_start_pgoff(), linear_page_index() in mm code mm: prefer vma_[start,end]_pgoff() to vma->vm_pgoff in kernel/ mm/vma: remove duplicative vma_pgoff_offset() helper mm: use linear_page_[index, delta]() consistently mm/vma: introduce vma_assert_can_modify() mm/vma: add and use vma_[add/sub]_pgoff() mm/vma: move __install_special_mapping() to vma.c mm/vma: make vma_set_range() static, drop insert_vm_struct() decl mm/vma: update vma_shrink() to not pass start, pgoff parameters mm/vma: update vmg_adjust_set_range() to offset pgoff instead mm/vma: slightly rework the anonymous check in __mmap_new_vma() mm/vma: introduce and use vma_set_pgoff() mm/vma: correct incorrect vma.h inclusion mm/vma: use guard clauses in can_vma_merge_[before, after]() tools/testing/vma: default VMA, mm flag bits to 64-bit tools/testing/vma: output compared expression on ASSERT_[EQ, NE]() mm: introduce vma_flags_can_grow() and vma_can_grow() mm/vma: update do_mmap() to use vma_flags_t mm: convert __get_unmapped_area() to use vma_flags_t mm: update generic_get_unmapped_area[_topdown]() to use vma_flags_t mm: prefer mm->def_vma_flags in mm logic mm/vma: convert vm_pgprot_modify() to use vma_flags_t and rename mm/vma: rename vma_get_page_prot to vma_flags_to_page_prot mm: introduce vma_get_page_prot() and use it mm/vma: update create_init_stack_vma() to use vma_flags_t mm/vma: convert miscellaneous uses of VMA flags in core mm mm/mlock: convert mlock code to use vma_flags_t mm/mprotect: convert mprotect code to use vma_flags_t mm/mremap: convert mremap code to use vma_flags_t Lorenzo Stoakes (ARM) (3): mm/mseal: remove superfluous comments, fix confusion around mm mm/mseal: limit scope of mseal address zero to address zero mm/mseal: remove further superfluous comments, do_mseal() Manuel Ebner (1): docs/mm: fix braces Markus Elfring (1): mm/vmalloc: use more common error handling code in pcpu_get_vm_areas() Matthew Wilcox (Oracle) (2): mm: add writeback.h to docs build percpu_ref: fix documentation of maximum value Mike Rapoport (Microsoft) (5): selftests/mm/uffd: don't treat UFFDIO_COPY -ENOENT as a failure mm: split out mm_init and memblock declarations from internal.h mm: split out sparse declarations from internal.h mm: split out vmalloc declarations from internal.h selftests/mm: thuge-gen: fix test_shmget() for PAGE_SIZE check Muchun Song (20): mm/hugetlb: fix boot panic with CONFIG_DEBUG_VM and HVO bootmem pages mm/hugetlb_vmemmap: fix __hugetlb_vmemmap_optimize_folios() powerpc/mm: fix wrong addr_pfn tracking in compound vmemmap population mm/hugetlb: initialize gigantic bootmem hugepage struct pages earlier mm/mm_init: simplify deferred_free_pages() migratetype init mm/sparse: panic on memmap and usemap allocation failure mm/sparse: move subsection_map_init() into sparse_init() mm/mm_init: defer sparse_init() until after zone initialization mm/mm_init: defer hugetlb reservation until after zone initialization mm/mm_init: remove set_pageblock_order() call from sparse_init() mm/sparse: move sparse_vmemmap_init_nid_late() into sparse_init_nid() mm/hugetlb_cma: validate hugetlb CMA range by zone at reserve time mm/hugetlb: refactor early boot gigantic hugepage allocation mm/hugetlb: free cross-zone bootmem gigantic pages after allocation mm/hugetlb_vmemmap: move bootmem HVO setup to early init mm/hugetlb: remove obsolete bootmem cross-zone checks mm/sparse-vmemmap: remove sparse_vmemmap_init_nid_late() mm/hugetlb: remove unused bootmem cma field mm/mm_init: fold __init_page_from_nid() into __init_deferred_page() selftests/mm: remove obsolete hugetlb vmemmap test Muhammad Usama Anjum (1): selftests/mm: unpoison pages in memory-failure teardown Petr Tesarik (1): mm: let node_reclaim() return the number of pages reclaimed Philippe Laferriere (1): mm/damon/stat: use secs_to_jiffies() instead of msecs_to_jiffies() Randy Dunlap (1): radix-tree: add/correct some kernel-doc Richard Chang (1): mm/zsmalloc: fix release order of locks in zs_page_migrate() Ridong Chen (4): mm/vmscan: fix anon-only reclaim evicting file pages when swappiness=max mm: vmscan: propagate real error code from per-node proactive reclaim mm: vmscan: drop unused gfp_mask parameter from __node_reclaim() mm/mglru: fix anon-only reclaim evicting file pages when swappiness=max Ritesh Harjani (IBM) (1): include/linux/swap.h: remove unused leftovers Ruslan Valiyev (2): selftests/damon/_damon_sysfs: support kdamond refresh_ms selftests/damon/sysfs_refresh: test kdamond refresh_ms SJ Park (120): samples/damon/wsse: handle damon_start() failure samples/damon/prcl: handle damon_start() failure samples/damon/mtier: handle damon_start() failure samples/damon/mtier: handle damon_stop() failure samples/damon/wsse: stop and free damon ctx when damon_call() fails samples/damon/prcl: stop and free damon ctx when damon_call() fails mm/damon/sysfs: kobject_del() target (normal), context and kdamond dirs mm/damon/sysfs: kobject_del() region and target (error) dirs mm/damon/sysfs-schemes: kobject_del() scheme dirs mm/damon/sysfs-schemes: kobject_del() scheme region dirs mm/damon/sysfs-schemes: kobject_del() scheme filter dirs mm/damon/sysfs-schemes: kobject_del() scheme quota goal dirs mm/damon/sysfs-schemes: kobject_del() scheme action destination dirs mm/damon/sysfs: kobject_del() probe dirs mm/damon/sysfs: kobject_del() probe filter dirs mm/damon/sysfs: kobject_del() probe dirs in probes_addd_dir error path mm/damon/sysfs-schemes: kobject_del() region for populate_region error Docs/mm/damon/design: update for DAMOS_QUOTA_NODE_ELIGIBLE_MEM_BP Docs/ABI/damon: document probe files mm/damon/tests/core-kunit: test damon_rand() selftests/damon/sysfs.sh: test multiple probe dirs creation selftests/damon/sysfs.sh: test {core,ops}_filters/ directories selftests/damon/sysfs.sh: test dests dir selftests/damon/sysfs.sh: test all files in quota goal dir mm/damon/core: reduce range setup in damon_commit_target_regions() mm/damon/sysfs: split probe setup function out mm/damon/sysfs: split out filters setup function mm/damon/sysfs: fix typos in probe_{add,rm}_dirs: s/attr/probe/ mm/damon/core: introduce damon_nr_accesses_mvsum() mm/damon/tests/core-kunit: test damon_mvsum() mm/damon/core: always update ->last_nr_accesses for intervals change mm/damon/core: handle unreset nr_accesses in damon_nr_accesses_mvsum() mm/damon/core: use damon_nr_accesses_mvsum() in __damos_valid_target() mm/damon/core: use damon_nr_accesses_mvsum() for damos region tracing mm/damon/sysfs-schemes: use damon_nr_accesses_mvsum() for damo regions mm/damon/core: remove damon_warn_fix_nr_accesses_corruption() mm/damon/core: remove damon_verify_reset_aggregated() mm/damon/core: remove damon_verify_merge_regions_of() mm/damon/tests/core-kunit: remove nr_accesses_bp setup and tests selftests/damon/drgn_dump_damon_status: do not dump nr_accesses_bp mm/damon/core: remove nr_accesses_bp setups and updates mm/damon/core: remove attrs param from damon_update_region_access_rate() mm/damon/paddr: remove attrs param from __damon_pa_check_access() mm/damon/vaddr: remove attrs param from __damon_va_check_access() mm/damon/core: remove damon_moving_sum() and its unit test mm/damon/core: remove damon_region->nr_accesses_bp mm/damon: add damon_region->last_probe_hits mm/damon/core: introduce damon_probe_hits_mvsum() mm/damon/sysfs-schemes: set probe hits as pseudo moving sums mm/damon/core: safely validate src on damon_commit_ctx() mm/damon/core: do parameter testing commit on damon_start() mm/damon/sysfs: remove duplicated commit input validity check mm/damon/reclaim: remove duplicated min_region_sz power of 2 check mm/damon/lru_sort: remove duplicated min_region_sz power_of_2() check mm/damon: document region size validation in damon_set_regions() mm/damon/core: remove start, end check in damon_set_region_system_rams() mm/damon/sysfs: remove region size validation mm/damon/core: stop ctxs in damon_start() before returning an error samples/damon/mtier: do not stop first context for damon_start() failure mm/damon/core: make damon_stop() never fail mm/damon/sysfs: ignore damon_stop() return value mm/damon/reclaim: ignore damon_stop() return value mm/damon/lru_sort: ignore damon_stop() return value mm/damon/core: change damon_stop() return type to void samples/damon/mtier: stop all contexts with single damon_stop() call mm/damon/core: wait ctx stop in damon_call() before reruning an error samples/damon/wsse: do not stop ctx for damon_call() failure samples/damon/prcl: do not stop DAMON for damon_call() failure mm/damon/core: remove comment and test for nr_to_bp() divide-by-zero mm/damon/core: s/damon_max_nr_accesses()/damon_nr_samples_per_aggr()/ mm/damon/core: s/accesses_bp_to_nr_accesses/sample_bp_to_count/ mm/damon/core: s/nr_accesses_to_accesses_bp/sample_count_to_bp/ mm/damon/core: s/nr_accesses_for_new_attrs/nr_samples_for_new_attrs/ mm/damon/core: update probe hits for new parameter commit mm/damon/core: handle unreset probe_hits in probe_hits_mvsum() mm/damon/core: introduce damon_probe->weight mm/damon/core: ask apply_probes() ops callback to set sampling address mm/damon/paddr: set samples in apply_probes() if requested mm/damon/core: ask apply_probe() to return max probe hits weighted sum mm/damon/core: implement damon_probe_hits_wsum() mm/damon/paddr: respect return_max_wsum mm/damon/core: use abs_diff() instead of abs() mm/damon/core: extend merge function to work with probe hits mm/damon/core: disallow probe_hits overflow on attrs only monitoring mm/damon/core: validate params for probe hits weighted sum overflow mm/damon/core: disable access monitoring when probe weights are set mm/damon/core: set samples in apply_probes() if probe weights are set mm/damon/core: s/max_nr_accesses/max_merge_score/ in kdamond_fn() mm/damon/core: get merge threshold from probe hits when weights are set mm/damon/core: implement damon_has_probe_weight() mm/damon/sysfs: implement probe/weight file Docs/mm/damon/design: document attrs-only monitoring Docs/admin-guide/mm/damon/usage: document weight sysfs file Docs/ABI/damon: document probe weight file mm/damon/core: skip aging from repeated aggressive merging mm/damon/core: hide private damon_region fields mm/damon/core: hide private damon_target fields mm/damon/core: hide private damos_quota_goal fields mm/damon/core: hide private damos_quota fields mm/damon/core: hide private damos_filter fields mm/damon/core: hide private damos fields mm/damon/core: hide private damon_filter fields mm/damon/core: hide private damon_probe fields mm/damon/sysfs: do not directly access damon_ctx->ops mm/damon/core: hide core-private damon_ctx fields mm/damon/core: avoid infinite kdamond_merge_regions() internal loop mm/damon/tests/core-kunit: catch test failure in test_merge_regions_of() mm/damon/vaddr: drop last same folio access check optimization mm/damon/paddr: drop last same folio access check reuse optimization mm/damon/sysfs: read addr_unit only once in damon_sysfs_apply_inputs() mm/damon/sysfs: read ops_id only once in damon_sysfs_apply_inputs() mm/damon/core: initialize damos->last_applied mm/damon/core-kunit: check region count before testing in split_at() mm/damon/vaddr-kunit: check region count in three_regions test mm/damon/core-kunit: handle region split failure in filter_out() mm/damon/core-kunit: skip wrong dest walk in commit_dests_for() mm/damon/core-kunit: skip wrong quota goal walk in commit_quota_goals() mm/damon/core-kunit: skip wrong region walk in commit_target_regions() mm/damon/ops-common: use nr_accesses moving sum for quota score mm/damon/core: handle region split failure in apply_min_nr_regions() Sailesh Nandanavanam (1): mm/damon/tests/core-kunit: add KUnit test for walk_control_obsolete behavior Sang-Heon Jeon (4): arch_numa: remove redundant nodemask clears in numa_init() mm/early_ioremap: clarify early_ioremap_reset() semantics riscv: remove unused __late_set_fixmap() and __late_clear_fixmap() arm64: remove early_ioremap_reset() call and __late_* macros Sayali Patil (3): selftests/mm: handle EINVAL when configuring gigantic hugepages selftests/mm: fix ksm NUMA merge test for systems with memoryless NUMA nodes selftests/mm: fix ternary operator precedence in ksm_tests Sebastian Andrzej Siewior (2): zram: move lockmap to be per-zram instead per table zram: use a custom key for each zram object Sergey Senozhatsky (1): Documentation: zram: remove sections numbering Shivank Garg (3): mm/migrate: rename page to folio leftovers mm/migrate: fix stale list name in migrate_folios_move() comment mm/migrate: use migrate_info field instead of private Song Hu (6): mm/damon/tests/core-kunit: test damon_nr_accesses_mvsum() Docs/ABI/damon: fix typo in intervals_goal sysfs path Docs/ABI/damon: fix typos Docs/ABI/damon: document update_tuned_intervals state command Docs/ABI/damon: document tried_regions probe hits mm/damon: update outdated comment about DAMOS filter handling Stanislav Kinsburskii (9): lib/test_hmm: fail dmirror_fault() when the mirrored mm is gone mm/hmm: move page fault handling out of walk callbacks mm/hmm: add hmm_range_fault_unlocked_timeout() for mmap lock-drop support selftests/mm: add HMM test for mmap lock-dropping faults mshv: use hmm_range_fault_unlocked_timeout() for region faults drm/nouveau: use hmm_range_fault_unlocked_timeout() for SVM faults RDMA/umem: use hmm_range_fault_unlocked_timeout() for ODP faults accel/amdxdna: use hmm_range_fault_unlocked_timeout() for range population drm/gpusvm: use hmm_range_fault_unlocked_timeout() for range faults Suren Baghdasaryan (1): MAINTAINERS: move inactive maintainer to CREDITS Thomas Huth (2): mm: replace __ASSEMBLY__ with __ASSEMBLER__ in memory management header files percpu: replace __ASSEMBLY__ with __ASSEMBLER__ in percpu-defs.h header file Usama Arif (13): mm/swap_state: remove unnecessary lru_add_drain() from readahead mm: add softleaf_to_pmd() and convert existing callers mm: extract mm_prepare_for_swap_entries() helper fs/proc: use softleaf_has_pfn() in pagemap PMD walker mm/huge_memory: move softleaf_to_folio() inside migration branch mm/migrate_device: move softleaf_to_folio() inside device-private branch mm: rename ARCH_ENABLE_THP_MIGRATION to ARCH_HAS_PMD_SOFTLEAVES mm/vmpressure: skip tree=true accounting on cgroup v2 mm/vmpressure: move v1 userspace eventfd code into memcontrol-v1.c mm/migrate_device: pin large folios before splitting mm/mempolicy: skip non-present PMDs when queueing folios mm/madvise: skip device-private PMDs in cold and pageout walks mm/huge_memory: skip device-private PMDs in madvise_free_huge_pmd Vlastimil Babka (SUSE) (2): mm: remove the __GFP_NO_OBJ_EXT flag mm: page_alloc: move capture_control to the page allocator Wang Wensheng (1): ksm: stop iterating VMAs when ksm_test_exit returns true Watson Wheeler (1): lib/maple_tree: add missing spaces after switch keyword Wenchao Hao (3): mm/zsmalloc: encode class index in obj value for lockless class lookup mm/zsmalloc: drop pool->lock from zs_free on 64-bit systems mm/zsmalloc: document free_zspage helper variants Wentao Guan (1): mm/hugetlb: avoid unnecessary TLB flush for empty folio list in vmemmap optimize Xuewen Wang (2): mm: annotate data-race in cpu_needs_drain() mm/damon: remove trailing semicolons after function definitions Xueyuan Chen (1): mm/zsmalloc: drop class lock before freeing zspage Ye Liu (9): mm/page_owner: extract skip_buddy_pages() helper to unify buddy page skipping mm/page_owner: add MR_NEVER to enum migrate_reason and use it for last_migrate_reason mm: use enum migrate_reason instead of int for migration reason parameters mm/page_owner: hoist CONFIG_MEMCG to function level for print_page_owner_memcg() mm/page_owner: add missing newline to count_threshold format string mm/page_owner: move free_ts_nsec output to free section in __dump_page_owner() mm/page_owner: drop redundant page_owner prefix from static symbols mm/page_owner: clamp skip_buddy_pages() PFN advance at MAX_ORDER_NR_PAGES boundary mm/page_owner: use memcg_data snapshot to avoid TOCTOU in print_page_owner_memcg() Yichong Chen (6): tools/mm/page_owner_sort: return explicit filter results tools/mm/page_owner_sort: free per-record allocations tools/mm/page_owner_sort: bound pattern output copies hugetlbfs: release subpool on fill_super failure hugetlb: make hugepage_put_subpool() tolerate NULL hugetlb: evaluate subpool free state while locked Yijia Wang (1): selftests: mincore: count file-mmap readahead on both sides Youngjun Park (1): mm/swap: clarify unreachable cond_resched() in swap_reclaim_full_clusters Yousef Alhouseen (1): tmpfs: zero unused folio tail for long symlinks Zenghui Yu (1): tools/mm: add thp_swap_allocator_test binary to .gitignore Zenghui Yu (Huawei) (2): MAINTAINERS: add ABI docs and selftests to ZRAM entry docs/mm: Physical Memory: remove deferred_split_queue Zhen Ni (4): mm/page_owner: add print_mode filter mm/page_owner: add NUMA node filter tools/mm: add page_owner_filter userspace tool mm/page_owner: document page_owner filter Zhen Yan (1): mm: fix mapping_seek_hole_data() overflow on last page Zi Yan (5): mm/percpu-km: clear page->private before free them mm/compaction: stop recording free page order in page->private mm/huge_memory: add page->private check back in __split_folio_to_order() mm/page_alloc: make sure tail_page->private is zero at page free time mm/page_alloc: remove set_page_private() in prep_compound_tail() longlong yan (2): selftests/mm: use MAP_FAILED for mmap error check selftests/mm/pagemap_ioctl: fix missing NULL checks after calloc() wang wei (1): selftests/damon: check correct path in ensure_file() not_exist case xu xin (7): ksm: add linear_page_index into ksm_rmap_item ksm: optimize rmap_walk_ksm by passing a suitable page index ksm: add mremap selftests for ksm_rmap_walk mm/ksm: initialize the addr only once in collect_procs_ksm ksm: use precise linear_page_index instead of the whole address space mm/mm_slot.h: add a helper function mm_slot_remove mm/mm_slot.h: add comments for mm_slot_lookup/insert yahia ahmed (1): mm/shmem: fix data-race in shmem_fault zhaozhengzhuo (1): selftests/mm: fix gup_longterm EINVAL error message CREDITS | 4 + Documentation/ABI/testing/sysfs-block-zram | 6 +- Documentation/ABI/testing/sysfs-bus-dax | 24 + Documentation/ABI/testing/sysfs-kernel-mm-damon | 75 +- Documentation/admin-guide/blockdev/zram.rst | 40 +- Documentation/admin-guide/cgroup-v1/cpusets.rst | 2 +- Documentation/admin-guide/mm/damon/usage.rst | 19 +- Documentation/admin-guide/mm/pagemap.rst | 13 +- Documentation/admin-guide/mm/transhuge.rst | 2 +- Documentation/admin-guide/mm/userfaultfd.rst | 269 +++++- Documentation/admin-guide/sysctl/vm.rst | 83 +- Documentation/core-api/mm-api.rst | 3 +- Documentation/driver-api/basics.rst | 3 + Documentation/filesystems/proc.rst | 1 + Documentation/mm/damon/design.rst | 43 +- Documentation/mm/hmm.rst | 81 +- Documentation/mm/page_owner.rst | 78 +- Documentation/mm/physical_memory.rst | 3 - Documentation/mm/process_addrs.rst | 2 +- Documentation/userspace-api/mseal.rst | 14 +- MAINTAINERS | 34 +- arch/arm/mm/fault-armv.c | 4 +- arch/arm/mm/flush.c | 2 +- arch/arm64/Kconfig | 3 +- arch/arm64/include/asm/fixmap.h | 3 - arch/arm64/include/asm/pgtable-prot.h | 8 +- arch/arm64/include/asm/pgtable.h | 51 +- arch/arm64/kernel/setup.c | 2 - arch/csky/abiv1/inc/abi/cacheflush.h | 7 +- arch/loongarch/Kconfig | 3 +- arch/loongarch/include/asm/pgtable.h | 4 +- arch/mips/kernel/vdso.c | 4 +- arch/nios2/mm/cacheflush.c | 2 +- arch/parisc/kernel/cache.c | 2 +- arch/powerpc/include/asm/book3s/64/pgtable.h | 10 +- arch/powerpc/mm/book3s64/radix_pgtable.c | 7 +- arch/powerpc/mm/book3s64/slice.c | 6 +- arch/powerpc/mm/hugetlbpage.c | 13 +- arch/powerpc/platforms/Kconfig.cputype | 3 +- arch/riscv/Kconfig | 3 +- arch/riscv/include/asm/fixmap.h | 3 - arch/riscv/include/asm/pgtable-bits.h | 12 +- arch/riscv/include/asm/pgtable.h | 67 +- arch/s390/Kconfig | 3 +- arch/s390/include/asm/hugetlb.h | 12 +- arch/s390/include/asm/pgtable.h | 6 +- arch/s390/mm/vmem.c | 4 +- arch/sparc/include/asm/pgtable_64.h | 4 - arch/x86/Kconfig | 3 +- arch/x86/events/intel/ds.c | 6 +- arch/x86/include/asm/pgtable.h | 58 +- arch/x86/include/asm/pgtable_types.h | 16 +- arch/x86/kernel/cpu/sgx/virt.c | 3 +- arch/x86/kvm/vmx/vmx.c | 2 +- arch/x86/mm/init_64.c | 134 +-- arch/x86/virt/hw.c | 2 +- drivers/accel/amdxdna/aie2_ctx.c | 23 +- drivers/base/arch_numa.c | 4 - drivers/base/memory.c | 9 + drivers/block/zram/zram_drv.c | 26 +- drivers/block/zram/zram_drv.h | 3 +- drivers/dax/bus.h | 2 + drivers/dax/kmem.c | 500 ++++++++-- drivers/gpu/drm/drm_gem.c | 2 +- drivers/gpu/drm/drm_gem_dma_helper.c | 2 +- drivers/gpu/drm/drm_gem_shmem_helper.c | 2 +- drivers/gpu/drm/drm_gpusvm.c | 60 +- drivers/gpu/drm/etnaviv/etnaviv_gem.c | 5 +- drivers/gpu/drm/exynos/exynos_drm_gem.c | 6 +- drivers/gpu/drm/gma500/gem.c | 2 +- drivers/gpu/drm/i915/gem/i915_gem_mman.c | 12 +- drivers/gpu/drm/msm/msm_gem.c | 5 +- drivers/gpu/drm/nouveau/nouveau_gem.c | 2 +- drivers/gpu/drm/nouveau/nouveau_svm.c | 20 +- drivers/gpu/drm/omapdrm/omap_fbdev.c | 2 +- drivers/gpu/drm/omapdrm/omap_gem.c | 11 +- drivers/gpu/drm/panthor/panthor_gem.c | 2 +- drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 2 +- drivers/gpu/drm/tegra/gem.c | 5 +- drivers/gpu/drm/ttm/ttm_bo_vm.c | 7 +- drivers/gpu/drm/virtio/virtgpu_vram.c | 2 +- drivers/gpu/drm/vmwgfx/vmwgfx_page_dirty.c | 2 +- drivers/gpu/drm/xe/xe_device.c | 2 +- drivers/gpu/drm/xe/xe_mmio_gem.c | 2 +- drivers/gpu/drm/xen/xen_drm_front_gem.c | 2 +- drivers/hv/mshv_regions.c | 54 +- drivers/infiniband/core/umem_odp.c | 18 +- drivers/misc/sgi-xp/xpc_uv.c | 5 +- drivers/net/ethernet/fungible/funeth/funeth_rx.c | 2 +- drivers/vfio/pci/nvgrace-gpu/main.c | 3 +- drivers/vfio/pci/vfio_pci_core.c | 3 +- drivers/video/fbdev/core/fb_io_fops.c | 2 +- fs/aio.c | 2 +- fs/binfmt_elf.c | 7 +- fs/dax.c | 2 +- fs/hugetlbfs/inode.c | 23 +- fs/proc/page.c | 56 +- fs/proc/task_mmu.c | 119 ++- include/asm-generic/fixmap.h | 4 +- include/asm-generic/getorder.h | 4 +- include/asm-generic/hugetlb.h | 18 +- include/asm-generic/memory_model.h | 6 +- include/asm-generic/mmu.h | 2 +- include/asm-generic/pgtable-nop4d.h | 4 +- include/asm-generic/pgtable-nopmd.h | 4 +- include/asm-generic/pgtable-nopud.h | 4 +- include/asm-generic/pgtable_uffd.h | 32 +- include/linux/alloc_tag.h | 4 +- include/linux/backing-dev.h | 2 - include/linux/bootmem_info.h | 89 -- include/linux/compaction.h | 3 +- include/linux/cpuset.h | 4 +- include/linux/damon.h | 173 ++-- include/linux/gfp.h | 55 +- include/linux/gfp_types.h | 12 +- include/linux/hmm.h | 2 + include/linux/huge_mm.h | 56 +- include/linux/hugetlb.h | 57 +- include/linux/hugetlb_cgroup.h | 2 +- include/linux/leafops.h | 32 +- include/linux/memfd.h | 6 +- include/linux/memory.h | 27 + include/linux/memory_hotplug.h | 16 +- include/linux/migrate.h | 8 +- include/linux/migrate_mode.h | 1 + include/linux/mm.h | 281 ++++-- include/linux/mm_inline.h | 57 +- include/linux/mm_types.h | 3 + include/linux/mmap_lock.h | 8 + include/linux/mmzone.h | 43 +- include/linux/oom.h | 2 +- include/linux/page-flags.h | 14 - include/linux/page_owner.h | 7 +- include/linux/pagemap.h | 35 +- include/linux/percpu-defs.h | 4 +- include/linux/percpu-refcount.h | 5 +- include/linux/pfn.h | 2 +- include/linux/pgtable.h | 71 +- include/linux/radix-tree.h | 5 +- include/linux/sched/mm.h | 13 +- include/linux/skbuff.h | 2 +- include/linux/swap.h | 83 +- include/linux/swapops.h | 10 +- include/linux/userfaultfd_k.h | 106 +- include/linux/vmalloc.h | 4 +- include/linux/vmpressure.h | 46 +- include/linux/writeback.h | 2 +- include/trace/events/damon.h | 8 +- include/trace/events/huge_memory.h | 2 +- include/trace/events/migrate.h | 11 +- include/trace/events/mmflags.h | 17 +- include/trace/events/pagemap.h | 8 + include/uapi/linux/fs.h | 1 + include/uapi/linux/mempolicy.h | 2 +- include/uapi/linux/userfaultfd.h | 54 +- init/Kconfig | 10 +- ipc/shm.c | 3 +- kernel/cgroup/cpuset.c | 15 +- kernel/dma/coherent.c | 7 +- kernel/dma/direct.c | 6 +- kernel/dma/mapping.c | 8 +- kernel/dma/ops_helpers.c | 4 +- kernel/events/core.c | 20 +- kernel/events/uprobes.c | 13 +- kernel/kcov.c | 2 +- kernel/liveupdate/kexec_handover.c | 3 +- kernel/trace/ring_buffer.c | 3 +- lib/Kconfig.debug | 28 - lib/Makefile | 1 - lib/maple_tree.c | 8 +- lib/percpu-refcount.c | 2 +- lib/test_hmm.c | 109 ++- lib/test_hmm_uapi.h | 1 + mm/Kconfig | 20 +- mm/Kconfig.debug | 28 + mm/Makefile | 4 +- mm/alloc_tag.c | 1020 ++++++++++++++++++++ mm/bootmem_info.c | 72 -- mm/cma.c | 4 +- mm/compaction.c | 106 +- mm/damon/core.c | 662 ++++++++----- mm/damon/lru_sort.c | 13 +- mm/damon/ops-common.c | 9 +- mm/damon/paddr.c | 38 +- mm/damon/reclaim.c | 11 +- mm/damon/stat.c | 2 +- mm/damon/sysfs-schemes.c | 31 +- mm/damon/sysfs.c | 202 ++-- mm/damon/tests/core-kunit.h | 275 +++++- mm/damon/tests/vaddr-kunit.h | 5 + mm/damon/vaddr.c | 44 +- mm/debug.c | 7 +- mm/debug_vm_pgtable.c | 16 +- mm/early_ioremap.c | 10 +- mm/execmem.c | 1 + mm/filemap.c | 50 +- mm/{swap.c => folio.c} | 68 +- mm/gup.c | 13 +- mm/hmm.c | 266 +++-- mm/huge_memory.c | 227 +++-- mm/hugetlb.c | 715 ++++++++------ mm/hugetlb_cma.c | 44 +- mm/hugetlb_cma.h | 8 +- mm/hugetlb_vmemmap.c | 127 +-- mm/hugetlb_vmemmap.h | 5 - mm/internal.h | 612 +++--------- mm/interval_tree.c | 111 ++- mm/kasan/hw_tags.c | 2 +- mm/khugepaged.c | 85 +- mm/kmemleak.c | 91 +- mm/kmsan/hooks.c | 1 + mm/kmsan/init.c | 2 +- mm/kmsan/shadow.c | 1 + mm/ksm.c | 97 +- mm/madvise.c | 16 +- mm/mapping_dirty_helpers.c | 2 +- mm/memblock.c | 1 + mm/memcontrol-v1.c | 309 +++++- mm/memcontrol-v1.h | 6 - mm/memcontrol.c | 48 +- mm/memfd.c | 16 +- mm/memory-failure.c | 119 ++- mm/memory.c | 328 +++++-- mm/memory_hotplug.c | 167 +++- mm/mempolicy.c | 32 +- mm/migrate.c | 97 +- mm/migrate_device.c | 42 +- mm/mincore.c | 75 +- mm/mlock.c | 101 +- mm/mm_init.c | 104 +- mm/mm_init.h | 120 +++ mm/mm_slot.h | 11 + mm/mmap.c | 205 ++-- mm/mmu_notifier.c | 2 +- mm/mmzone.c | 5 +- mm/mprotect.c | 117 ++- mm/mremap.c | 67 +- mm/mseal.c | 160 ++- mm/msync.c | 4 +- mm/nommu.c | 64 +- mm/page-writeback.c | 10 - mm/page_alloc.c | 500 ++++++---- mm/page_alloc.h | 312 ++++++ mm/page_frag_cache.c | 6 +- mm/page_isolation.c | 1 + mm/page_owner.c | 303 ++++-- mm/page_reporting.c | 1 + mm/page_table_check.c | 8 +- mm/page_vma_mapped.c | 8 +- mm/pagewalk.c | 4 +- mm/percpu-km.c | 9 +- mm/percpu-vm.c | 49 +- mm/percpu.c | 20 +- mm/rmap.c | 481 ++++----- mm/secretmem.c | 2 +- mm/shmem.c | 30 +- mm/show_mem.c | 10 +- mm/shuffle.c | 1 + mm/slab.h | 2 +- mm/slub.c | 17 +- mm/sparse-vmemmap.c | 28 +- mm/sparse.c | 53 +- mm/sparse.h | 63 ++ mm/swap.h | 6 +- mm/swap_state.c | 52 +- mm/swapfile.c | 31 +- mm/userfaultfd.c | 393 +++++++- mm/util.c | 14 +- mm/vma.c | 307 ++++-- mm/vma.h | 88 +- mm/vma_exec.c | 32 +- mm/vma_init.c | 6 +- mm/vma_internal.h | 4 +- mm/vmalloc.c | 32 +- mm/vmalloc.h | 46 + mm/vmpressure.c | 301 +----- mm/vmscan.c | 89 +- mm/vmstat.c | 3 +- mm/zsmalloc.c | 243 ++++- samples/damon/Kconfig | 2 +- samples/damon/mtier.c | 9 +- samples/damon/prcl.c | 9 +- samples/damon/wsse.c | 9 +- scripts/gdb/linux/page_owner.py | 4 +- sound/core/memalloc.c | 2 +- tools/include/linux/gfp_types.h | 7 - tools/include/uapi/linux/fs.h | 1 + tools/include/uapi/linux/userfaultfd.h | 54 +- tools/mm/.gitignore | 1 + tools/mm/Makefile | 4 +- tools/mm/page_owner_filter.c | 310 ++++++ tools/mm/page_owner_sort.c | 87 +- tools/testing/memblock/internal.h | 20 - tools/testing/memblock/mm_init.h | 24 + tools/testing/selftests/Makefile | 1 + tools/testing/selftests/damon/Makefile | 1 + tools/testing/selftests/damon/_damon_sysfs.py | 23 +- .../selftests/damon/damos_apply_interval.py | 2 +- tools/testing/selftests/damon/damos_quota_goal.py | 2 +- .../testing/selftests/damon/damos_tried_regions.py | 4 +- .../selftests/damon/drgn_dump_damon_status.py | 3 +- tools/testing/selftests/damon/sysfs.py | 35 +- tools/testing/selftests/damon/sysfs.sh | 79 +- tools/testing/selftests/damon/sysfs_refresh.py | 75 ++ ..._update_schemes_tried_regions_wss_estimation.py | 2 +- tools/testing/selftests/dax/Makefile | 6 + tools/testing/selftests/dax/config | 4 + tools/testing/selftests/dax/dax-kmem-hotplug.sh | 317 ++++++ tools/testing/selftests/dax/settings | 1 + tools/testing/selftests/mincore/mincore_selftest.c | 12 +- tools/testing/selftests/mm/Makefile | 1 - tools/testing/selftests/mm/gup_longterm.c | 2 +- tools/testing/selftests/mm/hmm-tests.c | 792 +++++++-------- tools/testing/selftests/mm/hugepage_settings.c | 2 +- tools/testing/selftests/mm/hugetlb-vmemmap.c | 132 --- tools/testing/selftests/mm/ksm_tests.c | 28 +- tools/testing/selftests/mm/memory-failure.c | 44 +- tools/testing/selftests/mm/mremap_dontunmap.c | 2 +- tools/testing/selftests/mm/mseal_test.c | 106 +- tools/testing/selftests/mm/pagemap_ioctl.c | 110 ++- tools/testing/selftests/mm/pkey-helpers.h | 4 +- tools/testing/selftests/mm/pkey-powerpc.h | 2 +- tools/testing/selftests/mm/pkey_sighandler_tests.c | 115 ++- tools/testing/selftests/mm/pkey_util.c | 90 ++ tools/testing/selftests/mm/protection_keys.c | 99 +- tools/testing/selftests/mm/rmap.c | 81 ++ tools/testing/selftests/mm/run_vmtests.sh | 3 +- tools/testing/selftests/mm/thuge-gen.c | 15 +- tools/testing/selftests/mm/uffd-common.c | 9 +- tools/testing/selftests/mm/uffd-unit-tests.c | 919 ++++++++++++++++++ tools/testing/selftests/mm/vm_util.c | 26 +- tools/testing/selftests/mm/vm_util.h | 1 + tools/testing/vma/Makefile | 2 +- tools/testing/vma/include/dup.h | 52 +- tools/testing/vma/include/stubs.h | 16 +- tools/testing/vma/shared.c | 9 - tools/testing/vma/shared.h | 43 +- tools/testing/vma/tests/merge.c | 40 +- tools/testing/vma/vma_internal.h | 4 +- virt/kvm/guest_memfd.c | 2 +- 340 files changed, 12482 insertions(+), 6334 deletions(-) delete mode 100644 include/linux/bootmem_info.h create mode 100644 mm/alloc_tag.c delete mode 100644 mm/bootmem_info.c rename mm/{swap.c => folio.c} (95%) create mode 100644 mm/mm_init.h create mode 100644 mm/page_alloc.h create mode 100644 mm/sparse.h create mode 100644 mm/vmalloc.h create mode 100644 tools/mm/page_owner_filter.c create mode 100644 tools/testing/memblock/mm_init.h create mode 100755 tools/testing/selftests/damon/sysfs_refresh.py create mode 100644 tools/testing/selftests/dax/Makefile create mode 100644 tools/testing/selftests/dax/config create mode 100755 tools/testing/selftests/dax/dax-kmem-hotplug.sh create mode 100644 tools/testing/selftests/dax/settings delete mode 100644 tools/testing/selftests/mm/hugetlb-vmemmap.c