All of lore.kernel.org
 help / color / mirror / Atom feed
* [GIT] netback: drop some more flipping mode stuff
@ 2010-06-30  9:32 Ian Campbell
  2010-06-30 10:14 ` Jeremy Fitzhardinge
  0 siblings, 1 reply; 2+ messages in thread
From: Ian Campbell @ 2010-06-30  9:32 UTC (permalink / raw)
  To: Jeremy Fitzhardinge; +Cc: Paul Durrant, xen-devel

The following changes since commit 2e8dc6f4bd9a4ee84ce1e09670d1c1240517113f:
  Ian Campbell (1):
        xen: netback: drop more relics of flipping mode

are available in the git repository at:

  git://xenbits.xensource.com/people/ianc/linux-2.6.git for-jeremy/netback

Ian.

Subject: [PATCH] xen: netback: drop more relics of flipping mode

The mmu_update and gnttab_transfer arrays were only used by flipping
mode. With those gone the multicall now consists of a single call to
GNTTABOP_copy so drop the multicall as well and just make the one
hypercall.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: Paul Durrant <paul.durrant@citrix.com>
---
 drivers/xen/netback/common.h  |    3 --
 drivers/xen/netback/netback.c |   55 +++--------------------------------------
 2 files changed, 4 insertions(+), 54 deletions(-)

diff --git a/drivers/xen/netback/common.h b/drivers/xen/netback/common.h
index 0dc1959..857778c 100644
--- a/drivers/xen/netback/common.h
+++ b/drivers/xen/netback/common.h
@@ -306,9 +306,6 @@ struct xen_netbk {
 	u16 pending_ring[MAX_PENDING_REQS];
 	u16 dealloc_ring[MAX_PENDING_REQS];
 
-	struct multicall_entry rx_mcl[NET_RX_RING_SIZE+3];
-	struct mmu_update rx_mmu[NET_RX_RING_SIZE];
-	struct gnttab_transfer grant_trans_op[NET_RX_RING_SIZE];
 	/*
 	 * Each head or fragment can be up to 4096 bytes. Given
 	 * MAX_BUFFER_OFFSET of 4096 the worst case is that each
diff --git a/drivers/xen/netback/netback.c b/drivers/xen/netback/netback.c
index 9a7ada2..aacb286 100644
--- a/drivers/xen/netback/netback.c
+++ b/drivers/xen/netback/netback.c
@@ -368,15 +368,9 @@ int netif_be_start_xmit(struct sk_buff *skb, struct net_device *dev)
 }
 
 struct netrx_pending_operations {
-	unsigned trans_prod, trans_cons;
-	unsigned mmu_prod, mmu_mcl;
-	unsigned mcl_prod, mcl_cons;
 	unsigned copy_prod, copy_cons;
 	unsigned meta_prod, meta_cons;
-	struct mmu_update *mmu;
-	struct gnttab_transfer *trans;
 	struct gnttab_copy *copy;
-	struct multicall_entry *mcl;
 	struct netbk_rx_meta *meta;
 	int copy_off;
 	grant_ref_t copy_gref;
@@ -577,7 +571,6 @@ static void net_rx_action(unsigned long data)
 	s8 status;
 	u16 irq, flags;
 	struct xen_netif_rx_response *resp;
-	struct multicall_entry *mcl;
 	struct sk_buff_head rxq;
 	struct sk_buff *skb;
 	int notify_nr = 0;
@@ -588,10 +581,7 @@ static void net_rx_action(unsigned long data)
 	struct skb_cb_overlay *sco;
 
 	struct netrx_pending_operations npo = {
-		.mmu   = netbk->rx_mmu,
-		.trans = netbk->grant_trans_op,
 		.copy  = netbk->grant_copy_op,
-		.mcl   = netbk->rx_mcl,
 		.meta  = netbk->meta,
 	};
 
@@ -617,50 +607,13 @@ static void net_rx_action(unsigned long data)
 
 	BUG_ON(npo.meta_prod > ARRAY_SIZE(netbk->meta));
 
-	npo.mmu_mcl = npo.mcl_prod;
-	if (npo.mcl_prod) {
-		BUG_ON(xen_feature(XENFEAT_auto_translated_physmap));
-		BUG_ON(npo.mmu_prod > ARRAY_SIZE(netbk->rx_mmu));
-		mcl = npo.mcl + npo.mcl_prod++;
-
-		BUG_ON(mcl[-1].op != __HYPERVISOR_update_va_mapping);
-		mcl[-1].args[MULTI_UVMFLAGS_INDEX] = UVMF_TLB_FLUSH|UVMF_ALL;
-
-		mcl->op = __HYPERVISOR_mmu_update;
-		mcl->args[0] = (unsigned long)netbk->rx_mmu;
-		mcl->args[1] = npo.mmu_prod;
-		mcl->args[2] = 0;
-		mcl->args[3] = DOMID_SELF;
-	}
-
-	if (npo.trans_prod) {
-		BUG_ON(npo.trans_prod > ARRAY_SIZE(netbk->grant_trans_op));
-		mcl = npo.mcl + npo.mcl_prod++;
-		mcl->op = __HYPERVISOR_grant_table_op;
-		mcl->args[0] = GNTTABOP_transfer;
-		mcl->args[1] = (unsigned long)netbk->grant_trans_op;
-		mcl->args[2] = npo.trans_prod;
-	}
-
-	if (npo.copy_prod) {
-		BUG_ON(npo.copy_prod > ARRAY_SIZE(netbk->grant_copy_op));
-		mcl = npo.mcl + npo.mcl_prod++;
-		mcl->op = __HYPERVISOR_grant_table_op;
-		mcl->args[0] = GNTTABOP_copy;
-		mcl->args[1] = (unsigned long)netbk->grant_copy_op;
-		mcl->args[2] = npo.copy_prod;
-	}
-
-	/* Nothing to do? */
-	if (!npo.mcl_prod)
+	if (!npo.copy_prod)
 		return;
 
-	BUG_ON(npo.mcl_prod > ARRAY_SIZE(netbk->rx_mcl));
-
-	ret = HYPERVISOR_multicall(npo.mcl, npo.mcl_prod);
+	BUG_ON(npo.copy_prod > ARRAY_SIZE(netbk->grant_copy_op));
+	ret = HYPERVISOR_grant_table_op(GNTTABOP_copy, &netbk->grant_copy_op,
+					npo.copy_prod);
 	BUG_ON(ret != 0);
-	/* The mmu_machphys_update() must not fail. */
-	BUG_ON(npo.mmu_mcl && npo.mcl[npo.mmu_mcl].result != 0);
 
 	while ((skb = __skb_dequeue(&rxq)) != NULL) {
 		sco = (struct skb_cb_overlay *)skb->cb;
-- 
1.5.6.5

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [GIT] netback: drop some more flipping mode stuff
  2010-06-30  9:32 [GIT] netback: drop some more flipping mode stuff Ian Campbell
@ 2010-06-30 10:14 ` Jeremy Fitzhardinge
  0 siblings, 0 replies; 2+ messages in thread
