From: Avi Kivity <avi@redhat.com>
To: "Nadav Har'El" <nyh@math.technion.ac.il>
Cc: kvm@vger.kernel.org, "Roedel, Joerg" <Joerg.Roedel@amd.com>,
owasserm@redhat.com, abelg@il.ibm.com
Subject: Re: [PATCH 02/10] nEPT: MMU context for nested EPT
Date: Sat, 12 Nov 2011 12:39:28 +0200 [thread overview]
Message-ID: <4EBE4CE0.7070708@redhat.com> (raw)
In-Reply-To: <20111110200532.GA17475@fermat.math.technion.ac.il>
On 11/10/2011 10:05 PM, Nadav Har'El wrote:
> On Thu, Nov 10, 2011, Avi Kivity wrote about "Re: [PATCH 02/10] nEPT: MMU context for nested EPT":
> > This is all correct, but the code in question parses the EPT12 table
> > using the ia32 page table format. They're sufficiently similar so that
> > it works, but it isn't correct.
> >
> > Bit 0: EPT readable, ia32 present
> > Bit 1: Writable; ia32 meaning dependent on cr0.wp
> > Bit 2: EPT executable, ia32 user (so, this implementation will interpret
> > a non-executable EPT mapping, if someone could find a use for it, as a
> > L2 kernel only mapping)
> >....
>
> This is a very good point.
>
> I was under the mistaken (?) impression that the page-table shadowing
> code will just copy these bits as-is from the shadowed table (EPT12) to the
> shadow table (EPT02), without caring what they actually mean.
No, for two reasons. First, the shadow bits are the result of
multiplexing guest and host permissions, for example either the guest of
host may write-protect a page. Second, the shadow and guest ptes may be
in different formats (ept vs ia32).
> I knew we had
> a problem when building, not copying, PTEs, and hence the patch to
> link_shadow_page).
In fact that happens to accidentally work, no? Intermediate ptes are
always present/write/user, which translates to read/write/execute in EPT.
> Also I realized we sometimes need to actually walk the TDP EPT12+cr3 (e.g.,
> to see if an EPT violation is L1's fault), but I thought this was just the
> normal TDP walk, which already knows how to correctly read the EPT
> table.
>
> > walk_addr() will also write to bits 6/7, which the L1 won't expect.
>
> I didn't notice this :(
>
> Back to the drawing board, I guess. I need to figure out exactly what
> needs to be fixed, and how to do this with the least obtrusive changes to
> the existing use case (normal shadow page tables, and nested EPT).
Don't optimize for least changes, optimize for best result afterwards.
We need a third variant of walk_addr_generic that parses EPT format
PTEs. Whether that's best done by writing paging_ept.h or modifying
paging_tmpl.h, I don't know.
--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.
next prev parent reply other threads:[~2011-11-12 10:39 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-10 9:57 [PATCH 0/10] nEPT: Nested EPT support for Nested VMX Nadav Har'El
2011-11-10 9:58 ` [PATCH 01/10] nEPT: Module option Nadav Har'El
2011-11-10 12:23 ` Avi Kivity
2011-11-10 14:21 ` Nadav Har'El
2011-11-10 14:38 ` Avi Kivity
2011-11-10 15:14 ` Nadav Har'El
2011-11-10 15:21 ` Avi Kivity
2011-11-10 9:58 ` [PATCH 02/10] nEPT: MMU context for nested EPT Nadav Har'El
2011-11-10 10:31 ` Avi Kivity
2011-11-10 12:49 ` Avi Kivity
2011-11-10 14:40 ` Nadav Har'El
2011-11-10 15:19 ` Avi Kivity
2011-11-10 20:05 ` Nadav Har'El
2011-11-12 10:39 ` Avi Kivity [this message]
2011-11-12 21:37 ` Nadav Har'El
2011-11-13 9:10 ` Avi Kivity
2011-11-13 11:30 ` Orit Wasserman
2011-11-13 14:32 ` Avi Kivity
2011-11-13 18:26 ` Orit Wasserman
2011-11-14 8:25 ` Avi Kivity
2011-12-08 15:21 ` Nadav Har'El
2011-12-06 12:40 ` Nadav Har'El
2011-12-06 13:07 ` Avi Kivity
2011-11-23 15:06 ` Nadav Har'El
2011-11-23 15:44 ` Nadav Har'El
2011-11-24 13:36 ` Avi Kivity
2011-12-07 9:06 ` Nadav Har'El
2011-12-07 10:10 ` Avi Kivity
2011-11-10 9:59 ` [PATCH 03/10] nEPT: Fix cr3 handling in nested exit and entry Nadav Har'El
2011-11-10 9:59 ` [PATCH 04/10] nEPT: Fix page table format in nested EPT Nadav Har'El
2011-11-10 10:37 ` Avi Kivity
2011-11-10 11:03 ` Nadav Har'El
2011-11-10 12:21 ` Avi Kivity
2011-11-10 12:50 ` Avi Kivity
2011-11-10 13:07 ` Orit Wasserman
2011-11-10 10:00 ` [PATCH 05/10] nEPT: Fix wrong test in kvm_set_cr3 Nadav Har'El
2011-11-10 10:00 ` [PATCH 06/10] nEPT: Some additional comments Nadav Har'El
2011-11-10 10:01 ` [PATCH 07/10] nEPT: Advertise EPT to L1 Nadav Har'El
2011-11-10 10:01 ` [PATCH 08/10] nEPT: Nested INVEPT Nadav Har'El
2011-11-10 12:17 ` Avi Kivity
2011-12-11 14:24 ` Nadav Har'El
2011-12-11 14:37 ` Avi Kivity
2011-11-10 10:02 ` [PATCH 09/10] nEPT: Documentation Nadav Har'El
2011-11-10 10:02 ` [PATCH 10/10] nEPT: Miscelleneous cleanups Nadav Har'El
2011-11-10 12:26 ` [PATCH 0/10] nEPT: Nested EPT support for Nested VMX Avi Kivity
2011-11-13 8:52 ` Nadav Har'El
2011-11-13 9:21 ` Avi Kivity
2011-12-12 11:37 ` Nadav Har'El
2011-12-12 13:04 ` Avi Kivity
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=4EBE4CE0.7070708@redhat.com \
--to=avi@redhat.com \
--cc=Joerg.Roedel@amd.com \
--cc=abelg@il.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=nyh@math.technion.ac.il \
--cc=owasserm@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;
as well as URLs for NNTP newsgroup(s).