From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paolo Bonzini Date: Mon, 6 Nov 2023 15:26:44 +0100 Subject: [PATCH 31/34] KVM: selftests: Expand set_memory_region_test to validate guest_memfd() In-Reply-To: <20231105163040.14904-32-pbonzini@redhat.com> References: <20231105163040.14904-1-pbonzini@redhat.com> <20231105163040.14904-32-pbonzini@redhat.com> Message-ID: List-Id: To: kvm-riscv@lists.infradead.org MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit On 11/5/23 17:30, Paolo Bonzini wrote: > From: Chao Peng > > Expand set_memory_region_test to exercise various positive and negative > testcases for private memory. > > - Non-guest_memfd() file descriptor for private memory > - guest_memfd() from different VM > - Overlapping bindings > - Unaligned bindings This needs a small fixup: diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/testing/selftests/kvm/include/kvm_util_base.h index e4d2cd9218b2..1b58f943562f 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -819,6 +819,7 @@ static inline struct kvm_vm *vm_create_barebones(void) return ____vm_create(VM_SHAPE_DEFAULT); } +#ifdef __x86_64__ static inline struct kvm_vm *vm_create_barebones_protected_vm(void) { const struct vm_shape shape = { @@ -828,6 +829,7 @@ static inline struct kvm_vm *vm_create_barebones_protected_vm(void) return ____vm_create(shape); } +#endif static inline struct kvm_vm *vm_create(uint32_t nr_runnable_vcpus) { diff --git a/tools/testing/selftests/kvm/set_memory_region_test.c b/tools/testing/selftests/kvm/set_memory_region_test.c index 1891774eb6d4..302c7a46955b 100644 --- a/tools/testing/selftests/kvm/set_memory_region_test.c +++ b/tools/testing/selftests/kvm/set_memory_region_test.c @@ -386,6 +386,7 @@ static void test_add_max_memory_regions(void) } +#ifdef __x86_64__ static void test_invalid_guest_memfd(struct kvm_vm *vm, int memfd, size_t offset, const char *msg) { @@ -476,14 +477,13 @@ static void test_add_overlapping_private_memory_regions(void) close(memfd); kvm_vm_free(vm); } +#endif int main(int argc, char *argv[]) { #ifdef __x86_64__ int i, loops; -#endif -#ifdef __x86_64__ /* * FIXME: the zero-memslot test fails on aarch64 and s390x because * KVM_RUN fails with ENOEXEC or EFAULT. @@ -493,6 +493,7 @@ int main(int argc, char *argv[]) test_add_max_memory_regions(); +#ifdef __x86_64__ if (kvm_has_cap(KVM_CAP_GUEST_MEMFD) && (kvm_check_cap(KVM_CAP_VM_TYPES) & BIT(KVM_X86_SW_PROTECTED_VM))) { test_add_private_memory_region(); @@ -501,7 +502,6 @@ int main(int argc, char *argv[]) pr_info("Skipping tests for KVM_MEM_GUEST_MEMFD memory regions\n"); } -#ifdef __x86_64__ if (argc > 1) loops = atoi_positive("Number of iterations", argv[1]); else in order to compile successfully on non-x86 platforms.