[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCHv4 05/14] x86/xen: require ballooned pages for grant maps
On Mon, 26 Jan 2015, David Vrabel wrote: > From: Jennifer Herbert <jennifer.herbert@xxxxxxxxxx> > > Ballooned pages are always used for grant maps which means the > original frame does not need to be saved in page->index nor restored > after the grant unmap. > > This allows the workaround in netback for the conflicting use of the > (unionized) page->index and page->pfmemalloc to be removed. > > Signed-off-by: Jennifer Herbert <jennifer.herbert@xxxxxxxxxx> > Signed-off-by: David Vrabel <david.vrabel@xxxxxxxxxx> Reviewed-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> > arch/x86/xen/p2m.c | 5 +++-- > drivers/net/xen-netback/netback.c | 6 ------ > 2 files changed, 3 insertions(+), 8 deletions(-) > > diff --git a/arch/x86/xen/p2m.c b/arch/x86/xen/p2m.c > index c9bc53f..a8691cb 100644 > --- a/arch/x86/xen/p2m.c > +++ b/arch/x86/xen/p2m.c > @@ -682,9 +682,10 @@ int set_foreign_p2m_mapping(struct gnttab_map_grant_ref > *map_ops, > pfn = page_to_pfn(pages[i]); > > WARN_ON(PagePrivate(pages[i])); > + WARN(pfn_to_mfn(pfn) != INVALID_P2M_ENTRY, "page must be > ballooned"); > + > SetPagePrivate(pages[i]); > set_page_private(pages[i], mfn); > - pages[i]->index = pfn_to_mfn(pfn); > > if (unlikely(!set_phys_to_machine(pfn, FOREIGN_FRAME(mfn)))) { > ret = -ENOMEM; > @@ -718,7 +719,7 @@ int clear_foreign_p2m_mapping(struct > gnttab_unmap_grant_ref *unmap_ops, > set_page_private(pages[i], INVALID_P2M_ENTRY); > WARN_ON(!PagePrivate(pages[i])); > ClearPagePrivate(pages[i]); > - set_phys_to_machine(pfn, pages[i]->index); > + set_phys_to_machine(pfn, INVALID_P2M_ENTRY); > } > if (kunmap_ops) > ret = HYPERVISOR_grant_table_op(GNTTABOP_unmap_grant_ref, > diff --git a/drivers/net/xen-netback/netback.c > b/drivers/net/xen-netback/netback.c > index 908e65e..6441318 100644 > --- a/drivers/net/xen-netback/netback.c > +++ b/drivers/net/xen-netback/netback.c > @@ -1241,12 +1241,6 @@ static void xenvif_fill_frags(struct xenvif_queue > *queue, struct sk_buff *skb) > /* Take an extra reference to offset network stack's put_page */ > get_page(queue->mmap_pages[pending_idx]); > } > - /* FIXME: __skb_fill_page_desc set this to true because page->pfmemalloc > - * overlaps with "index", and "mapping" is not set. I think mapping > - * should be set. If delivered to local stack, it would drop this > - * skb in sk_filter unless the socket has the right to use it. > - */ > - skb->pfmemalloc = false; > } > > static int xenvif_get_extras(struct xenvif_queue *queue, > -- > 1.7.10.4 > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxx > http://lists.xen.org/xen-devel > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |