This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


Re: [Xen-devel] Questions on EPT dump and creation

To: Tim Deegan <Tim.Deegan@xxxxxxxxxx>
Subject: Re: [Xen-devel] Questions on EPT dump and creation
From: YAO <yffbrave@xxxxxxxxx>
Date: Tue, 19 Jul 2011 18:57:44 +0800
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Tue, 19 Jul 2011 03:59:58 -0700
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=s128CcvnpWGA7zUhnEvRe5YbiWOA0N3ODpg3i/wdkt4=; b=ImQSQZHCjU/7O8kyxTzV1Ko5AcYCcGh9UA1jiovHvMjJF1s/Aze44miaoAZEbQVjkc mMdPwCTagSE8hTjahuDkXN3RtkCYLNHi00oMd/cSkLq4S+W4B4cGbKytj7h4nuOgdc4Q H83HZAcfGfK1UmNbqcOK3yu1WUQCPuLITtWkw=
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <20110718152609.GC18276@xxxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <CALchwUcx0Ydhv4C+U=h3kDZCSahBF_3ydUJ4-4+t7fY6iq-vaw@xxxxxxxxxxxxxx> <20110718152609.GC18276@xxxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx

2011/7/18 Tim Deegan <Tim.Deegan@xxxxxxxxxx>

At 21:57 +0800 on 18 Jul (1311026244), YAO wrote:
> First, I used "xm debug-key D" to dump ept mappings. But I have a doubt
> about the mapping.
> I started a 32bit HVM which memory is 512, so the max gfn should be 0x1ffff.
> But the result of "xm dmesg" showed gfn->mfn mapping until 0xfffff.
> Output looked like below:
> (XEN) gfn: fc012  mfn: 179e6
> (XEN) gfn: fc013  mfn: 179e5
> (XEN) gfn: fee00  mfn: 2e8
> (XEN) gfn: feffb  mfn: 178fd
> (XEN) gfn: feffc  mfn: 178fc
> (XEN) gfn: feffd  mfn: 178fb
> (XEN) gfn: feffe  mfn: 178fa
> (XEN) gfn: fefff  mfn: 178f9
> (XEN) gfn: fffff  mfn: 2eb
> What I think is every HVM has one EPT table and the table maps the allocated
> memory like from 0 to 0x1ffff, why does the HVM ept map all the 4G space?
> Isn't it unneccessary and waste of memory?

Guest PFN-space is not contiguous.  Like a real PC, there are some
areas of the address space just below 4GB that are used for special
things like MMIO.  So you should see RAM up to about 512MiB, then a big
gap, and then the entries above.

> Second, I want to copy the system ept and used the copy for later
> translation. Since the HVM is 512M, so I need one PML4 pointed by eptp, one
> PDP pointed by PML4 entry[0], one PD pointed by PDP entry[0], 512 PT's
> pointed by all PD entries. After all settings are done, I'v got gfn->mfn
> mapping of 1G memory. I think it should be working, but not. Where am I
> wrong? What would I pay attention to?

As you noticed there are some entries that are not in the bottom
512MiB; you'll need to handle those as well.

Other than that it's hard to tell from your description.  What are you
trying to achieve by copying the p2m?

Hi, Tim
Thanks for your reply. Copying the ept table is my first step, next I want to switch between system ept and my own ept smoothly.
Attach is my code of copying ept and switching ept, I wish you could take a look at it.

I copied exactly every mapping one by one, but when I dumped the gfn->mfn mapping(I've modified ept_dump_p2m_table to find unequal entry),
there are some strange output like this:

(XEN) gfn: 200  mfn: 117def  my_mfn: 10d600
(XEN) gfn: 400  mfn: 117dee  my_mfn: 111200
(XEN) gfn: 600  mfn: 117ded  my_mfn: 111000
(XEN) gfn: 800  mfn: 117dec  my_mfn: 10de00
(XEN) gfn: 14a00  mfn: 1176bb  my_mfn: 10800
(XEN) gfn: 14c00  mfn: 1176ba  my_mfn: 10600
(XEN) gfn: 14e00  mfn: 1176b9  my_mfn: 10400
(XEN) gfn: 15000  mfn: 1176b8  my_mfn: 10200
(XEN) gfn: 1f600  mfn: 117b46  my_mfn: 4200
(XEN) gfn: 1f800  mfn: 117b45  my_mfn: 4000

It shouldn't have any unequal entry, I thought...and
Every mismatch has a step of 0x200 until 0x1f800, which really confused me.



Tim Deegan <Tim.Deegan@xxxxxxxxxx>
Principal Software Engineer, Xen Platform Team
Citrix Systems UK Ltd.  (Company #02937203, SL9 0BG)

Attachment: mycode.c
Description: Text Data

Xen-devel mailing list