Hyper-V drivers have supported two device abstractions.
This patch implements a single device abstraction.
This simplifies the code and avoids duplication
of state.

Signed-off-by: K. Y. Srinivasan <[email protected]>
Signed-off-by: Haiyang Zhang <[email protected]>
Signed-off-by: Hank Janssen <[email protected]>

---
 drivers/staging/hv/blkvsc.c        |   17 ++++---
 drivers/staging/hv/blkvsc_drv.c    |   14 +++---
 drivers/staging/hv/channel_mgmt.c  |    1 +
 drivers/staging/hv/channel_mgmt.h  |    2 +-
 drivers/staging/hv/netvsc.c        |   55 ++++++++++++-----------
 drivers/staging/hv/netvsc.h        |    2 +-
 drivers/staging/hv/netvsc_api.h    |   12 +++---
 drivers/staging/hv/netvsc_drv.c    |   28 +++++-------
 drivers/staging/hv/rndis_filter.c  |   19 ++++----
 drivers/staging/hv/storvsc.c       |   37 ++++++++--------
 drivers/staging/hv/storvsc_api.h   |    4 +-
 drivers/staging/hv/storvsc_drv.c   |   21 ++++-----
 drivers/staging/hv/vmbus.h         |   13 +++---
 drivers/staging/hv/vmbus_api.h     |   29 ++----------
 drivers/staging/hv/vmbus_drv.c     |   84 +++++++++++++++---------------------
 drivers/staging/hv/vmbus_private.h |   12 +++---
 16 files changed, 157 insertions(+), 193 deletions(-)

diff --git a/drivers/staging/hv/blkvsc.c b/drivers/staging/hv/blkvsc.c
index 7c8729b..ecface3 100644
--- a/drivers/staging/hv/blkvsc.c
+++ b/drivers/staging/hv/blkvsc.c
@@ -35,7 +35,8 @@ static const struct hv_guid g_blk_device_type = {
        }
 };
 
