Here is a series of patches based on v6.6-rc3: mostly cleanups in mm/mempolicy.c, but finally removing the pseudo-vma from shmem folio allocation, and removing the mmap_lock around folio migration for mbind and migrate_pages syscalls. Applies cleanly to any v6.6-rc so far, but not quite to mm-unstable or linux-next: a couple of rejects in mm/mempolicy.c (clashing with the vma_start_write() in do_mbind() and the foliation in mpol_misplaced()) and in mm/swap_state.c (clashing with zswap mods). Adjustments will also be needed if hugetlb page->index changes to PAGE_SIZE: interleave has to co-operate with that. After some review, a v2 will probably be issued, based then on mm-unstable. 01/12 hugetlbfs: drop shared NUMA mempolicy pretence 02/12 kernfs: drop shared NUMA mempolicy hooks 03/12 mempolicy: fix migrate_pages(2) syscall return 04/12 mempolicy trivia: delete those ancient pr_debug()s 05/12 mempolicy trivia: slightly more consistent naming 06/12 mempolicy trivia: use pgoff_t in shared mempolicy tree 07/12 mempolicy: mpol_shared_policy_init() without pseudo-vma 08/12 mempolicy: remove confusing MPOL_MF_LAZY dead code 09/12 mm: add page_rmappable_folio() wrapper 10/12 mempolicy: alloc_pages_mpol() for NUMA policy without vma 11/12 mempolicy: mmap_lock is not needed while migrating folios 12/12 mempolicy: migration attempt to match interleave nodes fs/hugetlbfs/inode.c | 41 +- fs/kernfs/file.c | 49 -- fs/proc/task_mmu.c | 5 +- include/linux/gfp.h | 10 +- include/linux/huge_mm.h | 13 + include/linux/hugetlb.h | 11 - include/linux/mempolicy.h | 36 +- include/linux/mm.h | 2 +- include/uapi/linux/mempolicy.h | 2 +- ipc/shm.c | 21 +- mm/hugetlb.c | 38 +- mm/mempolicy.c | 952 ++++++++++++++++------------------- mm/page_alloc.c | 8 +- mm/shmem.c | 102 ++-- mm/swap.h | 9 +- mm/swap_state.c | 86 ++-- 16 files changed, 617 insertions(+), 768 deletions(-) Hugh