Skip to content

Commit 8a53e13

Browse files
committed
KVM: selftests: Require KVM_CAP_USER_MEMORY2 for tests that create memslots
Explicitly require KVM_CAP_USER_MEMORY2 for selftests that create memslots, i.e. skip selftests that need memslots instead of letting them fail on KVM_SET_USER_MEMORY_REGION2. While it's ok to take a dependency on new kernel features, selftests should skip gracefully instead of failing hard when run on older kernels. Reported-by: Dan Carpenter <[email protected]> Closes: https://lore.kernel.org/all/[email protected] Suggested-by: Shuah Khan <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Sean Christopherson <[email protected]>
1 parent 20ecf59 commit 8a53e13

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

tools/testing/selftests/kvm/lib/kvm_util.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -930,6 +930,10 @@ void vm_set_user_memory_region(struct kvm_vm *vm, uint32_t slot, uint32_t flags,
930930
errno, strerror(errno));
931931
}
932932

933+
#define TEST_REQUIRE_SET_USER_MEMORY_REGION2() \
934+
__TEST_REQUIRE(kvm_has_cap(KVM_CAP_USER_MEMORY2), \
935+
"KVM selftests now require KVM_SET_USER_MEMORY_REGION2 (introduced in v6.8)")
936+
933937
int __vm_set_user_memory_region2(struct kvm_vm *vm, uint32_t slot, uint32_t flags,
934938
uint64_t gpa, uint64_t size, void *hva,
935939
uint32_t guest_memfd, uint64_t guest_memfd_offset)
@@ -944,6 +948,8 @@ int __vm_set_user_memory_region2(struct kvm_vm *vm, uint32_t slot, uint32_t flag
944948
.guest_memfd_offset = guest_memfd_offset,
945949
};
946950

951+
TEST_REQUIRE_SET_USER_MEMORY_REGION2();
952+
947953
return ioctl(vm->fd, KVM_SET_USER_MEMORY_REGION2, &region);
948954
}
949955

@@ -970,6 +976,8 @@ void vm_mem_add(struct kvm_vm *vm, enum vm_mem_backing_src_type src_type,
970976
size_t mem_size = npages * vm->page_size;
971977
size_t alignment;
972978

979+
TEST_REQUIRE_SET_USER_MEMORY_REGION2();
980+
973981
TEST_ASSERT(vm_adjust_num_guest_pages(vm->mode, npages) == npages,
974982
"Number of guest pages is not compatible with the host. "
975983
"Try npages=%d", vm_adjust_num_guest_pages(vm->mode, npages));

0 commit comments

Comments
 (0)