On Fri, Dec 18, 2015 at 05:01:59PM +0100, Paolo Bonzini wrote: > On 18/12/2015 16:19, Pavel Fedin wrote: > > As far as i understand this code, KVM_EXIT_HYPERV is called when one > > of three MSRs are accessed. But, shouldn't we have implemented > > instead something more generic, like KVM_EXIT_REG_IO, which would > > work similar to KVM_EXIT_PIO or KVM_EXIT_MMIO, but carry register > > code and value? > > Yes, we considered that. There were actually patches for this as well. > However, in this case the register is still emulated in the kernel, and > userspace just gets informed of the new value. > > > This would allow us to solve the same task which we have done here, > > but this solution would be reusable for other devices and other > > archirectures. What if in future we have more system registers to > > emulate in userspace? > > If we do get that, we will just rename KVM_EXIT_HYPERV to > KVM_EXIT_MSR_ACCESS, and KVM_EXIT_HYPERV_SYNIC to > KVM_EXIT_MSR_HYPERV_SYNIC, and struct kvm_hyperv_exit to kvm_msr_exit. A generic implemenation will probably just convey (msr#, value) pair, and KVM_EXIT_MSR_HYPERV_SYNIC wouldn't be needed at all. I don't immediately see why it wouldn't work for us; we'd have reused the infrastructure if it existed when we started our work. I didn't see Peter's patches yet; maybe we can come up with an interim solution to fit in the merge window but expose a sufficiently generic API. Roman. -- 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