mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-27 15:08:10 -04:00
KVM: x86: hyper-v: Use common code for hypercall userspace exit
Remove duplicate code to exit to userspace for hyper-v hypercalls and use a common place to exit. No functional change intended. Signed-off-by: Vipin Sharma <vipinsh@google.com> Suggested-by: Sean Christopherson <seanjc@google.com> Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com> Link: https://lore.kernel.org/r/20221212183720.4062037-9-vipinsh@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
This commit is contained in:
committed by
Sean Christopherson
parent
2eb398df77
commit
1a9df3262a
@@ -2531,14 +2531,7 @@ int kvm_hv_hypercall(struct kvm_vcpu *vcpu)
|
||||
ret = HV_STATUS_INVALID_HYPERCALL_INPUT;
|
||||
break;
|
||||
}
|
||||
vcpu->run->exit_reason = KVM_EXIT_HYPERV;
|
||||
vcpu->run->hyperv.type = KVM_EXIT_HYPERV_HCALL;
|
||||
vcpu->run->hyperv.u.hcall.input = hc.param;
|
||||
vcpu->run->hyperv.u.hcall.params[0] = hc.ingpa;
|
||||
vcpu->run->hyperv.u.hcall.params[1] = hc.outgpa;
|
||||
vcpu->arch.complete_userspace_io =
|
||||
kvm_hv_hypercall_complete_userspace;
|
||||
return 0;
|
||||
goto hypercall_userspace_exit;
|
||||
case HVCALL_FLUSH_VIRTUAL_ADDRESS_LIST:
|
||||
if (unlikely(hc.var_cnt)) {
|
||||
ret = HV_STATUS_INVALID_HYPERCALL_INPUT;
|
||||
@@ -2597,14 +2590,7 @@ int kvm_hv_hypercall(struct kvm_vcpu *vcpu)
|
||||
ret = HV_STATUS_OPERATION_DENIED;
|
||||
break;
|
||||
}
|
||||
vcpu->run->exit_reason = KVM_EXIT_HYPERV;
|
||||
vcpu->run->hyperv.type = KVM_EXIT_HYPERV_HCALL;
|
||||
vcpu->run->hyperv.u.hcall.input = hc.param;
|
||||
vcpu->run->hyperv.u.hcall.params[0] = hc.ingpa;
|
||||
vcpu->run->hyperv.u.hcall.params[1] = hc.outgpa;
|
||||
vcpu->arch.complete_userspace_io =
|
||||
kvm_hv_hypercall_complete_userspace;
|
||||
return 0;
|
||||
goto hypercall_userspace_exit;
|
||||
}
|
||||
default:
|
||||
ret = HV_STATUS_INVALID_HYPERCALL_CODE;
|
||||
@@ -2613,6 +2599,15 @@ int kvm_hv_hypercall(struct kvm_vcpu *vcpu)
|
||||
|
||||
hypercall_complete:
|
||||
return kvm_hv_hypercall_complete(vcpu, ret);
|
||||
|
||||
hypercall_userspace_exit:
|
||||
vcpu->run->exit_reason = KVM_EXIT_HYPERV;
|
||||
vcpu->run->hyperv.type = KVM_EXIT_HYPERV_HCALL;
|
||||
vcpu->run->hyperv.u.hcall.input = hc.param;
|
||||
vcpu->run->hyperv.u.hcall.params[0] = hc.ingpa;
|
||||
vcpu->run->hyperv.u.hcall.params[1] = hc.outgpa;
|
||||
vcpu->arch.complete_userspace_io = kvm_hv_hypercall_complete_userspace;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void kvm_hv_init_vm(struct kvm *kvm)
|
||||
|
||||
Reference in New Issue
Block a user