On Fri, Jul 05, 2013 at 04:16:55PM -0300, Marcelo Tosatti wrote: > > MMIO/PIO emulation should be interrupted if the system is restarted. > Otherwise in progress IO emulation continues at the instruction pointer, > even after vcpus' IP has been modified by KVM_SET_REGS. > > Use IP change as an indicator to reset MMIO/PIO emulation state. > Userspace has to return to the kernel to complete pending IO operation. This is documented in Documentation/virtual/kvm/api.txt. If this is not what program does it is a bug. What userspace you see the problem with? > Signed-off-by: Marcelo Tosatti <mtosatti@xxxxxxxxxx> > > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index e8ba99c..9f7ce41 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -6144,6 +6144,10 @@ int kvm_arch_vcpu_ioctl_set_regs(struct kvm_vcpu *vcpu, struct kvm_regs *regs) > kvm_register_write(vcpu, VCPU_REGS_R15, regs->r15); > #endif > > + /* stop IO emulation cycle if RIP changes */ > + if (kvm_rip_read(vcpu) != regs->rip) > + vcpu->arch.complete_userspace_io = NULL; > + > kvm_rip_write(vcpu, regs->rip); > kvm_set_rflags(vcpu, regs->rflags); > -- Gleb. -- 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