|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [V9 PATCH 6/8] pvh dom0: Add and remove foreign pages
On Wed, 16 Apr 2014 18:37:42 -0700
Mukesh Rathor <mukesh.rathor@xxxxxxxxxx> wrote:
> On Wed, 16 Apr 2014 17:00:35 +0100
> "Jan Beulich" <JBeulich@xxxxxxxx> wrote:
>
............
>
> > > + goto out;
> > > +
> > > + rc = xsm_map_gmfn_foreign(XSM_TARGET, tdom, fdom);
> > > + if ( rc )
> > > + goto out;
> > > +
> > > + /* following will take a refcnt on the mfn */
> > > + page = get_page_from_gfn(fdom, fgfn, &p2mt, P2M_ALLOC);
> > > + if ( !page || !p2m_is_valid(p2mt) )
> >
> > Is this really p2m_is_valid() (i.e. including various types apart
> > from p2m_ram_rw)?
>
> Hmm.. let me check again in case of HVM guest coming up on PVH dom0,
> if there are use cases of non-ram types. Otherwise, it could be just
> p2m_is_ram.
Ok, following is the change I'm going to make in the next version
for above comment:
diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
index 67aa5f6..8d3eb95 100644
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -1799,7 +1799,7 @@ int p2m_add_foreign(struct domain *tdom, unsigned long fgf
/* following will take a refcnt on the mfn */
page = get_page_from_gfn(fdom, fgfn, &p2mt, P2M_ALLOC);
- if ( !page || !p2m_is_valid(p2mt) )
+ if ( !page || !p2m_is_strict_ram(p2mt) )
{
if ( page )
put_page(page);
diff --git a/xen/include/asm-x86/p2m.h b/xen/include/asm-x86/p2m.h
index 47604da..e0bf6dc 100644
--- a/xen/include/asm-x86/p2m.h
+++ b/xen/include/asm-x86/p2m.h
@@ -165,6 +165,7 @@ typedef unsigned int p2m_query_t;
/* Useful predicates */
+#define p2m_is_strict_ram(_t) (p2m_to_mask(_t) & p2m_to_mask(p2m_ram_rw))
#define p2m_is_ram(_t) (p2m_to_mask(_t) & P2M_RAM_TYPES)
#define p2m_is_hole(_t) (p2m_to_mask(_t) & P2M_HOLE_TYPES)
#define p2m_is_mmio(_t) (p2m_to_mask(_t) & P2M_MMIO_TYPES)
Lmk if you've issues with introducing p2m_is_strict_ram. In that case,
we can just use p2m_is_ram.
thanks
Mukesh
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |