On Thu, Jan 14, 2016 at 11:30:43AM +0300, Pavel Fedin wrote: > > --- a/Documentation/virtual/kvm/api.txt > > +++ b/Documentation/virtual/kvm/api.txt > > @@ -3359,6 +3359,14 @@ Hyper-V SynIC state change. Notification is used to > > remap SynIC > > event/message pages and to enable/disable SynIC messages/events processing > > in userspace. > > > > + /* KVM_EXIT_HYPERV_HCALL */ > > + struct { > > + __u64 input; > > + __u64 params[2]; > > + __u64 result; > > + } hv_hcall; > > +Indicates that the VCPU exits into userspace to process some guest > > +Hyper-V hypercalls. > > Why introducing this? We already have KVM_EXIT_HYPERCALL, which is exactly > the same. AFAIK it's not used at the moment. > Additionally, in theory we could have hypercalls handled in userspace for > something else except HyperV. And not only for x86.
We thought reusing KVM_EXIT_HYPERCALL was a bad idea exactly because of that. Hypercalls are not universal, the calling and return conventions are hypervisor-specific. KVM already has to make the decision that the particular vmexit is a HyperV hypercall; it appears unnatural to then pass the data on to userspace in a generic structure and have them make that decision again. Roman.