[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [linux-2.6.18-xen] xen/backends: use xenbus_be.ko interfaces instead of open-coding them



# HG changeset patch
# User Jan Beulich <jbeulich@xxxxxxxxxx>
# Date 1302003500 -3600
# Node ID 13937900bbd01cd62592d3535ea4943c22ba2b92
# Parent  0bee20f8e418d32ab5828eb57c7542ca27ce425d
xen/backends: use xenbus_be.ko interfaces instead of open-coding them

Also remove unused xenbus_{,un}map_ring(), adjust types, and clean up
header inclusion.

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
---


diff -r 0bee20f8e418 -r 13937900bbd0 drivers/xen/blkback/blkback.c
--- a/drivers/xen/blkback/blkback.c     Sat Apr 02 15:54:29 2011 +0100
+++ b/drivers/xen/blkback/blkback.c     Tue Apr 05 12:38:20 2011 +0100
@@ -40,6 +40,8 @@
 #include <linux/list.h>
 #include <linux/delay.h>
 #include <xen/balloon.h>
+#include <xen/evtchn.h>
+#include <xen/gnttab.h>
 #include <asm/hypervisor.h>
 #include "common.h"
 
diff -r 0bee20f8e418 -r 13937900bbd0 drivers/xen/blkback/common.h
--- a/drivers/xen/blkback/common.h      Sat Apr 02 15:54:29 2011 +0100
+++ b/drivers/xen/blkback/common.h      Tue Apr 05 12:38:20 2011 +0100
@@ -32,17 +32,12 @@
 #include <linux/interrupt.h>
 #include <linux/slab.h>
 #include <linux/blkdev.h>
-#include <linux/vmalloc.h>
 #include <linux/wait.h>
-#include <asm/io.h>
-#include <asm/setup.h>
-#include <asm/pgalloc.h>
-#include <xen/evtchn.h>
 #include <asm/hypervisor.h>
 #include <xen/blkif.h>
-#include <xen/gnttab.h>
 #include <xen/driver_util.h>
 #include <xen/xenbus.h>
+#include <xen/interface/event_channel.h>
 #include "blkback-pagemap.h"
 
 
@@ -94,9 +89,6 @@
        int                 st_wr_sect;
 
        wait_queue_head_t waiting_to_free;
-
-       grant_handle_t shmem_handle;
-       grant_ref_t    shmem_ref;
 } blkif_t;
 
 struct backend_info
@@ -112,7 +104,7 @@
 blkif_t *blkif_alloc(domid_t domid);
 void blkif_disconnect(blkif_t *blkif);
 void blkif_free(blkif_t *blkif);
-int blkif_map(blkif_t *blkif, unsigned long shared_page, unsigned int evtchn);
+int blkif_map(blkif_t *blkif, grant_ref_t, evtchn_port_t);
 void vbd_resize(blkif_t *blkif);
 
 #define blkif_get(_b) (atomic_inc(&(_b)->refcnt))
diff -r 0bee20f8e418 -r 13937900bbd0 drivers/xen/blkback/interface.c
--- a/drivers/xen/blkback/interface.c   Sat Apr 02 15:54:29 2011 +0100
+++ b/drivers/xen/blkback/interface.c   Tue Apr 05 12:38:20 2011 +0100
@@ -33,7 +33,7 @@
 #include "common.h"
 #include <xen/evtchn.h>
 #include <linux/kthread.h>
-#include <linux/delay.h>
+#include <linux/vmalloc.h>
 
 static kmem_cache_t *blkif_cachep;
 
@@ -56,75 +56,39 @@
        return blkif;
 }
 
-static int map_frontend_page(blkif_t *blkif, unsigned long shared_page)
+int blkif_map(blkif_t *blkif, grant_ref_t ring_ref, evtchn_port_t evtchn)
 {
-       struct gnttab_map_grant_ref op;
-       int ret;
-
-       gnttab_set_map_op(&op, (unsigned long)blkif->blk_ring_area->addr,
-                         GNTMAP_host_map, shared_page, blkif->domid);
-
-       gnttab_check_GNTST_eagain_do_while(GNTTABOP_map_grant_ref, &op);
-
-       if (op.status == GNTST_okay) {
-               blkif->shmem_ref = shared_page;
-               blkif->shmem_handle = op.handle;
-               ret = 0;
-       } else {
-               DPRINTK(" Grant table operation failure %d!\n", (int)op.status);
-               ret = -EINVAL;
-       }
-
-       return ret;
-}
-
-static void unmap_frontend_page(blkif_t *blkif)
-{
-       struct gnttab_unmap_grant_ref op;
-
-       gnttab_set_unmap_op(&op, (unsigned long)blkif->blk_ring_area->addr,
-                           GNTMAP_host_map, blkif->shmem_handle);
-
-       if (HYPERVISOR_grant_table_op(GNTTABOP_unmap_grant_ref, &op, 1))
-               BUG();
-}
-
-int blkif_map(blkif_t *blkif, unsigned long shared_page, unsigned int evtchn)
-{
+       struct vm_struct *area;
        int err;
 
        /* Already connected through? */
        if (blkif->irq)
                return 0;
 
-       if ( (blkif->blk_ring_area = alloc_vm_area(PAGE_SIZE)) == NULL )
-               return -ENOMEM;
-
-       err = map_frontend_page(blkif, shared_page);
-       if (err) {
-               free_vm_area(blkif->blk_ring_area);
-               return err;
-       }
+       area = xenbus_map_ring_valloc(blkif->be->dev, ring_ref);
+       if (IS_ERR(area))
+               return PTR_ERR(area);
+       blkif->blk_ring_area = area;
 
        switch (blkif->blk_protocol) {
        case BLKIF_PROTOCOL_NATIVE:
        {
                blkif_sring_t *sring;
-               sring = (blkif_sring_t *)blkif->blk_ring_area->addr;
+               sring = (blkif_sring_t *)area->addr;
                BACK_RING_INIT(&blkif->blk_rings.native, sring, PAGE_SIZE);
                break;
        }
        case BLKIF_PROTOCOL_X86_32:
        {
                blkif_x86_32_sring_t *sring_x86_32;
-               sring_x86_32 = (blkif_x86_32_sring_t 
*)blkif->blk_ring_area->addr;
+               sring_x86_32 = (blkif_x86_32_sring_t *)area->addr;
                BACK_RING_INIT(&blkif->blk_rings.x86_32, sring_x86_32, 
PAGE_SIZE);
                break;
        }
        case BLKIF_PROTOCOL_X86_64:
        {
                blkif_x86_64_sring_t *sring_x86_64;
-               sring_x86_64 = (blkif_x86_64_sring_t 
*)blkif->blk_ring_area->addr;
+               sring_x86_64 = (blkif_x86_64_sring_t *)area->addr;
                BACK_RING_INIT(&blkif->blk_rings.x86_64, sring_x86_64, 
PAGE_SIZE);
                break;
        }
@@ -136,8 +100,7 @@
                blkif->domid, evtchn, blkif_be_int, 0, "blkif-backend", blkif);
        if (err < 0)
        {
-               unmap_frontend_page(blkif);
-               free_vm_area(blkif->blk_ring_area);
+               xenbus_unmap_ring_vfree(blkif->be->dev, area);
                blkif->blk_rings.common.sring = NULL;
                return err;
        }
@@ -163,8 +126,7 @@
        }
 
        if (blkif->blk_rings.common.sring) {
-               unmap_frontend_page(blkif);
-               free_vm_area(blkif->blk_ring_area);
+               xenbus_unmap_ring_vfree(blkif->be->dev, blkif->blk_ring_area);
                blkif->blk_rings.common.sring = NULL;
        }
 }
diff -r 0bee20f8e418 -r 13937900bbd0 drivers/xen/blktap/blktap.c
--- a/drivers/xen/blktap/blktap.c       Sat Apr 02 15:54:29 2011 +0100
+++ b/drivers/xen/blktap/blktap.c       Tue Apr 05 12:38:20 2011 +0100
@@ -45,6 +45,8 @@
 #include "common.h"
 #include <xen/balloon.h>
 #include <xen/driver_util.h>
+#include <xen/evtchn.h>
+#include <xen/gnttab.h>
 #include <linux/kernel.h>
 #include <linux/fs.h>
 #include <linux/mm.h>
diff -r 0bee20f8e418 -r 13937900bbd0 drivers/xen/blktap/common.h
--- a/drivers/xen/blktap/common.h       Sat Apr 02 15:54:29 2011 +0100
+++ b/drivers/xen/blktap/common.h       Tue Apr 05 12:38:20 2011 +0100
@@ -32,15 +32,11 @@
 #include <linux/interrupt.h>
 #include <linux/slab.h>
 #include <linux/blkdev.h>
-#include <linux/vmalloc.h>
-#include <asm/io.h>
-#include <asm/setup.h>
-#include <asm/pgalloc.h>
-#include <xen/evtchn.h>
 #include <asm/hypervisor.h>
 #include <xen/blkif.h>
-#include <xen/gnttab.h>
 #include <xen/driver_util.h>
+#include <xen/xenbus.h>
+#include <xen/interface/event_channel.h>
 
 #define DPRINTK(_f, _a...) pr_debug("(file=%s, line=%d) " _f, \
                                     __FILE__ , __LINE__ , ## _a )
@@ -80,19 +76,15 @@
 
        wait_queue_head_t waiting_to_free;
 
-       grant_handle_t shmem_handle;
-       grant_ref_t    shmem_ref;
-       
        int             dev_num;
        uint64_t        sectors;
 } blkif_t;
 
 blkif_t *tap_alloc_blkif(domid_t domid);
-void tap_blkif_free(blkif_t *blkif);
+void tap_blkif_free(blkif_t *, struct xenbus_device *);
 void tap_blkif_kmem_cache_free(blkif_t *blkif);
-int tap_blkif_map(blkif_t *blkif, unsigned long shared_page, 
-                 unsigned int evtchn);
-void tap_blkif_unmap(blkif_t *blkif);
+int tap_blkif_map(blkif_t *, struct xenbus_device *, grant_ref_t,
+                 evtchn_port_t);
 
 #define blkif_get(_b) (atomic_inc(&(_b)->refcnt))
 #define blkif_put(_b)                                  \
diff -r 0bee20f8e418 -r 13937900bbd0 drivers/xen/blktap/interface.c
--- a/drivers/xen/blktap/interface.c    Sat Apr 02 15:54:29 2011 +0100
+++ b/drivers/xen/blktap/interface.c    Tue Apr 05 12:38:20 2011 +0100
@@ -33,7 +33,7 @@
 
 #include "common.h"
 #include <xen/evtchn.h>
-#include <linux/delay.h>
+#include <linux/vmalloc.h>
 
 static kmem_cache_t *blkif_cachep;
 
@@ -56,76 +56,40 @@
        return blkif;
 }
 
-static int map_frontend_page(blkif_t *blkif, unsigned long shared_page)
+int tap_blkif_map(blkif_t *blkif, struct xenbus_device *dev,
+                 grant_ref_t ring_ref, evtchn_port_t evtchn)
 {
-       struct gnttab_map_grant_ref op;
-       int ret;
-
-       gnttab_set_map_op(&op, (unsigned long)blkif->blk_ring_area->addr,
-                         GNTMAP_host_map, shared_page, blkif->domid);
-
-       gnttab_check_GNTST_eagain_do_while(GNTTABOP_map_grant_ref, &op);
-
-       if (op.status == GNTST_okay) {
-               blkif->shmem_ref = shared_page;
-               blkif->shmem_handle = op.handle;
-               ret = 0;
-       } else {
-               DPRINTK("Grant table operation failure %d!\n", (int)op.status);
-               ret = -EINVAL;
-       }
-
-       return ret;
-}
-
-static void unmap_frontend_page(blkif_t *blkif)
-{
-       struct gnttab_unmap_grant_ref op;
-
-       gnttab_set_unmap_op(&op, (unsigned long)blkif->blk_ring_area->addr,
-                           GNTMAP_host_map, blkif->shmem_handle);
-
-       if (HYPERVISOR_grant_table_op(GNTTABOP_unmap_grant_ref, &op, 1))
-               BUG();
-}
-
-int tap_blkif_map(blkif_t *blkif, unsigned long shared_page, 
-                 unsigned int evtchn)
-{
+       struct vm_struct *area;
        int err;
 
        /* Already connected through? */
        if (blkif->irq)
                return 0;
 
-       if ( (blkif->blk_ring_area = alloc_vm_area(PAGE_SIZE)) == NULL )
-               return -ENOMEM;
-
-       err = map_frontend_page(blkif, shared_page);
-       if (err) {
-               free_vm_area(blkif->blk_ring_area);
-               return err;
-       }
+       area = xenbus_map_ring_valloc(dev, ring_ref);
+       if (IS_ERR(area))
+               return PTR_ERR(area);
+       blkif->blk_ring_area = area;
 
        switch (blkif->blk_protocol) {
        case BLKIF_PROTOCOL_NATIVE:
        {
                blkif_sring_t *sring;
-               sring = (blkif_sring_t *)blkif->blk_ring_area->addr;
+               sring = (blkif_sring_t *)area->addr;
                BACK_RING_INIT(&blkif->blk_rings.native, sring, PAGE_SIZE);
                break;
        }
        case BLKIF_PROTOCOL_X86_32:
        {
                blkif_x86_32_sring_t *sring_x86_32;
-               sring_x86_32 = (blkif_x86_32_sring_t 
*)blkif->blk_ring_area->addr;
+               sring_x86_32 = (blkif_x86_32_sring_t *)area->addr;
                BACK_RING_INIT(&blkif->blk_rings.x86_32, sring_x86_32, 
PAGE_SIZE);
                break;
        }
        case BLKIF_PROTOCOL_X86_64:
        {
                blkif_x86_64_sring_t *sring_x86_64;
-               sring_x86_64 = (blkif_x86_64_sring_t 
*)blkif->blk_ring_area->addr;
+               sring_x86_64 = (blkif_x86_64_sring_t *)area->addr;
                BACK_RING_INIT(&blkif->blk_rings.x86_64, sring_x86_64, 
PAGE_SIZE);
                break;
        }
@@ -137,8 +101,7 @@
                blkif->domid, evtchn, tap_blkif_be_int,
                0, "blkif-backend", blkif);
        if (err < 0) {
-               unmap_frontend_page(blkif);
-               free_vm_area(blkif->blk_ring_area);
+               xenbus_unmap_ring_vfree(dev, area);
                blkif->blk_rings.common.sring = NULL;
                return err;
        }
@@ -147,26 +110,21 @@
        return 0;
 }
 
-void tap_blkif_unmap(blkif_t *blkif)
-{
-       if (blkif->irq) {
-               unbind_from_irqhandler(blkif->irq, blkif);
-               blkif->irq = 0;
-       }
-       if (blkif->blk_rings.common.sring) {
-               unmap_frontend_page(blkif);
-               free_vm_area(blkif->blk_ring_area);
-               blkif->blk_rings.common.sring = NULL;
-       }
-}
-
-void tap_blkif_free(blkif_t *blkif)
+void tap_blkif_free(blkif_t *blkif, struct xenbus_device *dev)
 {
        atomic_dec(&blkif->refcnt);
        wait_event(blkif->waiting_to_free, atomic_read(&blkif->refcnt) == 0);
        atomic_inc(&blkif->refcnt);
 
-       tap_blkif_unmap(blkif);
+       if (blkif->irq) {
+               unbind_from_irqhandler(blkif->irq, blkif);
+               blkif->irq = 0;
+       }
+
+       if (blkif->blk_rings.common.sring) {
+               xenbus_unmap_ring_vfree(dev, blkif->blk_ring_area);
+               blkif->blk_rings.common.sring = NULL;
+       }
 }
 
 void tap_blkif_kmem_cache_free(blkif_t *blkif)
diff -r 0bee20f8e418 -r 13937900bbd0 drivers/xen/blktap/xenbus.c
--- a/drivers/xen/blktap/xenbus.c       Sat Apr 02 15:54:29 2011 +0100
+++ b/drivers/xen/blktap/xenbus.c       Tue Apr 05 12:38:20 2011 +0100
@@ -192,7 +192,7 @@
                if (be->blkif->xenblkd)
                        kthread_stop(be->blkif->xenblkd);
                signal_tapdisk(be->blkif->dev_num);
-               tap_blkif_free(be->blkif);
+               tap_blkif_free(be->blkif, dev);
                tap_blkif_kmem_cache_free(be->blkif);
                be->blkif = NULL;
        }
@@ -348,7 +348,7 @@
        }
 
        /* idempotent */
-       tap_blkif_free(blkif);
+       tap_blkif_free(blkif, blkif->be->dev);
 }
 
 /**
@@ -472,7 +472,7 @@
               ring_ref, evtchn, be->blkif->blk_protocol, protocol);
 
        /* Map the shared frame, irq etc. */
