From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gleb Natapov Subject: Re: [PATCH 07/24] KVM: x86 emulator: fix 0f 01 /5 emulation Date: Tue, 9 Mar 2010 16:33:04 +0200 Message-ID: <20100309143304.GR16909@redhat.com> References: <1268143762-4000-1-git-send-email-gleb@redhat.com> <1268143762-4000-8-git-send-email-gleb@redhat.com> <4B965ADB.2090305@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: kvm@vger.kernel.org To: Avi Kivity Return-path: Received: from mx1.redhat.com ([209.132.183.28]:35565 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753888Ab0CIOdG (ORCPT ); Tue, 9 Mar 2010 09:33:06 -0500 Received: from int-mx03.intmail.prod.int.phx2.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o29EX5eU008855 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 9 Mar 2010 09:33:06 -0500 Content-Disposition: inline In-Reply-To: <4B965ADB.2090305@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On Tue, Mar 09, 2010 at 04:27:39PM +0200, Avi Kivity wrote: > On 03/09/2010 04:09 PM, Gleb Natapov wrote: > >It is undefined and should generate #UD. > > > >Signed-off-by: Gleb Natapov > >--- > > arch/x86/kvm/emulate.c | 3 +++ > > 1 files changed, 3 insertions(+), 0 deletions(-) > > > >diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c > >index 2df510b..1a32b78 100644 > >--- a/arch/x86/kvm/emulate.c > >+++ b/arch/x86/kvm/emulate.c > >@@ -2486,6 +2486,9 @@ twobyte_insn: > > (c->src.val& 0x0f), ctxt->vcpu); > > c->dst.type = OP_NONE; > > break; > >+ case 5: /* not defined */ > >+ kvm_queue_exception(ctxt->vcpu, UD_VECTOR); > >+ goto done; > > case 7: /* invlpg*/ > > emulate_invlpg(ctxt->vcpu, memop); > > /* Disable writeback. */ > > Why is this needed? We can only get here if the guest tricks us > (otherwise the #UD would go back to the guest, or rather, we'd trap > it to see if it's a hypercall instruction, but not pass it on to the > emulator). > For completes. A lot of code we added recently is there only because guest can trick us to enter emulator. Unfortunately we have to take suck tricks into account. Without this patch if emulator gets here it will report failed emulation. -- Gleb.