From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jan Kiszka Subject: [PATCH] KVM: VMX: Update instruction length on intercepted BP Date: Sat, 13 Feb 2010 10:31:12 +0100 Message-ID: <4B767160.4070609@web.de> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enig7FDED79790FEFAA5A678C5CB" Cc: kvm To: Avi Kivity , Marcelo Tosatti Return-path: Received: from fmmailgate03.web.de ([217.72.192.234]:58832 "EHLO fmmailgate03.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754041Ab0BMJbW (ORCPT ); Sat, 13 Feb 2010 04:31:22 -0500 Sender: kvm-owner@vger.kernel.org List-ID: This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enig7FDED79790FEFAA5A678C5CB Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable From: Jan Kiszka We intercept #BP while in guest debugging mode. As VM exists due to intercepted exceptions do not necessarily come with valid idt_vectoring, we have to update event_exit_inst_len explicitly in such cases. At least in the absence of migration, this ensures that re-injections of #BP will find and use the correct instruction length. Signed-off-by: Jan Kiszka --- Please consider for stable, this fixes guest debugging scenarios. arch/x86/kvm/vmx.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index f82b072..e9f64e8 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -2775,6 +2775,8 @@ static int handle_rmode_exception(struct kvm_vcpu *= vcpu, kvm_queue_exception(vcpu, vec); return 1; case BP_VECTOR: + to_vmx(vcpu)->vcpu.arch.event_exit_inst_len =3D + vmcs_read32(VM_EXIT_INSTRUCTION_LEN); if (vcpu->guest_debug & KVM_GUESTDBG_USE_SW_BP) return 0; /* fall through */ @@ -2897,6 +2899,8 @@ static int handle_exception(struct kvm_vcpu *vcpu) kvm_run->debug.arch.dr7 =3D vmcs_readl(GUEST_DR7); /* fall through */ case BP_VECTOR: + vmx->vcpu.arch.event_exit_inst_len =3D + vmcs_read32(VM_EXIT_INSTRUCTION_LEN); kvm_run->exit_reason =3D KVM_EXIT_DEBUG; kvm_run->debug.arch.pc =3D vmcs_readl(GUEST_CS_BASE) + rip; kvm_run->debug.arch.exception =3D ex_no; --------------enig7FDED79790FEFAA5A678C5CB Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.9 (GNU/Linux) Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org iEYEARECAAYFAkt2cWgACgkQitSsb3rl5xRS5QCfdv1g8bzEMOX1BEDrC+mvzvqF gtoAn3MfaZAVLT6RWy47cTBDhdVyePAt =6zHN -----END PGP SIGNATURE----- --------------enig7FDED79790FEFAA5A678C5CB--