public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: Guillaume Thouvenin <guillaume.thouvenin@ext.bull.net>
Cc: kvm-devel <kvm-devel@lists.sourceforge.net>,
	Avi Kivity <avi@qumranet.com>
Subject: Re: [PATCH] gfxboot VMX workaround v2
Date: Fri, 18 Apr 2008 10:25:15 -0500	[thread overview]
Message-ID: <4808BD5B.3040103@codemonkey.ws> (raw)
In-Reply-To: <20080418160528.457c274f@frecb000711.frec.bull.fr>

Guillaume Thouvenin wrote:
> On Fri, 18 Apr 2008 08:23:07 -0500
> Anthony Liguori <anthony@codemonkey.ws> 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

  reply	other threads:[~2008-04-18 15:25 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-07 13:12 [PATCH] gfxboot VMX workaround v2 Alexander Graf
2008-04-07 16:05 ` Anthony Liguori
2008-04-07 16:25   ` Alexander Graf
2008-04-07 16:51     ` Anthony Liguori
2008-04-07 17:03       ` Alexander Graf
2008-04-07 17:05         ` Anthony Liguori
2008-04-08  0:05           ` Avi Kivity
2008-04-08  7:30   ` Guillaume Thouvenin
2008-04-08 12:14     ` Anthony Liguori
2008-04-08 13:02       ` Guillaume Thouvenin
2008-04-08 21:56         ` Avi Kivity
2008-04-15  9:07   ` Guillaume Thouvenin
2008-04-15 13:06     ` Avi Kivity
2008-04-18 12:18       ` Guillaume Thouvenin
2008-04-18 12:55         ` Guillaume Thouvenin
2008-04-18 13:23         ` Anthony Liguori
2008-04-18 14:05           ` Guillaume Thouvenin
2008-04-18 15:25             ` Anthony Liguori [this message]
2008-04-20  7:52               ` Avi Kivity
2008-04-21 15:11               ` Guillaume Thouvenin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4808BD5B.3040103@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=avi@qumranet.com \
    --cc=guillaume.thouvenin@ext.bull.net \
    --cc=kvm-devel@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox