[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, 9 Jan 2015, David Vrabel wrote: > On 09/01/15 16:19, Ian Campbell wrote: > > 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. > > I've fixed this already. > > > ... or stubbed out for arches which don't need this (which might include > > arm*?). > > I'm reasonably certain that this is required for HVM and ARM guests as > well. The grant copy will still fail to get the page by gfn since the > mfn is owned by a different domain. I agree _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |