]> xenbits.xensource.com Git - people/royger/linux-2.6.18-xen.git/commitdiff
xen/backends: use xenbus_be.ko interfaces instead of open-coding them
authorJan Beulich <jbeulich@novell.com>
Tue, 5 Apr 2011 11:38:20 +0000 (12:38 +0100)
committerJan Beulich <jbeulich@novell.com>
Tue, 5 Apr 2011 11:38:20 +0000 (12:38 +0100)
Also remove unused xenbus_{,un}map_ring(), adjust types, and clean up
header inclusion.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
22 files changed:
drivers/xen/blkback/blkback.c
drivers/xen/blkback/common.h
drivers/xen/blkback/interface.c
drivers/xen/blktap/blktap.c
drivers/xen/blktap/common.h
drivers/xen/blktap/interface.c
drivers/xen/blktap/xenbus.c
drivers/xen/netback/common.h
drivers/xen/netback/interface.c
drivers/xen/netback/netback.c
drivers/xen/netback/xenbus.c
drivers/xen/scsiback/common.h
drivers/xen/scsiback/interface.c
drivers/xen/scsiback/scsiback.c
drivers/xen/tpmback/common.h
drivers/xen/tpmback/interface.c
drivers/xen/tpmback/xenbus.c
drivers/xen/usbback/interface.c
drivers/xen/usbback/usbback.c
drivers/xen/usbback/usbback.h
drivers/xen/xenbus/xenbus_backend_client.c
include/xen/xenbus.h

index 304c69d7ba2570afe7f117ab5df42ba0deb91a20..55c802158e395e07e44feb117d14ef64a40efc8b 100644 (file)
@@ -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"
 
index dbbe6002fabf5b545d3a2557436df6a8b90ff4d0..558fd1c752a82975ee651c589a2cbd8e72c24e2c 100644 (file)
 #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 @@ typedef struct blkif_st {
        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 @@ struct backend_info
 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))
index d8079e8fd338dc3b9dd9355f334e8c999463deb6..70310e288bbbfc0907394e92452a7a672edc6d69 100644 (file)
@@ -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 @@ blkif_t *blkif_alloc(domid_t domid)
        return blkif;
 }
 
-static int map_frontend_page(blkif_t *blkif, unsigned long shared_page)
-{
-       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)
+int blkif_map(blkif_t *blkif, grant_ref_t ring_ref, evtchn_port_t 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 @@ int blkif_map(blkif_t *blkif, unsigned long shared_page, unsigned int evtchn)
                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 @@ void blkif_disconnect(blkif_t *blkif)
        }
 
        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;
        }
 }
index 044ce2b389dbf34ed85504bfd7d8e76f4549a5ca..9fbd4fc0cfb64ecb339abbb1b4f4d5c6342ea8eb 100644 (file)
@@ -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>
index 81d1473e7cdc57cd22caf290a8f769a51bc1e921..55039fb259be8e12ef806f701296e5c6ff7ca60d 100644 (file)
 #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 @@ typedef struct blkif_st {
 
        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)                                  \
index 4cc814e367973d359e601a6d349f9b63d063286f..af363f3f1d2cc7f140e9e7cf56b47bdc339dbcdb 100644 (file)
@@ -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 @@ blkif_t *tap_alloc_blkif(domid_t domid)
        return blkif;
 }
 
-static int map_frontend_page(blkif_t *blkif, unsigned long shared_page)
-{
-       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)
+int tap_blkif_map(blkif_t *blkif, struct xenbus_device *dev,
+                 grant_ref_t ring_ref, evtchn_port_t 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 @@ int tap_blkif_map(blkif_t *blkif, unsigned long shared_page,
                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,28 +110,23 @@ int tap_blkif_map(blkif_t *blkif, unsigned long shared_page,
        return 0;
 }
 
-void tap_blkif_unmap(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);
+
        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);
+               xenbus_unmap_ring_vfree(dev, blkif->blk_ring_area);
                blkif->blk_rings.common.sring = NULL;
        }
 }
 
-void tap_blkif_free(blkif_t *blkif)
-{
-       atomic_dec(&blkif->refcnt);
-       wait_event(blkif->waiting_to_free, atomic_read(&blkif->refcnt) == 0);
-       atomic_inc(&blkif->refcnt);
-
-       tap_blkif_unmap(blkif);
-}
-
 void tap_blkif_kmem_cache_free(blkif_t *blkif)
 {
        if (!atomic_dec_and_test(&blkif->refcnt))
index 746882e30fed23b2870d3bfba86a84f25e903220..cbdc24d1bfb29b73cb46e1e3e4934c548b602c3c 100644 (file)
@@ -192,7 +192,7 @@ static int blktap_remove(struct xenbus_device *dev)
                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 @@ static void blkif_disconnect(blkif_t *blkif)
        }
 
        /* idempotent */
-       tap_blkif_free(blkif);
+       tap_blkif_free(blkif, blkif->be->dev);
 }
 
 /**
@@ -472,7 +472,7 @@ static int connect_ring(struct backend_info *be)
               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);
index 3c87ea1f80288e90ac290185563e4971c0825c06..d6efdae44cdf74f4ac6e3951274e17ce4849fcba 100644 (file)
 #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 @@ typedef struct netif_st {
 
        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 @@ void netif_accel_init(void);
 #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)                                          \
index 8b35583785ae076bcaf0c3fb8652ddec24bce406..b1759916a3876e85156b761e1ca2c1f7328d11b1 100644 (file)
@@ -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 @@ netif_t *netif_alloc(struct device *parent, domid_t domid, unsigned int handle)
        return netif;
 }
 
-static int map_frontend_pages(
-       netif_t *netif, grant_ref_t tx_ring_ref, grant_ref_t rx_ring_ref)
-{
-       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)
+int netif_map(struct backend_info *be, grant_ref_t tx_ring_ref,
+             grant_ref_t rx_ring_ref, evtchn_port_t 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 @@ int netif_map(netif_t *netif, unsigned long tx_ring_ref,
        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 @@ int netif_map(netif_t *netif, unsigned long tx_ring_ref,
 
        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 @@ void netif_disconnect(netif_t *netif)
        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);
index 6c2a47065964295bcc4bd0b55a6e1a1a027d100e..30df805f63dc83543817a52654d44e7a8834f94d 100644 (file)
@@ -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*/
index 0c0f57381e728087794db4ce2325ebbd9b412536..00ce7340a194f57a4d15ce4f135d3d2d7cec6f2d 100644 (file)
@@ -52,7 +52,7 @@ static void netback_disconnect(struct device *xbdev_dev)
 
        if (be->netif) {
                kobject_uevent(&xbdev_dev->kobj, KOBJ_OFFLINE);
-               netif_disconnect(be->netif);
+               netif_disconnect(be);
                be->netif = NULL;
        }
 }
@@ -418,7 +418,7 @@ static int connect_rings(struct backend_info *be)
        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",
index 12923fe1878366a1c73b30bbafb6a57ca8da8da3..2298909d1d02451b66540db3b3847de238b2c7ad 100644 (file)
 #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 vscsibk_info {
 
        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 @@ typedef struct {
 #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);
index c41073f47d8e29a69f7e0a19880933c2cdfe4d8c..4c1cb238ebd66e5b0cad99e80875ec22839a4017 100644 (file)
@@ -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 @@ struct vscsibk_info *vscsibk_info_alloc(domid_t domid)
        return info;
 }
 
-static int map_frontend_page( struct vscsibk_info *info,
-                               unsigned long ring_ref)
-{
-       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)
+int scsiback_init_sring(struct vscsibk_info *info, grant_ref_t ring_ref,
+                       evtchn_port_t evtchn)
 {
+       struct vm_struct *area;
        struct vscsiif_sring *sring;
        int err;
 
@@ -107,15 +73,12 @@ int scsiback_init_sring(struct vscsibk_info *info,
                return -1;
        }
 
-       info->ring_area = alloc_vm_area(PAGE_SIZE);
-       if (!info)
-               return -ENOMEM;
-
-       err = map_frontend_page(info, ring_ref);
-       if (err)
-               goto free_vm;
+       area = xenbus_map_ring_valloc(info->dev, ring_ref);
+       if (IS_ERR(area))
+               return PTR_ERR(area);
+       info->ring_area = area;
 
-       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 @@ int scsiback_init_sring(struct vscsibk_info *info,
        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 @@ void scsiback_disconnect(struct vscsibk_info *info)
        }
 
        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;
        }
 }
index 03b6d559dc293aec5a0e54fe6883fce598fcfcbf..1692399c7be0de0bfdd83166ee682b16000f3748 100644 (file)
@@ -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>
index 80655ebffb7110211e4711f7d96f398c65b45af7..44e352934007ff3dadf1c57f6064df5ab01ee57f 100644 (file)
@@ -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 @@ typedef struct tpmif_st {
 
        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_schedule_work(tpmif_t * tpmif);
 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);
index 60563f6297ef865d4a2a3beed54cdda087d189dd..79baf3134d959510d37dcb674e23844d6905cc02 100644 (file)
@@ -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 @@ tpmif_t *tpmif_find(domid_t domid, struct backend_info *bi)
        return alloc_tpmif(domid, bi);
 }
 
-static int map_frontend_page(tpmif_t *tpmif, unsigned long shared_page)
-{
-       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)
+int tpmif_map(tpmif_t *tpmif, grant_ref_t ring_ref, evtchn_port_t 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 @@ void tpmif_disconnect_complete(tpmif_t *tpmif)
        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);
 }
index 54affa7b663f0b30f596f88c9293d211913eabb2..e0f6167ac15b0bcb4a2687db33de4fd67ac72f43 100644 (file)
 #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);
index 8d6a293f46d78afee4ad220aba81be59773e3fee..bd22277971a0ced4e1ce703d1a34a992360dc1fb 100644 (file)
@@ -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 @@ usbif_t *usbif_alloc(domid_t domid, unsigned int handle)
        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 @@ int usbif_map(usbif_t *usbif, unsigned long urb_ring_ref,
        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 @@ void usbif_disconnect(usbif_t *usbif)
        }
 
        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;
        }
index f6219b5acd10f680691329d53d33e80809e05fa1..e2a8318c5483247c073229374276a02c3ae7d535 100644 (file)
@@ -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
index c92819bb41ed6c2ca1d56f1c537e45d6238570e4..6ae919527b8851bef29980ac2a528de5821eff01 100644 (file)
 #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 @@ typedef struct usbif_st {
        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 @@ struct usbstub {
 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) \
index 5924bd393019f3475502695eb34249f97c52a4eb..99f36479c5022af2caae9ab7ae81830f77116166 100644 (file)
@@ -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 @@ struct vm_struct *xenbus_map_ring_valloc(struct xenbus_device *dev, int gnt_ref)
 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 @@ int xenbus_unmap_ring_vfree(struct xenbus_device *dev, struct vm_struct *area)
 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;
index 753ebb5f87e97901d1ddba20b64cc539c376e4b6..06e9145f3b2096a20ee4d43211ae000586371ab1 100644 (file)
@@ -233,28 +233,20 @@ int xenbus_grant_ring(struct xenbus_device *dev, unsigned long ring_mfn);
  * 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);
 
 
 /**