-static int blk_vsc_on_device_add(struct hv_device *device, void 
*additional_info)
+static int blk_vsc_on_device_add(struct vm_device *device,
+                               void *additional_info)
 {
        struct storvsc_device_info *device_info;
        int ret = 0;
@@ -51,13 +52,13 @@ static int blk_vsc_on_device_add(struct hv_device *device, 
void *additional_info
         * id. For IDE devices, the device instance id is formatted as
         * <bus id> * - <device id> - 8899 - 000000000000.
         */
-       device_info->path_id = device->dev_instance.data[3] << 24 |
-                            device->dev_instance.data[2] << 16 |
-                            device->dev_instance.data[1] << 8  |
-                            device->dev_instance.data[0];
+       device_info->path_id = device->device_id.data[3] << 24 |
+                            device->device_id.data[2] << 16 |
+                            device->device_id.data[1] << 8  |
+                            device->device_id.data[0];
 
-       device_info->target_id = device->dev_instance.data[5] << 8 |
-                              device->dev_instance.data[4];
+       device_info->target_id = device->device_id.data[5] << 8 |
+                              device->device_id.data[4];
 
        return ret;
 }
@@ -73,7 +74,7 @@ int blk_vsc_initialize(struct hv_driver *driver)
        /* ASSERT(stor_driver->RingBufferSize >= (PAGE_SIZE << 1)); */
 
        driver->name = g_blk_driver_name;
-       memcpy(&driver->dev_type, &g_blk_device_type, sizeof(struct hv_guid));
+       memcpy(&driver->class_id, &g_blk_device_type, sizeof(struct hv_guid));
 
        stor_driver->request_ext_size = sizeof(struct 
storvsc_request_extension);
 
diff --git a/drivers/staging/hv/blkvsc_drv.c b/drivers/staging/hv/blkvsc_drv.c
index 36a0adb..6d1a783 100644
--- a/drivers/staging/hv/blkvsc_drv.c
+++ b/drivers/staging/hv/blkvsc_drv.c
@@ -183,7 +183,7 @@ static int blkvsc_drv_init(int (*drv_init)(struct hv_driver 
*drv))
        drv_init(&storvsc_drv_obj->base);
 
        drv_ctx->driver.name = storvsc_drv_obj->base.name;
-       memcpy(&drv_ctx->class_id, &storvsc_drv_obj->base.dev_type,
+       memcpy(&drv_ctx->class_id, &storvsc_drv_obj->base.class_id,
               sizeof(struct hv_guid));
 
        drv_ctx->probe = blkvsc_probe;
@@ -249,8 +249,7 @@ static int blkvsc_probe(struct device *device)
                                (struct blkvsc_driver_context *)driver_ctx;
        struct storvsc_driver_object *storvsc_drv_obj =
                                &blkvsc_drv_ctx->drv_obj;
-       struct vm_device *device_ctx = device_to_vm_device(device);
-       struct hv_device *device_obj = &device_ctx->device_obj;
+       struct vm_device *device_obj = device_to_vm_device(device);
 
        struct block_device_context *blkdev = NULL;
        struct storvsc_device_info device_info;
@@ -282,7 +281,7 @@ static int blkvsc_probe(struct device *device)
        /* ASSERT(sizeof(struct blkvsc_request_group) <= */
        /*      sizeof(struct blkvsc_request)); */
 
-       blkdev->request_pool = kmem_cache_create(dev_name(&device_ctx->device),
+       blkdev->request_pool = kmem_cache_create(dev_name(&device_obj->device),
                                        sizeof(struct blkvsc_request) +
                                        storvsc_drv_obj->request_ext_size, 0,
                                        SLAB_HWCACHE_ALIGN, NULL);
@@ -299,7 +298,7 @@ static int blkvsc_probe(struct device *device)
                goto Cleanup;
        }
 
-       blkdev->device_ctx = device_ctx;
+       blkdev->device_ctx = device_obj;
        /* this identified the device 0 or 1 */
        blkdev->target = device_info.target_id;
        /* this identified the ide ctrl 0 or 1 */
@@ -734,8 +733,7 @@ static int blkvsc_remove(struct device *device)
                                (struct blkvsc_driver_context *)driver_ctx;
        struct storvsc_driver_object *storvsc_drv_obj =
                                &blkvsc_drv_ctx->drv_obj;
-       struct vm_device *device_ctx = device_to_vm_device(device);
-       struct hv_device *device_obj = &device_ctx->device_obj;
+       struct vm_device *device_obj = device_to_vm_device(device);
        struct block_device_context *blkdev = dev_get_drvdata(device);
        unsigned long flags;
        int ret;
@@ -897,7 +895,7 @@ static int blkvsc_submit_request(struct blkvsc_request 
*blkvsc_req,
        storvsc_req->sense_buffer = blkvsc_req->sense_buffer;
        storvsc_req->sense_buffer_size = SCSI_SENSE_BUFFERSIZE;
 
-       ret = storvsc_drv_obj->on_io_request(&blkdev->device_ctx->device_obj,
+       ret = storvsc_drv_obj->on_io_request(blkdev->device_ctx,
                                           &blkvsc_req->request);
        if (ret == 0)
                blkdev->num_outstanding_reqs++;
diff --git a/drivers/staging/hv/channel_mgmt.c 
b/drivers/staging/hv/channel_mgmt.c
index 0781c0e..8d81288 100644
--- a/drivers/staging/hv/channel_mgmt.c
+++ b/drivers/staging/hv/channel_mgmt.c
@@ -28,6 +28,7 @@
 #include <linux/completion.h>
 #include "hv_api.h"
 #include "logging.h"
+#include "vmbus.h"
 #include "vmbus_private.h"
 #include "utils.h"
 
diff --git a/drivers/staging/hv/channel_mgmt.h 
b/drivers/staging/hv/channel_mgmt.h
index 3368bf1..b3a9214 100644
--- a/drivers/staging/hv/channel_mgmt.h
+++ b/drivers/staging/hv/channel_mgmt.h
@@ -228,7 +228,7 @@ enum vmbus_channel_state {
 struct vmbus_channel {
        struct list_head listentry;
 
-       struct hv_device *device_obj;
+       struct vm_device *device_obj;
 
        struct timer_list poll_timer; /* SA-111 workaround */
        struct work_struct work;
diff --git a/drivers/staging/hv/netvsc.c b/drivers/staging/hv/netvsc.c
index 20b1597..ff8e5be 100644
--- a/drivers/staging/hv/netvsc.c
+++ b/drivers/staging/hv/netvsc.c
@@ -26,6 +26,7 @@
 #include <linux/io.h>
 #include <linux/slab.h>
 #include "hv_api.h"
+#include "vmbus.h"
 #include "logging.h"
 #include "netvsc.h"
 #include "rndis_filter.h"
@@ -43,40 +44,40 @@ static const struct hv_guid netvsc_device_type = {
        }
 };
 
-static int netvsc_device_add(struct hv_device *device, void *additional_info);
+static int netvsc_device_add(struct vm_device *device, void *additional_info);
 
-static int netvsc_device_remove(struct hv_device *device);
+static int netvsc_device_remove(struct vm_device *device);
 
 static void netvsc_cleanup(struct hv_driver *driver);
 
 static void netvsc_channel_cb(void *context);
 
-static int netvsc_init_send_buf(struct hv_device *device);
+static int netvsc_init_send_buf(struct vm_device *device);
 
-static int netvsc_init_recv_buf(struct hv_device *device);
+static int netvsc_init_recv_buf(struct vm_device *device);
 
 static int netvsc_destroy_send_buf(struct netvsc_device *net_device);
 
 static int netvsc_destroy_recv_buf(struct netvsc_device *net_device);
 
-static int netvsc_connect_vsp(struct hv_device *device);
+static int netvsc_connect_vsp(struct vm_device *device);
 
-static void netvsc_send_completion(struct hv_device *device,
+static void netvsc_send_completion(struct vm_device *device,
                                   struct vmpacket_descriptor *packet);
 
-static int netvsc_send(struct hv_device *device,
+static int netvsc_send(struct vm_device *device,
                        struct hv_netvsc_packet *packet);
 
-static void netvsc_receive(struct hv_device *device,
+static void netvsc_receive(struct vm_device *device,
                            struct vmpacket_descriptor *packet);
 
 static void netvsc_receive_completion(void *context);
 
-static void netvsc_send_recv_completion(struct hv_device *device,
+static void netvsc_send_recv_completion(struct vm_device *device,
                                        u64 transaction_id);
 
 
-static struct netvsc_device *alloc_net_device(struct hv_device *device)
+static struct netvsc_device *alloc_net_device(struct vm_device *device)
 {
        struct netvsc_device *net_device;
 
@@ -102,7 +103,7 @@ static void free_net_device(struct netvsc_device *device)
 
 
 /* Get the net device object iff exists and its refcount > 1 */
-static struct netvsc_device *get_outbound_net_device(struct hv_device *device)
+static struct netvsc_device *get_outbound_net_device(struct vm_device *device)
 {
        struct netvsc_device *net_device;
 
@@ -116,7 +117,7 @@ static struct netvsc_device *get_outbound_net_device(struct 
hv_device *device)
 }
 
 /* Get the net device object iff exists and its refcount > 0 */
-static struct netvsc_device *get_inbound_net_device(struct hv_device *device)
+static struct netvsc_device *get_inbound_net_device(struct vm_device *device)
 {
        struct netvsc_device *net_device;
 
@@ -129,7 +130,7 @@ static struct netvsc_device *get_inbound_net_device(struct 
hv_device *device)
        return net_device;
 }
 
-static void put_net_device(struct hv_device *device)
+static void put_net_device(struct vm_device *device)
 {
        struct netvsc_device *net_device;
 
@@ -139,7 +140,7 @@ static void put_net_device(struct hv_device *device)
 }
 
 static struct netvsc_device *release_outbound_net_device(
-               struct hv_device *device)
+               struct vm_device *device)
 {
        struct netvsc_device *net_device;
 
@@ -155,7 +156,7 @@ static struct netvsc_device *release_outbound_net_device(
 }
 
 static struct netvsc_device *release_inbound_net_device(
-               struct hv_device *device)
+               struct vm_device *device)
 {
        struct netvsc_device *net_device;
 
@@ -186,7 +187,7 @@ int netvsc_initialize(struct hv_driver *drv)
                   sizeof(struct vmtransfer_page_packet_header));
 
        drv->name = driver_name;
-       memcpy(&drv->dev_type, &netvsc_device_type, sizeof(struct hv_guid));
+       memcpy(&drv->class_id, &netvsc_device_type, sizeof(struct hv_guid));
 
        /* Setup the dispatch table */
        driver->base.dev_add    = netvsc_device_add;
@@ -199,7 +200,7 @@ int netvsc_initialize(struct hv_driver *drv)
        return 0;
 }
 
-static int netvsc_init_recv_buf(struct hv_device *device)
+static int netvsc_init_recv_buf(struct vm_device *device)
 {
        int ret = 0;
        struct netvsc_device *net_device;
@@ -329,7 +330,7 @@ exit:
        return ret;
 }
 
-static int netvsc_init_send_buf(struct hv_device *device)
+static int netvsc_init_send_buf(struct vm_device *device)
 {
        int ret = 0;
        struct netvsc_device *net_device;
@@ -571,7 +572,7 @@ static int netvsc_destroy_send_buf(struct netvsc_device 
*net_device)
 }
 
 
-static int netvsc_connect_vsp(struct hv_device *device)
+static int netvsc_connect_vsp(struct vm_device *device)
 {
        int ret;
        struct netvsc_device *net_device;
@@ -687,7 +688,7 @@ static void NetVscDisconnectFromVsp(struct netvsc_device 
*net_device)
  * netvsc_device_add - Callback when the device belonging to this
  * driver is added
  */
-static int netvsc_device_add(struct hv_device *device, void *additional_info)
+static int netvsc_device_add(struct vm_device *device, void *additional_info)
 {
        int ret = 0;
        int i;
@@ -780,7 +781,7 @@ cleanup:
 /*
  * netvsc_device_remove - Callback when the root bus device is removed
  */
-static int netvsc_device_remove(struct hv_device *device)
+static int netvsc_device_remove(struct vm_device *device)
 {
        struct netvsc_device *net_device;
        struct hv_netvsc_packet *netvsc_packet, *pos;
@@ -836,7 +837,7 @@ static void netvsc_cleanup(struct hv_driver *drv)
 {
 }
 
-static void netvsc_send_completion(struct hv_device *device,
+static void netvsc_send_completion(struct vm_device *device,
                                   struct vmpacket_descriptor *packet)
 {
        struct netvsc_device *net_device;
@@ -885,7 +886,7 @@ static void netvsc_send_completion(struct hv_device *device,
        put_net_device(device);
 }
 
-static int netvsc_send(struct hv_device *device,
+static int netvsc_send(struct vm_device *device,
                        struct hv_netvsc_packet *packet)
 {
        struct netvsc_device *net_device;
@@ -939,7 +940,7 @@ static int netvsc_send(struct hv_device *device,
        return ret;
 }
 
-static void netvsc_receive(struct hv_device *device,
+static void netvsc_receive(struct vm_device *device,
                            struct vmpacket_descriptor *packet)
 {
        struct netvsc_device *net_device;
@@ -1136,7 +1137,7 @@ static void netvsc_receive(struct hv_device *device,
        put_net_device(device);
 }
 
-static void netvsc_send_recv_completion(struct hv_device *device,
+static void netvsc_send_recv_completion(struct vm_device *device,
                                        u64 transaction_id)
 {
        struct nvsp_message recvcompMessage;
@@ -1185,7 +1186,7 @@ retry_send_cmplt:
 static void netvsc_receive_completion(void *context)
 {
        struct hv_netvsc_packet *packet = context;
-       struct hv_device *device = (struct hv_device *)packet->device;
+       struct vm_device *device = (struct vm_device *)packet->device;
        struct netvsc_device *net_device;
        u64 transaction_id = 0;
        bool fsend_receive_comp = false;
@@ -1234,7 +1235,7 @@ static void netvsc_receive_completion(void *context)
 static void netvsc_channel_cb(void *context)
 {
        int ret;
-       struct hv_device *device = context;
+       struct vm_device *device = context;
        struct netvsc_device *net_device;
        u32 bytes_recvd;
        u64 request_id;
diff --git a/drivers/staging/hv/netvsc.h b/drivers/staging/hv/netvsc.h
index 45d24b9..b2709eb 100644
--- a/drivers/staging/hv/netvsc.h
+++ b/drivers/staging/hv/netvsc.h
@@ -293,7 +293,7 @@ struct nvsp_message {
 
 /* Per netvsc channel-specific */
 struct netvsc_device {
-       struct hv_device *dev;
+       struct vm_device *dev;
 
        atomic_t refcnt;
        atomic_t num_outstanding_sends;
diff --git a/drivers/staging/hv/netvsc_api.h b/drivers/staging/hv/netvsc_api.h
index b4bed36..a9cfeff 100644
--- a/drivers/staging/hv/netvsc_api.h
+++ b/drivers/staging/hv/netvsc_api.h
@@ -49,7 +49,7 @@ struct hv_netvsc_packet {
        /* Bookkeeping stuff */
        struct list_head list_ent;
 
-       struct hv_device *device;
+       struct vm_device *device;
        bool is_data_pkt;
 
        /*
@@ -93,12 +93,12 @@ struct netvsc_driver {
         * This is set by the caller to allow us to callback when we
         * receive a packet from the "wire"
         */
-       int (*recv_cb)(struct hv_device *dev,
+       int (*recv_cb)(struct vm_device *dev,
                                 struct hv_netvsc_packet *packet);
-       void (*link_status_change)(struct hv_device *dev, u32 status);
+       void (*link_status_change)(struct vm_device *dev, u32 status);
 
        /* Specific to this driver */
-       int (*send)(struct hv_device *dev, struct hv_netvsc_packet *packet);
+       int (*send)(struct vm_device *dev, struct hv_netvsc_packet *packet);
 
        void *ctx;
 };
@@ -110,7 +110,7 @@ struct netvsc_device_info {
 
 /* Interface */
 int netvsc_initialize(struct hv_driver *drv);
-int rndis_filter_open(struct hv_device *dev);
-int rndis_filter_close(struct hv_device *dev);
+int rndis_filter_open(struct vm_device *dev);
+int rndis_filter_close(struct vm_device *dev);
 
 #endif /* _NETVSC_API_H_ */
diff --git a/drivers/staging/hv/netvsc_drv.c b/drivers/staging/hv/netvsc_drv.c
index 03f9740..055986f 100644
--- a/drivers/staging/hv/netvsc_drv.c
+++ b/drivers/staging/hv/netvsc_drv.c
@@ -76,7 +76,7 @@ static void netvsc_set_multicast_list(struct net_device *net)
 static int netvsc_open(struct net_device *net)
 {
        struct net_device_context *net_device_ctx = netdev_priv(net);
-       struct hv_device *device_obj = &net_device_ctx->device_ctx->device_obj;
+       struct vm_device *device_obj = net_device_ctx->device_ctx;
        int ret = 0;
 
        if (netif_carrier_ok(net)) {
@@ -99,7 +99,7 @@ static int netvsc_open(struct net_device *net)
 static int netvsc_close(struct net_device *net)
 {
        struct net_device_context *net_device_ctx = netdev_priv(net);
-       struct hv_device *device_obj = &net_device_ctx->device_ctx->device_obj;
+       struct vm_device *device_obj = net_device_ctx->device_ctx;
        int ret;
 
        netif_stop_queue(net);
@@ -198,7 +198,7 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct 
net_device *net)
        packet->completion.send.send_completion_ctx = packet;
        packet->completion.send.send_completion_tid = (unsigned long)skb;
 
-       ret = net_drv_obj->send(&net_device_ctx->device_ctx->device_obj,
+       ret = net_drv_obj->send(net_device_ctx->device_ctx,
                                  packet);
        if (ret == 0) {
                net->stats.tx_bytes += skb->len;
@@ -223,11 +223,10 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct 
net_device *net)
 /*
  * netvsc_linkstatus_callback - Link up/down notification
  */
-static void netvsc_linkstatus_callback(struct hv_device *device_obj,
+static void netvsc_linkstatus_callback(struct vm_device *device_obj,
                                       unsigned int status)
 {
-       struct vm_device *device_ctx = to_vm_device(device_obj);
-       struct net_device *net = dev_get_drvdata(&device_ctx->device);
+       struct net_device *net = dev_get_drvdata(&device_obj->device);
 
        if (!net) {
                DPRINT_ERR(NETVSC_DRV, "got link status but net device "
@@ -249,11 +248,10 @@ static void netvsc_linkstatus_callback(struct hv_device 
*device_obj,
  * netvsc_recv_callback -  Callback when we receive a packet from the
  * "wire" on the specified device.
  */
-static int netvsc_recv_callback(struct hv_device *device_obj,
+static int netvsc_recv_callback(struct vm_device *device_obj,
                                struct hv_netvsc_packet *packet)
 {
-       struct vm_device *device_ctx = to_vm_device(device_obj);
-       struct net_device *net = dev_get_drvdata(&device_ctx->device);
+       struct net_device *net = dev_get_drvdata(&device_obj->device);
        struct sk_buff *skb;
        void *data;
        int i;
@@ -345,8 +343,7 @@ static int netvsc_probe(struct device *device)
        struct netvsc_driver_context *net_drv_ctx =
                (struct netvsc_driver_context *)driver_ctx;
        struct netvsc_driver *net_drv_obj = &net_drv_ctx->drv_obj;
-       struct vm_device *device_ctx = device_to_vm_device(device);
-       struct hv_device *device_obj = &device_ctx->device_obj;
+       struct vm_device *device_obj = device_to_vm_device(device);
        struct net_device *net = NULL;
        struct net_device_context *net_device_ctx;
        struct netvsc_device_info device_info;
@@ -363,7 +360,7 @@ static int netvsc_probe(struct device *device)
        netif_carrier_off(net);
 
        net_device_ctx = netdev_priv(net);
-       net_device_ctx->device_ctx = device_ctx;
+       net_device_ctx->device_ctx = device_obj;
        net_device_ctx->avail = ring_size;
        dev_set_drvdata(device, net);
 
@@ -417,9 +414,8 @@ static int netvsc_remove(struct device *device)
        struct netvsc_driver_context *net_drv_ctx =
                (struct netvsc_driver_context *)driver_ctx;
        struct netvsc_driver *net_drv_obj = &net_drv_ctx->drv_obj;
-       struct vm_device *device_ctx = device_to_vm_device(device);
-       struct net_device *net = dev_get_drvdata(&device_ctx->device);
-       struct hv_device *device_obj = &device_ctx->device_obj;
+       struct vm_device *device_obj = device_to_vm_device(device);
+       struct net_device *net = dev_get_drvdata(&device_obj->device);
        int ret;
 
        if (net == NULL) {
@@ -508,7 +504,7 @@ static int netvsc_drv_init(int (*drv_init)(struct hv_driver 
*drv))
        drv_init(&net_drv_obj->base);
 
        drv_ctx->driver.name = net_drv_obj->base.name;
-       memcpy(&drv_ctx->class_id, &net_drv_obj->base.dev_type,
+       memcpy(&drv_ctx->class_id, &net_drv_obj->base.class_id,
               sizeof(struct hv_guid));
 
        drv_ctx->probe = netvsc_probe;
diff --git a/drivers/staging/hv/rndis_filter.c 
b/drivers/staging/hv/rndis_filter.c
index e7189cd..e0b1b44 100644
--- a/drivers/staging/hv/rndis_filter.c
+++ b/drivers/staging/hv/rndis_filter.c
@@ -28,6 +28,7 @@
 
 #include "logging.h"
 #include "hv_api.h"
+#include "vmbus.h"
 #include "netvsc_api.h"
 #include "rndis_filter.h"
 
@@ -84,14 +85,14 @@ struct rndis_filter_packet {
 };
 
 
-static int rndis_filte_device_add(struct hv_device *dev,
+static int rndis_filte_device_add(struct vm_device *dev,
                                  void *additional_info);
 
-static int rndis_filter_device_remove(struct hv_device *dev);
+static int rndis_filter_device_remove(struct vm_device *dev);
 
 static void rndis_filter_cleanup(struct hv_driver *drv);
 
-static int rndis_filter_send(struct hv_device *dev,
+static int rndis_filter_send(struct vm_device *dev,
                             struct hv_netvsc_packet *pkt);
 
 static void rndis_filter_send_completion(void *ctx);
@@ -375,7 +376,7 @@ static void rndis_filter_receive_data(struct rndis_device 
*dev,
                                                   pkt);
 }
 
-static int rndis_filter_receive(struct hv_device *dev,
+static int rndis_filter_receive(struct vm_device *dev,
                                struct hv_netvsc_packet *pkt)
 {
        struct netvsc_device *net_dev = dev->ext;
@@ -753,7 +754,7 @@ static int rndis_filter_close_device(struct rndis_device 
*dev)
        return ret;
 }
 
-static int rndis_filte_device_add(struct hv_device *dev,
+static int rndis_filte_device_add(struct vm_device *dev,
                                  void *additional_info)
 {
        int ret;
@@ -816,7 +817,7 @@ static int rndis_filte_device_add(struct hv_device *dev,
        return ret;
 }
 
-static int rndis_filter_device_remove(struct hv_device *dev)
+static int rndis_filter_device_remove(struct vm_device *dev)
 {
        struct netvsc_device *net_dev = dev->ext;
        struct rndis_device *rndis_dev = net_dev->extension;
@@ -837,7 +838,7 @@ static void rndis_filter_cleanup(struct hv_driver *drv)
 {
 }
 
-int rndis_filter_open(struct hv_device *dev)
+int rndis_filter_open(struct vm_device *dev)
 {
        struct netvsc_device *netDevice = dev->ext;
 
@@ -847,7 +848,7 @@ int rndis_filter_open(struct hv_device *dev)
        return rndis_filter_open_device(netDevice->extension);
 }
 
-int rndis_filter_close(struct hv_device *dev)
+int rndis_filter_close(struct vm_device *dev)
 {
        struct netvsc_device *netDevice = dev->ext;
 
@@ -857,7 +858,7 @@ int rndis_filter_close(struct hv_device *dev)
        return rndis_filter_close_device(netDevice->extension);
 }
 
-static int rndis_filter_send(struct hv_device *dev,
+static int rndis_filter_send(struct vm_device *dev,
                             struct hv_netvsc_packet *pkt)
 {
        int ret;
diff --git a/drivers/staging/hv/storvsc.c b/drivers/staging/hv/storvsc.c
index e2ad729..7b75ab5 100644
--- a/drivers/staging/hv/storvsc.c
+++ b/drivers/staging/hv/storvsc.c
@@ -26,6 +26,7 @@
 #include <linux/mm.h>
 #include <linux/delay.h>
 #include "hv_api.h"
+#include "vmbus.h"
 #include "logging.h"
 #include "storvsc_api.h"
 #include "vmbus_packet_format.h"
@@ -37,7 +38,7 @@ struct storvsc_request_extension {
        /* LIST_ENTRY ListEntry; */
 
        struct hv_storvsc_request *request;
-       struct hv_device *device;
+       struct vm_device *device;
 
        /* Synchronize the request/response if needed */
        int wait_condition;
@@ -48,7 +49,7 @@ struct storvsc_request_extension {
 
 /* A storvsc device is a device object that contains a vmbus channel */
 struct storvsc_device {
-       struct hv_device *device;
+       struct vm_device *device;
 
        /* 0 indicates the device is being destroyed */
        atomic_t ref_count;
@@ -84,7 +85,7 @@ static const struct hv_guid gStorVscDeviceType = {
 };
 
 
-static inline struct storvsc_device *alloc_stor_device(struct hv_device 
*device)
+static inline struct storvsc_device *alloc_stor_device(struct vm_device 
*device)
 {
        struct storvsc_device *stor_device;
 
@@ -109,7 +110,7 @@ static inline void free_stor_device(struct storvsc_device 
*device)
 }
 
 /* Get the stordevice object iff exists and its refcount > 1 */
-static inline struct storvsc_device *get_stor_device(struct hv_device *device)
+static inline struct storvsc_device *get_stor_device(struct vm_device *device)
 {
        struct storvsc_device *stor_device;
 
@@ -124,7 +125,7 @@ static inline struct storvsc_device *get_stor_device(struct 
hv_device *device)
 
 /* Get the stordevice object iff exists and its refcount > 0 */
 static inline struct storvsc_device *must_get_stor_device(
-                                       struct hv_device *device)
+                                       struct vm_device *device)
 {
        struct storvsc_device *stor_device;
 
@@ -137,7 +138,7 @@ static inline struct storvsc_device *must_get_stor_device(
        return stor_device;
 }
 
-static inline void put_stor_device(struct hv_device *device)
+static inline void put_stor_device(struct vm_device *device)
 {
        struct storvsc_device *stor_device;
 
@@ -150,7 +151,7 @@ static inline void put_stor_device(struct hv_device *device)
 
 /* Drop ref count to 1 to effectively disable get_stor_device() */
 static inline struct storvsc_device *release_stor_device(
-                                       struct hv_device *device)
+                                       struct vm_device *device)
 {
        struct storvsc_device *stor_device;
 
@@ -166,7 +167,7 @@ static inline struct storvsc_device *release_stor_device(
 
 /* Drop ref count to 0. No one can use stor_device object. */
 static inline struct storvsc_device *final_release_stor_device(
-                       struct hv_device *device)
+                       struct vm_device *device)
 {
        struct storvsc_device *stor_device;
 
@@ -181,7 +182,7 @@ static inline struct storvsc_device 
*final_release_stor_device(
        return stor_device;
 }
 
-static int stor_vsc_channel_init(struct hv_device *device)
+static int stor_vsc_channel_init(struct vm_device *device)
 {
        struct storvsc_device *stor_device;
        struct storvsc_request_extension *request;
@@ -362,7 +363,7 @@ cleanup:
        return ret;
 }
 
-static void stor_vsc_on_io_completion(struct hv_device *device,
+static void stor_vsc_on_io_completion(struct vm_device *device,
                                  struct vstor_packet *vstor_packet,
                                  struct storvsc_request_extension *request_ext)
 {
@@ -426,7 +427,7 @@ static void stor_vsc_on_io_completion(struct hv_device 
*device,
        put_stor_device(device);
 }
 
-static void stor_vsc_on_receive(struct hv_device *device,
+static void stor_vsc_on_receive(struct vm_device *device,
                             struct vstor_packet *vstor_packet,
                             struct storvsc_request_extension *request_ext)
 {
@@ -449,7 +450,7 @@ static void stor_vsc_on_receive(struct hv_device *device,
 
 static void stor_vsc_on_channel_callback(void *context)
 {
-       struct hv_device *device = (struct hv_device *)context;
+       struct vm_device *device = (struct vm_device *)context;
        struct storvsc_device *stor_device;
        u32 bytes_recvd;
        u64 request_id;
@@ -509,7 +510,7 @@ static void stor_vsc_on_channel_callback(void *context)
        return;
 }
 
-static int stor_vsc_connect_to_vsp(struct hv_device *device)
+static int stor_vsc_connect_to_vsp(struct vm_device *device)
 {
        struct vmstorage_channel_properties props;
        struct storvsc_driver_object *stor_driver;
@@ -543,7 +544,7 @@ static int stor_vsc_connect_to_vsp(struct hv_device *device)
  * stor_vsc_on_device_add - Callback when the device belonging to this driver
  * is added
  */
-static int stor_vsc_on_device_add(struct hv_device *device,
+static int stor_vsc_on_device_add(struct vm_device *device,
                                        void *additional_info)
 {
        struct storvsc_device *stor_device;
@@ -592,7 +593,7 @@ cleanup:
 /*
  * stor_vsc_on_device_remove - Callback when the our device is being removed
  */
-static int stor_vsc_on_device_remove(struct hv_device *device)
+static int stor_vsc_on_device_remove(struct vm_device *device)
 {
        struct storvsc_device *stor_device;
 
@@ -626,7 +627,7 @@ static int stor_vsc_on_device_remove(struct hv_device 
*device)
        return 0;
 }
 
-int stor_vsc_on_host_reset(struct hv_device *device)
+int stor_vsc_on_host_reset(struct vm_device *device)
 {
        struct storvsc_device *stor_device;
        struct storvsc_request_extension *request;
@@ -685,7 +686,7 @@ cleanup:
 /*
  * stor_vsc_on_io_request - Callback to initiate an I/O request
  */
-static int stor_vsc_on_io_request(struct hv_device *device,
+static int stor_vsc_on_io_request(struct vm_device *device,
                              struct hv_storvsc_request *request)
 {
        struct storvsc_device *stor_device;
@@ -804,7 +805,7 @@ int stor_vsc_initialize(struct hv_driver *driver)
        /* ASSERT(stor_driver->RingBufferSize >= (PAGE_SIZE << 1)); */
 
        driver->name = g_driver_name;
-       memcpy(&driver->dev_type, &gStorVscDeviceType,
+       memcpy(&driver->class_id, &gStorVscDeviceType,
               sizeof(struct hv_guid));
 
        stor_driver->request_ext_size =
diff --git a/drivers/staging/hv/storvsc_api.h b/drivers/staging/hv/storvsc_api.h
index fbf5755..8bed6f5 100644
--- a/drivers/staging/hv/storvsc_api.h
+++ b/drivers/staging/hv/storvsc_api.h
@@ -92,7 +92,7 @@ struct storvsc_driver_object {
        u32 max_outstanding_req_per_channel;
 
        /* Specific to this driver */
-       int (*on_io_request)(struct hv_device *device,
+       int (*on_io_request)(struct vm_device *device,
                           struct hv_storvsc_request *request);
 };
 
@@ -104,7 +104,7 @@ struct storvsc_device_info {
 
 /* Interface */
 int stor_vsc_initialize(struct hv_driver *driver);
-int stor_vsc_on_host_reset(struct hv_device *device);
+int stor_vsc_on_host_reset(struct vm_device *device);
 int blk_vsc_initialize(struct hv_driver *driver);
 
 #endif /* _STORVSC_API_H_ */
diff --git a/drivers/staging/hv/storvsc_drv.c b/drivers/staging/hv/storvsc_drv.c
index a8427ff..216d8ff 100644
--- a/drivers/staging/hv/storvsc_drv.c
+++ b/drivers/staging/hv/storvsc_drv.c
@@ -32,6 +32,7 @@
 #include <scsi/scsi_devinfo.h>
 #include <scsi/scsi_dbg.h>
 #include "hv_api.h"
+#include "vmbus.h"
 #include "logging.h"
 #include "version_info.h"
 #include "vmbus.h"
@@ -161,7 +162,7 @@ static int storvsc_drv_init(int (*drv_init)(struct 
hv_driver *drv))
        }
 
        drv_ctx->driver.name = storvsc_drv_obj->base.name;
-       memcpy(&drv_ctx->class_id, &storvsc_drv_obj->base.dev_type,
+       memcpy(&drv_ctx->class_id, &storvsc_drv_obj->base.class_id,
               sizeof(struct hv_guid));
 
        drv_ctx->probe = storvsc_probe;
@@ -225,8 +226,7 @@ static int storvsc_probe(struct device *device)
                                (struct storvsc_driver_context *)driver_ctx;
        struct storvsc_driver_object *storvsc_drv_obj =
                                &storvsc_drv_ctx->drv_obj;
-       struct vm_device *device_ctx = device_to_vm_device(device);
-       struct hv_device *device_obj = &device_ctx->device_obj;
+       struct vm_device *device_obj = device_to_vm_device(device);
        struct Scsi_Host *host;
        struct host_device_context *host_device_ctx;
        struct storvsc_device_info device_info;
@@ -247,10 +247,10 @@ static int storvsc_probe(struct device *device)
        memset(host_device_ctx, 0, sizeof(struct host_device_context));
 
        host_device_ctx->port = host->host_no;
-       host_device_ctx->device_ctx = device_ctx;
+       host_device_ctx->device_ctx = device_obj;
 
        host_device_ctx->request_pool =
-                               kmem_cache_create(dev_name(&device_ctx->device),
+                               kmem_cache_create(dev_name(&device_obj->device),
                                        sizeof(struct storvsc_cmd_request) +
                                        storvsc_drv_obj->request_ext_size, 0,
                                        SLAB_HWCACHE_ALIGN, NULL);
@@ -310,8 +310,7 @@ static int storvsc_remove(struct device *device)
                        (struct storvsc_driver_context *)driver_ctx;
        struct storvsc_driver_object *storvsc_drv_obj =
                        &storvsc_drv_ctx->drv_obj;
-       struct vm_device *device_ctx = device_to_vm_device(device);
-       struct hv_device *device_obj = &device_ctx->device_obj;
+       struct vm_device *device_obj = device_to_vm_device(device);
        struct Scsi_Host *host = dev_get_drvdata(device);
        struct host_device_context *host_device_ctx =
                        (struct host_device_context *)host->hostdata;
@@ -752,7 +751,7 @@ static int storvsc_queuecommand_lck(struct scsi_cmnd *scmnd,
 
 retry_request:
        /* Invokes the vsc to start an IO */
-       ret = storvsc_drv_obj->on_io_request(&device_ctx->device_obj,
+       ret = storvsc_drv_obj->on_io_request(device_ctx,
                                           &cmd_request->request);
        if (ret == -1) {
                /* no more space */
@@ -842,15 +841,15 @@ static int storvsc_host_reset_handler(struct scsi_cmnd 
*scmnd)
        struct vm_device *device_ctx = host_device_ctx->device_ctx;
 
        DPRINT_INFO(STORVSC_DRV, "sdev (%p) dev obj (%p) - host resetting...",
-                   scmnd->device, &device_ctx->device_obj);
+                   scmnd->device, device_ctx);
 
        /* Invokes the vsc to reset the host/bus */
-       ret = stor_vsc_on_host_reset(&device_ctx->device_obj);
+       ret = stor_vsc_on_host_reset(device_ctx);
        if (ret != 0)
                return ret;
 
        DPRINT_INFO(STORVSC_DRV, "sdev (%p) dev obj (%p) - host reseted",
-                   scmnd->device, &device_ctx->device_obj);
+                   scmnd->device, device_ctx);
 
        return ret;
 }
diff --git a/drivers/staging/hv/vmbus.h b/drivers/staging/hv/vmbus.h
index 42f2adb..e56e61a 100644
--- a/drivers/staging/hv/vmbus.h
+++ b/drivers/staging/hv/vmbus.h
@@ -44,18 +44,17 @@ struct driver_context {
 };
 
 struct vm_device {
+       char name[64];
        struct work_struct probe_failed_work_item;
-       struct hv_guid class_id;
-       struct hv_guid device_id;
+       struct hv_guid class_id; /* device type id */
+       struct hv_guid device_id; /* device instance id */
+       struct hv_driver *drv;
        int probe_error;
-       struct hv_device device_obj;
+       struct vmbus_channel *channel; /* associated channel to host*/
+       void    *ext;
        struct device device;
 };
 
-static inline struct vm_device *to_vm_device(struct hv_device *d)
-{
-       return container_of(d, struct vm_device, device_obj);
-}
 
 static inline struct vm_device *device_to_vm_device(struct device *d)
 {
diff --git a/drivers/staging/hv/vmbus_api.h b/drivers/staging/hv/vmbus_api.h
index 635ce22..bf84fb0 100644
--- a/drivers/staging/hv/vmbus_api.h
+++ b/drivers/staging/hv/vmbus_api.h
@@ -56,7 +56,7 @@ struct hv_multipage_buffer {
 #pragma pack(pop)
 
 struct hv_driver;
-struct hv_device;
+struct vm_device;
 
 struct hv_dev_port_info {
        u32 int_mask;
@@ -66,7 +66,7 @@ struct hv_dev_port_info {
        u32 bytes_avail_towrite;
 };
 
-struct hv_device_info {
+struct vm_device_info {
        u32 chn_id;
        u32 chn_state;
        struct hv_guid chn_type;
@@ -89,30 +89,11 @@ struct hv_driver {
        const char *name;
 
        /* the device type supported by this driver */
-       struct hv_guid dev_type;
+       struct hv_guid class_id;
 
-       int (*dev_add)(struct hv_device *device, void *data);
-       int (*dev_rm)(struct hv_device *device);
+       int (*dev_add)(struct vm_device *device, void *data);
+       int (*dev_rm)(struct vm_device *device);
        void (*cleanup)(struct hv_driver *driver);
 };
 
-/* Base device object */
-struct hv_device {
-       /* the driver for this device */
-       struct hv_driver *drv;
-
-       char name[64];
-
-       /* the device type id of this device */
-       struct hv_guid dev_type;
-
-       /* the device instance id of this device */
-       struct hv_guid dev_instance;
-
-       struct vmbus_channel *channel;
-
-       /* Device extension; */
-       void *ext;
-};
-
 #endif /* _VMBUS_API_H_ */
diff --git a/drivers/staging/hv/vmbus_drv.c b/drivers/staging/hv/vmbus_drv.c
index 459c707..531b68d 100644
--- a/drivers/staging/hv/vmbus_drv.c
+++ b/drivers/staging/hv/vmbus_drv.c
@@ -145,12 +145,12 @@ static const struct hv_guid device_id = {
        }
 };
 
-static struct hv_device *vmbus_device; /* vmbus root device */
+static struct vm_device *vmbus_device; /* vmbus root device */
 
 /*
  * vmbus_child_dev_add - Registers the child device with the vmbus
  */
-int vmbus_child_dev_add(struct hv_device *child_dev)
+int vmbus_child_dev_add(struct vm_device *child_dev)
 {
        return vmbus_child_device_register(vmbus_device, child_dev);
 }
@@ -158,15 +158,15 @@ int vmbus_child_dev_add(struct hv_device *child_dev)
 /*
  * vmbus_dev_add - Callback when the root bus device is added
  */
-static int vmbus_dev_add(struct hv_device *dev, void *info)
+static int vmbus_dev_add(struct vm_device *dev, void *info)
 {
        u32 *irqvector = info;
        int ret;
 
        vmbus_device = dev;
 
-       memcpy(&vmbus_device->dev_type, &device_type, sizeof(struct hv_guid));
-       memcpy(&vmbus_device->dev_instance, &device_id,
+       memcpy(&vmbus_device->class_id, &device_type, sizeof(struct hv_guid));
+       memcpy(&vmbus_device->device_id, &device_id,
               sizeof(struct hv_guid));
 
        /* strcpy(dev->name, "vmbus"); */
@@ -183,7 +183,7 @@ static int vmbus_dev_add(struct hv_device *dev, void *info)
 /*
  * vmbus_dev_rm - Callback when the root bus device is removed
  */
-static int vmbus_dev_rm(struct hv_device *dev)
+static int vmbus_dev_rm(struct vm_device *dev)
 {
        int ret = 0;
 
@@ -299,8 +299,8 @@ static int vmbus_on_isr(struct hv_driver *drv)
        return ret;
 }
 
-static void get_channel_info(struct hv_device *device,
-                            struct hv_device_info *info)
+static void get_channel_info(struct vm_device *device,
+                            struct vm_device_info *info)
 {
        struct vmbus_channel_debug_info debug_info;
 
@@ -355,11 +355,11 @@ static ssize_t vmbus_show_device_attr(struct device *dev,
                                      char *buf)
 {
        struct vm_device *device_ctx = device_to_vm_device(dev);
-       struct hv_device_info device_info;
+       struct vm_device_info device_info;
 
-       memset(&device_info, 0, sizeof(struct hv_device_info));
+       memset(&device_info, 0, sizeof(struct vm_device_info));
 
-       get_channel_info(&device_ctx->device_obj, &device_info);
+       get_channel_info(device_ctx, &device_info);
 
        if (!strcmp(dev_attr->attr.name, "class_id")) {
                return sprintf(buf, "{%02x%02x%02x%02x-%02x%02x-%02x%02x-"
@@ -480,7 +480,7 @@ static int vmbus_bus_init(void)
                        sizeof(struct vmbus_channel_packet_multipage_buffer));
 
        driver->name = driver_name;
-       memcpy(&driver->dev_type, &device_type, sizeof(struct hv_guid));
+       memcpy(&driver->class_id, &device_type, sizeof(struct hv_guid));
 
        /* Setup dispatch table */
        driver->dev_add = vmbus_dev_add;
@@ -537,7 +537,7 @@ static int vmbus_bus_init(void)
        /* Call to bus driver to add the root device */
        memset(dev_ctx, 0, sizeof(struct vm_device));
 
-       ret = driver->dev_add(&dev_ctx->device_obj, &vector);
+       ret = driver->dev_add(dev_ctx, &vector);
        if (ret != 0) {
                DPRINT_ERR(VMBUS_DRV,
                           "ERROR - Unable to add vmbus root device");
@@ -551,10 +551,6 @@ static int vmbus_bus_init(void)
        }
        /* strcpy(dev_ctx->device.bus_id, dev_ctx->device_obj.name); */
        dev_set_name(&dev_ctx->device, "vmbus_0_0");
-       memcpy(&dev_ctx->class_id, &dev_ctx->device_obj.dev_type,
-               sizeof(struct hv_guid));
-       memcpy(&dev_ctx->device_id, &dev_ctx->device_obj.dev_instance,
-               sizeof(struct hv_guid));
 
        /* No need to bind a driver to the root device. */
        dev_ctx->device.parent = NULL;
@@ -598,7 +594,7 @@ static void vmbus_bus_exit(void)
 
        /* Remove the root device */
        if (driver->dev_rm)
-               driver->dev_rm(&dev_ctx->device_obj);
+               driver->dev_rm(dev_ctx);
 
        if (driver->cleanup)
                driver->cleanup(driver);
@@ -671,12 +667,11 @@ EXPORT_SYMBOL(vmbus_child_driver_unregister);
  * vmbus_child_device_create - Creates and registers a new child device
  * on the vmbus.
  */
-struct hv_device *vmbus_child_device_create(struct hv_guid *type,
+struct vm_device *vmbus_child_device_create(struct hv_guid *type,
                                            struct hv_guid *instance,
                                            struct vmbus_channel *channel)
 {
        struct vm_device *child_device_ctx;
-       struct hv_device *child_device_obj;
 
        /* Allocate the new child device */
        child_device_ctx = kzalloc(sizeof(struct vm_device), GFP_KERNEL);
@@ -705,58 +700,50 @@ struct hv_device *vmbus_child_device_create(struct 
hv_guid *type,
                instance->data[12], instance->data[13],
                instance->data[14], instance->data[15]);
 
-       child_device_obj = &child_device_ctx->device_obj;
-       child_device_obj->channel = channel;
-       memcpy(&child_device_obj->dev_type, type, sizeof(struct hv_guid));
-       memcpy(&child_device_obj->dev_instance, instance,
-              sizeof(struct hv_guid));
+       child_device_ctx->channel = channel;
 
        memcpy(&child_device_ctx->class_id, type, sizeof(struct hv_guid));
        memcpy(&child_device_ctx->device_id, instance, sizeof(struct hv_guid));
 
-       return child_device_obj;
+       return child_device_ctx;
 }
 
 /*
  * vmbus_child_device_register - Register the child device on the specified bus
  */
-int vmbus_child_device_register(struct hv_device *root_device_obj,
-                               struct hv_device *child_device_obj)
+int vmbus_child_device_register(struct vm_device *root_device_obj,
+                               struct vm_device *child_device_obj)
 {
        int ret = 0;
-       struct vm_device *root_device_ctx =
-                               to_vm_device(root_device_obj);
-       struct vm_device *child_device_ctx =
-                               to_vm_device(child_device_obj);
        static atomic_t device_num = ATOMIC_INIT(0);
 
        DPRINT_DBG(VMBUS_DRV, "child device (%p) registering",
-                  child_device_ctx);
+                  child_device_obj);
 
        /* Set the device name. Otherwise, device_register() will fail. */
-       dev_set_name(&child_device_ctx->device, "vmbus_0_%d",
+       dev_set_name(&child_device_obj->device, "vmbus_0_%d",
                     atomic_inc_return(&device_num));
 
        /* The new device belongs to this bus */
-       child_device_ctx->device.bus = &vmbus_drv.bus; /* device->dev.bus; */
-       child_device_ctx->device.parent = &root_device_ctx->device;
-       child_device_ctx->device.release = vmbus_device_release;
+       child_device_obj->device.bus = &vmbus_drv.bus; /* device->dev.bus; */
+       child_device_obj->device.parent = &root_device_obj->device;
+       child_device_obj->device.release = vmbus_device_release;
 
        /*
         * Register with the LDM. This will kick off the driver/device
         * binding...which will eventually call vmbus_match() and vmbus_probe()
         */
-       ret = device_register(&child_device_ctx->device);
+       ret = device_register(&child_device_obj->device);
 
        /* vmbus_probe() error does not get propergate to device_register(). */
-       ret = child_device_ctx->probe_error;
+       ret = child_device_obj->probe_error;
 
        if (ret)
                DPRINT_ERR(VMBUS_DRV, "unable to register child device (%p)",
-                          &child_device_ctx->device);
+                          &child_device_obj->device);
        else
                DPRINT_INFO(VMBUS_DRV, "child device (%p) registered",
-                           &child_device_ctx->device);
+                           &child_device_obj->device);
 
        return ret;
 }
@@ -765,21 +752,20 @@ int vmbus_child_device_register(struct hv_device 
*root_device_obj,
  * vmbus_child_device_unregister - Remove the specified child device
  * from the vmbus.
  */
-void vmbus_child_device_unregister(struct hv_device *device_obj)
+void vmbus_child_device_unregister(struct vm_device *device_obj)
 {
-       struct vm_device *device_ctx = to_vm_device(device_obj);
 
        DPRINT_INFO(VMBUS_DRV, "unregistering child device (%p)",
-                   &device_ctx->device);
+                   &device_obj->device);
 
        /*
         * Kick off the process of unregistering the device.
         * This will call vmbus_remove() and eventually vmbus_device_release()
         */
-       device_unregister(&device_ctx->device);
+       device_unregister(&device_obj->device);
 
        DPRINT_INFO(VMBUS_DRV, "child device (%p) unregistered",
-                   &device_ctx->device);
+                   &device_obj->device);
 }
 
 /*
@@ -876,11 +862,11 @@ static int vmbus_match(struct device *device, struct 
device_driver *driver)
                struct vmbus_driver_context *vmbus_drv_ctx =
                        (struct vmbus_driver_context *)driver_ctx;
 
-               device_ctx->device_obj.drv = &vmbus_drv_ctx->drv_obj;
+               device_ctx->drv = &vmbus_drv_ctx->drv_obj;
                DPRINT_INFO(VMBUS_DRV,
                            "device object (%p) set to driver object (%p)",
-                           &device_ctx->device_obj,
-                           device_ctx->device_obj.drv);
+                           &device_ctx,
+                           device_ctx->drv);
 
                match = 1;
        }
diff --git a/drivers/staging/hv/vmbus_private.h 
b/drivers/staging/hv/vmbus_private.h
index 9f505c4..206218c 100644
--- a/drivers/staging/hv/vmbus_private.h
+++ b/drivers/staging/hv/vmbus_private.h
@@ -103,18 +103,18 @@ extern struct vmbus_connection vmbus_connection;
 
 /* General vmbus interface */
 
-struct hv_device *vmbus_child_device_create(struct hv_guid *type,
+struct vm_device *vmbus_child_device_create(struct hv_guid *type,
                                         struct hv_guid *instance,
                                         struct vmbus_channel *channel);
 
-int vmbus_child_dev_add(struct hv_device *device);
-int vmbus_child_device_register(struct hv_device *root_device_obj,
-                               struct hv_device *child_device_obj);
-void vmbus_child_device_unregister(struct hv_device *device_obj);
+int vmbus_child_dev_add(struct vm_device *device);
+int vmbus_child_device_register(struct vm_device *root_device_obj,
+                               struct vm_device *child_device_obj);
+void vmbus_child_device_unregister(struct vm_device *device_obj);
 
 /* static void */
 /* VmbusChildDeviceDestroy( */
-/* struct hv_device *); */
+/* struct vm_device *); */
 
 struct vmbus_channel *relid2channel(u32 relid);
 
-- 
1.5.5.6

_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel

Reply via email to