From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Vivier Subject: Re: use of saved_eip Date: Wed, 26 Sep 2007 23:51:59 +0200 Message-ID: <46FAD47F.2040701@bull.net> References: <5461330FA59EDB46BE9AB8AAF2C431AD054D2CAC@scsmsx412.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: kvm-devel , Avi Kivity To: "Kamble, Nitin A" Return-path: In-Reply-To: <5461330FA59EDB46BE9AB8AAF2C431AD054D2CAC-1a9uaKK1+wJcIJlls4ac1rfspsVTdybXVpNB7YpNyf8@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org Errors-To: kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org List-Id: kvm.vger.kernel.org Kamble, Nitin A wrote: > Hi Vivier, Avi, Hi Nitin, (BTW, my first name is Laurent) > In order to debug faulures in my tree, I was looking at the saved_eip > changes coming from your commit. I did not understand the use of > saved_eip properly. like why is it used in the emulation of the pop > instruction. Can you please help me understand it's usage? in emulate_instruction(), we decode instructions and copy vcpu registers to ctxt (in x86_decode_insn()), then we really emulate the instruction (in x86_emulate_insn()). In x86_emulate_insn(), if we have a REP prefix, we decrement ECX and set EIP to next instruction, then we try to emulate the instruction. If the emulation fails (because this is a MMIO for instance) we have to restore the initial values of ECX and EIP because we will re-enter in x86_emulate_insn() once the IO has been managed by Qemu and thus ECX is decremented again and EIP set to next instruction again. And you are right: _we_don't_have_to_do_that_for_the_pop_instruction_, it's a mistake because the REP prefix hasn't been processed at this level, it is managed (ECX and EIP are modified) later. So, you can remove from pop_instruction: 1383 if (c->rep_prefix) { 1384 c->regs[VCPU_REGS_RCX] = saved_rcx; 1385 c->eip = saved_eip; 1386 } Sorry for the inconvenience, Laurent ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/