From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matteo Subject: X86EMUL_PROPAGATE_FAULT Date: Thu, 05 May 2011 17:05:16 +0200 Message-ID: <4DC2BCAC.8060703@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit To: kvm@vger.kernel.org Return-path: Received: from mail-wy0-f174.google.com ([74.125.82.174]:41933 "EHLO mail-wy0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753132Ab1EEPFT (ORCPT ); Thu, 5 May 2011 11:05:19 -0400 Received: by wya21 with SMTP id 21so1686521wya.19 for ; Thu, 05 May 2011 08:05:18 -0700 (PDT) Sender: kvm-owner@vger.kernel.org List-ID: Hello to everybody, I am working on KVM version 2.6.38 and I'm facing a new problem on an emulated instruction whose implementation is already in kvm. The error shows up after the emulation of the "RET" opcode (C3 Byte Opcode). When trying to emulate the instruction at the address loaded after the pop instruction made by the RET I get an X86EMUL_PROPAGATE_FAULT error due to a gpa == UNMAPPED_GVA as you can see in the following debug trace: ---------------8<------------------------------------------------- x86_decode_insn:2705 -> Starting New Instruction Decode x86_decode_insn:2709 -> c->eip = ctxt->eip = 3226138255 x86_decode_insn:2759 -> Opcode -> c3 x86_decode_insn:2928 -> Decode and fetch the source operand x86_decode_insn:2931 -> SrcNone x86_decode_insn:3015 -> Decode and fetch the second source operand x86_decode_insn:3018 -> Src2None x86_decode_insn:3044 -> Decode and fetch the destination operand x86_decode_insn:3089 -> ImplicitOps x86_decode_insn:3092 -> No Destination Operand x86_emulate_instruction:4458 -> Returned from x86_decode_insn with r = 0 x86_emulate_insn:3194 -> starting special_insn... x86_emulate_insn:3196 -> c->eip = 3226138256 x86_emulate_insn:3565 -> starting writeback... writeback:1178 -> c->eip = 2147483648 x86_emulate_instruction:4538 -> Return from x86_emulate_insn with code r = 0 ---------------------------8<----------------------------------------------- So the next instruction will be emulated reading the opcode with eip=2147483648 as stated before but the emulation fails with the following debug trace ---------------------------8<----------------------------------------------- x86_decode_insn:2705 -> Starting New Instruction Decode x86_decode_insn:2709 -> c->eip = ctxt->eip = 2147483648 x86_decode_insn:2757 -> Read opcode from eip kvm_read_guest_virt_helper:3724 -> gpa == UNMAPPED_GVA return X86EMUL_PROPAGATE_FAULT do_fetch_insn_byte:573 -> ops->fetch returns an error ---------------------------8<------------------------------------------------ Any hints helping in addressing this error is highly welcome, Thank you in advance, Matteo