[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 Mon, 16 Dec 2013 23:44:37 +0000
Julien Grall <julien.grall@xxxxxxxxxx> wrote:

> 
> 
> 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.

Fine, I'll just cleanup and move that to guest_physmap.... it's getting
a bit frustrating now.....

> 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.

It can, but previously it was not deemed necessary. 

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

Not until your stuff is checked in.


_______________________________________________
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®.