Update the set_memory_attributes-related selftest library functions to support specification of flags.
Signed-off-by: Ackerley Tng <[email protected]> --- tools/testing/selftests/kvm/include/kvm_util.h | 36 ++++++++++++++++---------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing/selftests/kvm/include/kvm_util.h index e4de0050d1ab3..a89a4f85aefdb 100644 --- a/tools/testing/selftests/kvm/include/kvm_util.h +++ b/tools/testing/selftests/kvm/include/kvm_util.h @@ -459,13 +459,14 @@ static inline void vm_set_memory_attributes(struct kvm_vm *vm, uint64_t gpa, static inline int __gmem_set_memory_attributes(int fd, loff_t offset, uint64_t size, uint64_t attributes, - loff_t *error_offset) + loff_t *error_offset, + u64 flags) { struct kvm_memory_attributes2 attr = { .attributes = attributes, .offset = offset, .size = size, - .flags = 0, + .flags = flags, }; int r; @@ -478,27 +479,30 @@ static inline int __gmem_set_memory_attributes(int fd, loff_t offset, } static inline int __gmem_set_private(int fd, loff_t offset, uint64_t size, - loff_t *error_offset) + loff_t *error_offset, u64 flags) { return __gmem_set_memory_attributes(fd, offset, size, KVM_MEMORY_ATTRIBUTE_PRIVATE, - error_offset); + error_offset, flags); } static inline int __gmem_set_shared(int fd, loff_t offset, uint64_t size, - loff_t *error_offset) + loff_t *error_offset, u64 flags) { - return __gmem_set_memory_attributes(fd, offset, size, 0, error_offset); + return __gmem_set_memory_attributes(fd, offset, size, 0, + error_offset, flags); } static inline void gmem_set_memory_attributes(int fd, loff_t offset, - uint64_t size, uint64_t attributes) + uint64_t size, + uint64_t attributes, + u64 flags) { struct kvm_memory_attributes2 attr = { .attributes = attributes, .offset = offset, .size = size, - .flags = 0, + .flags = flags, }; TEST_ASSERT_SUPPORTED_ATTRIBUTES(attributes); @@ -511,16 +515,19 @@ static inline void gmem_set_memory_attributes(int fd, loff_t offset, static inline void gmem_set_private(int fd, loff_t offset, uint64_t size) { - gmem_set_memory_attributes(fd, offset, size, KVM_MEMORY_ATTRIBUTE_PRIVATE); + gmem_set_memory_attributes(fd, offset, size, KVM_MEMORY_ATTRIBUTE_PRIVATE, + KVM_SET_MEMORY_ATTRIBUTES2_ZERO); } static inline void gmem_set_shared(int fd, loff_t offset, uint64_t size) { - gmem_set_memory_attributes(fd, offset, size, 0); + gmem_set_memory_attributes(fd, offset, size, 0, + KVM_SET_MEMORY_ATTRIBUTES2_ZERO); } static inline void vm_mem_set_memory_attributes(struct kvm_vm *vm, uint64_t gpa, - uint64_t size, uint64_t attrs) + uint64_t size, uint64_t attrs, + u64 flags) { if (kvm_has_gmem_attributes) { uint64_t end = gpa + size; @@ -532,9 +539,10 @@ static inline void vm_mem_set_memory_attributes(struct kvm_vm *vm, uint64_t gpa, fd = kvm_gpa_to_guest_memfd(vm, addr, &fd_offset, &len); len = min(end - addr, len); - gmem_set_memory_attributes(fd, fd_offset, len, attrs); + gmem_set_memory_attributes(fd, fd_offset, len, attrs, flags); } } else { + TEST_ASSERT(!flags, "Flags are not supported."); vm_set_memory_attributes(vm, gpa, size, attrs); } } @@ -542,13 +550,13 @@ static inline void vm_mem_set_memory_attributes(struct kvm_vm *vm, uint64_t gpa, static inline void vm_mem_set_private(struct kvm_vm *vm, uint64_t gpa, uint64_t size) { - vm_mem_set_memory_attributes(vm, gpa, size, KVM_MEMORY_ATTRIBUTE_PRIVATE); + vm_mem_set_memory_attributes(vm, gpa, size, KVM_MEMORY_ATTRIBUTE_PRIVATE, 0); } static inline void vm_mem_set_shared(struct kvm_vm *vm, uint64_t gpa, uint64_t size) { - vm_mem_set_memory_attributes(vm, gpa, size, 0); + vm_mem_set_memory_attributes(vm, gpa, size, 0, 0); } void vm_guest_mem_fallocate(struct kvm_vm *vm, uint64_t gpa, uint64_t size, -- 2.53.0.851.ga537e3e6e9-goog