From: Jeremy Fitzhardinge @ 2010-06-30 10:14 UTC (permalink / raw)
  To: Ian Campbell; +Cc: Paul Durrant, xen-devel

On 06/30/2010 11:32 AM, Ian Campbell wrote:
> The following changes since commit 2e8dc6f4bd9a4ee84ce1e09670d1c1240517113f:
>   Ian Campbell (1):
>         xen: netback: drop more relics of flipping mode
>
> are available in the git repository at:
>
>   git://xenbits.xensource.com/people/ianc/linux-2.6.git for-jeremy/netback
>   

Thanks.  I un-pushed the must-copy from netback, since I never intended
to merge it into netback itself, so you may need to resync your branch
accordingly.

    J

> Ian.
>
> Subject: [PATCH] xen: netback: drop more relics of flipping mode
>
> The mmu_update and gnttab_transfer arrays were only used by flipping
> mode. With those gone the multicall now consists of a single call to
> GNTTABOP_copy so drop the multicall as well and just make the one
> hypercall.
>
> Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
> Cc: Jeremy Fitzhardinge <jeremy@goop.org>
> Cc: Paul Durrant <paul.durrant@citrix.com>
> ---
>  drivers/xen/netback/common.h  |    3 --
>  drivers/xen/netback/netback.c |   55 +++--------------------------------------
>  2 files changed, 4 insertions(+), 54 deletions(-)
>
> diff --git a/drivers/xen/netback/common.h b/drivers/xen/netback/common.h
> index 0dc1959..857778c 100644
> --- a/drivers/xen/netback/common.h
> +++ b/drivers/xen/netback/common.h
> @@ -306,9 +306,6 @@ struct xen_netbk {
>  	u16 pending_ring[MAX_PENDING_REQS];
>  	u16 dealloc_ring[MAX_PENDING_REQS];
>  
> -	struct multicall_entry rx_mcl[NET_RX_RING_SIZE+3];
> -	struct mmu_update rx_mmu[NET_RX_RING_SIZE];
> -	struct gnttab_transfer grant_trans_op[NET_RX_RING_SIZE];
>  	/*
>  	 * Each head or fragment can be up to 4096 bytes. Given
>  	 * MAX_BUFFER_OFFSET of 4096 the worst case is that each
> diff --git a/drivers/xen/netback/netback.c b/drivers/xen/netback/netback.c
> index 9a7ada2..aacb286 100644
> --- a/drivers/xen/netback/netback.c
> +++ b/drivers/xen/netback/netback.c
> @@ -368,15 +368,9 @@ int netif_be_start_xmit(struct sk_buff *skb, struct net_device *dev)
>  }
>  
>  struct netrx_pending_operations {
> -	unsigned trans_prod, trans_cons;
> -	unsigned mmu_prod, mmu_mcl;
> -	unsigned mcl_prod, mcl_cons;
>  	unsigned copy_prod, copy_cons;
>  	unsigned meta_prod, meta_cons;
> -	struct mmu_update *mmu;
> -	struct gnttab_transfer *trans;
>  	struct gnttab_copy *copy;
> -	struct multicall_entry *mcl;
>  	struct netbk_rx_meta *meta;
>  	int copy_off;
>  	grant_ref_t copy_gref;
> @@ -577,7 +571,6 @@ static void net_rx_action(unsigned long data)
>  	s8 status;
>  	u16 irq, flags;
>  	struct xen_netif_rx_response *resp;
> -	struct multicall_entry *mcl;
>  	struct sk_buff_head rxq;
>  	struct sk_buff *skb;
>  	int notify_nr = 0;
> @@ -588,10 +581,7 @@ static void net_rx_action(unsigned long data)
>  	struct skb_cb_overlay *sco;
>  
>  	struct netrx_pending_operations npo = {
> -		.mmu   = netbk->rx_mmu,
> -		.trans = netbk->grant_trans_op,
>  		.copy  = netbk->grant_copy_op,
> -		.mcl   = netbk->rx_mcl,
>  		.meta  = netbk->meta,
>  	};
>  
> @@ -617,50 +607,13 @@ static void net_rx_action(unsigned long data)
>  
>  	BUG_ON(npo.meta_prod > ARRAY_SIZE(netbk->meta));
>  
> -	npo.mmu_mcl = npo.mcl_prod;
> -	if (npo.mcl_prod) {
> -		BUG_ON(xen_feature(XENFEAT_auto_translated_physmap));
> -		BUG_ON(npo.mmu_prod > ARRAY_SIZE(netbk->rx_mmu));
> -		mcl = npo.mcl + npo.mcl_prod++;
> -
> -		BUG_ON(mcl[-1].op != __HYPERVISOR_update_va_mapping);
> -		mcl[-1].args[MULTI_UVMFLAGS_INDEX] = UVMF_TLB_FLUSH|UVMF_ALL;
> -
> -		mcl->op = __HYPERVISOR_mmu_update;
> -		mcl->args[0] = (unsigned long)netbk->rx_mmu;
> -		mcl->args[1] = npo.mmu_prod;
> -		mcl->args[2] = 0;
> -		mcl->args[3] = DOMID_SELF;
> -	}
> -
> -	if (npo.trans_prod) {
> -		BUG_ON(npo.trans_prod > ARRAY_SIZE(netbk->grant_trans_op));
> -		mcl = npo.mcl + npo.mcl_prod++;
> -		mcl->op = __HYPERVISOR_grant_table_op;
> -		mcl->args[0] = GNTTABOP_transfer;
> -		mcl->args[1] = (unsigned long)netbk->grant_trans_op;
> -		mcl->args[2] = npo.trans_prod;
> -	}
> -
> -	if (npo.copy_prod) {
> -		BUG_ON(npo.copy_prod > ARRAY_SIZE(netbk->grant_copy_op));
> -		mcl = npo.mcl + npo.mcl_prod++;
> -		mcl->op = __HYPERVISOR_grant_table_op;
> -		mcl->args[0] = GNTTABOP_copy;
> -		mcl->args[1] = (unsigned long)netbk->grant_copy_op;
> -		mcl->args[2] = npo.copy_prod;
> -	}
> -
> -	/* Nothing to do? */
> -	if (!npo.mcl_prod)
> +	if (!npo.copy_prod)
>  		return;
>  
> -	BUG_ON(npo.mcl_prod > ARRAY_SIZE(netbk->rx_mcl));
> -
> -	ret = HYPERVISOR_multicall(npo.mcl, npo.mcl_prod);
> +	BUG_ON(npo.copy_prod > ARRAY_SIZE(netbk->grant_copy_op));
> +	ret = HYPERVISOR_grant_table_op(GNTTABOP_copy, &netbk->grant_copy_op,
> +					npo.copy_prod);
>  	BUG_ON(ret != 0);
> -	/* The mmu_machphys_update() must not fail. */
> -	BUG_ON(npo.mmu_mcl && npo.mcl[npo.mmu_mcl].result != 0);
>  
>  	while ((skb = __skb_dequeue(&rxq)) != NULL) {
>  		sco = (struct skb_cb_overlay *)skb->cb;
>   

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2010-06-30 10:14 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-06-30  9:32 [GIT] netback: drop some more flipping mode stuff Ian Campbell
2010-06-30 10:14 ` Jeremy Fitzhardinge

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.