From: Gleb Natapov <gleb@redhat.com>
To: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
Cc: Avi Kivity <avi@redhat.com>,
Marcelo Tosatti <mtosatti@redhat.com>,
LKML <linux-kernel@vger.kernel.org>, KVM <kvm@vger.kernel.org>
Subject: Re: [PATCH 2/3] KVM: MMU: don not retry #PF for nonpaging guest
Date: Mon, 8 Nov 2010 15:52:19 +0200 [thread overview]
Message-ID: <20101108135219.GA9036@redhat.com> (raw)
In-Reply-To: <4CD75D0B.1000305@cn.fujitsu.com>
On Mon, Nov 08, 2010 at 10:14:35AM +0800, Xiao Guangrong wrote:
> On 11/05/2010 06:31 PM, Gleb Natapov wrote:
> > On Fri, Nov 05, 2010 at 04:03:28PM +0800, Xiao Guangrong wrote:
> >> On 11/05/2010 03:45 PM, Gleb Natapov wrote:
> >>
> >>>>
> >>>> It looks like something broken: apfs can generated in L2 guest (nested ntp guest)
> >>>> and be retried in L1 guest.
> >>>>
> >>> Why is this a problem? apf will be generate on direct map even when L2
> >>> guest is running so it should be OK to prefault it into direct map on
> >>> completion.
> >>>
> >>
> >> The nested_cr3 is different between L2 and L1, fix L2's page fault in L1's page table
> >> is useless.
> > But we are fixing L0 page faults in L0 page table. We do not start apf
> > because of L1 faulted in its page table.
> >
>
> Hi Gleb,
>
> For example, NPT Guest L1 runs on Host, and Nested NPT Guest L2 runs on Guest L1.
> Now, Guest L2 is running, has below sequences:
>
> a: NPF/PF occurs in L2 Guest, and generates a apf(named A-apf), then
> L2 Guest is blocked
>
What do you mean by that? Do you mean L2 exits to L1 with NPF because
L1 swapped out L2 page? In this case apf will be generated and handled
by L1 just like in L0->L1 non-nested case. Or do you mean L2 exits to L0
with NPF because L0 swapped out L1 page? Lets assume you mean second
case since it is interesting one.
> b: a external event wakes up L2 Guest, and let it run again.
>
> c: L2 Guest VMEXIT to L1 Guest because L2 Guest's action is intercepted by Guest L1
>
> d: When cpu enter L1 Guest, A-apf is completed, then it will retry A-apf in
> L1 Guest's mmu context, and this 'retry' is useless.
Since A-apf was on L0->L1 mapping it is OK to prefault it into direct
map. Wen L2 will run again and try to access this page it fill fault
again since the page is not pre-faulted into nntp shadow page. This time
L0 will find page in memory and will create shadow mapping for it
without apf.
>
> Could you please point it out for me if i missed something. :-)
>
--
Gleb.
next prev parent reply other threads:[~2010-11-08 13:52 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-04 10:30 [PATCH 1/3] KVM: MMU: fix missing post sync audit Xiao Guangrong
2010-11-04 10:32 ` [PATCH 2/3] KVM: MMU: don not retry #PF for nonpaging guest Xiao Guangrong
2010-11-04 10:35 ` Gleb Natapov
2010-11-05 5:39 ` Xiao Guangrong
2010-11-05 7:45 ` Gleb Natapov
2010-11-05 8:03 ` Xiao Guangrong
2010-11-05 10:31 ` Gleb Natapov
2010-11-08 2:14 ` Xiao Guangrong
2010-11-08 13:52 ` Gleb Natapov [this message]
2010-11-08 16:58 ` Xiao Guangrong
2010-11-08 17:01 ` Gleb Natapov
2010-11-09 8:03 ` Gleb Natapov
2010-11-09 8:48 ` Xiao Guangrong
2010-11-09 9:26 ` Gleb Natapov
2010-11-09 9:52 ` Xiao Guangrong
2010-11-09 10:51 ` Gleb Natapov
2010-11-10 2:08 ` Xiao Guangrong
2010-11-04 10:36 ` [PATCH 3/3] KVM: MMU: retry #PF for softmmu Xiao Guangrong
2010-11-09 8:06 ` Gleb Natapov
2010-11-09 9:16 ` Xiao Guangrong
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=20101108135219.GA9036@redhat.com \
--to=gleb@redhat.com \
--cc=avi@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mtosatti@redhat.com \
--cc=xiaoguangrong@cn.fujitsu.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