Commit f17686aa authored by Sean Christopherson's avatar Sean Christopherson Committed by Paolo Bonzini

KVM: selftests: Add vm_create_*() variants to expose/return 'struct vcpu'

Add VM creation helpers to expose/return 'struct vcpu' so that tests
don't have to hardcode a VCPU_ID or make assumptions about what vCPU ID
is used by the framework just to retrieve a vCPU the test created.
Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 6ebfef83
...@@ -628,6 +628,22 @@ struct kvm_vm *vm_create_with_vcpus(enum vm_guest_mode mode, uint32_t nr_vcpus, ...@@ -628,6 +628,22 @@ struct kvm_vm *vm_create_with_vcpus(enum vm_guest_mode mode, uint32_t nr_vcpus,
/* Create a default VM without any vcpus. */ /* Create a default VM without any vcpus. */
struct kvm_vm *vm_create_without_vcpus(enum vm_guest_mode mode, uint64_t pages); struct kvm_vm *vm_create_without_vcpus(enum vm_guest_mode mode, uint64_t pages);
/*
* Create a VM with a single vCPU with reasonable defaults and @extra_mem_pages
* additional pages of guest memory. Returns the VM and vCPU (via out param).
*/
struct kvm_vm *__vm_create_with_one_vcpu(struct vcpu **vcpu,
uint64_t extra_mem_pages,
void *guest_code);
static inline struct kvm_vm *vm_create_with_one_vcpu(struct vcpu **vcpu,
void *guest_code)
{
return __vm_create_with_one_vcpu(vcpu, 0, guest_code);
}
struct vcpu *vm_recreate_with_one_vcpu(struct kvm_vm *vm);
/* /*
* Adds a vCPU with reasonable defaults (e.g. a stack) * Adds a vCPU with reasonable defaults (e.g. a stack)
* *
......
...@@ -369,6 +369,16 @@ struct kvm_vm *vm_create_default(uint32_t vcpuid, uint64_t extra_mem_pages, ...@@ -369,6 +369,16 @@ struct kvm_vm *vm_create_default(uint32_t vcpuid, uint64_t extra_mem_pages,
(uint32_t []){ vcpuid }); (uint32_t []){ vcpuid });
} }
struct kvm_vm *__vm_create_with_one_vcpu(struct vcpu **vcpu,
uint64_t extra_mem_pages,
void *guest_code)
{
struct kvm_vm *vm = vm_create_default(0, extra_mem_pages, guest_code);
*vcpu = vcpu_get(vm, 0);
return vm;
}
/* /*
* VM Restart * VM Restart
* *
...@@ -403,6 +413,14 @@ void kvm_vm_restart(struct kvm_vm *vmp) ...@@ -403,6 +413,14 @@ void kvm_vm_restart(struct kvm_vm *vmp)
} }
} }
struct vcpu *vm_recreate_with_one_vcpu(struct kvm_vm *vm)
{
kvm_vm_restart(vm);
vm_vcpu_add(vm, 0);
return vcpu_get(vm, 0);
}
/* /*
* Userspace Memory Region Find * Userspace Memory Region Find
* *
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment