From: Avi Kivity <avi@redhat.com>
To: "Roedel, Joerg" <Joerg.Roedel@amd.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 2/2] KVM: SVM: Emulate next_rip svm feature
Date: Wed, 28 Jul 2010 13:28:06 +0300 [thread overview]
Message-ID: <4C500636.1070708@redhat.com> (raw)
In-Reply-To: <20100728093708.GD26098@amd.com>
On 07/28/2010 12:37 PM, Roedel, Joerg wrote:
>
>> Can it be really this simple? Suppose we emulate a nested guest
>> instruction just before vmexit, doesn't that invalidate
>> vmcb->control.next_rip? Can that happen?
> Good point. I looked again into it. The documentation states:
>
> The next sequential instruction pointer (nRIP) is saved in
> the guest VMCB control area at location C8h on all #VMEXITs that
> are due to instruction intercepts, as defined in Section 15.8 on
> page 378, as well as MSR and IOIO intercepts and exceptions
> caused by the INT3, INTO, and BOUND instructions. For all other
> intercepts, nRIP is reset to zero.
>
> There are a few intercepts that may need injection when running nested
> immediatly after an instruction emulation on the host side:
>
> INTR, NMI
> #PF, #GP, ...
>
> All these instructions do not provide a valid next_rip on #vmexit so we
> should be save here. The other way around, copying back a next_rip
> pointer when there should be none, should also not happen as far as I
> see it. The next_rip is only set for instruction intercepts which are
> either handled on the host side or reinjected directly into the L1
> hypervisor.
> When you don't see a failing case either, I think we are save with this
> simple implementation.
I agree, looks like everything's fine here.
We have a slightly different problem, if the nested guest manages to get
an instruction to be emulated by the host (if the guest assigned it the
cirrus framebuffer, for example, so from L1's point of view it is RAM,
but from L0's point of view it is emulated), then we miss the
intercept. L2 could take over L1 this way.
--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.
next prev parent reply other threads:[~2010-07-28 10:28 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-27 16:14 [PATCH 0/2] Nested SVM fix and next_rip emulation Joerg Roedel
2010-07-27 16:14 ` [PATCH 1/2] KVM: SVM: Sync efer back into nested vmcb Joerg Roedel
2010-07-27 19:07 ` Avi Kivity
2010-07-28 7:54 ` Roedel, Joerg
2010-07-27 16:14 ` [PATCH 2/2] KVM: SVM: Emulate next_rip svm feature Joerg Roedel
2010-07-27 18:32 ` Avi Kivity
2010-07-28 9:37 ` Roedel, Joerg
2010-07-28 10:28 ` Avi Kivity [this message]
2010-07-28 11:25 ` Roedel, Joerg
2010-07-28 11:34 ` Avi Kivity
2010-07-28 11:51 ` Roedel, Joerg
2010-07-28 11:57 ` Avi Kivity
2010-07-28 12:18 ` Roedel, Joerg
2010-07-28 12:25 ` Avi Kivity
2010-07-28 10:28 ` [PATCH 0/2] Nested SVM fix and next_rip emulation Avi Kivity
2010-07-28 16:53 ` Marcelo Tosatti
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=4C500636.1070708@redhat.com \
--to=avi@redhat.com \
--cc=Joerg.Roedel@amd.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mtosatti@redhat.com \
/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