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@...). 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(-)