mbox series

[GIT,PULL] MM updates for 6.10-rc1

Message ID 20240517192239.9285edd85f8ef893bb508a61@linux-foundation.org (mailing list archive)
State New
Headers show
Series [GIT,PULL] MM updates for 6.10-rc1 | expand

Pull-request

git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm tags/mm-stable-2024-05-17-19-19

Message

Andrew Morton May 18, 2024, 2:22 a.m. UTC
Linus, please merge this cycle's batch of MM updates, thanks.

Conflicts with your current tree and their linux-next resolution are:

tools/testing/selftests/mm/soft-dirty.c
	https://lkml.kernel.org/r/20240426154414.4d408fd7@canb.auug.org.au

	The linux-next dicsussion isn't very helpful here.  The fix is to use
	ksft_finished().

kernel/module/main.c
	https://lkml.kernel.org/r/20240412120421.27d86c34@canb.auug.org.au

io_uring/io_uring.c
	https://lkml.kernel.org/r/20240402112746.3864d8a6@canb.auug.org.au

include/linux/slab.h
	https://lkml.kernel.org/r/20240429114302.7af809e8@canb.auug.org.au

arch/powerpc/mm/mem.c
	https://lkml.kernel.org/r/20240424122034.5b4a1a01@canb.auug.org.au


and forthcoming merge issues which I know of are:

arch/x86/mm/numa_32.c, vs tip tree
	https://lkml.kernel.org/r/20240405115111.132053a5@canb.auug.org.au

drivers/iommu/amd/amd_iommu.h, vs iommu tree:
	https://lkml.kernel.org/r/20240416132223.30cfa738@canb.auug.org.au

drivers/virtio/virtio_mem.c, vs vhost tree:
	https://lkml.kernel.org/r/20240423145947.142171f6@canb.auug.org.au

include/linux/kfifo.c, lib/kfifo.c, vs tty tree:
	https://lkml.kernel.org/r/20240426145540.1593f8f4@canb.auug.org.au

arch/um/include/shared/um_malloc.h, vs uml tree:
	https://lkml.kernel.org/r/20240501091942.1999963d@canb.auug.org.au

init/main.c, vs ftrace tree:
	https://lkml.kernel.org/r/20240515123758.30904383@canb.auug.org.au


