]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-client.git/commitdiff
Merge tag 'mm-stable-2026-02-18-19-48' of git://git.kernel.org/pub/scm/linux/kernel...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 19 Feb 2026 04:50:32 +0000 (20:50 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 19 Feb 2026 04:50:32 +0000 (20:50 -0800)
Pull more MM  updates from Andrew Morton:

 - "mm/vmscan: fix demotion targets checks in reclaim/demotion" fixes a
   couple of issues in the demotion code - pages were failed demotion
   and were finding themselves demoted into disallowed nodes (Bing Jiao)

 - "Remove XA_ZERO from error recovery of dup_mmap()" fixes a rare
   mapledtree race and performs a number of cleanups (Liam Howlett)

 - "mm: add bitmap VMA flag helpers and convert all mmap_prepare to use
   them" implements a lot of cleanups following on from the conversion
   of the VMA flags into a bitmap (Lorenzo Stoakes)

 - "support batch checking of references and unmapping for large folios"
   implements batching to greatly improve the performance of reclaiming
   clean file-backed large folios (Baolin Wang)

 - "selftests/mm: add memory failure selftests" does as claimed (Miaohe
   Lin)

* tag 'mm-stable-2026-02-18-19-48' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm: (36 commits)
  mm/page_alloc: clear page->private in free_pages_prepare()
  selftests/mm: add memory failure dirty pagecache test
  selftests/mm: add memory failure clean pagecache test
  selftests/mm: add memory failure anonymous page test
  mm: rmap: support batched unmapping for file large folios
  arm64: mm: implement the architecture-specific clear_flush_young_ptes()
  arm64: mm: support batch clearing of the young flag for large folios
  arm64: mm: factor out the address and ptep alignment into a new helper
  mm: rmap: support batched checks of the references for large folios
  tools/testing/vma: add VMA userland tests for VMA flag functions
  tools/testing/vma: separate out vma_internal.h into logical headers
  tools/testing/vma: separate VMA userland tests into separate files
  mm: make vm_area_desc utilise vma_flags_t only
  mm: update all remaining mmap_prepare users to use vma_flags_t
  mm: update shmem_[kernel]_file_*() functions to use vma_flags_t
  mm: update secretmem to use VMA flags on mmap_prepare
  mm: update hugetlbfs to use VMA flags on mmap_prepare
  mm: add basic VMA flag operation helper functions
  tools: bitmap: add missing bitmap_[subset(), andnot()]
  mm: add mk_vma_flags() bitmap flag macro helper
  ...

26 files changed:
1  2 
MAINTAINERS
drivers/gpu/drm/drm_gem.c
drivers/gpu/drm/i915/gem/i915_gem_shmem.c
drivers/gpu/drm/ttm/ttm_tt.c
fs/erofs/data.c
fs/ext4/file.c
fs/ntfs3/file.c
fs/orangefs/file.c
fs/xfs/scrub/xfile.c
fs/xfs/xfs_buf_mem.c
fs/xfs/xfs_file.c
include/linux/cpuset.h
include/linux/hugetlb.h
include/linux/memcontrol.h
include/linux/mm.h
kernel/cgroup/cpuset.c
kernel/relay.c
mm/hugetlb.c
mm/internal.h
mm/khugepaged.c
mm/memcontrol.c
mm/memory.c
mm/page_alloc.c
mm/shmem.c
tools/testing/selftests/mm/.gitignore
tools/testing/selftests/mm/Makefile

