KVM: selftests: Convert kvm_pv_test away from VCPU_ID
Convert kvm_pv_test to use vm_create_with_one_vcpu() and pass arounda 'struct kvm_vcpu' object instead of using a global VCPU_ID. Opportunistically use vcpu_run() instead of _vcpu_run() with an open coded assert that KVM_RUN succeeded. Signed-off-by: Sean Christopherson <seanjc@google.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
5c6e31b3bc
commit
f323dbce3b
@ -171,24 +171,18 @@ static void handle_abort(struct ucall *uc)
|
||||
__FILE__, uc->args[1]);
|
||||
}
|
||||
|
||||
#define VCPU_ID 0
|
||||
|
||||
static void enter_guest(struct kvm_vm *vm)
|
||||
static void enter_guest(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
struct kvm_run *run;
|
||||
struct kvm_run *run = vcpu->run;
|
||||
struct ucall uc;
|
||||
int r;
|
||||
|
||||
run = vcpu_state(vm, VCPU_ID);
|
||||
|
||||
while (true) {
|
||||
r = _vcpu_run(vm, VCPU_ID);
|
||||
TEST_ASSERT(!r, "vcpu_run failed: %d\n", r);
|
||||
vcpu_run(vcpu->vm, vcpu->id);
|
||||
TEST_ASSERT(run->exit_reason == KVM_EXIT_IO,
|
||||
"unexpected exit reason: %u (%s)",
|
||||
run->exit_reason, exit_reason_str(run->exit_reason));
|
||||
|
||||
switch (get_ucall(vm, VCPU_ID, &uc)) {
|
||||
switch (get_ucall(vcpu->vm, vcpu->id, &uc)) {
|
||||
case UCALL_PR_MSR:
|
||||
pr_msr(&uc);
|
||||
break;
|
||||
@ -207,6 +201,7 @@ static void enter_guest(struct kvm_vm *vm)
|
||||
int main(void)
|
||||
{
|
||||
struct kvm_cpuid2 *best;
|
||||
struct kvm_vcpu *vcpu;
|
||||
struct kvm_vm *vm;
|
||||
|
||||
if (!kvm_check_cap(KVM_CAP_ENFORCE_PV_FEATURE_CPUID)) {
|
||||
@ -214,18 +209,18 @@ int main(void)
|
||||
exit(KSFT_SKIP);
|
||||
}
|
||||
|
||||
vm = vm_create_default(VCPU_ID, 0, guest_main);
|
||||
vm = vm_create_with_one_vcpu(&vcpu, guest_main);
|
||||
|
||||
vcpu_enable_cap(vm, VCPU_ID, KVM_CAP_ENFORCE_PV_FEATURE_CPUID, 1);
|
||||
vcpu_enable_cap(vm, vcpu->id, KVM_CAP_ENFORCE_PV_FEATURE_CPUID, 1);
|
||||
|
||||
best = kvm_get_supported_cpuid();
|
||||
clear_kvm_cpuid_features(best);
|
||||
vcpu_set_cpuid(vm, VCPU_ID, best);
|
||||
vcpu_set_cpuid(vm, vcpu->id, best);
|
||||
|
||||
vm_init_descriptor_tables(vm);
|
||||
vcpu_init_descriptor_tables(vm, VCPU_ID);
|
||||
vcpu_init_descriptor_tables(vm, vcpu->id);
|
||||
vm_install_exception_handler(vm, GP_VECTOR, guest_gp_handler);
|
||||
|
||||
enter_guest(vm);
|
||||
enter_guest(vcpu);
|
||||
kvm_vm_free(vm);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user