Hello! > > It depends. Can i read about these hypercalls somewhere? Is there any documentation? > I don't know about a documentation, but you can look at the code of > Hyper-V hypercall handling inside KVM: > > https://github.com/torvalds/linux/blob/master/arch/x86/kvm/hyperv.c#L346 Aha, i see, so vmmcall CPU instruction is employed. Well, i believe this very well fits into the sematics of KVM_EXIT_HYPERCALL, because it's a true hypercall. > The code simply decodes hypercall parameters from vcpu registers then > handle hypercall code in switch and encode return code inside vcpu > registers. Probably encode and decode of hypercall parameters/return > code can be done in QEMU so we need only some exit with parameter that > this is Hyper-V hypercall and probably KVM_EXIT_HYPERCALL is good for it. Or you could even reuse the whole structure, it has all you need: __u64 nr; /* Reserved for x86, other architectures can use it, for example ARM "hvc #nr" */ __u64 args[6]; /* rax, rbx, rcx, rdx, rdi, rsi */ __u64 ret; __u32 longmode; /* longmode; other architectures (like ARM64) can also make sense of it */ Or you could put in struct kvm_regs instead of args and ret, and allow the userspace to manipulate it. > But KVM_EXIT_HYPERCALL is not used inside KVM/QEMU so requires > implementation. I guess your hypercalls to be introduced using KVM_EXIT_HYPERV are also not used inside qemu so require implementation :) Kind regards, Pavel Fedin Expert Engineer Samsung Electronics Research center Russia -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html