Re: [PATCH 0/1] trace all instructions whose emulation failed

2010-04-19 Thread Manish Regmi
On Mon, Apr 19, 2010 at 4:20 AM, Avi Kivity  wrote:
>>        }
>>
>>
>
> It's better not to trace #UD triggered emulations, since we except these to
> fail, for example if the guest executes the UD2 instruction.
>

ya. that sounds more logical. Thanks for explaining.
---
regards
Manish Regmi

http://manish-cs.blogspot.com
http://ext2read.sf.net
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/1] trace all instructions whose emulation failed

2010-04-19 Thread Avi Kivity

On 04/18/2010 09:33 AM, Manish Regmi wrote:

Hi,
   The following patch makes sure all code path of failed emulation
runs trace_kvm_emulate_insn_failed().
Please let me know if there is anything missing or wrong.
Thank you.

Signed-off-by: Manish Regmi

diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index b6e7535..fd1e875 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -3784,36 +3784,35 @@ int emulate_instruction(struct kvm_vcpu *vcpu,
c =&vcpu->arch.emulate_ctxt.decode;
if (emulation_type&  EMULTYPE_TRAP_UD) {
if (!c->twobyte)
-   return EMULATE_FAIL;
+   goto emulate_failed;
switch (c->b) {
case 0x01: /* VMMCALL */
if (c->modrm_mod != 3 || c->modrm_rm != 1)
-   return EMULATE_FAIL;
+   goto emulate_failed;
break;
case 0x34: /* sysenter */
case 0x35: /* sysexit */
if (c->modrm_mod != 0 || c->modrm_rm != 0)
-   return EMULATE_FAIL;
+   goto emulate_failed;
break;
case 0x05: /* syscall */
if (c->modrm_mod != 0 || c->modrm_rm != 0)
-   return EMULATE_FAIL;
+   goto emulate_failed;;
break;
default:
-   return EMULATE_FAIL;
+   goto emulate_failed;
}

if (!(c->modrm_reg == 0 || c->modrm_reg == 3))
-   return EMULATE_FAIL;
+   goto emulate_failed;
}

++vcpu->stat.insn_emulation;
if (r)  {
++vcpu->stat.insn_emulation_fail;
-   trace_kvm_emulate_insn_failed(vcpu);
if (kvm_mmu_unprotect_page_virt(vcpu, cr2))
return EMULATE_DONE;
-   return EMULATE_FAIL;
+   goto emulate_failed;
}
}

   


It's better not to trace #UD triggered emulations, since we except these 
to fail, for example if the guest executes the UD2 instruction.


--
error compiling committee.c: too many arguments to function

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html