From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH non-atomic-injection] KVM: Initialize rip for real mode interrupt injection Date: Wed, 18 Aug 2010 11:14:01 +0300 Message-ID: <4C6B9649.4030605@redhat.com> References: <1282117001-14608-1-git-send-email-avi@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org To: Mohammed Gamal Return-path: Received: from mx1.redhat.com ([209.132.183.28]:37941 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751998Ab0HRIOG (ORCPT ); Wed, 18 Aug 2010 04:14:06 -0400 In-Reply-To: <1282117001-14608-1-git-send-email-avi@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On 08/18/2010 10:36 AM, Avi Kivity wrote: > Signed-off-by: Avi Kivity > --- > arch/x86/kvm/x86.c | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index f6a31a1..e2b0e36 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -3967,6 +3967,7 @@ int kvm_inject_realmode_interrupt(struct kvm_vcpu *vcpu, int irq) > > vcpu->arch.emulate_ctxt.decode.op_bytes = 2; > vcpu->arch.emulate_ctxt.decode.ad_bytes = 2; > + vcpu->arch.emulate_ctxt.decode.eip = kvm_rip_read(vcpu); > ret = emulate_int_real(&vcpu->arch.emulate_ctxt,&emulate_ops, irq); > > if (ret != X86EMUL_CONTINUE) With this, the non-atomic-injection branch trips into an unemulated DAS instruction (when it doesn't inject an interrupt at the wrong place). -- I have a truly marvellous patch that fixes the bug which this signature is too narrow to contain.