Guillaume Thouvenin wrote:
> On Fri, 18 Apr 2008 08:23:07 -0500
> Anthony Liguori <[EMAIL PROTECTED]> wrote:
>
>  
>   
>> This doesn't seem right.  You should have been able to break out of the 
>> emulator long before encountering an out instruction.  The next 
>> instruction you encounter should be a mov instruction.  Are you sure 
>> you're updating eip correctly?
>>     
>
> I think that eip is updated correctly but you're right, I think that
> the condition to stop emulation is not well implemented. I emulate a
> lot of mov instructions and I remain blocked in the emulation loop
> until I reach the "out" instruction. The loop is the following:
>
>   [...]
>   cs_rpl = vmcs_read16(GUEST_CS_SELECTOR) & SELECTOR_RPL_MASK;
>   ss_rpl = vmcs_read16(GUEST_SS_SELECTOR) & SELECTOR_RPL_MASK;
>
>   while (cs_rpl != ss_rpl) {
>       if (emulate_instruction(vcpu, NULL, 0,0, 0) == EMULATE_FAIL) {
>           printk(KERN_INFO "%s: emulation of 0x%x failed\n",
>                            __FUNCTION__,
>                            vcpu->arch.emulate_ctxt.decode.b);
>           return -1;
>        }
>        cs_rpl = vmcs_read16(GUEST_CS_SELECTOR) & SELECTOR_RPL_MASK;
>        ss_rpl = vmcs_read16(GUEST_SS_SELECTOR) & SELECTOR_RPL_MASK;
>   }
>   printk(KERN_INFO "%s: VMX friendly state recovered\n", __FUNCTION__);
>   // I never reach this point
>
> Maybe CS and SS selector are not well updated. I will add trace to see
> their values before and after the emulation.
>   

I'd prefer you not do an emulate_instruction loop at all.  Just emulate 
one instruction on vmentry failure and let VT tell you what instructions 
you need to emulate.

It's only four instructions so I don't think the performance is going to 
matter.  Take a look at the patch I posted previously.

Regards,

Anthony Liguori

> Regards,
> Guillaume
>   


-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to