[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [V6 PATCH 6.2/7] pvh dom0: Add and remove foreign pages





On 12/16/2013 11:27 PM, Mukesh Rathor wrote:
On Mon, 16 Dec 2013 08:40:41 +0000
"Jan Beulich" <JBeulich@xxxxxxxx> wrote:

On 14.12.13 at 03:48, Mukesh Rathor <mukesh.rathor@xxxxxxxxxx>
wrote:
Also, Jan may have an opinion about whether a teardown operation
that has to walk each p2m entry would have to be made
preemptible.  I'm not sure where we draw the line on such things.

Since at present teardown cleanup of foreign is not really that
important as its only applicable to dom0, let me submit another
patch for it on Mon with few ideas. That would also keep this patch
size reasonable, and keep you from having to look at the same code
over and over.

So, please take a look at the version below with above two fixes. If
you approve it, i can resubmit the entire series rebased to latest
with your ack on Monday, and the series can go in while we resolve
the p2m teardown.

Going through the patch again, I'm not seeing any loop being
added. Am I missing something here?

Yes. Since the destruction of p2m leaking foreign pages only applies
to control domain being destroyed, i don't think it is that critical
that part get into 4.4. So, I'm submitting a separate patch for it,
like said above.

--- a/xen/arch/x86/mm/p2m-ept.c
+++ b/xen/arch/x86/mm/p2m-ept.c
@@ -36,8 +36,6 @@

  #define
atomic_read_ept_entry(__pepte)                              \
( (ept_entry_t) { .epte = read_atomic(&(__pepte)->epte) } )
-#define atomic_write_ept_entry(__pepte,
__epte)                     \
-    write_atomic(&(__pepte)->epte, (__epte).epte)

  #define is_epte_present(ept_entry)      ((ept_entry)->epte & 0x7)
  #define is_epte_superpage(ept_entry)    ((ept_entry)->sp)
@@ -46,6 +44,25 @@ static inline bool_t is_epte_valid(ept_entry_t
*e) return (e->epte != 0 && e->sa_p2mt != p2m_invalid);
  }

+static inline void write_ept_entry(ept_entry_t *entryptr,
ept_entry_t *new)

So why do you drop the "atomic_" prefix here?

To distinguish it from the older atomic_* macro which did nothing but
atomically write the entry. But if it helps get your approval, I added
atomic prefix.

Also the second parameter could be "const"...

Ok.

Final version below:

thanks
Mukesh
---------------------

In this patch, a new function, p2m_add_foreign(), is added
to map pages from foreign guest into current dom0 for domU creation.
Such pages are typed p2m_map_foreign. Another function
p2m_remove_foreign() is added to remove such pages. Note, it is the
nature of such pages that a refcnt is held during their stay in the p2m.
The refcnt is added and released in the low level ept code for convenience.
The cleanup of foreign pages from p2m upon it's destruction, is submitted
subsequently under a separate patch.

Signed-off-by: Mukesh Rathor <mukesh.rathor@xxxxxxxxxx>
---
  xen/arch/x86/mm.c         |   23 +++++++---
  xen/arch/x86/mm/p2m-ept.c |   30 +++++++++++---
  xen/arch/x86/mm/p2m-pt.c  |    9 ++++-
  xen/arch/x86/mm/p2m.c     |   96 +++++++++++++++++++++++++++++++++++++++++++++
  xen/common/memory.c       |   12 +++++-
  xen/include/asm-arm/p2m.h |    8 +++-
  xen/include/asm-x86/p2m.h |    7 +++
  7 files changed, 169 insertions(+), 16 deletions(-)

Following the discussion we had on ARM thread (see https://patches.linaro.org/22361/), the approach is to remove specific patch for p2m foreign on common code. So get_page_from_gfn must handle reference on foreign mapping.

The code is pretty simple on ARM, see: https://patches.linaro.org/22536/
and I don't see why this kind of modification can't go on x86 part.

Also, can you remove all ARM specific code in this patch?

Cheers,

--
Julien Grall

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.