-       err = tap_blkif_map(be->blkif, ring_ref, evtchn);
+       err = tap_blkif_map(be->blkif, dev, ring_ref, evtchn);
        if (err) {
                xenbus_dev_fatal(dev, err, "mapping ring-ref %lu port %u",
                                 ring_ref, evtchn);
diff -r 0bee20f8e418 -r 13937900bbd0 drivers/xen/netback/common.h
--- a/drivers/xen/netback/common.h      Sat Apr 02 15:54:29 2011 +0100
+++ b/drivers/xen/netback/common.h      Tue Apr 05 12:38:20 2011 +0100
@@ -38,14 +38,10 @@
 #include <linux/netdevice.h>
 #include <linux/etherdevice.h>
 #include <linux/wait.h>
-#include <xen/evtchn.h>
 #include <xen/interface/io/netif.h>
-#include <asm/io.h>
-#include <asm/pgalloc.h>
-#include <xen/interface/grant_table.h>
-#include <xen/gnttab.h>
 #include <xen/driver_util.h>
 #include <xen/xenbus.h>
+#include <xen/interface/event_channel.h>
 
 #define DPRINTK(_f, _a...)                     \
        pr_debug("(file=%s, line=%d) " _f,      \
@@ -62,11 +58,6 @@
 
        u8               fe_dev_addr[6];
 
-       /* Physical parameters of the comms window. */
-       grant_handle_t   tx_shmem_handle;
-       grant_ref_t      tx_shmem_ref;
-       grant_handle_t   rx_shmem_handle;
-       grant_ref_t      rx_shmem_ref;
        unsigned int     irq;
 
        /* The shared rings and indexes. */
@@ -185,12 +176,12 @@
 #define NET_TX_RING_SIZE __CONST_RING_SIZE(netif_tx, PAGE_SIZE)
 #define NET_RX_RING_SIZE __CONST_RING_SIZE(netif_rx, PAGE_SIZE)
 
-void netif_disconnect(netif_t *netif);
+void netif_disconnect(struct backend_info *be);
 
 void netif_set_features(netif_t *netif);
 netif_t *netif_alloc(struct device *parent, domid_t domid, unsigned int 
handle);
-int netif_map(netif_t *netif, unsigned long tx_ring_ref,
-             unsigned long rx_ring_ref, unsigned int evtchn);
+int netif_map(struct backend_info *be, grant_ref_t tx_ring_ref,
+             grant_ref_t rx_ring_ref, evtchn_port_t evtchn);
 
 #define netif_get(_b) (atomic_inc(&(_b)->refcnt))
 #define netif_put(_b)                                          \
diff -r 0bee20f8e418 -r 13937900bbd0 drivers/xen/netback/interface.c
--- a/drivers/xen/netback/interface.c   Sat Apr 02 15:54:29 2011 +0100
+++ b/drivers/xen/netback/interface.c   Tue Apr 05 12:38:20 2011 +0100
@@ -34,6 +34,8 @@
 #include <linux/ethtool.h>
 #include <linux/rtnetlink.h>
 #include <linux/delay.h>
+#include <linux/vmalloc.h>
+#include <xen/evtchn.h>
 
 /*
  * Module parameter 'queue_length':
@@ -288,65 +290,11 @@
        return netif;
 }
 
-static int map_frontend_pages(
-       netif_t *netif, grant_ref_t tx_ring_ref, grant_ref_t rx_ring_ref)
+int netif_map(struct backend_info *be, grant_ref_t tx_ring_ref,
+             grant_ref_t rx_ring_ref, evtchn_port_t evtchn)
 {
-       struct gnttab_map_grant_ref op;
-
-       gnttab_set_map_op(&op, (unsigned long)netif->tx_comms_area->addr,
-                         GNTMAP_host_map, tx_ring_ref, netif->domid);
-       gnttab_check_GNTST_eagain_do_while(GNTTABOP_map_grant_ref, &op);
-
-       if (op.status != GNTST_okay) {
-               DPRINTK(" Gnttab failure mapping tx_ring_ref %d!\n", 
(int)op.status);
-               return -EINVAL;
-       }
-
-       netif->tx_shmem_ref    = tx_ring_ref;
-       netif->tx_shmem_handle = op.handle;
-
-       gnttab_set_map_op(&op, (unsigned long)netif->rx_comms_area->addr,
-                         GNTMAP_host_map, rx_ring_ref, netif->domid);
-       gnttab_check_GNTST_eagain_do_while(GNTTABOP_map_grant_ref, &op);
-
-       if (op.status != GNTST_okay) {
-               struct gnttab_unmap_grant_ref unop;
-
-               gnttab_set_unmap_op(&unop,
-                                   (unsigned long)netif->tx_comms_area->addr,
-                                   GNTMAP_host_map, netif->tx_shmem_handle);
-               VOID(HYPERVISOR_grant_table_op(GNTTABOP_unmap_grant_ref,
-                                              &unop, 1));
-               DPRINTK(" Gnttab failure mapping rx_ring_ref %d!\n", 
(int)op.status);
-               return -EINVAL;
-       }
-
-       netif->rx_shmem_ref    = rx_ring_ref;
-       netif->rx_shmem_handle = op.handle;
-
-       return 0;
-}
-
-static void unmap_frontend_pages(netif_t *netif)
-{
-       struct gnttab_unmap_grant_ref op;
-
-       gnttab_set_unmap_op(&op, (unsigned long)netif->tx_comms_area->addr,
-                           GNTMAP_host_map, netif->tx_shmem_handle);
-
-       if (HYPERVISOR_grant_table_op(GNTTABOP_unmap_grant_ref, &op, 1))
-               BUG();
-
-       gnttab_set_unmap_op(&op, (unsigned long)netif->rx_comms_area->addr,
-                           GNTMAP_host_map, netif->rx_shmem_handle);
-
-       if (HYPERVISOR_grant_table_op(GNTTABOP_unmap_grant_ref, &op, 1))
-               BUG();
-}
-
-int netif_map(netif_t *netif, unsigned long tx_ring_ref,
-             unsigned long rx_ring_ref, unsigned int evtchn)
-{
+       netif_t *netif = be->netif;
+       struct vm_struct *area;
        int err = -ENOMEM;
        netif_tx_sring_t *txs;
        netif_rx_sring_t *rxs;
@@ -355,16 +303,16 @@
        if (netif->irq)
                return 0;
 
-       netif->tx_comms_area = alloc_vm_area(PAGE_SIZE);
-       if (netif->tx_comms_area == NULL)
-               return -ENOMEM;
-       netif->rx_comms_area = alloc_vm_area(PAGE_SIZE);
-       if (netif->rx_comms_area == NULL)
+       area = xenbus_map_ring_valloc(be->dev, tx_ring_ref);
+       if (IS_ERR(area))
+               return PTR_ERR(area);
+       netif->tx_comms_area = area;
+       area = xenbus_map_ring_valloc(be->dev, rx_ring_ref);
+       if (IS_ERR(area)) {
+               err = PTR_ERR(area);
                goto err_rx;
-
-       err = map_frontend_pages(netif, tx_ring_ref, rx_ring_ref);
-       if (err)
-               goto err_map;
+       }
+       netif->rx_comms_area = area;
 
        err = bind_interdomain_evtchn_to_irqhandler(
                netif->domid, evtchn, netif_be_int, 0,
@@ -393,16 +341,16 @@
 
        return 0;
 err_hypervisor:
-       unmap_frontend_pages(netif);
-err_map:
-       free_vm_area(netif->rx_comms_area);
+       xenbus_unmap_ring_vfree(be->dev, netif->rx_comms_area);
 err_rx:
-       free_vm_area(netif->tx_comms_area);
+       xenbus_unmap_ring_vfree(be->dev, netif->tx_comms_area);
        return err;
 }
 
-void netif_disconnect(netif_t *netif)
+void netif_disconnect(struct backend_info *be)
 {
+       netif_t *netif = be->netif;
+
        if (netback_carrier_ok(netif)) {
                rtnl_lock();
                netback_carrier_off(netif);
@@ -425,9 +373,8 @@
        unregister_netdev(netif->dev);
 
        if (netif->tx.sring) {
-               unmap_frontend_pages(netif);
-               free_vm_area(netif->tx_comms_area);
-               free_vm_area(netif->rx_comms_area);
+               xenbus_unmap_ring_vfree(be->dev, netif->tx_comms_area);
+               xenbus_unmap_ring_vfree(be->dev, netif->rx_comms_area);
        }
 
        free_netdev(netif->dev);
diff -r 0bee20f8e418 -r 13937900bbd0 drivers/xen/netback/netback.c
--- a/drivers/xen/netback/netback.c     Sat Apr 02 15:54:29 2011 +0100
+++ b/drivers/xen/netback/netback.c     Tue Apr 05 12:38:20 2011 +0100
@@ -38,6 +38,8 @@
 #include <linux/if_vlan.h>
 #include <linux/tcp.h>
 #include <xen/balloon.h>
+#include <xen/evtchn.h>
+#include <xen/gnttab.h>
 #include <xen/interface/memory.h>
 
 /*define NETBE_DEBUG_INTERRUPT*/
diff -r 0bee20f8e418 -r 13937900bbd0 drivers/xen/netback/xenbus.c
--- a/drivers/xen/netback/xenbus.c      Sat Apr 02 15:54:29 2011 +0100
+++ b/drivers/xen/netback/xenbus.c      Tue Apr 05 12:38:20 2011 +0100
@@ -52,7 +52,7 @@
 
        if (be->netif) {
                kobject_uevent(&xbdev_dev->kobj, KOBJ_OFFLINE);
-               netif_disconnect(be->netif);
+               netif_disconnect(be);
                be->netif = NULL;
        }
 }
@@ -418,7 +418,7 @@
        netif_set_features(netif);
 
        /* Map the shared frame, irq etc. */
-       err = netif_map(netif, tx_ring_ref, rx_ring_ref, evtchn);
+       err = netif_map(be, tx_ring_ref, rx_ring_ref, evtchn);
        if (err) {
                xenbus_dev_fatal(dev, err,
                                 "mapping shared-frames %lu/%lu port %u",
diff -r 0bee20f8e418 -r 13937900bbd0 drivers/xen/scsiback/common.h
--- a/drivers/xen/scsiback/common.h     Sat Apr 02 15:54:29 2011 +0100
+++ b/drivers/xen/scsiback/common.h     Tue Apr 05 12:38:20 2011 +0100
@@ -48,17 +48,10 @@
 #include <scsi/scsi_device.h>
 #include <scsi/scsi_dbg.h>
 #include <scsi/scsi_eh.h>
-#include <asm/io.h>
-#include <asm/setup.h>
-#include <asm/pgalloc.h>
-#include <asm/delay.h>
-#include <xen/evtchn.h>
 #include <asm/hypervisor.h>
-#include <xen/gnttab.h>
 #include <xen/driver_util.h>
 #include <xen/xenbus.h>
 #include <xen/interface/io/ring.h>
-#include <xen/interface/grant_table.h>
 #include <xen/interface/io/vscsiif.h>
 
 
@@ -90,8 +83,6 @@
 
        struct vscsiif_back_ring  ring;
        struct vm_struct *ring_area;
-       grant_handle_t shmem_handle;
-       grant_ref_t shmem_ref;
 
        spinlock_t ring_lock;
        atomic_t nr_unreplied_reqs;
@@ -148,14 +139,13 @@
 #define VSCSI_TYPE_HOST                1
 
 irqreturn_t scsiback_intr(int, void *, struct pt_regs *);
-int scsiback_init_sring(struct vscsibk_info *info,
-               unsigned long ring_ref, unsigned int evtchn);
+int scsiback_init_sring(struct vscsibk_info *, grant_ref_t, evtchn_port_t);
 int scsiback_schedule(void *data);
 
 
 struct vscsibk_info *vscsibk_info_alloc(domid_t domid);
 void scsiback_free(struct vscsibk_info *info);
-void scsiback_disconnect(struct vscsibk_info *info);
+void scsiback_disconnect(struct vscsibk_info *);
 int __init scsiback_interface_init(void);
 void scsiback_interface_exit(void);
 int scsiback_xenbus_init(void);
diff -r 0bee20f8e418 -r 13937900bbd0 drivers/xen/scsiback/interface.c
--- a/drivers/xen/scsiback/interface.c  Sat Apr 02 15:54:29 2011 +0100
+++ b/drivers/xen/scsiback/interface.c  Tue Apr 05 12:38:20 2011 +0100
@@ -38,6 +38,7 @@
 #include <xen/evtchn.h>
 #include <linux/kthread.h>
 #include <linux/delay.h>
+#include <linux/vmalloc.h>
 
 
 static kmem_cache_t *scsiback_cachep;
@@ -60,45 +61,10 @@
        return info;
 }
 
-static int map_frontend_page( struct vscsibk_info *info,
-                               unsigned long ring_ref)
+int scsiback_init_sring(struct vscsibk_info *info, grant_ref_t ring_ref,
+                       evtchn_port_t evtchn)
 {
-       struct gnttab_map_grant_ref op;
-       int ret;
-
-       gnttab_set_map_op(&op, (unsigned long)info->ring_area->addr,
-                               GNTMAP_host_map, ring_ref,
-                               info->domid);
-       gnttab_check_GNTST_eagain_do_while(GNTTABOP_map_grant_ref, &op);
-
-       if (op.status != GNTST_okay) {
-               printk(KERN_ERR "scsiback: Grant table operation failure 
%d!\n", (int)op.status);
-               ret = -EINVAL;
-       } else {
-               info->shmem_ref    = ring_ref;
-               info->shmem_handle = op.handle;
-               ret = 0;
-       }
-
-       return ret;
-}
-
-static void unmap_frontend_page(struct vscsibk_info *info)
-{
-       struct gnttab_unmap_grant_ref op;
-       int err;
-
-       gnttab_set_unmap_op(&op, (unsigned long)info->ring_area->addr,
-                               GNTMAP_host_map, info->shmem_handle);
-
-       err = HYPERVISOR_grant_table_op(GNTTABOP_unmap_grant_ref, &op, 1);
-       BUG_ON(err);
-
-}
-
-int scsiback_init_sring(struct vscsibk_info *info,
-               unsigned long ring_ref, unsigned int evtchn)
-{
+       struct vm_struct *area;
        struct vscsiif_sring *sring;
        int err;
 
@@ -107,15 +73,12 @@
                return -1;
        }
 
-       info->ring_area = alloc_vm_area(PAGE_SIZE);
-       if (!info)
-               return -ENOMEM;
+       area = xenbus_map_ring_valloc(info->dev, ring_ref);
+       if (IS_ERR(area))
+               return PTR_ERR(area);
+       info->ring_area = area;
 
-       err = map_frontend_page(info, ring_ref);
-       if (err)
-               goto free_vm;
-
-       sring = (struct vscsiif_sring *) info->ring_area->addr;
+       sring = (struct vscsiif_sring *)area->addr;
        BACK_RING_INIT(&info->ring, sring, PAGE_SIZE);
 
        err = bind_interdomain_evtchn_to_irqhandler(
@@ -130,9 +93,7 @@
        return 0;
 
 unmap_page:
-       unmap_frontend_page(info);
-free_vm:
-       free_vm_area(info->ring_area);
+       xenbus_unmap_ring_vfree(info->dev, area);
 
        return err;
 }
@@ -153,8 +114,7 @@
        }
 
        if (info->ring.sring) {
-               unmap_frontend_page(info);
-               free_vm_area(info->ring_area);
+               xenbus_unmap_ring_vfree(info->dev, info->ring_area);
                info->ring.sring = NULL;
        }
 }
diff -r 0bee20f8e418 -r 13937900bbd0 drivers/xen/scsiback/scsiback.c
--- a/drivers/xen/scsiback/scsiback.c   Sat Apr 02 15:54:29 2011 +0100
+++ b/drivers/xen/scsiback/scsiback.c   Tue Apr 05 12:38:20 2011 +0100
@@ -35,6 +35,8 @@
 #include <linux/list.h>
 #include <linux/delay.h>
 #include <xen/balloon.h>
+#include <xen/evtchn.h>
+#include <xen/gnttab.h>
 #include <asm/hypervisor.h>
 #include <scsi/scsi.h>
 #include <scsi/scsi_cmnd.h>
diff -r 0bee20f8e418 -r 13937900bbd0 drivers/xen/tpmback/common.h
--- a/drivers/xen/tpmback/common.h      Sat Apr 02 15:54:29 2011 +0100
+++ b/drivers/xen/tpmback/common.h      Tue Apr 05 12:38:20 2011 +0100
@@ -8,19 +8,31 @@
 #include <linux/version.h>
 #include <linux/module.h>
 #include <linux/interrupt.h>
+#include <linux/mm.h>
 #include <linux/slab.h>
-#include <xen/evtchn.h>
 #include <xen/driver_util.h>
-#include <xen/interface/grant_table.h>
+#include <xen/xenbus.h>
+#include <xen/interface/event_channel.h>
 #include <xen/interface/io/tpmif.h>
-#include <asm/io.h>
-#include <asm/pgalloc.h>
 
 #define DPRINTK(_f, _a...)                     \
        pr_debug("(file=%s, line=%d) " _f,      \
                 __FILE__ , __LINE__ , ## _a )
 
-struct backend_info;
+struct backend_info
+{
+       struct xenbus_device *dev;
+
+       /* our communications channel */
+       struct tpmif_st *tpmif;
+
+       long int frontend_id;
+       long int instance; // instance of TPM
+       u8 is_instance_set;// whether instance number has been set
+
+       /* watch front end for changes */
+       struct xenbus_watch backend_watch;
+};
 
 typedef struct tpmif_st {
        struct list_head tpmif_list;
@@ -45,8 +57,6 @@
 
        struct backend_info *bi;
 
-       grant_handle_t shmem_handle;
-       grant_ref_t shmem_ref;
        struct page **mmap_pages;
 
        char devname[20];
@@ -60,7 +70,7 @@
 void tpmif_deschedule_work(tpmif_t * tpmif);
 void tpmif_xenbus_init(void);
 void tpmif_xenbus_exit(void);
-int tpmif_map(tpmif_t *tpmif, unsigned long shared_page, unsigned int evtchn);
+int tpmif_map(tpmif_t *, grant_ref_t, evtchn_port_t);
 irqreturn_t tpmif_be_int(int irq, void *dev_id, struct pt_regs *regs);
 
 long int tpmback_get_instance(struct backend_info *bi);
diff -r 0bee20f8e418 -r 13937900bbd0 drivers/xen/tpmback/interface.c
--- a/drivers/xen/tpmback/interface.c   Sat Apr 02 15:54:29 2011 +0100
+++ b/drivers/xen/tpmback/interface.c   Tue Apr 05 12:38:20 2011 +0100
@@ -13,7 +13,9 @@
 
 #include "common.h"
 #include <linux/delay.h>
+#include <linux/vmalloc.h>
 #include <xen/balloon.h>
+#include <xen/evtchn.h>
 #include <xen/gnttab.h>
 
 static kmem_cache_t *tpmif_cachep;
@@ -78,68 +80,30 @@
        return alloc_tpmif(domid, bi);
 }
 
-static int map_frontend_page(tpmif_t *tpmif, unsigned long shared_page)
+int tpmif_map(tpmif_t *tpmif, grant_ref_t ring_ref, evtchn_port_t evtchn)
 {
-       struct gnttab_map_grant_ref op;
-       int ret;
-
-       gnttab_set_map_op(&op, (unsigned long)tpmif->tx_area->addr,
-                         GNTMAP_host_map, shared_page, tpmif->domid);
-
-       gnttab_check_GNTST_eagain_do_while(GNTTABOP_map_grant_ref, &op);
-
-       if (op.status != GNTST_okay) {
-               DPRINTK(" Grant table operation failure %d!\n", (int)op.status);
-               ret = -EINVAL;
-       } else {
-               tpmif->shmem_ref = shared_page;
-               tpmif->shmem_handle = op.handle;
-               ret = 0;
-       }
-
-       return ret;
-}
-
-static void unmap_frontend_page(tpmif_t *tpmif)
-{
-       struct gnttab_unmap_grant_ref op;
-
-       gnttab_set_unmap_op(&op, (unsigned long)tpmif->tx_area->addr,
-                           GNTMAP_host_map, tpmif->shmem_handle);
-
-       if (HYPERVISOR_grant_table_op(GNTTABOP_unmap_grant_ref, &op, 1))
-               BUG();
-}
-
-int tpmif_map(tpmif_t *tpmif, unsigned long shared_page, unsigned int evtchn)
-{
+       struct vm_struct *area;
        int err;
 
        if (tpmif->irq)
                return 0;
 
-       if ((tpmif->tx_area = alloc_vm_area(PAGE_SIZE)) == NULL)
-               return -ENOMEM;
+       area = xenbus_map_ring_valloc(tpmif->bi->dev, ring_ref);
+       if (IS_ERR(area))
+               return PTR_ERR(area);
+       tpmif->tx_area = area;
 
-       err = map_frontend_page(tpmif, shared_page);
-       if (err) {
-               free_vm_area(tpmif->tx_area);
-               return err;
-       }
-
-       tpmif->tx = (tpmif_tx_interface_t *)tpmif->tx_area->addr;
+       tpmif->tx = (tpmif_tx_interface_t *)area->addr;
        memset(tpmif->tx, 0, PAGE_SIZE);
 
        err = bind_interdomain_evtchn_to_irqhandler(
                tpmif->domid, evtchn, tpmif_be_int, 0, tpmif->devname, tpmif);
        if (err < 0) {
-               unmap_frontend_page(tpmif);
-               free_vm_area(tpmif->tx_area);
+               xenbus_unmap_ring_vfree(tpmif->bi->dev, area);
                return err;
        }
        tpmif->irq = err;
 
-       tpmif->shmem_ref = shared_page;
        tpmif->active = 1;
 
        return 0;
@@ -150,10 +114,8 @@
        if (tpmif->irq)
                unbind_from_irqhandler(tpmif->irq, tpmif);
 
-       if (tpmif->tx) {
-               unmap_frontend_page(tpmif);
-               free_vm_area(tpmif->tx_area);
-       }
+       if (tpmif->tx)
+               xenbus_unmap_ring_vfree(tpmif->bi->dev, tpmif->tx_area);
 
        free_tpmif(tpmif);
 }
diff -r 0bee20f8e418 -r 13937900bbd0 drivers/xen/tpmback/xenbus.c
--- a/drivers/xen/tpmback/xenbus.c      Sat Apr 02 15:54:29 2011 +0100
+++ b/drivers/xen/tpmback/xenbus.c      Tue Apr 05 12:38:20 2011 +0100
@@ -21,21 +21,6 @@
 #include <xen/xenbus.h>
 #include "common.h"
 
-struct backend_info
-{
-       struct xenbus_device *dev;
-
-       /* our communications channel */
-       tpmif_t *tpmif;
-
-       long int frontend_id;
-       long int instance; // instance of TPM
-       u8 is_instance_set;// whether instance number has been set
-
-       /* watch front end for changes */
-       struct xenbus_watch backend_watch;
-};
-
 static void maybe_connect(struct backend_info *be);
 static void connect(struct backend_info *be);
 static int connect_ring(struct backend_info *be);
diff -r 0bee20f8e418 -r 13937900bbd0 drivers/xen/usbback/interface.c
--- a/drivers/xen/usbback/interface.c   Sat Apr 02 15:54:29 2011 +0100
+++ b/drivers/xen/usbback/interface.c   Tue Apr 05 12:38:20 2011 +0100
@@ -43,8 +43,9 @@
  * DEALINGS IN THE SOFTWARE.
  */
 
-#include <linux/delay.h>
+#include <linux/vmalloc.h>
 #include "usbback.h"
+#include <xen/evtchn.h>
 
 static LIST_HEAD(usbif_list);
 static DEFINE_SPINLOCK(usbif_list_lock);
@@ -101,83 +102,27 @@
        return usbif;
 }
 
-static int map_frontend_pages(usbif_t *usbif,
-                               grant_ref_t urb_ring_ref,
-                               grant_ref_t conn_ring_ref)
-{
-       struct gnttab_map_grant_ref op;
-
-       gnttab_set_map_op(&op, (unsigned long)usbif->urb_ring_area->addr,
-                         GNTMAP_host_map, urb_ring_ref, usbif->domid);
-
-       gnttab_check_GNTST_eagain_do_while(GNTTABOP_map_grant_ref, &op);
-
-       if (op.status != GNTST_okay) {
-               printk(KERN_ERR "grant table failure mapping urb_ring_ref 
%d\n", (int)op.status);
-               return -EINVAL;
-       }
-
-       usbif->urb_shmem_ref = urb_ring_ref;
-       usbif->urb_shmem_handle = op.handle;
-
-       gnttab_set_map_op(&op, (unsigned long)usbif->conn_ring_area->addr,
-                         GNTMAP_host_map, conn_ring_ref, usbif->domid);
-
-       gnttab_check_GNTST_eagain_do_while(GNTTABOP_map_grant_ref, &op);
-
-       if (op.status != GNTST_okay) {
-               struct gnttab_unmap_grant_ref unop;
-               gnttab_set_unmap_op(&unop,
-                               (unsigned long) usbif->urb_ring_area->addr,
-                               GNTMAP_host_map, usbif->urb_shmem_handle);
-               VOID(HYPERVISOR_grant_table_op(GNTTABOP_unmap_grant_ref, &unop,
-                               1));
-               printk(KERN_ERR "grant table failure mapping conn_ring_ref 
%d\n", (int)op.status);
-               return -EINVAL;
-       }
-
-       usbif->conn_shmem_ref = conn_ring_ref;
-       usbif->conn_shmem_handle = op.handle;
-
-       return 0;
-}
-
-static void unmap_frontend_pages(usbif_t *usbif)
-{
-       struct gnttab_unmap_grant_ref op;
-
-       gnttab_set_unmap_op(&op, (unsigned long)usbif->urb_ring_area->addr,
-                           GNTMAP_host_map, usbif->urb_shmem_handle);
-
-       if (HYPERVISOR_grant_table_op(GNTTABOP_unmap_grant_ref, &op, 1))
-               BUG();
-
-       gnttab_set_unmap_op(&op, (unsigned long)usbif->conn_ring_area->addr,
-                           GNTMAP_host_map, usbif->conn_shmem_handle);
-
-       if (HYPERVISOR_grant_table_op(GNTTABOP_unmap_grant_ref, &op, 1))
-               BUG();
-}
-
-int usbif_map(usbif_t *usbif, unsigned long urb_ring_ref,
-               unsigned long conn_ring_ref, unsigned int evtchn)
+int usbif_map(usbif_t *usbif, grant_ref_t urb_ring_ref,
+             grant_ref_t conn_ring_ref, evtchn_port_t evtchn)
 {
        int err = -ENOMEM;
-
+       struct vm_struct *area;
        usbif_urb_sring_t *urb_sring;
        usbif_conn_sring_t *conn_sring;
 
        if (usbif->irq)
                return 0;
 
-       if ((usbif->urb_ring_area = alloc_vm_area(PAGE_SIZE)) == NULL)
-               return err;
-       if ((usbif->conn_ring_area = alloc_vm_area(PAGE_SIZE)) == NULL)
+       area = xenbus_map_ring_valloc(usbif->xbdev, urb_ring_ref);
+       if (IS_ERR(area))
+               return PTR_ERR(area);
+       usbif->urb_ring_area = area;
+       area = xenbus_map_ring_valloc(usbif->xbdev, conn_ring_ref);
+       if (IS_ERR(area)) {
+               err = PTR_ERR(area);
                goto fail_alloc;
-
-       err = map_frontend_pages(usbif, urb_ring_ref, conn_ring_ref);
-       if (err)
-               goto fail_map;
+       }
+       usbif->conn_ring_area = area;
 
        err = bind_interdomain_evtchn_to_irqhandler(
                        usbif->domid, evtchn, usbbk_be_int, 0,
@@ -195,11 +140,9 @@
        return 0;
 
 fail_evtchn:
-       unmap_frontend_pages(usbif);
-fail_map:
-       free_vm_area(usbif->conn_ring_area);
+       xenbus_unmap_ring_vfree(usbif->xbdev, usbif->conn_ring_area);
 fail_alloc:
-       free_vm_area(usbif->urb_ring_area);
+       xenbus_unmap_ring_vfree(usbif->xbdev, usbif->urb_ring_area);
 
        return err;
 }
@@ -229,9 +172,8 @@
        }
 
        if (usbif->urb_ring.sring) {
-               unmap_frontend_pages(usbif);
-               free_vm_area(usbif->urb_ring_area);
-               free_vm_area(usbif->conn_ring_area);
+               xenbus_unmap_ring_vfree(usbif->xbdev, usbif->urb_ring_area);
+               xenbus_unmap_ring_vfree(usbif->xbdev, usbif->conn_ring_area);
                usbif->urb_ring.sring = NULL;
                usbif->conn_ring.sring = NULL;
        }
diff -r 0bee20f8e418 -r 13937900bbd0 drivers/xen/usbback/usbback.c
--- a/drivers/xen/usbback/usbback.c     Sat Apr 02 15:54:29 2011 +0100
+++ b/drivers/xen/usbback/usbback.c     Tue Apr 05 12:38:20 2011 +0100
@@ -45,6 +45,8 @@
 
 #include <linux/mm.h>
 #include <xen/balloon.h>
+#include <xen/evtchn.h>
+#include <xen/gnttab.h>
 #include "usbback.h"
 
 #if 0
diff -r 0bee20f8e418 -r 13937900bbd0 drivers/xen/usbback/usbback.h
--- a/drivers/xen/usbback/usbback.h     Sat Apr 02 15:54:29 2011 +0100
+++ b/drivers/xen/usbback/usbback.h     Tue Apr 05 12:38:20 2011 +0100
@@ -55,11 +55,9 @@
 #include <linux/wait.h>
 #include <linux/list.h>
 #include <linux/kref.h>
-#include <xen/evtchn.h>
-#include <xen/gnttab.h>
 #include <xen/driver_util.h>
-#include <xen/interface/xen.h>
 #include <xen/xenbus.h>
+#include <xen/interface/event_channel.h>
 #include <xen/interface/io/usbif.h>
 
 struct usbstub;
@@ -86,11 +84,6 @@
        spinlock_t conn_ring_lock;
        atomic_t refcnt;
 
-       grant_handle_t urb_shmem_handle;
-       grant_ref_t urb_shmem_ref;
-       grant_handle_t conn_shmem_handle;
-       grant_ref_t conn_shmem_ref;
-
        struct xenbus_watch backend_watch;
 
        /* device address lookup table */
@@ -134,8 +127,8 @@
 usbif_t *usbif_alloc(domid_t domid, unsigned int handle);
 void usbif_disconnect(usbif_t *usbif);
 void usbif_free(usbif_t *usbif);
-int usbif_map(usbif_t *usbif, unsigned long urb_ring_ref,
-               unsigned long conn_ring_ref, unsigned int evtchn);
+int usbif_map(usbif_t *usbif, grant_ref_t urb_ring_ref,
+             grant_ref_t conn_ring_ref, evtchn_port_t);
 
 #define usbif_get(_b) (atomic_inc(&(_b)->refcnt))
 #define usbif_put(_b) \
diff -r 0bee20f8e418 -r 13937900bbd0 drivers/xen/xenbus/xenbus_backend_client.c
--- a/drivers/xen/xenbus/xenbus_backend_client.c        Sat Apr 02 15:54:29 
2011 +0100
+++ b/drivers/xen/xenbus/xenbus_backend_client.c        Tue Apr 05 12:38:20 
2011 +0100
@@ -37,7 +37,7 @@
 #include <xen/driver_util.h>
 
 /* Based on Rusty Russell's skeleton driver's map_page */
-struct vm_struct *xenbus_map_ring_valloc(struct xenbus_device *dev, int 
gnt_ref)
+struct vm_struct *xenbus_map_ring_valloc(struct xenbus_device *dev, 
grant_ref_t gnt_ref)
 {
        struct gnttab_map_grant_ref op;
        struct vm_struct *area;
@@ -68,32 +68,6 @@
 EXPORT_SYMBOL_GPL(xenbus_map_ring_valloc);
 
 
-int xenbus_map_ring(struct xenbus_device *dev, int gnt_ref,
-                  grant_handle_t *handle, void *vaddr)
-{
-       struct gnttab_map_grant_ref op;
-       int ret;
-       
-       gnttab_set_map_op(&op, (unsigned long)vaddr, GNTMAP_host_map,
-                         gnt_ref, dev->otherend_id);
-
-       gnttab_check_GNTST_eagain_do_while(GNTTABOP_map_grant_ref, &op);
-
-       if (op.status != GNTST_okay) {
-               xenbus_dev_fatal(dev, op.status,
-                                "mapping in shared page %d from domain %d",
-                                gnt_ref, dev->otherend_id);
-               ret = -EINVAL;
-       } else {
-               *handle = op.handle;
-               ret = 0;
-       }
-
-       return ret;
-}
-EXPORT_SYMBOL_GPL(xenbus_map_ring);
-
-
 /* Based on Rusty Russell's skeleton driver's unmap_page */
 int xenbus_unmap_ring_vfree(struct xenbus_device *dev, struct vm_struct *area)
 {
@@ -117,25 +91,6 @@
 EXPORT_SYMBOL_GPL(xenbus_unmap_ring_vfree);
 
 
-int xenbus_unmap_ring(struct xenbus_device *dev,
-                    grant_handle_t handle, void *vaddr)
-{
-       struct gnttab_unmap_grant_ref op;
-
-       gnttab_set_unmap_op(&op, (unsigned long)vaddr, GNTMAP_host_map,
-                           handle);
-       if (HYPERVISOR_grant_table_op(GNTTABOP_unmap_grant_ref, &op, 1))
-               BUG();
-
-       if (op.status != GNTST_okay)
-               xenbus_dev_error(dev, op.status,
-                                "unmapping page at handle %d error %d",
-                                handle, op.status);
-
-       return op.status == GNTST_okay ? 0 : -EINVAL;
-}
-EXPORT_SYMBOL_GPL(xenbus_unmap_ring);
-
 int xenbus_dev_is_online(struct xenbus_device *dev)
 {
        int rc, val;
diff -r 0bee20f8e418 -r 13937900bbd0 include/xen/xenbus.h
--- a/include/xen/xenbus.h      Sat Apr 02 15:54:29 2011 +0100
+++ b/include/xen/xenbus.h      Tue Apr 05 12:38:20 2011 +0100
@@ -233,28 +233,20 @@
  * Map a page of memory into this domain from another domain's grant table.
  * xenbus_map_ring_valloc allocates a page of virtual address space, maps the
  * page to that address, and sets *vaddr to that address.
- * xenbus_map_ring does not allocate the virtual address space (you must do
- * this yourself!). It only maps in the page to the specified address.
  * Returns 0 on success, and GNTST_* (see xen/include/interface/grant_table.h)
  * or -ENOMEM on error. If an error is returned, device will switch to
  * XenbusStateClosing and the error message will be saved in XenStore.
  */
 struct vm_struct *xenbus_map_ring_valloc(struct xenbus_device *dev,
-                                        int gnt_ref);
-int xenbus_map_ring(struct xenbus_device *dev, int gnt_ref,
-                          grant_handle_t *handle, void *vaddr);
-
+                                        grant_ref_t ref);
 
 /**
- * Unmap a page of memory in this domain that was imported from another domain.
- * Use xenbus_unmap_ring_vfree if you mapped in your memory with
- * xenbus_map_ring_valloc (it will free the virtual address space).
+ * Unmap a page of memory in this domain that was imported from another domain
+ * and free the virtual address space.
  * Returns 0 on success and returns GNTST_* on error
  * (see xen/include/interface/grant_table.h).
  */
 int xenbus_unmap_ring_vfree(struct xenbus_device *dev, struct vm_struct *);
-int xenbus_unmap_ring(struct xenbus_device *dev,
-                     grant_handle_t handle, void *vaddr);
 
 
 /**

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

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