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

Re: [Xen-devel] [PATCH 06/12] xen: mark grant mapped pages as foreign



On Fri, 2015-01-09 at 16:03 +0000, Stefano Stabellini wrote:
> On Tue, 6 Jan 2015, David Vrabel wrote:
> > From: Jenny Herbert <jennifer.herbert@xxxxxxxxxx>
> > 
> > Use the "foreign" page flag to mark pages that have a grant map.  Use
> > page->private to store information of the grant (the granting domain
> > and the grant reference).
> > 
> > Signed-off-by: Jenny Herbert <jenny.herbert@xxxxxxxxxx>
> > Signed-off-by: David Vrabel <david.vrabel@xxxxxxxxxx>
> > ---
> >  arch/x86/xen/p2m.c        |   50 
> > ++++++++++++++++++++++++++++++++++++++-------
> >  include/xen/grant_table.h |   13 ++++++++++++
> >  2 files changed, 56 insertions(+), 7 deletions(-)
> > 
> > diff --git a/arch/x86/xen/p2m.c b/arch/x86/xen/p2m.c
> > index 0d70814..22624a3 100644
> > --- a/arch/x86/xen/p2m.c
> > +++ b/arch/x86/xen/p2m.c
> > @@ -648,6 +648,43 @@ bool set_phys_to_machine(unsigned long pfn, unsigned 
> > long mfn)
> >     return true;
> >  }
> >  
> > +static int
> > +init_page_grant_ref(struct page *p, domid_t domid, grant_ref_t grantref)
> > +{
> > +#ifdef CONFIG_X86_64
> > +   uint64_t gref;
> > +   uint64_t* gref_p = &gref;
> > +#else
> > +   uint64_t* gref_p = kmalloc(sizeof(uint64_t), GFP_KERNEL);
> > +   if (!gref)
> > +           return -ENOMEM;
> > +   uint64_t* gref = gref_p;
> > +#endif
> > +
> > +   *gref_p = ((uint64_t) grantref << 32) | domid;
> > +   p->private = gref;
> > +
> > +   WARN_ON(PagePrivate(p));
> > +   WARN_ON(PageForeign(p));
> > +   SetPagePrivate(p);
> > +   SetPageForeign(p);
> > +   return 0;
> > +}
> > +
> > +static void
> > +clear_page_grant_ref(struct page *p)
> > +{
> > +   WARN_ON(!PagePrivate(p));
> > +   WARN_ON(!PageForeign(p));
> > +
> > +#ifndef CONFIG_X86_64
> > +   kfree(p->private);
> > +#endif
> > +   p->private = 0;
> > +   ClearPagePrivate(p);
> > +   ClearPageForeign(p);
> > +}
> 
> Given that get_page_grant_ref is used by netback, these functions need
> to be made arch-independent, moved to an arch-independent code location
> and called appropriately.

... or stubbed out for arches which don't need this (which might include
arm*?).



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