KVM: selftests: Convert vmx_close_while_nested_test away from VCPU_ID
authorSean Christopherson <seanjc@google.com>
Wed, 16 Feb 2022 00:26:58 +0000 (16:26 -0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Sat, 11 Jun 2022 15:46:47 +0000 (11:46 -0400)
Convert vmx_close_while_nested_test to use vm_create_with_one_vcpu() and
pass around a 'struct kvm_vcpu' object instead of using a global VCPU_ID.
Note, this is a "functional" change in the sense that the test now
creates a vCPU with vcpu_id==0 instead of vcpu_id==5.  The non-zero
VCPU_ID was 100% arbitrary and added little to no validation coverage.
If testing non-zero vCPU IDs is desirable for generic tests, that can be
done in the future by tweaking the VM creation helpers.

Opportunistically make the "vm" variable local, it is unused outside of
main().

Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
tools/testing/selftests/kvm/x86_64/vmx_close_while_nested_test.c

index edac883..da03630 100644 (file)
 
 #include "kselftest.h"
 
-#define VCPU_ID                5
-
 enum {
        PORT_L0_EXIT = 0x2000,
 };
 
-/* The virtual machine object. */
-static struct kvm_vm *vm;
-
 static void l2_guest_code(void)
 {
        /* Exit to L0 */
@@ -53,20 +48,22 @@ static void l1_guest_code(struct vmx_pages *vmx_pages)
 int main(int argc, char *argv[])
 {
        vm_vaddr_t vmx_pages_gva;
+       struct kvm_vcpu *vcpu;
+       struct kvm_vm *vm;
 
        nested_vmx_check_supported();
 
-       vm = vm_create_default(VCPU_ID, 0, (void *) l1_guest_code);
+       vm = vm_create_with_one_vcpu(&vcpu, l1_guest_code);
 
        /* Allocate VMX pages and shared descriptors (vmx_pages). */
        vcpu_alloc_vmx(vm, &vmx_pages_gva);
-       vcpu_args_set(vm, VCPU_ID, 1, vmx_pages_gva);
+       vcpu_args_set(vm, vcpu->id, 1, vmx_pages_gva);
 
        for (;;) {
-               volatile struct kvm_run *run = vcpu_state(vm, VCPU_ID);
+               volatile struct kvm_run *run = vcpu->run;
                struct ucall uc;
 
-               vcpu_run(vm, VCPU_ID);
+               vcpu_run(vm, vcpu->id);
                TEST_ASSERT(run->exit_reason == KVM_EXIT_IO,
                            "Got exit_reason other than KVM_EXIT_IO: %u (%s)\n",
                            run->exit_reason,
@@ -75,7 +72,7 @@ int main(int argc, char *argv[])
                if (run->io.port == PORT_L0_EXIT)
                        break;
 
-               switch (get_ucall(vm, VCPU_ID, &uc)) {
+               switch (get_ucall(vm, vcpu->id, &uc)) {
                case UCALL_ABORT:
                        TEST_FAIL("%s", (const char *)uc.args[0]);
                        /* NOT REACHED */