Commit 706aaa4f authored by Sean Christopherson's avatar Sean Christopherson Committed by Paolo Bonzini

KVM: selftests: Convert vmx_close_while_nested_test away from VCPU_ID

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: default avatarSean Christopherson <seanjc@google.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent ec7b769a
...@@ -18,15 +18,10 @@ ...@@ -18,15 +18,10 @@
#include "kselftest.h" #include "kselftest.h"
#define VCPU_ID 5
enum { enum {
PORT_L0_EXIT = 0x2000, PORT_L0_EXIT = 0x2000,
}; };
/* The virtual machine object. */
static struct kvm_vm *vm;
static void l2_guest_code(void) static void l2_guest_code(void)
{ {
/* Exit to L0 */ /* Exit to L0 */
...@@ -53,20 +48,22 @@ static void l1_guest_code(struct vmx_pages *vmx_pages) ...@@ -53,20 +48,22 @@ static void l1_guest_code(struct vmx_pages *vmx_pages)
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
vm_vaddr_t vmx_pages_gva; vm_vaddr_t vmx_pages_gva;
struct kvm_vcpu *vcpu;
struct kvm_vm *vm;
nested_vmx_check_supported(); 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). */ /* Allocate VMX pages and shared descriptors (vmx_pages). */
vcpu_alloc_vmx(vm, &vmx_pages_gva); 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 (;;) { for (;;) {
volatile struct kvm_run *run = vcpu_state(vm, VCPU_ID); volatile struct kvm_run *run = vcpu->run;
struct ucall uc; struct ucall uc;
vcpu_run(vm, VCPU_ID); vcpu_run(vm, vcpu->id);
TEST_ASSERT(run->exit_reason == KVM_EXIT_IO, TEST_ASSERT(run->exit_reason == KVM_EXIT_IO,
"Got exit_reason other than KVM_EXIT_IO: %u (%s)\n", "Got exit_reason other than KVM_EXIT_IO: %u (%s)\n",
run->exit_reason, run->exit_reason,
...@@ -75,7 +72,7 @@ int main(int argc, char *argv[]) ...@@ -75,7 +72,7 @@ int main(int argc, char *argv[])
if (run->io.port == PORT_L0_EXIT) if (run->io.port == PORT_L0_EXIT)
break; break;
switch (get_ucall(vm, VCPU_ID, &uc)) { switch (get_ucall(vm, vcpu->id, &uc)) {
case UCALL_ABORT: case UCALL_ABORT:
TEST_FAIL("%s", (const char *)uc.args[0]); TEST_FAIL("%s", (const char *)uc.args[0]);
/* NOT REACHED */ /* NOT REACHED */
......
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