|
[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |