Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mm/migrate: add migrate-shared test for migrate_vma_*()

Add a migrate_vma_*() self test for mmap(MAP_SHARED) to verify that
!vma_anonymous() ranges won't be migrated.

Signed-off-by: Ralph Campbell <rcampbell@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Jerome Glisse <jglisse@redhat.com>
Cc: John Hubbard <jhubbard@nvidia.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Jason Gunthorpe <jgg@mellanox.com>
Cc: "Bharata B Rao" <bharata@linux.ibm.com>
Cc: Shuah Khan <shuah@kernel.org>
Link: http://lkml.kernel.org/r/20200710194840.7602-3-rcampbell@nvidia.com
Link: http://lkml.kernel.org/r/20200709165711.26584-3-rcampbell@nvidia.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Ralph Campbell and committed by
Linus Torvalds
b0fc0f3f 0744f280

+35
+35
tools/testing/selftests/vm/hmm-tests.c
··· 942 942 } 943 943 944 944 /* 945 + * Migrate anonymous shared memory to device private memory. 946 + */ 947 + TEST_F(hmm, migrate_shared) 948 + { 949 + struct hmm_buffer *buffer; 950 + unsigned long npages; 951 + unsigned long size; 952 + int ret; 953 + 954 + npages = ALIGN(HMM_BUFFER_SIZE, self->page_size) >> self->page_shift; 955 + ASSERT_NE(npages, 0); 956 + size = npages << self->page_shift; 957 + 958 + buffer = malloc(sizeof(*buffer)); 959 + ASSERT_NE(buffer, NULL); 960 + 961 + buffer->fd = -1; 962 + buffer->size = size; 963 + buffer->mirror = malloc(size); 964 + ASSERT_NE(buffer->mirror, NULL); 965 + 966 + buffer->ptr = mmap(NULL, size, 967 + PROT_READ | PROT_WRITE, 968 + MAP_SHARED | MAP_ANONYMOUS, 969 + buffer->fd, 0); 970 + ASSERT_NE(buffer->ptr, MAP_FAILED); 971 + 972 + /* Migrate memory to device. */ 973 + ret = hmm_dmirror_cmd(self->fd, HMM_DMIRROR_MIGRATE, buffer, npages); 974 + ASSERT_EQ(ret, -ENOENT); 975 + 976 + hmm_buffer_free(buffer); 977 + } 978 + 979 + /* 945 980 * Try to migrate various memory types to device private memory. 946 981 */ 947 982 TEST_F(hmm2, migrate_mixed)