From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4B71FC5AE59 for ; Sat, 31 May 2025 21:53:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 680E06B01B1; Sat, 31 May 2025 17:53:47 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 631BC6B01B3; Sat, 31 May 2025 17:53:47 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 520796B01F0; Sat, 31 May 2025 17:53:47 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 233F36B01B1 for ; Sat, 31 May 2025 17:53:47 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 9C6761413CE for ; Sat, 31 May 2025 21:53:46 +0000 (UTC) X-FDA: 83504555652.28.DCDC005 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf08.hostedemail.com (Postfix) with ESMTP id BC30816000E for ; Sat, 31 May 2025 21:53:44 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=uG11LF1P; dmarc=none; spf=pass (imf08.hostedemail.com: domain of akpm@linux-foundation.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1748728425; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:in-reply-to: references:dkim-signature; bh=PNweRbdgOy798lifx9rEeybitE4iu+xm9mG62QDas9g=; b=E82jbDA8qpL80ktDbkxJa2iOHES9VbO4ZojN2UyNgY40Mg/79FS3eXMnB8qRTWhBUIHqL/ FTZgqYmffgyObPv7NRKHJxfjZVbZtEQ5T9cfVs8VsEyZC0JN0coVbyaSzhy2CVW/HJJxsz Bq3g6B9w5UiQ/mgHi+8CdcHgGqfdYyc= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=korg header.b=uG11LF1P; dmarc=none; spf=pass (imf08.hostedemail.com: domain of akpm@linux-foundation.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=akpm@linux-foundation.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1748728425; a=rsa-sha256; cv=none; b=5mo+zSL6dQB14CTK9CwK/iNk5c7qFJKuYGP5DVo+tKORJwuQ3sv9Vr305Sf3w76s8RtGke 4i7InFf+SVzA3B8nCBDkhicpYcFPYQehLqmzTXKYq1KuAzNk+ybUmt4rq3RoBkkSknmQkC GUG71Z9kkppb1vgwNEmRtP5W10ctuMk= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 7A3825C5415; Sat, 31 May 2025 21:51:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E2654C4CEE3; Sat, 31 May 2025 21:53:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org; s=korg; t=1748728423; bh=H77DHMQ2TrKZiiZ4n6/Il4El3ltqXWleita+bbnDFMo=; h=Date:From:To:Cc:Subject:From; b=uG11LF1Pk1TyQTPT1qgH+xejUSyRhPiVAkL1YcWFDjopQ4g2OKVx4gXMdwLFcAVi1 dJIjtiBo5XWk04BR1Qs0dGlK8fEVTAI5GIfrIdU7ffppLJn+nyFgCWGS+nhBtvz3wo BjTTfGAYymTk4xTLARUOFIez+SLxeJ2QEMYhQ4ls= Date: Sat, 31 May 2025 14:53:42 -0700 From: Andrew Morton To: Linus Torvalds Cc: linux-mm@kvack.org, mm-commits@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [GIT PULL] MM updates for 6.16-rc1 Message-Id: <20250531145342.383090aa5ed5bcefee0740d5@linux-foundation.org> X-Mailer: Sylpheed 3.8.0beta1 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: BC30816000E X-Stat-Signature: aj669qqqr8nuuooeggn4gmhk9gepw9pp X-Rspam-User: X-HE-Tag: 1748728424-747815 X-HE-Meta: U2FsdGVkX18XjI+NH+5WYVg4be/+FlSxNEzjUx7b3B049bqH9gmpEuUQRwwZkA3O0tY+lc7SBX3uX9mJ21TODBV3HY4ccxmjAeZ0DM9JGzGB/sVRvZSlL2eYYqkUFdJ6dVYu+uglz+9g5GbyPd9dNlUxlrjtPN+4D1YX8asxZ0rui87GUY6nJtEMJyqLwEQbWKX5Y7OyPlCEBI+V/M0uh/6RJUUkUmvmtBE5JADKPfBIu18AXUkhjjyccppmThJGRbeJKX7JV+TNHNZz24hiD83bCUzbc/pYpR/jebYpnmOVvdA5IG9WnSBXGnGyJ7/n8+5othleWZwDclgASXo93ynutfZYC9dVVOHewv6EPpvmP9IbD9txukxvI2Wdvwo/6pFHAN6P2ng62Fi23e+4oTk2eW2f+VBuJYVkL34EJYbetfuZAeo84inxI+eko2z/+oEDpzTFe+e0u6v7TdjfUw0MMS/rMeCTyeSPZ5k0X2WE2oyFhXNPy0FMfxCu8V2D05EfncYkG/3UbY5KRjSU1iXg8Lu730wbsmb5bv/tOsmvl5fzbZtW15huq3z8KiZk4Xm6XwVoOvVzMGkFuB3jvab5aif/z4W+iUSwBfu7BNaEK07zjt6XsYX7EKwmhb1tbZmv4GswC7r1snDf++fO2tfNrGBw6UsSpSlcDHr2YzJZ+LrxHpvu8r5kBUQRLNKQPtVOijbnxzVS/rFfxzFd4P5gnjl7IMZuutyOYc8tSFiWy382T2rSVwTbJjq29re3BMqayXN5OeKzkD3vWwKhWNqD0AqCwck1QqzpqHYhXMq6qRCxKDRWGUCs5qlhgL3j/DF1bJ+MNZAkNQx4DMEqzK6erJJ7G35cGpkXoedt2bGaWyF7CD7j4AicwJ7k00Zdsozu3FKrKmxhqlR89E0dZ80cUaRumgWDJrwEAuWTmiQ2Ro5aQ5i0D5tLQKyxnuwzmKRnj4n98WY9XAQc10a JzJaTNuW GW6MhofUK+/Lg7fFpTjtD99Mtb+NJpkmVBqxt046hfMpld7moOAtMLVQSLwJ97OEKVgxD5OHefqIVhqKq3ig45pRjxktLB23I/QBpWF5QJdRRYe4DcNAMqoHC4eExTfDfDsI60e4n5rlHz5qIedMzK8zqHOrQTx78y1QMY6qYQXLi+NkOGwXG3zDs9Rs/cgnd8/2f8Wx3fT2SWLG6pl7hUJWVcjp3gqnQKGc5w2wgPDqywXlEJ9UBMSHSocM94nG+bBEvrcRCNWPj7YYEeXZ0YBTRVwGGm4G5/TDm/1HkwePhqnNNBq/7/68Vy06Uv2Kgg7WLZ3+r3TXgTOM/RLGzFLrvu64KJ1/b/BJbSdi9b1y9Bgw= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Linus, please merge this set of MM updates for the 6.16-rcX cycle. I'll be sending another batch of 50ish updates later in the week, then another tiny update. Thanks. Conflicts which I'm seeing today, and their linux-resolutions: arch/x86/mm/pat/memtype.c, vs tip tree: https://lkml.kernel.org/r/20250515151102.5b0f9e4f@canb.auug.org.au mm/memcontrol.c, vs cgroup tree: https://lkml.kernel.org/r/20250521174958.0b7354da@canb.auug.org.au https://lkml.kernel.org/r/20250522173518.68d11f41@canb.auug.org.au https://lkml.kernel.org/r/20250529111223.3987a514@canb.auug.org.au Possible upcoming conflicts which Stephen reported. Some of these are now resolved. arch/x86/kernel/e820.c, vs tip-fixes tree: https://lkml.kernel.org/r/20250422124402.4b891d14@canb.auug.org.au kernel/kexec_file.c, vs integrity tree: https://lkml.kernel.org/r/20250430142331.468074f1@canb.auug.org.au fs/fuse/file.c, vs fuse tree: https://lkml.kernel.org/r/20250509105750.6281e2ab@canb.auug.org.au https://lkml.kernel.org/r/20250514105313.5e2c367a@canb.auug.org.au rust/kernel/task.rs, vs rust tree: https://lkml.kernel.org/r/20250526173741.2dd77e75@canb.auug.org.au The following changes since commit 75cb1cca2c880179a11c7dd9380b6f14e41a06a4: mm: userfaultfd: correct dirty flags set for both present and swap pte (2025-05-11 17:29:55 -0700) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm tags/mm-stable-2025-05-31-14-50 for you to fetch changes up to c544a952ba61b1a025455098033c17e0573ab085: mm: pcp: increase pcp->free_count threshold to trigger free_high (2025-05-27 19:38:27 -0700) ---------------------------------------------------------------- - The 11 patch series "Add folio_mk_pte()" from Matthew Wilcox simplifies the act of creating a pte which addresses the first page in a folio and reduces the amount of plumbing which architecture must implement to provide this. - The 8 patch series "Misc folio patches for 6.16" from Matthew Wilcox is a shower of largely unrelated folio infrastructure changes which clean things up and better prepare us for future work. - The 3 patch series "memory,x86,acpi: hotplug memory alignment advisement" from Gregory Price adds early-init code to prevent x86 from leaving physical memory unused when physical address regions are not aligned to memory block size. - The 2 patch series "mm/compaction: allow more aggressive proactive compaction" from Michal Clapinski provides some tuning of the (sadly, hard-coded (more sadly, not auto-tuned)) thresholds for our invokation of proactive compaction. In a simple test case, the reduction of a guest VM's memory consumption was dramatic. - The 8 patch series "Minor cleanups and improvements to swap freeing code" from Kemeng Shi provides some code cleaups and a small efficiency improvement to this part of our swap handling code. - The 6 patch series "ptrace: introduce PTRACE_SET_SYSCALL_INFO API" from Dmitry Levin adds the ability for a ptracer to modify syscalls arguments. At this time we can alter only "system call information that are used by strace system call tampering, namely, syscall number, syscall arguments, and syscall return value. This series should have been incorporated into mm.git's "non-MM" branch, but I goofed. - The 3 patch series "fs/proc: extend the PAGEMAP_SCAN ioctl to report guard regions" from Andrei Vagin extends the info returned by the PAGEMAP_SCAN ioctl against /proc/pid/pagemap. This permits CRIU to more efficiently get at the info about guard regions. - The 2 patch series "Fix parameter passed to page_mapcount_is_type()" from Gavin Shan implements that fix. No runtime effect is expected because validate_page_before_insert() happens to fix up this error. - The 3 patch series "kernel/events/uprobes: uprobe_write_opcode() rewrite" from David Hildenbrand basically brings uprobe text poking into the current decade. Remove a bunch of hand-rolled implementation in favor of using more current facilities. - The 3 patch series "mm/ptdump: Drop assumption that pxd_val() is u64" from Anshuman Khandual provides enhancements and generalizations to the pte dumping code. This might be needed when 128-bit Page Table Descriptors are enabled for ARM. - The 12 patch series "Always call constructor for kernel page tables" from Kevin Brodsky "ensures that the ctor/dtor is always called for kernel pgtables, as it already is for user pgtables". This permits the addition of more functionality such as "insert hooks to protect page tables". This change does result in various architectures performing unnecesary work, but this is fixed up where it is anticipated to occur. - The 9 patch series "Rust support for mm_struct, vm_area_struct, and mmap" from Alice Ryhl adds plumbing to permit Rust access to core MM structures. - The 3 patch series "fix incorrectly disallowed anonymous VMA merges" from Lorenzo Stoakes takes advantage of some VMA merging opportunities which we've been missing for 15 years. - The 4 patch series "mm/madvise: batch tlb flushes for MADV_DONTNEED and MADV_FREE" from SeongJae Park optimizes process_madvise()'s TLB flushing. Instead of flushing each address range in the provided iovec, we batch the flushing across all the iovec entries. The syscall's cost was approximately halved with a microbenchmark which was designed to load this particular operation. - The 6 patch series "Track node vacancy to reduce worst case allocation counts" from Sidhartha Kumar makes the maple tree smarter about its node preallocation. stress-ng mmap performance increased by single-digit percentages and the amount of unnecessarily preallocated memory was dramaticelly reduced. - The 3 patch series "mm/gup: Minor fix, cleanup and improvements" from Baoquan He removes a few unnecessary things which Baoquan noted when reading the code. - The 3 patch series ""Enhance sysfs handling for memory hotplug in weighted interleave" from Rakie Kim "enhances the weighted interleave policy in the memory management subsystem by improving sysfs handling, fixing memory leaks, and introducing dynamic sysfs updates for memory hotplug support". Fixes things on error paths which we are unlikely to hit. - The 7 patch series "mm/damon: auto-tune DAMOS for NUMA setups including tiered memory" from SeongJae Park introduces new DAMOS quota goal metrics which eliminate the manual tuning which is required when utilizing DAMON for memory tiering. - The 5 patch series "mm/vmalloc.c: code cleanup and improvements" from Baoquan He provides cleanups and small efficiency improvements which Baoquan found via code inspection. - The 2 patch series "vmscan: enforce mems_effective during demotion" from Gregory Price "changes reclaim to respect cpuset.mems_effective during demotion when possible". because "presently, reclaim explicitly ignores cpuset.mems_effective when demoting, which may cause the cpuset settings to violated." "This is useful for isolating workloads on a multi-tenant system from certain classes of memory more consistently." - The 2 patch series ""Clean up split_huge_pmd_locked() and remove unnecessary folio pointers" from Gavin Guo provides minor cleanups and efficiency gains in in the huge page splitting and migrating code. - The 3 patch series "Use kmem_cache for memcg alloc" from Huan Yang creates a slab cache for `struct mem_cgroup', yielding improved memory utilization. - The 4 patch series "add max arg to swappiness in memory.reclaim and lru_gen" from Zhongkun He adds a new "max" argument to the "swappiness=" argument for memory.reclaim MGLRU's lru_gen. This directs proactive reclaim to reclaim from only anon folios rather than file-backed folios. - The 17 patch series "kexec: introduce Kexec HandOver (KHO)" from Mike Rapoport is the first step on the path to permitting the kernel to maintain existing VMs while replacing the host kernel via file-based kexec. At this time only memblock's reserve_mem is preserved. - The 7 patch series "mm: Introduce for_each_valid_pfn()" from David Woodhouse provides and uses a smarter way of looping over a pfn range. By skipping ranges of invalid pfns. - The 2 patch series "sched/numa: Skip VMA scanning on memory pinned to one NUMA node via cpuset.mems" from Libo Chen removes a lot of pointless VMA scanning when a task is pinned a single NUMA mode. Dramatic performance benefits were seen in some real world cases. - The 2 patch series "JFS: Implement migrate_folio for jfs_metapage_aops" from Shivank Garg addresses a warning which occurs during memory compaction when using JFS. - The 4 patch series "move all VMA allocation, freeing and duplication logic to mm" from Lorenzo Stoakes moves some VMA code from kernel/fork.c into the more appropriate mm/vma.c. - The 6 patch series "mm, swap: clean up swap cache mapping helper" from Kairui Song provides code consolidation and cleanups related to the folio_index() function. - The 2 patch series "mm/gup: Cleanup memfd_pin_folios()" from Vishal Moola does that. - The 8 patch series "memcg: Fix test_memcg_min/low test failures" from Waiman Long addresses some bogus failures which are being reported by the test_memcontrol selftest. - The 3 patch series "eliminate mmap() retry merge, add .mmap_prepare hook" from Lorenzo Stoakes commences the deprecation of file_operations.mmap() in favor of the new file_operations.mmap_prepare(). The latter is more restrictive and prevents drivers from messing with things in ways which, amongst other problems, may defeat VMA merging. - The 4 patch series "memcg: decouple memcg and objcg stocks"" from Shakeel Butt decouples the per-cpu memcg charge cache from the objcg's one. This is a step along the way to making memcg and objcg charging NMI-safe, which is a BPF requirement. - The 6 patch series "mm/damon: minor fixups and improvements for code, tests, and documents" from SeongJae Park is "yet another batch of miscellaneous DAMON changes. Fix and improve minor problems in code, tests and documents." - The 7 patch series "memcg: make memcg stats irq safe" from Shakeel Butt converts memcg stats to be irq safe. Another step along the way to making memcg charging and stats updates NMI-safe, a BPF requirement. - The 4 patch series "Let unmap_hugepage_range() and several related functions take folio instead of page" from Fan Ni provides folio conversions in the hugetlb code. ---------------------------------------------------------------- Alexander Graf (12): memblock: add support for scratch memory kexec: add Kexec HandOver (KHO) generation helpers kexec: add KHO parsing support kexec: add KHO support to kexec file loads kexec: add config option for KHO arm64: add KHO support x86/kexec: add support for passing kexec handover (KHO) data x86/e820: temporarily enable KHO scratch for memory below 1M x86/boot: make sure KASLR does not step over KHO preserved memory x86/Kconfig: enable kexec handover for 64 bits memblock: add KHO support for reserve_mem Documentation: add documentation for KHO Alexander Potapenko (5): kmsan: apply clang-format to files mm/kmsan/ kmsan: fix usage of kmsan_enter_runtime() in kmsan_vmap_pages_range_noflush() kmsan: drop the declaration of kmsan_save_stack() kmsan: enter the runtime around kmsan_internal_memmove_metadata() call kmsan: rework kmsan_in_runtime() handling in kmsan_report() Alexei Starovoitov (1): mm: rename try_alloc_pages() to alloc_pages_nolock() Alice Ryhl (9): mm: rust: add abstraction for struct mm_struct mm: rust: add vm_area_struct methods that require read access mm: rust: add vm_insert_page mm: rust: add lock_vma_under_rcu mm: rust: add mmput_async support mm: rust: add VmaNew for f_ops->mmap() rust: miscdevice: add mmap support task: rust: rework how current is accessed mm: rust: add MEMORY MANAGEMENT [RUST] Andrei Vagin (3): fs/proc: extend the PAGEMAP_SCAN ioctl to report guard regions tools headers UAPI: sync linux/fs.h with the kernel sources selftests/mm: add PAGEMAP_SCAN guard region test Andrew Morton (1): Merge branch 'mm-hotfixes-stable' into mm-stable in order to successfully merge mm-unstable's "mm: add folio_mk_pte()", Andy Shevchenko (1): util_macros.h: make the header more resilient Anshuman Khandual (3): mm/ptdump: split note_page() into level specific callbacks mm/ptdump: split effective_prot() into level specific callbacks arm64/mm: define ptdesc_t Baolin Wang (5): mm: huge_memory: add folio_mark_accessed() when zapping file THP mm: mincore: use pte_batch_hint() to batch process large folios mm: khugepaged: convert set_huge_pmd() to take a folio mm: convert do_set_pmd() to take a folio mm: khugepaged: decouple SHMEM and file folios' collapse Baoquan He (8): mm/gup: remove unneeded checking in follow_page_pte() mm/gup: remove gup_fast_pgd_leaf() and clean up the relevant codes mm/gup: clean up codes in fault_in_xxx() functions mm/vmalloc.c: change purge_ndoes as local static variable mm/vmalloc.c: find the vmap of vmap_nodes in reverse order mm/vmalloc.c: optimize code in decay_va_pool_node() a little bit mm/vmalloc: optimize function vm_unmap_aliases() mm/vmalloc.c: return explicit error value in alloc_vmap_area() Casey Chen (1): alloc_tag: check mem_profiling_support in alloc_tag_init Chen Ni (1): mm: memcontrol: remove unnecessary NULL check before free_percpu() Cheng-Han Wu (1): mm: remove unused macro INIT_PASID Christoph Hellwig (1): xarray: fix kerneldoc for __xa_cmpxchg Christoph Lameter (Ampere) (1): Update Christoph's Email address and make it consistent David Hildenbrand (15): kernel/events/uprobes: pass VMA instead of MM to remove_breakpoint() kernel/events/uprobes: pass VMA to set_swbp(), set_orig_insn() and uprobe_write_opcode() kernel/events/uprobes: uprobe_write_opcode() rewrite selftests/mm: add simple VM_PFNMAP tests based on mmap'ing /dev/mem x86/mm/pat: factor out setting cachemode into pgprot_set_cachemode() mm: convert track_pfn_insert() to pfnmap_setup_cachemode*() mm: introduce pfnmap_track() and pfnmap_untrack() and use them for memremap mm: convert VM_PFNMAP tracking to pfnmap_track() + pfnmap_untrack() x86/mm/pat: remove old pfnmap tracking interface mm: remove VM_PAT x86/mm/pat: remove strict_prot parameter from reserve_pfn_range() x86/mm/pat: remove MEMTYPE_*_MATCH x86/mm/pat: inline memtype_match() into memtype_erase() drm/i915: track_pfn() -> "pfnmap tracking" mm/io-mapping: track_pfn() -> "pfnmap tracking" David Woodhouse (7): mm: introduce for_each_valid_pfn() and use it from reserve_bootmem_region() mm: implement for_each_valid_pfn() for CONFIG_FLATMEM mm: implement for_each_valid_pfn() for CONFIG_SPARSEMEM mm, PM: use for_each_valid_pfn() in kernel/power/snapshot.c mm, x86: use for_each_valid_pfn() from __ioremap_check_ram() mm: use for_each_valid_pfn() in memory_hotplug mm/mm_init: use for_each_valid_pfn() in init_unavailable_range() Dev Jain (1): mempolicy: optimize queue_folios_pte_range by PTE batching Dmitry V. Levin (6): hexagon: add syscall_set_return_value() syscall.h: add syscall_set_arguments() syscall.h: introduce syscall_set_nr() ptrace_get_syscall_info: factor out ptrace_get_syscall_info_op ptrace: introduce PTRACE_SET_SYSCALL_INFO request selftests/ptrace: add a test case for PTRACE_SET_SYSCALL_INFO Donet Tom (1): selftests/mm: restore default nr_hugepages value during cleanup in hugetlb_reparenting_test.sh Enze Li (2): selftests/damon: remove the remaining test scripts for DAMON debugfs interface samples/damon/prcl: fix a comment typo Fan Ni (6): mm: convert free_page_and_swap_cache() to free_folio_and_swap_cache() khugepaged: pass folio instead of head page to trace events mm/hugetlb: pass folio instead of page to unmap_ref_private() mm/hugetlb: refactor unmap_hugepage_range() to take folio instead of page mm/hugetlb: refactor __unmap_hugepage_range() to take folio instead of page mm/hugetlb: convert use of struct page to folio in __unmap_hugepage_range() Feng Lee (1): mm: remove obsolete pgd_offset_gate() Frank van der Linden (1): mm/hugetlb: use separate nodemask for bootmem allocations Gavin Guo (2): mm/huge_memory: adjust try_to_migrate_one() and split_huge_pmd_locked() mm/huge_memory: remove useless folio pointers passing Gavin Shan (2): mm: fix parameter passed to page_mapcount_is_type() mm/debug: fix parameter passed to page_mapcount_is_type() Gregory Price (6): memory: implement memory_block_advise/probe_max_size x86: probe memory block size advisement value during mm init acpi,srat: give memory block size advice based on CFMWS alignment cpuset: rename cpuset_node_allowed to cpuset_current_node_allowed vmscan,cgroup: apply mems_effective to reclaim DAX: warn when kmem regions are truncated for memory block alignment Guilherme Giacomo Simoes (1): mm: page-flags-layout.h: change the KASAN_TAG_WIDTH for HW_TAGS Hao Ge (1): mm/vmscan: modify the assignment logic of the scan and total_scan variables Huan Yang (3): mm/memcg: move mem_cgroup_init() ahead of cgroup_init() mm/memcg: use kmem_cache when alloc memcg mm/memcg: use kmem_cache when alloc memcg pernode info Ignacio Encinas (1): mm: annotate data race in update_hiwater_rss Jeongjun Park (1): mm/vmalloc: fix data race in show_numa_info() Jinliang Zheng (1): mm: fix ratelimit_pages update error in dirty_ratio_handler() Johannes Weiner (1): mm: page_alloc: tighten up find_suitable_fallback() Joshua Hahn (1): mm/mempolicy: Weighted Interleave Auto-tuning Kairui Song (5): fuse: drop usage of folio_index f2fs: drop usage of folio_index filemap: do not use folio_contains for swap cache folios mm: move folio_index to mm/swap.h and remove no longer needed helper mm, swap: remove no longer used swap mapping helper Kemeng Shi (8): mm: swap: rename __swap_[entry/entries]_free[_locked] to swap_[entry/entries]_put[_locked] mm: swap: enable swap_entry_range_free() to drop any kind of last ref mm: swap: use swap_entries_free() to free swap entry in swap_entry_put_locked() mm: swap: use swap_entries_free() drop last ref count in swap_entries_put_nr() mm: swap: drop last SWAP_MAP_SHMEM flag in batch in swap_entries_put_nr() mm: swap: free each cluster individually in swap_entries_put_map_nr() mm: swap: factor out helper to drop cache of entries within a single cluster mm: swap: replace cluster_swap_free_nr() with swap_entries_put_[map/cache]() Kevin Brodsky (12): mm: pass mm down to pagetable_{pte,pmd}_ctor x86: pgtable: always use pte_free_kernel() mm: call ctor/dtor for kernel PTEs m68k: mm: call ctor/dtor for kernel PTEs powerpc: mm: call ctor/dtor for kernel PTEs sparc64: mm: call ctor/dtor for kernel PTEs mm: skip ptlock_init() for kernel PMDs arm64: mm: use enum to identify pgtable level instead of *_SHIFT arm64: mm: always call PTE/PMD ctor in __create_pgd_mapping() riscv: mm: clarify ctor mm argument in alloc_{pte,pmd}_late arm64: mm: call PUD/P4D ctor in __create_pgd_mapping() riscv: mm: call PUD/P4D ctor in special kernel pgtable alloc Lance Yang (1): mm/rmap: inline folio_test_large_maybe_mapped_shared() into callers Li Wang (1): selftest/mm: make hugetlb_reparenting_test tolerant to async reparenting Libo Chen (2): sched/numa: skip VMA scanning on memory pinned to one NUMA node via cpuset.mems sched/numa: add tracepoint that tracks the skipping of numa balancing due to cpuset memory pinning Liu Ye (1): fs/proc/page: refactor to reduce code duplication Lorenzo Stoakes (13): mm/vma: fix incorrectly disallowed anonymous VMA merges tools/testing: add PROCMAP_QUERY helper functions in mm self tests tools/testing/selftests: assert that anon merge cases behave as expected mm: move mmap/vma locking logic into specific files mm: establish mm/vma_exec.c for shared exec/mm VMA functionality mm: abstract initial stack setup to mm subsystem mm: move dup_mmap() to mm mm: perform VMA allocation, freeing, duplication in mm mm: introduce new .mmap_prepare() file callback mm: secretmem: convert to .mmap_prepare() hook mm/vma: remove mmap() retry merge MAINTAINERS: add kernel/fork.c to relevant sections mm: remove WARN_ON_ONCE() in file_has_valid_mmap_hooks() Luiz Capitulino (3): mm: kmemleak: drop kmemleak_warning variable mm: kmemleak: drop wrong comment mm: kmemleak: mark variables as __read_mostly Mark Brown (1): selftests/mm: deduplicate second mmap() of 5*PAGE_SIZE at base Matthew Wilcox (Oracle) (19): mm: set the pte dirty if the folio is already dirty mm: introduce a common definition of mk_pte() sparc32: remove custom definition of mk_pte() x86: remove custom definition of mk_pte() um: remove custom definition of mk_pte() mm: make mk_pte() definition unconditional mm: add folio_mk_pte() hugetlb: simplify make_huge_pte() mm: remove mk_huge_pte() mm: add folio_mk_pmd() arch: remove mk_pmd() filemap: remove readahead_page() mm: remove offset_in_thp() iov_iter: convert iter_xarray_populate_pages() to use folios iov_iter: convert iov_iter_extract_xarray_pages() to use folios filemap: remove find_subpage() filemap: convert __readahead_batch() to use a folio filemap: remove readahead_page_batch() mm: delete thp_nr_pages() Michal Clapinski (2): mm/compaction: remove low watermark cap for proactive compaction mm/compaction: reduce the difference between low and high watermarks Michal Hocko (1): memcg, oom: do not bypass oom killer for dying tasks Mike Rapoport (Microsoft) (6): execmem: enforce allocation size aligment to PAGE_SIZE memblock: add MEMBLOCK_RSRV_KERN flag memblock: introduce memmap_init_kho_scratch() kexec: enable KHO support for memory preservation x86/setup: use memblock_reserve_kern for memory used by kernel Documentation: KHO: add memblock bindings Nhat Pham (1): zsmalloc: prefer the the original page's node for compressed data Nikhil Dhama (1): mm: pcp: increase pcp->free_count threshold to trigger free_high Oscar Salvador (2): mm, hugetlb: avoid passing a null nodemask when there is mbind policy mm,hugetlb: allocate frozen pages in alloc_buddy_hugetlb_folio Pedro Falcato (1): mm: workingset: simplify lockdep check in update_node Peter Xu (1): mm/selftests: add a test to verify mmap_changing race with -EAGAIN Prabhav Kumar Vaish (1): mm: fix typos in comments in mm_init.c Przemek Kitszel (1): xarray: make xa_alloc_cyclic() return 0 on all success cases Rakie Kim (3): mm/mempolicy: fix memory leaks in weighted interleave sysfs mm/mempolicy: prepare weighted interleave sysfs for memory hotplug mm/mempolicy: support memory hotplug in weighted interleave Ryan Chung (1): selftests/eventfd: correct test name and improve messages SeongJae Park (17): mm/madvise: define and use madvise_behavior struct for madvise_do_behavior() mm/madvise: batch tlb flushes for MADV_FREE mm/memory: split non-tlb flushing part from zap_page_range_single() mm/madvise: batch tlb flushes for MADV_DONTNEED[_LOCKED] mm/damon/core: introduce damos quota goal metrics for memory node utilization mm/damon/sysfs-schemes: implement file for quota goal nid parameter mm/damon/sysfs-schemes: connect damos_quota_goal nid with core layer Docs/mm/damon/design: document node_mem_{used,free}_bp Docs/admin-guide/mm/damon/usage: document 'nid' file Docs/ABI/damon: document nid file samples/damon: implement a DAMON module for memory tiering mm/damon/core: warn and fix nr_accesses[_bp] corruption mm/damon/sysfs-schemes: fix wrong comment on damons_sysfs_quota_goal_metric_strs mm/damon/paddr: remove unused variable, folio_list, in damon_pa_stat() mm/damon/tests/core-kunit: add a test for damos_set_filters_default_reject() selftests/damon/_damon_sysfs: read tried regions directories in order Docs/damon: update titles and brief introductions to explain DAMOS Sergey Senozhatsky (3): zram: modernize writeback interface zsmalloc: cleanup headers includes Documentation: zram: update IDLE pages tracking documentation Shakeel Butt (24): memcg: vmalloc: simplify MEMCG_VMALLOC updates memcg: remove root memcg check from refill_stock memcg: decouple drain_obj_stock from local stock memcg: introduce memcg_uncharge memcg: manually inline __refill_stock memcg: no refilling stock from obj_cgroup_release memcg: do obj_cgroup_put inside drain_obj_stock memcg: use __mod_memcg_state in drain_obj_stock memcg: manually inline replace_stock_objcg memcg: optimize memcg_rstat_updated memcg: multi-memcg percpu charge cache memcg: introduce non-blocking limit setting option memcg-introduce-non-blocking-limit-setting-option-v3 memcg: simplify consume_stock memcg: separate local_trylock for memcg and obj memcg: completely decouple memcg and obj stocks memcg: no irq disable for memcg stock lock memcg: memcg_rstat_updated re-entrant safe against irqs memcg: move preempt disable to callers of memcg_rstat_updated memcg: make mod_memcg_state re-entrant safe against irqs memcg: make count_memcg_events re-entrant safe against irqs memcg: make __mod_memcg_lruvec_state re-entrant safe against irqs memcg: no stock lock for cpu hot-unplug memcg: objcg stock trylock without irq disabling Shivank Garg (2): mm: add folio_expected_ref_count() for reference count calculation jfs: implement migrate_folio for jfs_metapage_aops Siddarth G (2): selftests/mm: convert page_size to unsigned long selftests/mm: use long for dwRegionSize Sidhartha Kumar (6): maple_tree: convert mas_prealloc_calc() to take in a maple write state maple_tree: use height and depth consistently maple_tree: use vacant nodes to reduce worst case allocations maple_tree: break on convergence in mas_spanning_rebalance() maple_tree: add sufficient height maple_tree: reorder mas->store_type case statements Songtang Liu (1): mm: page_alloc: remove redundant READ_ONCE SoumishDas (1): mm: add kernel-doc comment for free_pgd_range() Su Hui (1): mm/damon/sysfs-schemes: use kmalloc_array() and size_add() Thushara.M.S (1): docs/mm/damon/design: fix spelling mistake Uladzislau Rezki (Sony) (8): vmalloc: add for_each_vmap_node() helper vmalloc: switch to for_each_vmap_node() helper vmalloc: use for_each_vmap_node() in purge-vmap-area vmalloc: use atomic_long_add_return_relaxed() lib/test_vmalloc.c: replace RWSEM to SRCU for setup lib/test_vmalloc.c: allow built-in execution MAINTAINERS: add test_vmalloc.c to VMALLOC section vmalloc: align nr_vmalloc_pages and vmap_lazy_nr Vishal Moola (Oracle) (3): mm/compaction: use folio in hugetlb pathway mm/gup: remove unnecessary check in memfd_pin_folios() mm/gup: remove page_folio() in memfd_pin_folios() Vlastimil Babka (1): memcg: combine slab obj stock charging and accounting Waiman Long (2): selftests: memcg: allow low event with no memory.low and memory_recursiveprot on selftests: memcg: increase error tolerance of child memory.current check in test_memcg_protection() Ye Liu (7): mm/show_mem: optimize si_meminfo_node by reducing redundant code mm/page_alloc: simplify free_page_is_bad by removing free_page_is_bad_report mm/rmap: rename page__anon_vma to anon_vma for consistency mm/rmap: fix typo in comment in page_address_in_vma mm/io-mapping: precompute remap protection flags for clarity mm/debug_page_alloc: improve error message for invalid guardpage minorder mm/numa: remove unnecessary local variable in alloc_node_data() Yuquan Wang (1): mm: numa_memblks: introduce numa_add_reserved_memblk Zhongkun He (5): mm: add swappiness=max arg to memory.reclaim for only anon reclaim mm: vmscan: add more comments about cache_trim_mode mm: add max swappiness arg to lru_gen for anonymous memory only mm: use SWAPPINESS_ANON_ONLY in MGLRU mm: cma: set early_pfn and bitmap as a union in cma_memrange gaoxu (1): mm: add nr_free_highatomic in show_free_areas CREDITS | 2 +- Documentation/ABI/testing/sysfs-kernel-mm-damon | 6 + .../sysfs-kernel-mm-mempolicy-weighted-interleave | 35 +- Documentation/ABI/testing/sysfs-kernel-mm-numa | 16 +- Documentation/ABI/testing/sysfs-kernel-slab | 96 +- Documentation/admin-guide/blockdev/zram.rst | 58 +- Documentation/admin-guide/cgroup-v1/cgroups.rst | 2 +- Documentation/admin-guide/cgroup-v1/cpusets.rst | 2 +- Documentation/admin-guide/cgroup-v2.rst | 27 + Documentation/admin-guide/kernel-parameters.txt | 25 + Documentation/admin-guide/mm/damon/index.rst | 11 +- Documentation/admin-guide/mm/damon/usage.rst | 12 +- Documentation/admin-guide/mm/index.rst | 1 + Documentation/admin-guide/mm/kho.rst | 115 ++ Documentation/admin-guide/mm/multigen_lru.rst | 5 +- Documentation/admin-guide/mm/pagemap.rst | 1 + Documentation/admin-guide/sysctl/vm.rst | 6 + Documentation/core-api/index.rst | 1 + Documentation/core-api/kho/bindings/kho.yaml | 43 + .../core-api/kho/bindings/memblock/memblock.yaml | 39 + .../kho/bindings/memblock/reserve-mem.yaml | 40 + Documentation/core-api/kho/bindings/sub-fdt.yaml | 27 + Documentation/core-api/kho/concepts.rst | 74 ++ Documentation/core-api/kho/fdt.rst | 80 ++ Documentation/core-api/kho/index.rst | 13 + Documentation/mm/damon/design.rst | 15 +- Documentation/mm/damon/index.rst | 6 +- Documentation/networking/arcnet-hardware.rst | 2 +- MAINTAINERS | 37 +- arch/alpha/include/asm/pgtable.h | 7 - arch/arc/include/asm/hugepage.h | 2 - arch/arc/include/asm/pgtable-levels.h | 2 - arch/arc/include/asm/syscall.h | 25 + arch/arm/include/asm/pgtable-3level.h | 1 - arch/arm/include/asm/pgtable.h | 1 - arch/arm/include/asm/syscall.h | 37 + arch/arm/mm/mmu.c | 2 +- arch/arm/probes/uprobes/core.c | 4 +- arch/arm64/Kconfig | 3 + arch/arm64/include/asm/pgtable-types.h | 20 +- arch/arm64/include/asm/pgtable.h | 7 - arch/arm64/include/asm/ptdump.h | 24 +- arch/arm64/include/asm/syscall.h | 29 + arch/arm64/kernel/efi.c | 4 +- arch/arm64/kernel/pi/map_kernel.c | 2 +- arch/arm64/kernel/pi/map_range.c | 4 +- arch/arm64/kernel/pi/pi.h | 2 +- arch/arm64/mm/mmap.c | 2 +- arch/arm64/mm/mmu.c | 93 +- arch/arm64/mm/ptdump.c | 50 +- arch/csky/include/asm/pgalloc.h | 2 +- arch/csky/include/asm/pgtable.h | 5 - arch/csky/include/asm/syscall.h | 13 + arch/hexagon/include/asm/pgtable.h | 3 - arch/hexagon/include/asm/syscall.h | 21 + arch/loongarch/include/asm/pgalloc.h | 2 +- arch/loongarch/include/asm/pgtable.h | 7 - arch/loongarch/include/asm/syscall.h | 15 + arch/loongarch/mm/pgtable.c | 9 - arch/m68k/include/asm/mcf_pgalloc.h | 8 +- arch/m68k/include/asm/mcf_pgtable.h | 6 - arch/m68k/include/asm/motorola_pgalloc.h | 10 +- arch/m68k/include/asm/motorola_pgtable.h | 6 - arch/m68k/include/asm/sun3_pgtable.h | 6 - arch/m68k/include/asm/syscall.h | 7 + arch/m68k/mm/motorola.c | 6 +- arch/microblaze/include/asm/pgtable.h | 8 - arch/microblaze/include/asm/syscall.h | 7 + arch/microblaze/mm/pgtable.c | 2 +- arch/mips/include/asm/pgalloc.h | 2 +- arch/mips/include/asm/pgtable.h | 9 - arch/mips/include/asm/syscall.h | 43 + arch/mips/mm/pgtable-32.c | 10 - arch/mips/mm/pgtable-64.c | 9 - arch/nios2/include/asm/pgtable.h | 6 - arch/nios2/include/asm/syscall.h | 16 + arch/openrisc/include/asm/pgtable.h | 2 - arch/openrisc/include/asm/syscall.h | 13 + arch/openrisc/mm/ioremap.c | 2 +- arch/parisc/include/asm/pgalloc.h | 2 +- arch/parisc/include/asm/pgtable.h | 6 - arch/parisc/include/asm/syscall.h | 19 + arch/powerpc/include/asm/book3s/64/pgtable.h | 1 - arch/powerpc/include/asm/pgtable.h | 3 +- arch/powerpc/include/asm/syscall.h | 20 + arch/powerpc/mm/book3s64/pgtable.c | 7 +- arch/powerpc/mm/pgtable-frag.c | 30 +- arch/powerpc/mm/ptdump/ptdump.c | 46 +- arch/riscv/include/asm/pgtable-64.h | 2 - arch/riscv/include/asm/pgtable.h | 2 - arch/riscv/include/asm/syscall.h | 19 + arch/riscv/mm/init.c | 26 +- arch/riscv/mm/ptdump.c | 46 +- arch/s390/include/asm/pgalloc.h | 2 +- arch/s390/include/asm/pgtable.h | 11 - arch/s390/include/asm/syscall.h | 21 + arch/s390/include/asm/tlb.h | 4 +- arch/s390/mm/dump_pagetables.c | 46 +- arch/s390/mm/pgalloc.c | 2 +- arch/sh/include/asm/pgtable_32.h | 8 - arch/sh/include/asm/syscall_32.h | 24 + arch/sparc/include/asm/pgtable_32.h | 15 +- arch/sparc/include/asm/pgtable_64.h | 2 - arch/sparc/include/asm/syscall.h | 22 + arch/sparc/mm/init_64.c | 29 +- arch/sparc/mm/srmmu.c | 2 +- arch/um/include/asm/pgtable-2level.h | 1 - arch/um/include/asm/pgtable-4level.h | 9 - arch/um/include/asm/pgtable.h | 18 +- arch/um/include/asm/syscall-generic.h | 19 + arch/x86/Kconfig | 3 + arch/x86/boot/compressed/kaslr.c | 50 +- arch/x86/include/asm/pgtable.h | 21 +- arch/x86/include/asm/setup.h | 2 + arch/x86/include/asm/syscall.h | 43 + arch/x86/include/uapi/asm/setup_data.h | 13 +- arch/x86/kernel/e820.c | 18 + arch/x86/kernel/kexec-bzimage64.c | 37 + arch/x86/kernel/setup.c | 42 +- arch/x86/mm/dump_pagetables.c | 71 +- arch/x86/mm/init_64.c | 15 +- arch/x86/mm/ioremap.c | 7 +- arch/x86/mm/pat/memtype.c | 194 +-- arch/x86/mm/pat/memtype_interval.c | 63 +- arch/x86/mm/pgtable.c | 9 +- arch/x86/realmode/init.c | 2 + arch/xtensa/include/asm/pgtable.h | 6 - arch/xtensa/include/asm/syscall.h | 18 + drivers/acpi/numa/srat.c | 15 +- drivers/base/memory.c | 51 + drivers/base/node.c | 9 + drivers/block/zram/zram_drv.c | 331 +++-- drivers/dax/kmem.c | 10 +- drivers/gpu/drm/i915/i915_mm.c | 4 +- drivers/of/fdt.c | 34 + drivers/of/kexec.c | 42 + fs/dax.c | 3 +- fs/exec.c | 69 +- fs/f2fs/data.c | 4 +- fs/f2fs/inline.c | 4 +- fs/f2fs/super.c | 2 +- fs/fuse/file.c | 4 +- fs/jfs/jfs_metapage.c | 106 ++ fs/proc/page.c | 161 +-- fs/proc/task_mmu.c | 17 +- include/asm-generic/hugetlb.h | 5 - include/asm-generic/memory_model.h | 10 +- include/asm-generic/pgalloc.h | 11 +- include/asm-generic/syscall.h | 30 + include/linux/cpuset.h | 9 +- include/linux/damon.h | 6 + include/linux/fs.h | 25 + include/linux/gfp.h | 8 +- include/linux/huge_mm.h | 17 +- include/linux/hugetlb.h | 15 +- include/linux/kexec.h | 5 + include/linux/kexec_handover.h | 109 ++ include/linux/khugepaged.h | 8 - include/linux/maple_tree.h | 4 + include/linux/memblock.h | 41 +- include/linux/memcontrol.h | 55 +- include/linux/memory.h | 10 + include/linux/mempolicy.h | 4 + include/linux/mm.h | 357 ++---- include/linux/mm_inline.h | 2 + include/linux/mm_types.h | 36 +- include/linux/mmap_lock.h | 227 ++++ include/linux/mmzone.h | 88 ++ include/linux/numa_memblks.h | 1 + include/linux/page-flags-layout.h | 4 +- include/linux/page-flags.h | 21 +- include/linux/pagemap.h | 91 +- include/linux/percpu-defs.h | 2 +- include/linux/pgtable.h | 131 +- include/linux/ptdump.h | 15 +- include/linux/rmap.h | 2 +- include/linux/swap.h | 12 +- include/linux/uprobes.h | 6 +- include/linux/util_macros.h | 3 + include/linux/xarray.h | 24 +- include/linux/zpool.h | 4 +- include/linux/zsmalloc.h | 3 +- include/trace/events/huge_memory.h | 12 +- include/trace/events/mmflags.h | 4 +- include/trace/events/sched.h | 33 + include/uapi/linux/fs.h | 1 + include/uapi/linux/ptrace.h | 7 +- init/main.c | 2 + kernel/Kconfig.kexec | 14 + kernel/Makefile | 1 + kernel/bpf/syscall.c | 2 +- kernel/cgroup/cpuset.c | 40 +- kernel/events/uprobes.c | 357 +++--- kernel/fork.c | 277 +---- kernel/kexec_file.c | 13 + kernel/kexec_handover.c | 1266 ++++++++++++++++++++ kernel/kexec_internal.h | 16 + kernel/power/snapshot.c | 42 +- kernel/ptrace.c | 179 ++- kernel/sched/fair.c | 9 + lib/Kconfig.debug | 3 +- lib/alloc_tag.c | 34 +- lib/iov_iter.c | 30 +- lib/maple_tree.c | 191 +-- lib/test_vmalloc.c | 22 +- lib/test_xarray.c | 17 +- lib/xarray.c | 9 +- mm/Kconfig | 6 +- mm/Makefile | 4 +- mm/cma.c | 11 +- mm/cma.h | 6 +- mm/compaction.c | 24 +- mm/damon/core.c | 41 + mm/damon/paddr.c | 1 - mm/damon/sysfs-schemes.c | 47 +- mm/damon/tests/core-kunit.h | 70 ++ mm/debug.c | 6 +- mm/debug_page_alloc.c | 2 +- mm/debug_vm_pgtable.c | 18 +- mm/execmem.c | 2 + mm/filemap.c | 2 +- mm/gup.c | 145 +-- mm/huge_memory.c | 63 +- mm/hugetlb.c | 137 +-- mm/hugetlb_cma.c | 11 +- mm/internal.h | 9 +- mm/io-mapping.c | 9 +- mm/khugepaged.c | 34 +- mm/kmemleak.c | 9 +- mm/kmsan/core.c | 12 +- mm/kmsan/hooks.c | 6 +- mm/kmsan/init.c | 3 +- mm/kmsan/instrumentation.c | 4 - mm/kmsan/kmsan.h | 1 - mm/kmsan/report.c | 6 +- mm/kmsan/shadow.c | 7 +- mm/madvise.c | 101 +- mm/memblock.c | 317 ++++- mm/memcontrol-v1.c | 9 +- mm/memcontrol.c | 648 +++++----- mm/memfd.c | 1 + mm/memory.c | 430 +++---- mm/memory_hotplug.c | 8 +- mm/mempolicy.c | 558 ++++++--- mm/memremap.c | 8 +- mm/migrate.c | 23 +- mm/mincore.c | 22 +- mm/mm_init.c | 50 +- mm/mmap.c | 306 +++-- mm/mmap_lock.c | 273 +++++ mm/mmu_notifier.c | 2 +- mm/mprotect.c | 2 +- mm/mremap.c | 4 - mm/nommu.c | 28 +- mm/numa.c | 4 +- mm/numa_memblks.c | 22 + mm/page-writeback.c | 3 +- mm/page_alloc.c | 62 +- mm/page_owner.c | 2 +- mm/ptdump.c | 62 +- mm/rmap.c | 30 +- mm/secretmem.c | 14 +- mm/show_mem.c | 18 +- mm/slab_common.c | 2 +- mm/swap.c | 8 +- mm/swap.h | 18 + mm/swap_state.c | 8 +- mm/swapfile.c | 184 ++- mm/userfaultfd.c | 2 +- mm/vma.c | 204 +++- mm/vma.h | 15 + mm/vma_exec.c | 161 +++ mm/vma_init.c | 151 +++ mm/vmalloc.c | 208 ++-- mm/vmscan.c | 107 +- mm/vmstat.c | 2 +- mm/workingset.c | 4 +- mm/zpdesc.h | 3 + mm/zpool.c | 8 +- mm/zsmalloc.c | 32 +- mm/zswap.c | 2 +- rust/helpers/helpers.c | 1 + rust/helpers/mm.c | 50 + rust/kernel/lib.rs | 1 + rust/kernel/miscdevice.rs | 45 + rust/kernel/mm.rs | 344 ++++++ rust/kernel/mm/virt.rs | 471 ++++++++ rust/kernel/task.rs | 247 ++-- samples/Makefile | 1 + samples/damon/Kconfig | 13 + samples/damon/Makefile | 1 + samples/damon/mtier.c | 178 +++ samples/damon/prcl.c | 2 +- tools/include/uapi/linux/fs.h | 19 +- tools/testing/memblock/tests/alloc_api.c | 22 +- tools/testing/memblock/tests/alloc_helpers_api.c | 4 +- tools/testing/memblock/tests/alloc_nid_api.c | 20 +- tools/testing/radix-tree/maple.c | 126 +- tools/testing/selftests/cgroup/test_memcontrol.c | 22 +- tools/testing/selftests/damon/Makefile | 2 +- tools/testing/selftests/damon/_chk_dependency.sh | 52 - tools/testing/selftests/damon/_damon_sysfs.py | 5 + tools/testing/selftests/damon/_debugfs_common.sh | 64 - .../selftests/filesystems/eventfd/eventfd_test.c | 7 +- tools/testing/selftests/mm/.gitignore | 2 + tools/testing/selftests/mm/Makefile | 2 + tools/testing/selftests/mm/guard-regions.c | 57 + .../selftests/mm/hugetlb_reparenting_test.sh | 98 +- tools/testing/selftests/mm/map_fixed_noreplace.c | 2 +- tools/testing/selftests/mm/merge.c | 455 +++++++ tools/testing/selftests/mm/pagemap_ioctl.c | 16 +- tools/testing/selftests/mm/pfnmap.c | 196 +++ tools/testing/selftests/mm/run_vmtests.sh | 8 + tools/testing/selftests/mm/uffd-unit-tests.c | 202 ++++ tools/testing/selftests/mm/vm_util.c | 62 + tools/testing/selftests/mm/vm_util.h | 21 + tools/testing/selftests/ptrace/Makefile | 2 +- tools/testing/selftests/ptrace/set_syscall_info.c | 519 ++++++++ tools/testing/vma/Makefile | 2 +- tools/testing/vma/vma.c | 127 +- tools/testing/vma/vma_internal.h | 281 ++++- 321 files changed, 11607 insertions(+), 4263 deletions(-) create mode 100644 Documentation/admin-guide/mm/kho.rst create mode 100644 Documentation/core-api/kho/bindings/kho.yaml create mode 100644 Documentation/core-api/kho/bindings/memblock/memblock.yaml create mode 100644 Documentation/core-api/kho/bindings/memblock/reserve-mem.yaml create mode 100644 Documentation/core-api/kho/bindings/sub-fdt.yaml create mode 100644 Documentation/core-api/kho/concepts.rst create mode 100644 Documentation/core-api/kho/fdt.rst create mode 100644 Documentation/core-api/kho/index.rst create mode 100644 include/linux/kexec_handover.h create mode 100644 kernel/kexec_handover.c create mode 100644 mm/vma_exec.c create mode 100644 mm/vma_init.c create mode 100644 rust/helpers/mm.c create mode 100644 rust/kernel/mm.rs create mode 100644 rust/kernel/mm/virt.rs create mode 100644 samples/damon/mtier.c delete mode 100644 tools/testing/selftests/damon/_chk_dependency.sh delete mode 100644 tools/testing/selftests/damon/_debugfs_common.sh create mode 100644 tools/testing/selftests/mm/merge.c create mode 100644 tools/testing/selftests/mm/pfnmap.c create mode 100644 tools/testing/selftests/ptrace/set_syscall_info.c