diff --cc MAINTAINERS
Simple merge
index ffa7852c8f6c9c1f55bf6288c62d4df71c821b73,be4dca2bc34e6ed226efc2d7e8fd8f083e942e99..f7094c4aa97a0b700dfce1bb8fc867619ffa1b7f
@@@ -176,25 -119,26 +176,26 @@@ drm_gem_init(struct drm_device *dev
   * @dev: drm_device the object should be initialized for
   * @obj: drm_gem_object to initialize
   * @size: object size
 - * @gemfs: tmpfs mount where the GEM object will be created. If NULL, use
 - * the usual tmpfs mountpoint (`shm_mnt`).
   *
   * Initialize an already allocated GEM object of the specified size with
 - * shmfs backing store.
 + * shmfs backing store. A huge mountpoint can be used by calling
 + * drm_gem_huge_mnt_create() beforehand.
   */
 -int drm_gem_object_init_with_mnt(struct drm_device *dev,
 -                               struct drm_gem_object *obj, size_t size,
 -                               struct vfsmount *gemfs)
 +int drm_gem_object_init(struct drm_device *dev, struct drm_gem_object *obj,
 +                      size_t size)
  {
 +      struct vfsmount *huge_mnt;
        struct file *filp;
+       const vma_flags_t flags = mk_vma_flags(VMA_NORESERVE_BIT);
  
        drm_gem_private_object_init(dev, obj, size);
  
 -      if (gemfs)
 -              filp = shmem_file_setup_with_mnt(gemfs, "drm mm object", size,
 -                                               flags);
 +      huge_mnt = drm_gem_get_huge_mnt(dev);
 +      if (huge_mnt)
 +              filp = shmem_file_setup_with_mnt(huge_mnt, "drm mm object",
-                                                size, VM_NORESERVE);
++                                               size, flags);
        else
-               filp = shmem_file_setup("drm mm object", size, VM_NORESERVE);
+               filp = shmem_file_setup("drm mm object", size, flags);
  
        if (IS_ERR(filp))
                return PTR_ERR(filp);
index 6ad1d6f99363e856caae80f74cd576f74ac3b322,fe1843497b27d26c3b3d8388a26832df24e57517..95b13d1729138aeeeb80f0be6c991d9a4676a020
@@@ -496,11 -494,9 +496,11 @@@ const struct drm_i915_gem_object_ops i9
  
  static int __create_shmem(struct drm_i915_private *i915,
                          struct drm_gem_object *obj,
 -                        resource_size_t size)
 +                        resource_size_t size,
 +                        unsigned int flags)
  {
-       unsigned long shmem_flags = VM_NORESERVE;
 -      const vma_flags_t flags = mk_vma_flags(VMA_NORESERVE_BIT);
++      const vma_flags_t shmem_flags = mk_vma_flags(VMA_NORESERVE_BIT);
 +      struct vfsmount *huge_mnt;
        struct file *filp;
  
        drm_gem_private_object_init(&i915->drm, obj, size);
Simple merge
diff --cc fs/erofs/data.c
Simple merge
diff --cc fs/ext4/file.c
Simple merge
diff --cc fs/ntfs3/file.c
index ae8c47cac406f9c769849cff78d48eccc3bb4ee8,2902fc6d9a85d22297d1655d59391922ad0d329f..f53037e0ecb683706340419a346f9440136890ec
@@@ -276,7 -346,8 +276,7 @@@ static int ntfs_file_mmap_prepare(struc
        struct file *file = desc->file;
        struct inode *inode = file_inode(file);
        struct ntfs_inode *ni = ntfs_i(inode);
-       bool rw = desc->vm_flags & VM_WRITE;
 -      u64 from = ((u64)desc->pgoff << PAGE_SHIFT);
+       const bool rw = vma_desc_test_flags(desc, VMA_WRITE_BIT);
        int err;
  
        /* Avoid any operation if inode is bad. */
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc kernel/relay.c
Simple merge
diff --cc mm/hugetlb.c
Simple merge
diff --cc mm/internal.h
Simple merge
diff --cc mm/khugepaged.c
Simple merge
diff --cc mm/memcontrol.c
Simple merge
diff --cc mm/memory.c
Simple merge
diff --cc mm/page_alloc.c
Simple merge
diff --cc mm/shmem.c
Simple merge
Simple merge
index dca8f590c1e63913bfcea2d5b000b203d17072d5,4847c6d6c1b0e2240a3897a53d1d49c26428ef0a..7a5de4e9bf520c66cb06bc21ef58b6496f1c0191
@@@ -72,9 -72,10 +72,10 @@@ TEST_GEN_FILES += madv_populat
  TEST_GEN_FILES += map_fixed_noreplace
  TEST_GEN_FILES += map_hugetlb
  TEST_GEN_FILES += map_populate
 -ifneq (,$(filter $(ARCH),arm64 riscv riscv64 x86 x86_64))
 +ifneq (,$(filter $(ARCH),arm64 riscv riscv64 x86 x86_64 loongarch32 loongarch64))
  TEST_GEN_FILES += memfd_secret
  endif
+ TEST_GEN_FILES += memory-failure
  TEST_GEN_FILES += migration
  TEST_GEN_FILES += mkdirty
  TEST_GEN_FILES += mlock-random-test