Hi Andrew, This is my series to add support for SVM atomics in Nouveau rebased onto v5.13-rc6-mmots-2021-06-15-20-28. Functionally there are no changes from the previous v10, however some changes were made during the rebase. If anyone would like to see a diff-of-diffs I can post it but my exhaustive (assuming I didn't miss anything in the diff-of-diff) summary below is probably easier to read. Hugh - based on our previous disscussion I'm reasonably confident I haven't missed anything from you in the rebase, but patch 4 ("Split migration into its own function") might be worth looking at as that contained the largest conflicts. Thanks. [PATCH 01/10] mm: Remove special swap entry functions - Fixed migration_entry_to_page() reference in __split_huge_pmd_locked() introduced by Hugh's "mm/thp: fix __split_huge_pmd_locked() on shmem migration entry". - Fixed migration_entry_to_page() reference in page_vma_mapped_walk() changed by Hugh in "mm: page_vma_mapped_walk(): prettify PVMW_MIGRATION block" [PATCH 02/10] mm/swapops: Rework swap entry manipulation code - No changes required. [PATCH 03/10] mm/rmap: Split try_to_munlock from try_to_unmap - No changes required. [PATCH 04/10] mm/rmap: Split migration into its own function - Updated try_to_migrate_one() and try_to_migrate() to accept TTU_SYNC flag. - Updated mmu notifier range calculation in try_to_migrate_one() to use vma_address_end() introduced by Hugh in "mm/thp: fix vma_address() if virtual address below file offset". - Update to unmap_page() in mm/hugh_memory.c to pass TTU_SYNC and check page_mapped() now that try_to_{unmap|migrate} return void. [PATCH 05/10] mm: Rename migrate_pgmap_owner - Added Peter's Reviewed-by. [PATCH 06/10] mm/memory.c: Allow different return codes for copy_non_present_pte() - Updated call to copy_nonpresent_pte() for extra arguments added by Peter in "mm/userfaultfd: fix uffd-wp special cases for fork()". - Added Peter's Reviewed-by. [PATCH 07/10] mm: Device exclusive memory access - s/vma/src_vma/ in copy_nonpresent_pte() due to "mm/userfaultfd: fix uffd-wp special cases for fork()". - Skip calling rmap_walk on tail pages. [PATCH 08/10] mm: Selftests for exclusive device memory - Squashed in a fix from Colin King (see https://lore.kernel.org/kernel-janitors/20210526170530.3766167-1-colin.king@xxxxxxxxxxxxx/). Not sure what the best way of attributing that is though given it was against next. [PATCH 09/10] nouveau/svm: Refactor nouveau_range_fault - No changes. [PATCH 10/10] nouveau/svm: Implement atomic SVM access - No changes. Alistair Popple (10): mm: Remove special swap entry functions mm/swapops: Rework swap entry manipulation code mm/rmap: Split try_to_munlock from try_to_unmap mm/rmap: Split migration into its own function mm: Rename migrate_pgmap_owner mm/memory.c: Allow different return codes for copy_nonpresent_pte() mm: Device exclusive memory access mm: Selftests for exclusive device memory nouveau/svm: Refactor nouveau_range_fault nouveau/svm: Implement atomic SVM access Documentation/vm/hmm.rst | 19 +- Documentation/vm/unevictable-lru.rst | 33 +- arch/s390/mm/pgtable.c | 2 +- drivers/gpu/drm/nouveau/include/nvif/if000c.h | 1 + drivers/gpu/drm/nouveau/nouveau_svm.c | 156 ++++- drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.h | 1 + .../drm/nouveau/nvkm/subdev/mmu/vmmgp100.c | 6 + fs/proc/task_mmu.c | 23 +- include/linux/mmu_notifier.h | 26 +- include/linux/rmap.h | 11 +- include/linux/swap.h | 13 +- include/linux/swapops.h | 123 ++-- lib/test_hmm.c | 127 +++- lib/test_hmm_uapi.h | 2 + mm/debug_vm_pgtable.c | 12 +- mm/hmm.c | 12 +- mm/huge_memory.c | 48 +- mm/hugetlb.c | 10 +- mm/memcontrol.c | 2 +- mm/memory.c | 175 ++++- mm/migrate.c | 51 +- mm/mlock.c | 12 +- mm/mprotect.c | 18 +- mm/page_vma_mapped.c | 15 +- mm/rmap.c | 612 +++++++++++++++--- tools/testing/selftests/vm/hmm-tests.c | 158 +++++ 26 files changed, 1341 insertions(+), 327 deletions(-) -- 2.20.1