The following changes since commit 5d1bc760583f225032f91bd88853f4c26acaf4e0:

  merge mm-hotfixes-stable into mm-nonmm-stable to pick up needed changes (2024-04-25 20:54:12 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm tags/mm-stable-2024-05-17-19-19

for you to fetch changes up to 76edc534cc289308130272a2ac28694fc9b72a03:

  memcg, oom: cleanup unused memcg_oom_gfp_mask and memcg_oom_order (2024-05-11 15:41:37 -0700)

----------------------------------------------------------------
The usual shower of singleton fixes and minor series all over MM,
documented (hopefully adequately) in the respective changelogs.  Notable
series include:

- Lucas Stach has provided some page-mapping
  cleanup/consolidation/maintainability work in the series "mm/treewide:
  Remove pXd_huge() API".

- In the series "Allow migrate on protnone reference with
  MPOL_PREFERRED_MANY policy", Donet Tom has optimized mempolicy's
  MPOL_PREFERRED_MANY mode, yielding almost doubled performance in one
  test.

- In their series "Memory allocation profiling" Kent Overstreet and
  Suren Baghdasaryan have contributed a means of determining (via
  /proc/allocinfo) whereabouts in the kernel memory is being allocated:
  number of calls and amount of memory.

- Matthew Wilcox has provided the series "Various significant MM
  patches" which does a number of rather unrelated things, but in largely
  similar code sites.

- In his series "mm: page_alloc: freelist migratetype hygiene" Johannes
  Weiner has fixed the page allocator's handling of migratetype requests,
  with resulting improvements in compaction efficiency.

- In the series "make the hugetlb migration strategy consistent" Baolin
  Wang has fixed a hugetlb migration issue, which should improve hugetlb
  allocation reliability.

- Liu Shixin has hit an I/O meltdown caused by readahead in a
  memory-tight memcg.  Addressed in the series "Fix I/O high when memory
  almost met memcg limit".

- In the series "mm/filemap: optimize folio adding and splitting" Kairui
  Song has optimized pagecache insertion, yielding ~10% performance
  improvement in one test.

- Baoquan He has cleaned up and consolidated the early zone
  initialization code in the series "mm/mm_init.c: refactor
  free_area_init_core()".

- Baoquan has also redone some MM initializatio code in the series
  "mm/init: minor clean up and improvement".

- MM helper cleanups from Christoph Hellwig in his series "remove
  follow_pfn".

- More cleanups from Matthew Wilcox in the series "Various page->flags
  cleanups".

- Vlastimil Babka has contributed maintainability improvements in the
  series "memcg_kmem hooks refactoring".

- More folio conversions and cleanups in Matthew Wilcox's series

	"Convert huge_zero_page to huge_zero_folio"
	"khugepaged folio conversions"
	"Remove page_idle and page_young wrappers"
	"Use folio APIs in procfs"
	"Clean up __folio_put()"
	"Some cleanups for memory-failure"
	"Remove page_mapping()"
	"More folio compat code removal"

- David Hildenbrand chipped in with "fs/proc/task_mmu: convert hugetlb
  functions to work on folis".

- Code consolidation and cleanup work related to GUP's handling of
  hugetlbs in Peter Xu's series "mm/gup: Unify hugetlb, part 2".

- Rick Edgecombe has developed some fixes to stack guard gaps in the
  series "Cover a guard gap corner case".

- Jinjiang Tu has fixed KSM's behaviour after a fork+exec in the series
  "mm/ksm: fix ksm exec support for prctl".

- Baolin Wang has implemented NUMA balancing for multi-size THPs.  This
  is a simple first-cut implementation for now.  The series is "support
  multi-size THP numa balancing".

- Cleanups to vma handling helper functions from Matthew Wilcox in the
  series "Unify vma_address and vma_pgoff_address".

- Some selftests maintenance work from Dev Jain in the series
  "selftests/mm: mremap_test: Optimizations and style fixes".

- Improvements to the swapping of multi-size THPs from Ryan Roberts in
  the series "Swap-out mTHP without splitting".

- Kefeng Wang has significantly optimized the handling of arm64's
  permission page faults in the series

	"arch/mm/fault: accelerate pagefault when badaccess"
	"mm: remove arch's private VM_FAULT_BADMAP/BADACCESS"

- GUP cleanups from David Hildenbrand in "mm/gup: consistently call it
  GUP-fast".

- hugetlb fault code cleanups from Vishal Moola in "Hugetlb fault path to
  use struct vm_fault".

- selftests build fixes from John Hubbard in the series "Fix
  selftests/mm build without requiring "make headers"".

- Memory tiering fixes/improvements from Ho-Ren (Jack) Chuang in the
  series "Improved Memory Tier Creation for CPUless NUMA Nodes".  Fixes
  the initialization code so that migration between different memory types
  works as intended.

- David Hildenbrand has improved follow_pte() and fixed an errant driver
  in the series "mm: follow_pte() improvements and acrn follow_pte()
  fixes".

- David also did some cleanup work on large folio mapcounts in his
  series "mm: mapcount for large folios + page_mapcount() cleanups".

- Folio conversions in KSM in Alex Shi's series "transfer page to folio
  in KSM".

- Barry Song has added some sysfs stats for monitoring multi-size THP's
  in the series "mm: add per-order mTHP alloc and swpout counters".

- Some zswap cleanups from Yosry Ahmed in the series "zswap same-filled
  and limit checking cleanups".

- Matthew Wilcox has been looking at buffer_head code and found the
  documentation to be lacking.  The series is "Improve buffer head
  documentation".

- Multi-size THPs get more work, this time from Lance Yang.  His series
  "mm/madvise: enhance lazyfreeing with mTHP in madvise_free" optimizes
  the freeing of these things.

- Kemeng Shi has added more userspace-visible writeback instrumentation
  in the series "Improve visibility of writeback".

- Kemeng Shi then sent some maintenance work on top in the series "Fix
  and cleanups to page-writeback".

- Matthew Wilcox reduces mmap_lock traffic in the anon vma code in the
  series "Improve anon_vma scalability for anon VMAs".  Intel's test bot
  reported an improbable 3x improvement in one test.

- SeongJae Park adds some DAMON feature work in the series

	"mm/damon: add a DAMOS filter type for page granularity access recheck"
	"selftests/damon: add DAMOS quota goal test"

- Also some maintenance work in the series

	"mm/damon/paddr: simplify page level access re-check for pageout"
	"mm/damon: misc fixes and improvements"

- David Hildenbrand has disabled some known-to-fail selftests ni the
  series "selftests: mm: cow: flag vmsplice() hugetlb tests as XFAIL".

- memcg metadata storage optimizations from Shakeel Butt in "memcg:
  reduce memory consumption by memcg stats".

- DAX fixes and maintenance work from Vishal Verma in the series
  "dax/bus.c: Fixups for dax-bus locking".

----------------------------------------------------------------
Alex Rusuf (1):
      mm/damon/core: fix return value from damos_wmark_metric_value

Alex Shi (tencent) (9):
      mm/ksm: add ksm_get_folio
      mm/ksm: use folio in remove_rmap_item_from_tree
      mm/ksm: add folio_set_stable_node
      mm/ksm: use folio in remove_stable_node
      mm/ksm: use folio in stable_node_dup
      mm/ksm: use ksm_get_folio in scan_get_next_rmap_item
      mm/ksm: use folio in write_protect_page
      mm/ksm: convert chain series funcs and replace get_ksm_page
      mm/ksm: replace set_page_stable_node by folio_set_stable_node

Andy Shevchenko (2):
      xarray: use BITS_PER_LONGS()
      xarray: don't use "proxy" headers

Baolin Wang (9):
      mm: record the migration reason for struct migration_target_control
      mm: hugetlb: make the hugetlb migration strategy consistent
      docs: hugetlbpage.rst: add hugetlb migration description
      mm: factor out the numa mapping rebuilding into a new helper
      mm: support multi-size THP numa balancing
      mm: huge_memory: add the missing folio_test_pmd_mappable() for THP split statistics
      mm: page_alloc: use the correct THP order for THP PCP
      mm: set pageblock_order to HPAGE_PMD_ORDER in case with !CONFIG_HUGETLB_PAGE but THP enabled
      mm: page_alloc: allowing mTHP compaction to capture the freed page directly

Baoquan He (14):
      mm/vmalloc.c: optimize to reduce arguments of alloc_vmap_area()
      x86: remove unneeded memblock_find_dma_reserve()
      mm/mm_init.c: remove the useless dma_reserve
      mm/mm_init.c: add new function calc_nr_all_pages()
      mm/mm_init.c: remove meaningless calculation of zone->managed_pages in free_area_init_core()
      mm/mm_init.c: remove unneeded calc_memmap_size()
      mm/mm_init.c: remove arch_reserved_kernel_pages()
      mm: move array mem_section init code out of memory_present()
      mm/init: remove the unnecessary special treatment for memory-less node
      mm: make __absent_pages_in_range() as static
      mm/page_alloc.c: remove unneeded codes in !NUMA version of build_zonelists()
      mm/mm_init.c: remove the outdated code comment above deferred_grow_zone()
      mm/page_alloc.c: don't show protection in zone's ->lowmem_reserve[] for empty zone
      mm/page_alloc.c: change the array-length to MIGRATE_PCPTYPES

Barry Song (7):
      arm64: mm: swap: support THP_SWAP on hardware with MTE
      mm: hold PTL from the first PTE while reclaiming a large folio
      mm: alloc_anon_folio: avoid doing vma_thp_gfp_mask in fallback cases
      mm: add per-order mTHP anon_fault_alloc and anon_fault_fallback counters
      mm: add per-order mTHP anon_swpout and anon_swpout_fallback counters
      mm: add docs for per-order mTHP counters and transhuge_page ABI
      mm: correct the docs for thp_fault_alloc and thp_fault_fallback

Breno Leitao (2):
      memcg: fix data-race KCSAN bug in rstats
      mm: memcg: use READ_ONCE()/WRITE_ONCE() to access stock->nr_pages

Chris Li (1):
      zswap: replace RB tree with xarray

Christoph Hellwig (3):
      virt: acrn: stop using follow_pfn
      mm: remove follow_pfn
      mm: move follow_phys to arch/x86/mm/pat/memtype.c

Christophe Leroy (1):
      mm: remove guard around pgd_offset_k() macro

David Hildenbrand (39):
      mm/madvise: don't perform madvise VMA walk for MADV_POPULATE_(READ|WRITE)
      mm: convert folio_estimated_sharers() to folio_likely_mapped_shared()
      selftests/memfd_secret: add vmsplice() test
      mm: merge folio_is_secretmem() and folio_fast_pin_allowed() into gup_fast_folio_allowed()
      mm: optimize CONFIG_PER_VMA_LOCK member placement in vm_area_struct
      mm: remove "prot" parameter from move_pte()
      mm/gup: consistently name GUP-fast functions
      mm/treewide: rename CONFIG_HAVE_FAST_GUP to CONFIG_HAVE_GUP_FAST
      mm: use "GUP-fast" instead "fast GUP" in remaining comments
      drivers/virt/acrn: fix PFNMAP PTE checks in acrn_vm_ram_map()
      mm: pass VMA instead of MM to follow_pte()
      mm: follow_pte() improvements
      mm: allow for detecting underflows with page_mapcount() again
      mm/rmap: always inline anon/file rmap duplication of a single PTE
      mm/rmap: add fast-path for small folios when adding/removing/duplicating
      mm: track mapcount of large folios in single value
      mm: improve folio_likely_mapped_shared() using the mapcount of large folios
      mm: make folio_mapcount() return 0 for small typed folios
      mm/memory: use folio_mapcount() in zap_present_folio_ptes()
      mm/huge_memory: use folio_mapcount() in zap_huge_pmd() sanity check
      mm/memory-failure: use folio_mapcount() in hwpoison_user_mappings()
      mm/page_alloc: use folio_mapped() in __alloc_contig_migrate_range()
      mm/migrate: use folio_likely_mapped_shared() in add_page_for_migration()
      sh/mm/cache: use folio_mapped() in copy_from_user_page()
      mm/filemap: use folio_mapcount() in filemap_unaccount_folio()
      mm/migrate_device: use folio_mapcount() in migrate_vma_check_page()
      trace/events/page_ref: trace the raw page mapcount value
      xtensa/mm: convert check_tlb_entry() to sanity check folios
      mm/debug: print only page mapcount (excluding folio entire mapcount) in __dump_folio()
      Documentation/admin-guide/cgroup-v1/memory.rst: don't reference page_mapcount()
      mm/ksm: rename get_ksm_page_flags to ksm_get_folio_flags
      mm/ksm: remove page_mapcount() usage in stable_tree_search()
      fs/proc/task_mmu: convert pagemap_hugetlb_range() to work on folios
      fs/proc/task_mmu: convert smaps_hugetlb_range() to work on folios
      mm/huge_memory: improve split_huge_page_to_list_to_order() return value documentation
      mm/khugepaged: replace page_mapcount() check by folio_likely_mapped_shared()
      selftests: mm: cow: flag vmsplice() hugetlb tests as XFAIL
      mm/hugetlb: document why hugetlb uses folio_mapcount() for COW reuse decisions
      selftests: mm: gup_longterm: test unsharing logic when R/O pinning

Dev Jain (7):
      selftests/mm: virtual_address_range: Switch to ksft_exit_fail_msg
      selftests/mm: confirm VA exhaustion without reliance on correctness of mmap()
      selftests/mm: parse VMA range in one go
      selftests/mm: mremap_test: optimize using pre-filled random array and memcpy
      selftests/mm: mremap_test: optimize execution time from minutes to seconds using chunkwise memcmp
      selftests/mm: mremap_test: use sscanf to parse /proc/self/maps
      selftests/mm: hugetlb_madv_vs_map: avoid test skipping by querying hugepage size at runtime

Donet Tom (2):
      mm/mempolicy: use numa_node_id() instead of cpu_to_node()
      mm/numa_balancing: allow migrate on protnone reference with MPOL_PREFERRED_MANY policy

Duoming Zhou (1):
      lib/test_hmm.c: handle src_pfns and dst_pfns allocation failure

Frank van der Linden (3):
      mm/cma: drop incorrect alignment check in cma_init_reserved_mem
      mm/hugetlb: pass correct order_per_bit to cma_declare_contiguous_nid
      mm/hugetlb: align cma on allocation order, not demotion order

Hao Ge (7):
      mm/page-flags: make __PageMovable return bool
      mm/page-flags: make PageMappingFlags return bool
      mm/mmap: make vma_wants_writenotify return bool
      mm/mmap: make accountable_mapping return bool
      mm/page-flags: make PageUptodate return bool
      mm/pagemap: make trylock_page return bool
      mm/rmap: change the type of we_locked from int to bool

Hariom Panthi (1):
      mm: vmalloc: dump page owner info if page is already mapped

Ho-Ren (Jack) Chuang (2):
      memory tier: dax/kmem: introduce an abstract layer for finding, allocating, and putting memory types
      memory tier: create CPUless memory tiers after obtaining HMAT info

Huang Ying (1):
      mm,swap: add document about RCU read lock and swapoff interaction

Jinjiang Tu (4):
      mm/ksm: fix ksm exec support for prctl
      selftest/mm: ksm_functional_tests: refactor mmap_and_merge_range()
      selftest/mm: ksm_functional_tests: extend test case for ksm fork/exec
      mm/ksm: remove redundant code in ksm_fork

Joel Granados (1):
      memory: remove the now superfluous sentinel element from ctl_table array

Johannes Weiner (12):
      mm: zswap: optimize zswap pool size tracking
      mm: zpool: return pool size in pages
      mm: page_alloc: remove pcppage migratetype caching
      mm: page_alloc: optimize free_unref_folios()
      mm: page_alloc: fix up block types when merging compatible blocks
      mm: page_alloc: move free pages when converting block during isolation
      mm: page_alloc: fix move_freepages_block() range error
      mm: page_alloc: fix freelist movement during block conversion
      mm: page_alloc: close migratetype race between freeing and stealing
      mm: page_isolation: prepare for hygienic freelists
      mm: page_alloc: consolidate free page accounting
      mm: page_alloc: batch vmstat updates in expand()

John Hubbard (3):
      huge_memory.c: document huge page splitting rules more thoroughly
      selftests: break the dependency upon local header files
      selftests/mm: fix additional build errors for selftests

Kairui Song (4):
      mm/filemap: return early if failed to allocate memory for split
      mm/filemap: clean up hugetlb exclusion code
      lib/xarray: introduce a new helper xas_get_order
      mm/filemap: optimize filemap folio adding

Kees Cook (2):
      alloc_tag: Tighten file permissions on /proc/allocinfo
      mm/slub: avoid recursive loop with kmemleak

Kefeng Wang (15):
      mm: backing-dev: use group allocation/free of per-cpu counters API
      mm: remove __set_page_dirty_nobuffers()
      arm64: mm: cleanup __do_page_fault()
      arm64: mm: accelerate pagefault when VM_FAULT_BADACCESS
      arm: mm: accelerate pagefault when VM_FAULT_BADACCESS
      powerpc: mm: accelerate pagefault when badaccess
      riscv: mm: accelerate pagefault when badaccess
      s390: mm: accelerate pagefault when badaccess
      x86: mm: accelerate pagefault when badaccess
      arm64: mm: drop VM_FAULT_BADMAP/VM_FAULT_BADACCESS
      arm: mm: drop VM_FAULT_BADMAP/VM_FAULT_BADACCESS
      mm: move mm counter updating out of set_pte_range()
      mm: filemap: batch mm counter updating in filemap_map_pages()
      mm: swapfile: check usable swap device in __folio_throttle_swaprate()
      mm: memory: check userfaultfd_wp() in vmf_orig_pte_uffd_wp()

Kemeng Shi (8):
      writeback: collect stats of all wb of bdi in bdi_debug_stats_show
      writeback: support retrieving per group debug writeback stats of bdi
      writeback: add wb_monitor.py script to monitor writeback info on bdi
      writeback: rename nr_reclaimable to nr_dirty in balance_dirty_pages
      mm: enable __wb_calc_thresh to calculate dirty background threshold
      mm: correct calculation of wb's bg_thresh in cgroup domain
      mm: call __wb_calc_thresh instead of wb_calc_thresh in wb_over_bg_thresh
      mm: remove stale comment __folio_mark_dirty

Kent Overstreet (13):
      fix missing vmalloc.h includes
      asm-generic/io.h: kill vmalloc.h dependency
      mm/slub: mark slab_free_freelist_hook() __always_inline
      scripts/kallysms: always include __start and __stop symbols
      fs: convert alloc_inode_sb() to a macro
      rust: add a rust helper for krealloc()
      mempool: hook up to memory allocation profiling
      mm: percpu: introduce pcpuobj_ext
      mm: percpu: add codetag reference into pcpuobj_ext
      mm: vmalloc: enable memory allocation profiling
      rhashtable: plumb through alloc tag
      MAINTAINERS: add entries for code tagging and memory allocation profiling
      memprofiling: documentation

Lance Yang (4):
      mm/madvise: introduce clear_young_dirty_ptes() batch helper
      mm/arm64: override clear_young_dirty_ptes() batch helper
      mm/memory: add any_dirty optional pointer to folio_pte_batch()
      mm/madvise: optimize lazyfreeing with mTHP in madvise_free

Liu Shixin (2):
      mm/readahead: break read-ahead loop if filemap_add_folio return -ENOMEM
      mm/filemap: don't decrease mmap_miss when folio has workingset flag

Long Li (1):
      xarray: inline xas_descend to improve performance

Lucas Stach (1):
      mm: page_alloc: control latency caused by zone PCP draining

Matthew Wilcox (1):
      mm: simplify thp_vma_allowable_order

Matthew Wilcox (Oracle) (88):
      mm: always initialise folio->_deferred_list
      mm: remove folio_prep_large_rmappable()
      mm: remove a call to compound_head() from is_page_hwpoison()
      mm: free up PG_slab
      mm: improve dumping of mapcount and page_type
      hugetlb: remove mention of destructors
      sh: remove use of PG_arch_1 on individual pages
      xtensa: remove uses of PG_arch_1 on individual pages
      mm: make page_ext_get() take a const argument
      mm: make folio_test_idle and folio_test_young take a const argument
      mm: make is_free_buddy_page() take a const argument
      mm: make page_mapped() take a const argument
      mm: convert arch_clear_hugepage_flags to take a folio
      slub: remove use of page->flags
      remove references to page->flags in documentation
      proc: rewrite stable_page_flags()
      sparc: use is_huge_zero_pmd()
      mm: add is_huge_zero_folio()
      mm: add pmd_folio()
      mm: convert migrate_vma_collect_pmd to use a folio
      mm: convert huge_zero_page to huge_zero_folio
      mm: convert do_huge_pmd_anonymous_page to huge_zero_folio
      dax: use huge_zero_folio
      mm: rename mm_put_huge_zero_page to mm_put_huge_zero_folio
      mm: use rwsem assertion macros for mmap_lock
      filemap: remove __set_page_dirty()
      mm: correct page_mapped_in_vma() for large folios
      mm: remove vma_address()
      mm: rename vma_pgoff_address back to vma_address
      khugepaged: inline hpage_collapse_alloc_folio()
      khugepaged: convert alloc_charge_hpage to alloc_charge_folio
      khugepaged: remove hpage from collapse_huge_page()
      khugepaged: pass a folio to __collapse_huge_page_copy()
      khugepaged: remove hpage from collapse_file()
      khugepaged: use a folio throughout collapse_file()
      khugepaged: use a folio throughout hpage_collapse_scan_file()
      proc: convert clear_refs_pte_range to use a folio
      proc: convert smaps_account() to use a folio
      mm: remove page_idle and page_young wrappers
      mm: generate PAGE_IDLE_FLAG definitions
      proc: convert gather_stats to use a folio
      proc: convert smaps_page_accumulate to use a folio
      proc: pass a folio to smaps_page_accumulate()
      proc: convert smaps_pmd_entry to use a folio
      mm: remove struct page from get_shadow_from_swap_cache
      hugetlb: convert alloc_buddy_hugetlb_folio to use a folio
      mm: convert pagecache_isize_extended to use a folio
      mm: free non-hugetlb large folios in a batch
      mm: combine free_the_page() and free_unref_page()
      mm: inline destroy_large_folio() into __folio_put_large()
      mm: combine __folio_put_small, __folio_put_large and __folio_put
      mm: convert free_zone_device_page to free_zone_device_folio
      doc: improve the description of __folio_mark_dirty
      buffer: add kernel-doc for block_dirty_folio()
      buffer: add kernel-doc for try_to_free_buffers()
      buffer: fix __bread and __bread_gfp kernel-doc
      buffer: add kernel-doc for brelse() and __brelse()
      buffer: add kernel-doc for bforget() and __bforget()
      buffer: improve bdev_getblk documentation
      doc: split buffer.rst out of api-summary.rst
      mm/memory-failure: remove fsdax_pgoff argument from __add_to_kill
      mm/memory-failure: pass addr to __add_to_kill()
      mm: return the address from page_mapped_in_vma()
      mm: make page_mapped_in_vma conditional on CONFIG_MEMORY_FAILURE
      mm/memory-failure: convert shake_page() to shake_folio()
      mm: convert hugetlb_page_mapping_lock_write to folio
      mm/memory-failure: convert memory_failure() to use a folio
      mm/memory-failure: convert hwpoison_user_mappings to take a folio
      mm/memory-failure: add some folio conversions to unpoison_memory
      mm/memory-failure: use folio functions throughout collect_procs()
      mm/memory-failure: pass the folio to collect_procs_ksm()
      fscrypt: convert bh_get_inode_and_lblk_num to use a folio
      f2fs: convert f2fs_clear_page_cache_dirty_tag to use a folio
      memory-failure: remove calls to page_mapping()
      migrate: expand the use of folio in __migrate_device_pages()
      userfault; expand folio use in mfill_atomic_install_pte()
      mm: remove page_cache_alloc()
      mm: remove put_devmap_managed_page()
      mm: convert put_devmap_managed_page_refs() to put_devmap_managed_folio_refs()
      mm: remove page_ref_sub_return()
      gup: use folios for gup_devmap
      mm: add kernel-doc for folio_mark_accessed()
      mm: remove PageReferenced
      mm: assert the mmap_lock is held in __anon_vma_prepare()
      mm: delay the check for a NULL anon_vma
      mm: fix some minor per-VMA lock issues in userfaultfd
      mm: optimise vmf_anon_prepare() for VMAs without an anon_vma
      thp: remove HPAGE_PMD_ORDER minimum assertion

Oscar Salvador (2):
      mm/hugetlb: add missing VM_FAULT_SET_HINDEX in hugetlb_fault
      mm/hugetlb: add missing VM_FAULT_SET_HINDEX in hugetlb_wp

Peter Xu (32):
      mm/hmm: process pud swap entry without pud_huge()
      mm/gup: cache p4d in follow_p4d_mask()
      mm/gup: check p4d presence before going on
      mm/x86: change pXd_huge() behavior to exclude swap entries
      mm/sparc: change pXd_huge() behavior to exclude swap entries
      mm/arm: use macros to define pmd/pud helpers
      mm/arm: redefine pmd_huge() with pmd_leaf()
      mm/arm64: merge pXd_huge() and pXd_leaf() definitions
      mm/powerpc: redefine pXd_huge() with pXd_leaf()
      mm/gup: merge pXd huge mapping checks
      mm/treewide: replace pXd_huge() with pXd_leaf()
      mm/treewide: remove pXd_huge()
      mm/arm: remove pmd_thp_or_huge()
      mm: document pXd_leaf() API
      selftests/mm: run_vmtests.sh: fix hugetlb mem size calculation
      mm/Kconfig: CONFIG_PGTABLE_HAS_HUGE_LEAVES
      mm/hugetlb: declare hugetlbfs_pagecache_present() non-static
      mm: make HPAGE_PXD_* macros even if !THP
      mm: introduce vma_pgtable_walk_{begin|end}()
      mm/arch: provide pud_pfn() fallback
      mm/gup: drop gup_fast_folio_allowed() in hugepd processing
      mm/gup: refactor record_subpages() to find 1st small page
      mm/gup: handle hugetlb for no_page_table()
      mm/gup: cache *pudp in follow_pud_mask()
      mm/gup: handle huge pud for follow_pud_mask()
      mm/gup: handle huge pmd for follow_pmd_mask()
      mm/gup: handle hugepd for follow_page()
      mm/gup: handle hugetlb in the generic follow_page_mask code
      mm: allow anon exclusive check over hugetlb tail pages
      mm/hugetlb: assert hugetlb_lock in __hugetlb_cgroup_commit_charge
      mm/page_table_check: support userfault wr-protect entries
      mm/gup: fix hugepd handling in hugetlb rework

Randy Dunlap (1):
      scripts/kernel-doc: drop "_noprof" on function prototypes

Rick Edgecombe (14):
      proc: refactor pde_get_unmapped_area as prep
      mm: switch mm->get_unmapped_area() to a flag
      mm: introduce arch_get_unmapped_area_vmflags()
      mm: remove export for get_unmapped_area()
      mm: use get_unmapped_area_vmflags()
      thp: add thp_get_unmapped_area_vmflags()
      csky: use initializer for struct vm_unmapped_area_info
      parisc: use initializer for struct vm_unmapped_area_info
      powerpc: use initializer for struct vm_unmapped_area_info
      treewide: use initializer for struct vm_unmapped_area_info
      mm: take placement mappings gap into account
      x86/mm: implement HAVE_ARCH_UNMAPPED_AREA_VMFLAGS
      x86/mm: care about shadow stack guard gap during placement
      selftests/x86: add placement guard gap test for shstk

Roman Gushchin (1):
      mm: memcg: account memory used for memcg vmstats and lruvec stats

Ryan Roberts (10):
      mm: swap: remove CLUSTER_FLAG_HUGE from swap_cluster_info:flags
      mm: swap: free_swap_and_cache_nr() as batched free_swap_and_cache()
      mm: swap: simplify struct percpu_cluster
      mm: swap: update get_swap_pages() to take folio order
      mm: swap: allow storage of all mTHP orders
      mm: vmscan: avoid split during shrink_folio_list()
      mm: madvise: avoid split during MADV_PAGEOUT and MADV_COLD
      selftests/mm: soft-dirty should fail if a testcase fails
      mm/debug_vm_pgtable: test pmd_leaf() behavior with pmd_mkinvalid()
      mm: fix race between __split_huge_pmd_locked() and GUP-fast

Saurav Shah (1):
      selftests/memfd: fix spelling mistakes

SeongJae Park (23):
      mm/damon/paddr: implement damon_folio_young()
      mm/damon/paddr: implement damon_folio_mkold()
      mm/damon: add DAMOS filter type YOUNG
      mm/damon/paddr: implement DAMOS filter type YOUNG
      Docs/mm/damon/design: document 'young page' type DAMOS filter
      Docs/admin-guide/mm/damon/usage: update for young page type DAMOS filter
      Docs/ABI/damon: update for 'youg page' type DAMOS filter
      mm/damon/paddr: avoid unnecessary page level access check for pageout DAMOS action
      mm/damon/paddr: do page level access check for pageout DAMOS action on its own
      mm/vmscan: remove ignore_references argument of reclaim_pages()
      mm/vmscan: remove ignore_references argument of reclaim_folio_list()
      selftests/damon/_damon_sysfs: support quota goals
      selftests/damon: add a test for DAMOS quota goal
      mm/damon/core: initialize ->esz_bp from damos_quota_init_priv()
      selftests/damon/_damon_sysfs: check errors from nr_schemes file reads
      selftests/damon/_damon_sysfs: find sysfs mount point from /proc/mounts
      selftests/damon/_damon_sysfs: use 'is' instead of '==' for 'None'
      selftests/damon: classify tests for functionalities and regressions
      Docs/admin-guide/mm/damon/usage: fix wrong example of DAMOS filter matching sysfs file
      Docs/admin-guide/mm/damon/usage: fix wrong schemes effective quota update command
      Docs/mm/damon/design: use a list for supported filters
      Docs/mm/damon/maintainer-profile: change the maintainer's timezone from PST to PT
      Docs/mm/damon/maintainer-profile: allow posting patches based on damon/next tree

Sergey Senozhatsky (1):
      zram: add max_pages param to recompression

Shakeel Butt (8):
      memcg: simple cleanup of stats update functions
      memcg: reduce memory size of mem_cgroup_events_index
      memcg: dynamically allocate lruvec_stats
      memcg: reduce memory for the lruvec and memcg stats
      memcg: cleanup __mod_memcg_lruvec_state
      mm: cleanup WORKINGSET_NODES in workingset
      memcg: warn for unexpected events and stats
      memcg: use proper type for mod_memcg_state

Sidhartha Kumar (2):
      mm/hugetlb: convert dissolve_free_huge_pages() to folios
      mm/hugetlb: rename dissolve_free_huge_pages() to dissolve_free_hugetlb_folios()

Suren Baghdasaryan (26):
      mm: introduce slabobj_ext to support slab object extensions
      mm: introduce __GFP_NO_OBJ_EXT flag to selectively prevent slabobj_ext creation
      mm/slab: introduce SLAB_NO_OBJ_EXT to avoid obj_ext creation
      slab: objext: introduce objext_flags as extension to page_memcg_data_flags
      lib: code tagging framework
      lib: code tagging module support
      lib: prevent module unloading if memory is not freed
      lib: add allocation tagging support for memory allocation profiling
      lib: introduce support for page allocation tagging
      lib: introduce early boot parameter to avoid page_ext memory overhead
      mm: percpu: increase PERCPU_MODULE_RESERVE to accommodate allocation tags
      change alloc_pages name in dma_map_ops to avoid name conflicts
      mm: enable page allocation tagging
      mm: create new codetag references during page splitting
      mm: fix non-compound multi-order memory accounting in __free_pages
      mm/page_ext: enable early_page_ext when CONFIG_MEM_ALLOC_PROFILING_DEBUG=y
      lib: add codetag reference into slabobj_ext
      mm/slab: add allocation accounting into slab allocation and free paths
      mm/slab: enable slab allocation tagging for kmalloc and friends
      mm: percpu: enable per-cpu allocation tagging
      lib: add memory allocations report in show_mem()
      codetag: debug: skip objext checking when it's for objext itself
      codetag: debug: mark codetags for reserved pages as empty
      codetag: debug: introduce OBJEXTS_ALLOC_FAIL to mark failed slab_ext allocations
      mm: change inlined allocation helpers to account at the call site
      userfaultfd: remove WRITE_ONCE when setting folio->index during UFFDIO_MOVE

Usama Arif (2):
      selftests: cgroup: remove redundant enabling of memory controller
      selftests: cgroup: add tests to verify the zswap writeback path

Vishal Moola (Oracle) (3):
      hugetlb: convert hugetlb_fault() to use struct vm_fault
      hugetlb: convert hugetlb_no_page() to use struct vm_fault
      hugetlb: convert hugetlb_wp() to use struct vm_fault

Vishal Verma (4):
      dax/bus.c: replace WARN_ON_ONCE() with lockdep asserts
      dax/bus.c: fix locking for unregister_dax_dev / unregister_dax_mapping paths
      dax/bus.c: don't use down_write_killable for non-user processes
      dax/bus.c: use the right locking mode (read vs write) in size_show

Vlastimil Babka (3):
      mm: page_alloc: change move_freepages() to __move_freepages_block()
      mm, slab: move memcg charging to post-alloc hook
      mm, slab: move slab_memcg hooks to mm/memcontrol.c

Waiman Long (2):
      mm/kmemleak: compact kmemleak_object further
      mm/kmemleak: disable KASAN instrumentation in kmemleak

Wei Yang (1):
      mm/sparse: guard the size of mem_section is power of 2

Xiu Jianfeng (2):
      mm: memcg: make alloc_mem_cgroup_per_node_info() return bool
      memcg, oom: cleanup unused memcg_oom_gfp_mask and memcg_oom_order

Yajun Deng (1):
      mm/mmap: convert all mas except mas_detach to vma iterator

York Jasper Niebuhr (1):
      mm: init_mlocked_on_free_v3

Yosry Ahmed (9):
      mm: memcg: add NULL check to obj_cgroup_put()
      mm: zswap: remove unnecessary check in zswap_find_zpool()
      percpu: clean up all mappings when pcpu_map_pages() fails
      mm: zswap: remove nr_zswap_stored atomic
      mm: zswap: always shrink in zswap_store() if zswap_pool_reached_full
      mm: zswap: refactor limit checking from zswap_store()
      mm: zswap: move more same-filled pages checks outside of zswap_store()
      mm: zswap: remove same_filled module params
      mm: do not update memcg stats for NR_{FILE/SHMEM}_PMDMAPPED

ZhangPeng (1):
      userfaultfd: early return in dup_userfaultfd()

Zi Yan (3):
      mm: page_alloc: set migratetype inside move_freepages()
      mm/migrate: split source folio if it is on deferred split list
      mm/rmap: do not add fully unmapped large folio to deferred split list

linke li (1):
      mm/swapfile: mark racy access on si->highest_bit

rulinhuang (1):
      mm/vmalloc: eliminated the lock contention from twice to once

 Documentation/ABI/testing/sysfs-kernel-mm-damon    |   6 +-
 .../testing/sysfs-kernel-mm-transparent-hugepage   |  18 +
 Documentation/admin-guide/blockdev/zram.rst        |   5 +
 Documentation/admin-guide/cgroup-v1/memory.rst     |   8 +-
 Documentation/admin-guide/kernel-parameters.txt    |   6 +
 Documentation/admin-guide/mm/damon/usage.rst       |  32 +-
 Documentation/admin-guide/mm/hugetlbpage.rst       |   7 +
 Documentation/admin-guide/mm/transhuge.rst         |  35 +-
 Documentation/admin-guide/mm/zswap.rst             |  29 -
 Documentation/admin-guide/sysctl/vm.rst            |  16 +
 Documentation/driver-api/crypto/iaa/iaa-crypto.rst |   2 -
 Documentation/filesystems/api-summary.rst          |   3 -
 Documentation/filesystems/buffer.rst               |  12 +
 Documentation/filesystems/index.rst                |   1 +
 Documentation/filesystems/proc.rst                 |  29 +
 Documentation/mm/allocation-profiling.rst          | 100 +++
 Documentation/mm/arch_pgtable_helpers.rst          |   6 +-
 Documentation/mm/damon/design.rst                  |  44 +-
 Documentation/mm/damon/maintainer-profile.rst      |  13 +-
 Documentation/mm/index.rst                         |   1 +
 Documentation/mm/page_table_check.rst              |   9 +-
 Documentation/mm/transhuge.rst                     |  12 +-
 Documentation/mm/vmemmap_dedup.rst                 |  22 +-
 .../translations/zh_CN/core-api/cachetlb.rst       |   2 +-
 MAINTAINERS                                        |  18 +
 arch/alpha/kernel/osf_sys.c                        |   5 +-
 arch/alpha/kernel/pci_iommu.c                      |   2 +-
 arch/alpha/lib/checksum.c                          |   1 +
 arch/alpha/lib/fpreg.c                             |   1 +
 arch/arc/include/asm/mmu-arcv2.h                   |   2 +
 arch/arc/mm/mmap.c                                 |   4 +-
 arch/arm/Kconfig                                   |   2 +-
 arch/arm/include/asm/hugetlb.h                     |   6 +-
 arch/arm/include/asm/pgtable-2level.h              |   5 +-
 arch/arm/include/asm/pgtable-3level-hwdef.h        |   1 +
 arch/arm/include/asm/pgtable-3level.h              |   5 +-
 arch/arm/kernel/irq.c                              |   1 +
 arch/arm/kernel/traps.c                            |   1 +
 arch/arm/lib/uaccess_with_memcpy.c                 |   4 +-
 arch/arm/mm/Makefile                               |   1 -
 arch/arm/mm/fault.c                                |  32 +-
 arch/arm/mm/hugetlbpage.c                          |  34 -
 arch/arm/mm/mmap.c                                 |   5 +-
 arch/arm64/Kconfig                                 |   2 +-
 arch/arm64/include/asm/hugetlb.h                   |   6 +-
 arch/arm64/include/asm/pgtable.h                   |  80 +-
 arch/arm64/kernel/efi.c                            |   1 +
 arch/arm64/mm/contpte.c                            |  29 +
 arch/arm64/mm/fault.c                              |  56 +-
 arch/arm64/mm/hugetlbpage.c                        |  18 +-
 arch/arm64/mm/mteswap.c                            |  45 ++
 arch/csky/abiv1/mmap.c                             |  12 +-
 arch/loongarch/Kconfig                             |   2 +-
 arch/loongarch/include/asm/kfence.h                |   1 +
 arch/loongarch/mm/hugetlbpage.c                    |  12 +-
 arch/loongarch/mm/mmap.c                           |   3 +-
 arch/mips/Kconfig                                  |   2 +-
 arch/mips/include/asm/pgtable-32.h                 |   2 +-
 arch/mips/include/asm/pgtable-64.h                 |   2 +-
 arch/mips/jazz/jazzdma.c                           |   2 +-
 arch/mips/mm/hugetlbpage.c                         |  10 -
 arch/mips/mm/mmap.c                                |   3 +-
 arch/mips/mm/tlb-r4k.c                             |   2 +-
 arch/parisc/kernel/sys_parisc.c                    |   6 +-
 arch/parisc/mm/hugetlbpage.c                       |  11 -
 arch/powerpc/Kconfig                               |   2 +-
 arch/powerpc/include/asm/book3s/64/pgtable-4k.h    |  20 -
 arch/powerpc/include/asm/book3s/64/pgtable-64k.h   |  25 -
 arch/powerpc/include/asm/book3s/64/pgtable.h       |  27 +-
 arch/powerpc/include/asm/mmu.h                     |   4 -
 arch/powerpc/include/asm/nohash/pgtable.h          |  10 -
 arch/powerpc/kernel/dma-iommu.c                    |   2 +-
 arch/powerpc/kernel/fadump.c                       |   5 -
 arch/powerpc/kernel/iommu.c                        |   1 +
 arch/powerpc/mm/book3s64/pgtable.c                 |   1 +
 arch/powerpc/mm/book3s64/slice.c                   |  20 +-
 arch/powerpc/mm/fault.c                            |  33 +-
 arch/powerpc/mm/mem.c                              |   1 +
 arch/powerpc/mm/pgtable_64.c                       |   6 +-
 arch/powerpc/platforms/ps3/system-bus.c            |   4 +-
 arch/powerpc/platforms/pseries/vio.c               |   2 +-
 arch/riscv/Kconfig                                 |   2 +-
 arch/riscv/include/asm/hugetlb.h                   |   6 +-
 arch/riscv/include/asm/pgtable.h                   |   1 +
 arch/riscv/kernel/elf_kexec.c                      |   1 +
 arch/riscv/kernel/probes/kprobes.c                 |   1 +
 arch/riscv/mm/fault.c                              |   5 +-
 arch/riscv/mm/hugetlbpage.c                        |  10 -
 arch/s390/Kconfig                                  |   2 +-
 arch/s390/include/asm/hugetlb.h                    |   6 +-
 arch/s390/include/asm/pgtable.h                    |   5 +-
 arch/s390/kernel/cert_store.c                      |   1 +
 arch/s390/kernel/ipl.c                             |   1 +
 arch/s390/mm/fault.c                               |   3 +-
 arch/s390/mm/hugetlbpage.c                         |  19 +-
 arch/s390/mm/mmap.c                                |   9 +-
 arch/s390/pci/pci_mmio.c                           |   4 +-
 arch/sh/Kconfig                                    |   2 +-
 arch/sh/include/asm/hugetlb.h                      |   6 +-
 arch/sh/mm/cache-sh4.c                             |   5 +-
 arch/sh/mm/cache.c                                 |   2 +-
 arch/sh/mm/hugetlbpage.c                           |  10 -
 arch/sh/mm/mmap.c                                  |   5 +-
 arch/sparc/include/asm/pgtable_64.h                |   3 +-
 arch/sparc/kernel/sys_sparc_32.c                   |   3 +-
 arch/sparc/kernel/sys_sparc_64.c                   |  20 +-
 arch/sparc/mm/hugetlbpage.c                        |  21 +-
 arch/sparc/mm/tlb.c                                |   7 +-
 arch/um/include/shared/um_malloc.h                 |   3 +-
 arch/x86/Kconfig                                   |   2 +-
 arch/x86/include/asm/io.h                          |   1 +
 arch/x86/include/asm/pgtable.h                     |  20 +-
 arch/x86/include/asm/pgtable_64.h                  |   1 +
 arch/x86/kernel/amd_gart_64.c                      |   2 +-
 arch/x86/kernel/cpu/sgx/driver.c                   |   2 +-
 arch/x86/kernel/cpu/sgx/main.c                     |   1 +
 arch/x86/kernel/irq_64.c                           |   1 +
 arch/x86/kernel/setup.c                            |   2 -
 arch/x86/kernel/sys_x86_64.c                       |  42 +-
 arch/x86/mm/fault.c                                |  24 +-
 arch/x86/mm/hugetlbpage.c                          |  35 +-
 arch/x86/mm/init.c                                 |  47 --
 arch/x86/mm/mmap.c                                 |   4 +-
 arch/x86/mm/numa_32.c                              |   1 +
 arch/x86/mm/pat/memtype.c                          |  26 +-
 arch/x86/mm/pgtable.c                              |   6 +-
 arch/xtensa/mm/cache.c                             |   6 +-
 arch/xtensa/mm/tlb.c                               |  11 +-
 drivers/accel/ivpu/ivpu_mmu_context.c              |   1 +
 drivers/block/zram/zram_drv.c                      |  31 +-
 drivers/char/mem.c                                 |   2 +-
 drivers/dax/bus.c                                  |  66 +-
 drivers/dax/device.c                               |   6 +-
 drivers/dax/kmem.c                                 |  30 +-
 drivers/gpu/drm/gma500/mmu.c                       |   1 +
 drivers/gpu/drm/i915/gem/i915_gem_pages.c          |   1 +
 drivers/gpu/drm/i915/gem/selftests/mock_dmabuf.c   |   1 +
 drivers/gpu/drm/i915/gt/shmem_utils.c              |   1 +
 drivers/gpu/drm/i915/gvt/firmware.c                |   1 +
 drivers/gpu/drm/i915/gvt/gtt.c                     |   1 +
 drivers/gpu/drm/i915/gvt/handlers.c                |   1 +
 drivers/gpu/drm/i915/gvt/mmio.c                    |   1 +
 drivers/gpu/drm/i915/gvt/vgpu.c                    |   1 +
 drivers/gpu/drm/i915/intel_gvt.c                   |   1 +
 drivers/gpu/drm/imagination/pvr_vm_mips.c          |   1 +
 drivers/gpu/drm/mediatek/mtk_drm_gem.c             |   1 +
 drivers/gpu/drm/omapdrm/omap_gem.c                 |   1 +
 drivers/gpu/drm/v3d/v3d_bo.c                       |   1 +
 drivers/gpu/drm/vmwgfx/vmwgfx_binding.c            |   1 +
 drivers/gpu/drm/vmwgfx/vmwgfx_cmd.c                |   1 +
 drivers/gpu/drm/vmwgfx/vmwgfx_devcaps.c            |   1 +
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c                |   1 +
 drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c            |   1 +
 drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c              |   1 +
 drivers/gpu/drm/xen/xen_drm_front_gem.c            |   1 +
 drivers/hwtracing/coresight/coresight-trbe.c       |   1 +
 drivers/iommu/amd/amd_iommu.h                      |   5 +-
 drivers/iommu/dma-iommu.c                          |   2 +-
 .../ethernet/marvell/octeon_ep/octep_pfvf_mbox.c   |   1 +
 .../ethernet/marvell/octeon_ep_vf/octep_vf_mbox.c  |   1 +
 drivers/net/ethernet/microsoft/mana/hw_channel.c   |   1 +
 drivers/parisc/ccio-dma.c                          |   2 +-
 drivers/parisc/sba_iommu.c                         |   2 +-
 drivers/platform/x86/uv_sysfs.c                    |   1 +
 drivers/scsi/mpi3mr/mpi3mr_transport.c             |   2 +
 drivers/staging/media/atomisp/pci/hmm/hmm.c        |   2 +-
 drivers/vfio/pci/pds/dirty.c                       |   1 +
 drivers/vfio/vfio_iommu_type1.c                    |   4 +-
 drivers/virt/acrn/mm.c                             |  61 +-
 drivers/virtio/virtio_mem.c                        |   1 +
 drivers/xen/grant-dma-ops.c                        |   2 +-
 drivers/xen/swiotlb-xen.c                          |   2 +-
 fs/buffer.c                                        | 165 ++--
 fs/crypto/inline_crypt.c                           |   6 +-
 fs/dax.c                                           |  14 +-
 fs/exec.c                                          |  11 +
 fs/f2fs/data.c                                     |   5 +-
 fs/hugetlbfs/inode.c                               |  11 +-
 fs/nfs/iostat.h                                    |   5 +-
 fs/proc/inode.c                                    |  10 +-
 fs/proc/meminfo.c                                  |   3 +-
 fs/proc/page.c                                     |  69 +-
 fs/proc/task_mmu.c                                 |  93 +--
 fs/ramfs/file-mmu.c                                |   2 +-
 fs/userfaultfd.c                                   |   5 +-
 include/acpi/platform/aclinuxex.h                  |  19 +-
 include/asm-generic/codetag.lds.h                  |  14 +
 include/asm-generic/io.h                           |   2 +-
 include/asm-generic/pgalloc.h                      |  35 +-
 include/asm-generic/vmlinux.lds.h                  |   3 +
 include/crypto/hash.h                              |   7 +-
 include/crypto/internal/acompress.h                |   5 +-
 include/crypto/skcipher.h                          |   7 +-
 include/linux/alloc_tag.h                          | 216 ++++++
 include/linux/bpf.h                                |  33 +-
 include/linux/bpfptr.h                             |   5 +-
 include/linux/buffer_head.h                        |  48 +-
 include/linux/codetag.h                            |  81 ++
 include/linux/damon.h                              |   2 +
 include/linux/dma-fence-chain.h                    |   6 +-
 include/linux/dma-map-ops.h                        |   2 +-
 include/linux/fortify-string.h                     |   5 +-
 include/linux/fs.h                                 |   6 +-
 include/linux/gfp.h                                | 126 +--
 include/linux/gfp_types.h                          |  11 +
 include/linux/hid_bpf.h                            |   6 +-
 include/linux/huge_mm.h                            | 129 ++--
 include/linux/hugetlb.h                            |  95 +--
 include/linux/io.h                                 |   1 +
 include/linux/jbd2.h                               |  12 +-
 include/linux/ksm.h                                |  35 +-
 include/linux/memcontrol.h                         | 151 ++--
 include/linux/memory-tiers.h                       |  13 +
 include/linux/mempolicy.h                          |   5 +-
 include/linux/mempool.h                            |  73 +-
 include/linux/mm.h                                 | 219 ++++--
 include/linux/mm_types.h                           |  35 +-
 include/linux/mmap_lock.h                          |  10 +-
 include/linux/page-flags.h                         |  64 +-
 include/linux/page-isolation.h                     |   5 +-
 include/linux/page_ext.h                           |   5 +-
 include/linux/page_idle.h                          |  68 +-
 include/linux/page_ref.h                           |  11 +-
 include/linux/pageblock-flags.h                    |   8 +-
 include/linux/pagemap.h                            |  22 +-
 include/linux/pds/pds_common.h                     |   2 +
 include/linux/percpu.h                             |  30 +-
 include/linux/pgalloc_tag.h                        | 132 ++++
 include/linux/pgtable.h                            | 119 ++-
 include/linux/ptr_ring.h                           |  28 +-
 include/linux/rhashtable-types.h                   |  11 +-
 include/linux/rmap.h                               |  50 +-
 include/linux/sched.h                              |  26 +-
 include/linux/sched/coredump.h                     |   5 +-
 include/linux/sched/mm.h                           |  22 +
 include/linux/secretmem.h                          |  21 +-
 include/linux/skb_array.h                          |  19 +-
 include/linux/skbuff.h                             |  20 +-
 include/linux/skmsg.h                              |   8 +-
 include/linux/slab.h                               | 184 +++--
 include/linux/sockptr.h                            |  10 +-
 include/linux/string.h                             |   4 +-
 include/linux/swap.h                               |  35 +-
 include/linux/vmalloc.h                            |  60 +-
 include/linux/vmstat.h                             |   8 -
 include/linux/writeback.h                          |   1 +
 include/linux/xarray.h                             |  14 +-
 include/linux/zpool.h                              |   4 +-
 include/linux/zswap.h                              |   2 +-
 include/net/netlabel.h                             |  16 +-
 include/net/netlink.h                              |   5 +-
 include/net/request_sock.h                         |   5 +-
 include/net/tcx.h                                  |   5 +-
 include/rdma/rdmavt_qp.h                           |   1 +
 include/trace/events/fs_dax.h                      |  16 +-
 include/trace/events/huge_memory.h                 |  12 +-
 include/trace/events/mmflags.h                     |   2 +-
 include/trace/events/page_ref.h                    |   4 +-
 init/Kconfig                                       |   4 +
 io_uring/io_uring.c                                |   2 +-
 kernel/bpf/arena.c                                 |   2 +-
 kernel/bpf/memalloc.c                              |   6 +-
 kernel/bpf/syscall.c                               |   2 +-
 kernel/dma/mapping.c                               |   4 +-
 kernel/events/core.c                               |   4 +-
 kernel/fork.c                                      |   2 +-
 kernel/kallsyms_selftest.c                         |   2 +-
 kernel/module/main.c                               |  29 +-
 kernel/vmcore_info.c                               |   3 +-
 lib/Kconfig.debug                                  |  31 +
 lib/Makefile                                       |   3 +
 lib/alloc_tag.c                                    | 246 ++++++
 lib/codetag.c                                      | 283 +++++++
 lib/rhashtable.c                                   |  22 +-
 lib/test_hmm.c                                     |   8 +-
 lib/test_xarray.c                                  |  93 +++
 lib/xarray.c                                       |  52 +-
 mm/Kconfig                                         |   8 +-
 mm/Makefile                                        |   1 +
 mm/backing-dev.c                                   | 200 +++--
 mm/cma.c                                           |   4 -
 mm/compaction.c                                    |   8 +-
 mm/damon/core.c                                    |  10 +-
 mm/damon/paddr.c                                   |  84 +-
 mm/damon/sysfs-schemes.c                           |   1 +
 mm/debug.c                                         |  25 +-
 mm/debug_page_alloc.c                              |  12 +-
 mm/debug_vm_pgtable.c                              |   2 +
 mm/filemap.c                                       | 115 ++-
 mm/folio-compat.c                                  |   6 -
 mm/gup.c                                           | 814 +++++++++++++-------
 mm/hmm.c                                           |   9 +-
 mm/huge_memory.c                                   | 428 +++++------
 mm/hugetlb.c                                       | 418 +++++-----
 mm/hugetlb_cgroup.c                                |   2 +-
 mm/hugetlb_vmemmap.c                               |   1 -
 mm/hwpoison-inject.c                               |  11 +-
 mm/internal.h                                      | 205 +++--
 mm/kasan/hw_tags.c                                 |   1 +
 mm/kfence/core.c                                   |  14 +-
 mm/kfence/kfence.h                                 |   4 +-
 mm/khugepaged.c                                    | 335 ++++----
 mm/kmemleak.c                                      |   6 +-
 mm/ksm.c                                           | 291 +++----
 mm/madvise.c                                       | 228 +++---
 mm/memcontrol.c                                    | 490 ++++++++----
 mm/memory-failure.c                                | 179 +++--
 mm/memory-tiers.c                                  | 123 ++-
 mm/memory.c                                        | 305 ++++----
 mm/memory_hotplug.c                                |   5 +-
 mm/mempolicy.c                                     | 104 +--
 mm/mempool.c                                       |  36 +-
 mm/memremap.c                                      |  40 +-
 mm/migrate.c                                       |  43 +-
 mm/migrate_device.c                                |  41 +-
 mm/mlock.c                                         |   2 +-
 mm/mm_init.c                                       | 216 +++---
 mm/mmap.c                                          | 233 +++---
 mm/mprotect.c                                      |   3 +-
 mm/mremap.c                                        |   2 +-
 mm/nommu.c                                         |  77 +-
 mm/oom_kill.c                                      |   1 -
 mm/page-writeback.c                                |  80 +-
 mm/page_alloc.c                                    | 842 +++++++++++----------
 mm/page_ext.c                                      |  15 +-
 mm/page_io.c                                       |   3 +-
 mm/page_isolation.c                                | 121 ++-
 mm/page_owner.c                                    |   2 +-
 mm/page_table_check.c                              |  30 +
 mm/page_vma_mapped.c                               |  22 +-
 mm/percpu-internal.h                               |  26 +-
 mm/percpu-vm.c                                     |   4 +-
 mm/percpu.c                                        | 118 ++-
 mm/pgtable-generic.c                               |   2 +
 mm/readahead.c                                     |   8 +-
 mm/rmap.c                                          | 111 +--
 mm/shmem.c                                         |  13 +-
 mm/show_mem.c                                      |  26 +
 mm/slab.h                                          |  60 +-
 mm/slab_common.c                                   |   6 +-
 mm/slub.c                                          | 468 +++++++-----
 mm/sparse.c                                        |  28 +-
 mm/swap.c                                          |  64 +-
 mm/swap_slots.c                                    |   8 +-
 mm/swap_state.c                                    |  10 +-
 mm/swapfile.c                                      | 368 +++++----
 mm/truncate.c                                      |  36 +-
 mm/userfaultfd.c                                   |  31 +-
 mm/util.c                                          |  40 +-
 mm/vmalloc.c                                       | 138 ++--
 mm/vmscan.c                                        |  52 +-
 mm/workingset.c                                    |   7 +-
 mm/z3fold.c                                        |  10 +-
 mm/zbud.c                                          |  10 +-
 mm/zpool.c                                         |  10 +-
 mm/zsmalloc.c                                      |   6 +-
 mm/zswap.c                                         | 389 ++++------
 net/sunrpc/auth_gss/auth_gss_internal.h            |   6 +-
 rust/helpers.c                                     |   8 +
 scripts/kallsyms.c                                 |  13 +
 scripts/kernel-doc                                 |   1 +
 scripts/module.lds.S                               |   7 +
 security/Kconfig.hardening                         |  15 +
 sound/pci/hda/cs35l41_hda.c                        |   1 +
 tools/cgroup/memcg_slabinfo.py                     |   5 +-
 tools/include/uapi/linux/memfd.h                   |  39 +
 tools/include/uapi/linux/userfaultfd.h             | 386 ++++++++++
 tools/testing/selftests/cgroup/test_zswap.c        | 132 +++-
 tools/testing/selftests/damon/Makefile             |  13 +-
 tools/testing/selftests/damon/_damon_sysfs.py      | 179 ++++-
 tools/testing/selftests/damon/damos_quota_goal.py  |  77 ++
 tools/testing/selftests/lib.mk                     |   9 +
 tools/testing/selftests/memfd/fuse_test.c          |   2 +-
 tools/testing/selftests/memfd/memfd_test.c         |   2 +-
 tools/testing/selftests/mm/Makefile                |   2 +-
 tools/testing/selftests/mm/cow.c                   | 106 ++-
 tools/testing/selftests/mm/gup_longterm.c          |  16 +-
 tools/testing/selftests/mm/hugetlb_madv_vs_map.c   |  16 +-
 tools/testing/selftests/mm/ksm_functional_tests.c  | 135 +++-
 tools/testing/selftests/mm/memfd_secret.c          |  51 +-
 tools/testing/selftests/mm/mlock2-tests.c          |  15 +-
 tools/testing/selftests/mm/mremap_test.c           | 204 +++--
 tools/testing/selftests/mm/run_vmtests.sh          |  13 +-
 tools/testing/selftests/mm/soft-dirty.c            |   2 +-
 tools/testing/selftests/mm/virtual_address_range.c |  78 +-
 tools/testing/selftests/x86/test_shadow_stack.c    |  67 +-
 tools/writeback/wb_monitor.py                      | 172 +++++
 virt/kvm/kvm_main.c                                |   4 +-
 388 files changed, 9701 insertions(+), 5723 deletions(-)
 create mode 100644 Documentation/ABI/testing/sysfs-kernel-mm-transparent-hugepage
 create mode 100644 Documentation/filesystems/buffer.rst
 create mode 100644 Documentation/mm/allocation-profiling.rst
 delete mode 100644 arch/arm/mm/hugetlbpage.c
 create mode 100644 include/asm-generic/codetag.lds.h
 create mode 100644 include/linux/alloc_tag.h
 create mode 100644 include/linux/codetag.h
 create mode 100644 include/linux/pgalloc_tag.h
 create mode 100644 lib/alloc_tag.c
 create mode 100644 lib/codetag.c
 create mode 100644 tools/include/uapi/linux/memfd.h
 create mode 100644 tools/include/uapi/linux/userfaultfd.h
 create mode 100644 tools/testing/selftests/damon/damos_quota_goal.py
 create mode 100644 tools/writeback/wb_monitor.py

Comments

Linus Torvalds May 19, 2024, 3:32 p.m. UTC | #1
On Fri, 17 May 2024 at 19:22, Andrew Morton <akpm@linux-foundation.org> wrote:
>
> include/linux/slab.h
>         https://lkml.kernel.org/r/20240429114302.7af809e8@canb.auug.org.au

This is not only a merge conflict, your tree is actively buggy.

You have introduced changes like this:

  -static inline __alloc_size(1, 2) void *kvcalloc(size_t n, size_t
size, gfp_t flags)
  -{
  - return kvmalloc_array(n, size, flags | __GFP_ZERO);
  -}
  +#define kvcalloc(_n, _size, _flags) kvmalloc_array(_n, _size,
_flags|__GFP_ZERO)

and that's just completely wrong. Note the "_flags|__GFP_ZERO": yes,
the bitwise or is fairly low down in the operator precedence rules,
and it probably work sin practice because most cases will just pass in
a simple expression for the flags, but it's still *horribly* wrong.

I'm going to take this pull and fix up the cases I find, but I'm not
happy with this kind of trivial C preprocessor misuse.

I also note that you have *SEVEN* pointless merges that have no
explanation for them. I'm happy that you use git, but that means that
you also need to either

 (a) not do merges at all and treat it as a patch queue

 (b) do merges _properly_ and not throw them around like some madman

And doing them properly means not only writing good commit messages,
but actually having good reasons for them. As it is, we have

  5d1bc760583f ("merge mm-hotfixes-stable into mm-nonmm-stable to pick
up needed changes")
  640958fde130 ("Merge branch 'master' into mm-stable")
  4e2e36129225 ("Merge branch 'master' into mm-stable")
  1dd4505cf4c8 ("Merge branch 'master' into mm-stable")
  71919308943d ("Merge branch 'master' into mm-stable")
  b228ab57e51b ("Merge branch 'master' into mm-stable")
  5e2806112864 ("Merge branch 'master' into mm-stable")

and those one-liners are all the explanation there are for the merges,
and NONE OF THOSE MERGES ARE VALID IN THE FIRST PLACE!

They shouldn't have been merges! You literally have no new code on the
other side. You should have just fast-forwarded to the new state,
since your side didn't contain anything relevant any more.

So the merges are doubly wrong. They have no explanation, but part of
the reason that they have no explanation is probably exactly the fact
that there *IS* no explanation for them.

There is one fundamental rule of merges: if you can't explain why
you'd need to merge, DON'T DO IT.

There are lots of smaller rules too. See

    Documentation/maintainer/rebasing-and-merging.rst

for at least some of them.

                 Linus

          Linus
Linus Torvalds May 19, 2024, 4:48 p.m. UTC | #2
On Sun, 19 May 2024 at 08:32, Linus Torvalds
<torvalds@linuxfoundation.org> wrote:
>
> I'm going to take this pull and fix up the cases I find, but I'm not
> happy with this kind of trivial C preprocessor misuse.

I did some other maco handling cleanup too and tried to regularize
some of this all, and it seems to work for me. But somebody should
double-check, and it's possible these patterns should all be
regularized further with a few helper macros for the whole "add
__GFP_ZERO to argument list" or similar.

            Linus
pr-tracker-bot@kernel.org May 19, 2024, 4:49 p.m. UTC | #3
The pull request you sent on Fri, 17 May 2024 19:22:39 -0700:

> https://lkml.kernel.org/r/20240412120421.27d86c34@canb.auug.org.au io_uring/io_uring.c

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/61307b7be41a1f1039d1d1368810a1d92cb97b44

Thank you!
Kent Overstreet May 19, 2024, 6:02 p.m. UTC | #4
On Sun, May 19, 2024 at 09:48:49AM -0700, Linus Torvalds wrote:
> On Sun, 19 May 2024 at 08:32, Linus Torvalds
> <torvalds@linuxfoundation.org> wrote:
> >
> > I'm going to take this pull and fix up the cases I find, but I'm not
> > happy with this kind of trivial C preprocessor misuse.
> 
> I did some other maco handling cleanup too and tried to regularize
> some of this all, and it seems to work for me. But somebody should
> double-check, and it's possible these patterns should all be
> regularized further with a few helper macros for the whole "add
> __GFP_ZERO to argument list" or similar.

I just double checked slab.h, gfp.h and percpu.h, and scanned through
the diff vs. 6.9 for include/linux/ - looks like you got everything.

I think we can slim down the API surface of slab.h some more too, we're
now exposing three different ways of saying "trace/track this allocation
here": _trace, _track_caller and _noprof vs. normal; I think after a
cycle we can see if the old variants are still needed or can be
consolidated somehow.
Andrew Morton May 19, 2024, 6:36 p.m. UTC | #5
On Sun, 19 May 2024 08:32:44 -0700 Linus Torvalds <torvalds@linuxfoundation.org> wrote:

> On Fri, 17 May 2024 at 19:22, Andrew Morton <akpm@linux-foundation.org> wrote:
> >
> > include/linux/slab.h
> >         https://lkml.kernel.org/r/20240429114302.7af809e8@canb.auug.org.au
> 
> This is not only a merge conflict, your tree is actively buggy.
> 
> You have introduced changes like this:
> 
>   -static inline __alloc_size(1, 2) void *kvcalloc(size_t n, size_t
> size, gfp_t flags)
>   -{
>   - return kvmalloc_array(n, size, flags | __GFP_ZERO);
>   -}
>   +#define kvcalloc(_n, _size, _flags) kvmalloc_array(_n, _size,
> _flags|__GFP_ZERO)
> 
> and that's just completely wrong. Note the "_flags|__GFP_ZERO": yes,
> the bitwise or is fairly low down in the operator precedence rules,
> and it probably work sin practice because most cases will just pass in
> a simple expression for the flags, but it's still *horribly* wrong.
> 
> I'm going to take this pull and fix up the cases I find, but I'm not
> happy with this kind of trivial C preprocessor misuse.

Thanks, I've asked Suren and Kent to check it all over.

> I also note that you have *SEVEN* pointless merges that have no
> explanation for them. I'm happy that you use git, but that means that
> you also need to either
> 
>  (a) not do merges at all and treat it as a patch queue
> 
>  (b) do merges _properly_ and not throw them around like some madman
> 
> And doing them properly means not only writing good commit messages,
> but actually having good reasons for them. As it is, we have
> 
>   5d1bc760583f ("merge mm-hotfixes-stable into mm-nonmm-stable to pick
> up needed changes")
>   640958fde130 ("Merge branch 'master' into mm-stable")
>   4e2e36129225 ("Merge branch 'master' into mm-stable")
>   1dd4505cf4c8 ("Merge branch 'master' into mm-stable")
>   71919308943d ("Merge branch 'master' into mm-stable")
>   b228ab57e51b ("Merge branch 'master' into mm-stable")
>   5e2806112864 ("Merge branch 'master' into mm-stable")

This is me advancing the master branch once per week until we hit -rc4.

I don't understand why these merges were visible to this pull.  I sent:

: The following changes since commit 5d1bc760583f225032f91bd88853f4c26acaf4e0:
: 
:   merge mm-hotfixes-stable into mm-nonmm-stable to pick up needed changes (2024-04-25 20:54:12 -0700)
: 
: are available in the Git repository at:
: 
:   git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm tags/mm-stable-2024-05-17-19-19
: 
: for you to fetch changes up to 76edc534cc289308130272a2ac28694fc9b72a03:
: 
:   memcg, oom: cleanup unused memcg_oom_gfp_mask and memcg_oom_order (2024-05-11 15:41:37 -0700)
: 

This has worked OK before,
Linus Torvalds May 19, 2024, 6:56 p.m. UTC | #6
On Sun, 19 May 2024 at 11:36, Andrew Morton <akpm@linux-foundation.org> wrote:
>
> This is me advancing the master branch once per week until we hit -rc4.

Yeah. You really shouldn't do that with a merge commit.

If what you want to do is just advance the master branch, you should
just rebase on top (if rebasing is what you want to do).

Instead you seem to merge _and_ then rebase. So you do the worst of both worlds.

You don't get the history cleanup of rebasing, and you don't get the
history preservation of merging. You do both, and it's wrong.

> I don't understand why these merges were visible to this pull.  I sent:
>
> : The following changes since commit 5d1bc760583f225032f91bd88853f4c26acaf4e0:

No. That is NOT how git works.

You claiming to send only the changes after a commit doesn't magically
make the history that precedes that commit go away.

With git, when you send a branch, you send the WHOLE HISTORY. That is
fundamentally how git works. You trying to change the "from this
commit forwards" doesn't actually change anything at all, it only
changes the wording in the pull request itself.

You can't just do a pull request and try to say "only send changes
since this commit".

Git is *not* the broken sh*t that you have used before that is just a
queue of patches. Every single commit carries the whole history that
leads up to it.

And that is fundamental (and is fundamentally why patch-queue based
stuff is broken garbage), because proper history is what makes merging
work and scale. It's pretty much what makes git not CVS, or the horror
that is darcs and "patch algebra".

So when you do a pull request, the whole history is always visible.
You can't make it not visible.

> This has worked OK before,

Your previous histories haven't had those broken merges in them, so
your previous pulls haven't had them either.

I don't know what you have changed in your setup, but your "advance
the master branch once per week" process is completely broken.

The problem isn't the pull request. The source of the problem is
something in your "advance" scripting.

               Linus
Linus Torvalds May 19, 2024, 6:59 p.m. UTC | #7
On Sun, 19 May 2024 at 11:56, Linus Torvalds
<torvalds@linuxfoundation.org> wrote:
>
> Instead you seem to merge _and_ then rebase. So you do the worst of both worlds.

Hmm.  Your non-MM pull request doesn't show this pattern, so the
problem seems to be purely about something you have done differently
in the MM branch.

                 Linus
Suren Baghdasaryan May 19, 2024, 9:16 p.m. UTC | #8
On Sun, May 19, 2024 at 11:02 AM Kent Overstreet
<kent.overstreet@linux.dev> wrote:
>
> On Sun, May 19, 2024 at 09:48:49AM -0700, Linus Torvalds wrote:
> > On Sun, 19 May 2024 at 08:32, Linus Torvalds
> > <torvalds@linuxfoundation.org> wrote:
> > >
> > > I'm going to take this pull and fix up the cases I find, but I'm not
> > > happy with this kind of trivial C preprocessor misuse.
> >
> > I did some other maco handling cleanup too and tried to regularize
> > some of this all, and it seems to work for me. But somebody should
> > double-check, and it's possible these patterns should all be
> > regularized further with a few helper macros for the whole "add
> > __GFP_ZERO to argument list" or similar.
>
> I just double checked slab.h, gfp.h and percpu.h, and scanned through
> the diff vs. 6.9 for include/linux/ - looks like you got everything.

Sorry about that. Yeah, I could not find any other place that was not
fixed. Thanks for noticing and fixing them!

>
> I think we can slim down the API surface of slab.h some more too, we're
> now exposing three different ways of saying "trace/track this allocation
> here": _trace, _track_caller and _noprof vs. normal; I think after a
> cycle we can see if the old variants are still needed or can be
> consolidated somehow.
>