[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.