xen-vtx-unstable
changeset 6412:3428d58a85e1
merge?
line diff
6.1 --- a/linux-2.6-xen-sparse/arch/xen/kernel/gnttab.c Thu Aug 25 14:41:06 2005 +0000 6.2 +++ b/linux-2.6-xen-sparse/arch/xen/kernel/gnttab.c Thu Aug 25 14:41:52 2005 +0000 6.3 @@ -34,9 +34,11 @@ 6.4 6.5 6.6 EXPORT_SYMBOL(gnttab_grant_foreign_access); 6.7 +EXPORT_SYMBOL(gnttab_end_foreign_access_ref); 6.8 EXPORT_SYMBOL(gnttab_end_foreign_access); 6.9 EXPORT_SYMBOL(gnttab_query_foreign_access); 6.10 EXPORT_SYMBOL(gnttab_grant_foreign_transfer); 6.11 +EXPORT_SYMBOL(gnttab_end_foreign_transfer_ref); 6.12 EXPORT_SYMBOL(gnttab_end_foreign_transfer); 6.13 EXPORT_SYMBOL(gnttab_alloc_grant_references); 6.14 EXPORT_SYMBOL(gnttab_free_grant_references); 6.15 @@ -160,7 +162,7 @@ gnttab_query_foreign_access(grant_ref_t 6.16 } 6.17 6.18 void 6.19 -gnttab_end_foreign_access(grant_ref_t ref, int readonly) 6.20 +gnttab_end_foreign_access_ref(grant_ref_t ref, int readonly) 6.21 { 6.22 u16 flags, nflags; 6.23 6.24 @@ -170,7 +172,12 @@ gnttab_end_foreign_access(grant_ref_t re 6.25 printk(KERN_ALERT "WARNING: g.e. still in use!\n"); 6.26 } 6.27 while ( (nflags = synch_cmpxchg(&shared[ref].flags, flags, 0)) != flags ); 6.28 +} 6.29 6.30 +void 6.31 +gnttab_end_foreign_access(grant_ref_t ref, int readonly) 6.32 +{ 6.33 + gnttab_end_foreign_access_ref(ref, readonly); 6.34 put_free_entry(ref); 6.35 } 6.36 6.37 @@ -201,20 +208,13 @@ gnttab_grant_foreign_transfer_ref(grant_ 6.38 } 6.39 6.40 unsigned long 6.41 -gnttab_end_foreign_transfer(grant_ref_t ref) 6.42 +gnttab_end_foreign_transfer_ref(grant_ref_t ref) 6.43 { 6.44 unsigned long frame = 0; 6.45 u16 flags; 6.46 6.47 flags = shared[ref].flags; 6.48 -#ifdef CONFIG_XEN_NETDEV_GRANT_RX 6.49 - /* 6.50 - * But can't flags == (GTF_accept_transfer | GTF_transfer_completed) 6.51 - * if gnttab_donate executes without interruption??? 6.52 - */ 6.53 -#else 6.54 - ASSERT(flags == (GTF_accept_transfer | GTF_transfer_committed)); 6.55 -#endif 6.56 + 6.57 /* 6.58 * If a transfer is committed then wait for the frame address to appear. 6.59 * Otherwise invalidate the grant entry against future use. 6.60 @@ -224,8 +224,14 @@ gnttab_end_foreign_transfer(grant_ref_t 6.61 while ( unlikely((frame = shared[ref].frame) == 0) ) 6.62 cpu_relax(); 6.63 6.64 + return frame; 6.65 +} 6.66 + 6.67 +unsigned long 6.68 +gnttab_end_foreign_transfer(grant_ref_t ref) 6.69 +{ 6.70 + unsigned long frame = gnttab_end_foreign_transfer_ref(ref); 6.71 put_free_entry(ref); 6.72 - 6.73 return frame; 6.74 } 6.75
24.1 --- a/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c Thu Aug 25 14:41:06 2005 +0000 24.2 +++ b/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c Thu Aug 25 14:41:52 2005 +0000 24.3 @@ -364,7 +364,7 @@ static void network_tx_buf_gc(struct net 24.4 "still in use by backend domain.\n"); 24.5 goto out; 24.6 } 24.7 - gnttab_end_foreign_access(grant_tx_ref[id], GNTMAP_readonly); 24.8 + gnttab_end_foreign_access_ref(grant_tx_ref[id], GNTMAP_readonly); 24.9 gnttab_release_grant_reference(&gref_tx_head, grant_tx_ref[id]); 24.10 grant_tx_ref[id] = GRANT_INVALID_REF; 24.11 #endif 24.12 @@ -650,7 +650,7 @@ static int netif_poll(struct net_device 24.13 #ifdef CONFIG_XEN_NETDEV_GRANT_RX 24.14 ref = grant_rx_ref[rx->id]; 24.15 grant_rx_ref[rx->id] = GRANT_INVALID_REF; 24.16 - mfn = gnttab_end_foreign_transfer(ref); 24.17 + mfn = gnttab_end_foreign_transfer_ref(ref); 24.18 gnttab_release_grant_reference(&gref_rx_head, ref); 24.19 #endif 24.20
27.1 --- a/linux-2.6-xen-sparse/include/asm-xen/gnttab.h Thu Aug 25 14:41:06 2005 +0000 27.2 +++ b/linux-2.6-xen-sparse/include/asm-xen/gnttab.h Thu Aug 25 14:41:52 2005 +0000 27.3 @@ -30,10 +30,12 @@ struct gnttab_free_callback { 27.4 int gnttab_grant_foreign_access(domid_t domid, unsigned long frame, 27.5 int readonly); 27.6 27.7 +void gnttab_end_foreign_access_ref(grant_ref_t ref, int readonly); 27.8 void gnttab_end_foreign_access(grant_ref_t ref, int readonly); 27.9 27.10 int gnttab_grant_foreign_transfer(domid_t domid, unsigned long pfn); 27.11 27.12 +unsigned long gnttab_end_foreign_transfer_ref(grant_ref_t ref); 27.13 unsigned long gnttab_end_foreign_transfer(grant_ref_t ref); 27.14 27.15 int gnttab_query_foreign_access(grant_ref_t ref);