From: "K. Y. Srinivasan" <kys@microsoft.com>
To: gregkh@suse.de, linux-kernel@vger.kernel.org,
devel@linuxdriverproject.org, virtualization@lists.osdl.org
Cc: Haiyang Zhang <haiyangz@microsoft.com>
Subject: [PATCH 002/117] Staging: hv: Replace struct hv_guid with the uuid type already defined in Linux
Date: Fri, 15 Jul 2011 10:45:50 -0700 [thread overview]
Message-ID: <1310752065-27895-2-git-send-email-kys@microsoft.com> (raw)
In-Reply-To: <1310752065-27895-1-git-send-email-kys@microsoft.com>
Replace struct hv_guid with the uuid type already defined in Linux.
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
---
drivers/staging/hv/blkvsc_drv.c | 18 +++---
drivers/staging/hv/channel.c | 4 +-
drivers/staging/hv/channel_mgmt.c | 50 ++++++-------
drivers/staging/hv/hv_mouse.c | 6 +-
drivers/staging/hv/hyperv.h | 24 +++----
drivers/staging/hv/hyperv_vmbus.h | 8 +-
drivers/staging/hv/netvsc.c | 6 +-
drivers/staging/hv/storvsc_drv.c | 6 +-
drivers/staging/hv/vmbus_drv.c | 142 ++++++++++++++++++------------------
9 files changed, 129 insertions(+), 135 deletions(-)
diff --git a/drivers/staging/hv/blkvsc_drv.c b/drivers/staging/hv/blkvsc_drv.c
index d286b22..018b293 100644
--- a/drivers/staging/hv/blkvsc_drv.c
+++ b/drivers/staging/hv/blkvsc_drv.c
@@ -112,8 +112,8 @@ struct block_device_context {
static const char *drv_name = "blkvsc";
/* {32412632-86cb-44a2-9b5c-50d1417354f5} */
-static const struct hv_guid dev_type = {
- .data = {
+static const uuid_le dev_type = {
+ .b = {
0x32, 0x26, 0x41, 0x32, 0xcb, 0x86, 0xa2, 0x44,
0x9b, 0x5c, 0x50, 0xd1, 0x41, 0x73, 0x54, 0xf5
}
@@ -155,13 +155,13 @@ static int blkvsc_device_add(struct hv_device *device,
* 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->dev_instance.b[3] << 24 |
+ device->dev_instance.b[2] << 16 |
+ device->dev_instance.b[1] << 8 |
+ device->dev_instance.b[0];
- device_info->target_id = device->dev_instance.data[5] << 8 |
- device->dev_instance.data[4];
+ device_info->target_id = device->dev_instance.b[5] << 8 |
+ device->dev_instance.b[4];
return ret;
}
@@ -829,7 +829,7 @@ static int blkvsc_drv_init(void)
BUILD_BUG_ON(sizeof(sector_t) != 8);
- memcpy(&drv->dev_type, &dev_type, sizeof(struct hv_guid));
+ memcpy(&drv->dev_type, &dev_type, sizeof(uuid_le));
drv->driver.name = drv_name;
/* The driver belongs to vmbus */
diff --git a/drivers/staging/hv/channel.c b/drivers/staging/hv/channel.c
index 455f47a..222adcc 100644
--- a/drivers/staging/hv/channel.c
+++ b/drivers/staging/hv/channel.c
@@ -81,10 +81,10 @@ void vmbus_get_debug_info(struct vmbus_channel *channel,
debuginfo->relid = channel->offermsg.child_relid;
debuginfo->state = channel->state;
memcpy(&debuginfo->interfacetype,
- &channel->offermsg.offer.if_type, sizeof(struct hv_guid));
+ &channel->offermsg.offer.if_type, sizeof(uuid_le));
memcpy(&debuginfo->interface_instance,
&channel->offermsg.offer.if_instance,
- sizeof(struct hv_guid));
+ sizeof(uuid_le));
monitorpage = (struct hv_monitor_page *)vmbus_connection.monitor_pages;
diff --git a/drivers/staging/hv/channel_mgmt.c b/drivers/staging/hv/channel_mgmt.c
index bf011f3..11beb41 100644
--- a/drivers/staging/hv/channel_mgmt.c
+++ b/drivers/staging/hv/channel_mgmt.c
@@ -40,12 +40,12 @@ struct vmbus_channel_message_table_entry {
#define MAX_MSG_TYPES 4
#define MAX_NUM_DEVICE_CLASSES_SUPPORTED 8
-static const struct hv_guid
+static const uuid_le
supported_device_classes[MAX_NUM_DEVICE_CLASSES_SUPPORTED] = {
/* {ba6163d9-04a1-4d29-b605-72e2ffb1dc7f} */
/* Storage - SCSI */
{
- .data = {
+ .b = {
0xd9, 0x63, 0x61, 0xba, 0xa1, 0x04, 0x29, 0x4d,
0xb6, 0x05, 0x72, 0xe2, 0xff, 0xb1, 0xdc, 0x7f
}
@@ -54,7 +54,7 @@ static const struct hv_guid
/* {F8615163-DF3E-46c5-913F-F2D2F965ED0E} */
/* Network */
{
- .data = {
+ .b = {
0x63, 0x51, 0x61, 0xF8, 0x3E, 0xDF, 0xc5, 0x46,
0x91, 0x3F, 0xF2, 0xD2, 0xF9, 0x65, 0xED, 0x0E
}
@@ -63,7 +63,7 @@ static const struct hv_guid
/* {CFA8B69E-5B4A-4cc0-B98B-8BA1A1F3F95A} */
/* Input */
{
- .data = {
+ .b = {
0x9E, 0xB6, 0xA8, 0xCF, 0x4A, 0x5B, 0xc0, 0x4c,
0xB9, 0x8B, 0x8B, 0xA1, 0xA1, 0xF3, 0xF9, 0x5A
}
@@ -72,7 +72,7 @@ static const struct hv_guid
/* {32412632-86cb-44a2-9b5c-50d1417354f5} */
/* IDE */
{
- .data = {
+ .b = {
0x32, 0x26, 0x41, 0x32, 0xcb, 0x86, 0xa2, 0x44,
0x9b, 0x5c, 0x50, 0xd1, 0x41, 0x73, 0x54, 0xf5
}
@@ -80,7 +80,7 @@ static const struct hv_guid
/* 0E0B6031-5213-4934-818B-38D90CED39DB */
/* Shutdown */
{
- .data = {
+ .b = {
0x31, 0x60, 0x0B, 0X0E, 0x13, 0x52, 0x34, 0x49,
0x81, 0x8B, 0x38, 0XD9, 0x0C, 0xED, 0x39, 0xDB
}
@@ -88,7 +88,7 @@ static const struct hv_guid
/* {9527E630-D0AE-497b-ADCE-E80AB0175CAF} */
/* TimeSync */
{
- .data = {
+ .b = {
0x30, 0xe6, 0x27, 0x95, 0xae, 0xd0, 0x7b, 0x49,
0xad, 0xce, 0xe8, 0x0a, 0xb0, 0x17, 0x5c, 0xaf
}
@@ -96,7 +96,7 @@ static const struct hv_guid
/* {57164f39-9115-4e78-ab55-382f3bd5422d} */
/* Heartbeat */
{
- .data = {
+ .b = {
0x39, 0x4f, 0x16, 0x57, 0x15, 0x91, 0x78, 0x4e,
0xab, 0x55, 0x38, 0x2f, 0x3b, 0xd5, 0x42, 0x2d
}
@@ -104,7 +104,7 @@ static const struct hv_guid
/* {A9A0F4E7-5A45-4d96-B827-8A841E8C03E6} */
/* KVP */
{
- .data = {
+ .b = {
0xe7, 0xf4, 0xa0, 0xa9, 0x45, 0x5a, 0x96, 0x4d,
0xb8, 0x27, 0x8a, 0x84, 0x1e, 0x8c, 0x3, 0xe6
}
@@ -231,7 +231,7 @@ struct hyperv_service_callback hv_cb_utils[MAX_MSG_TYPES] = {
/* Shutdown */
{
.msg_type = HV_SHUTDOWN_MSG,
- .data = {
+ .data.b = {
0x31, 0x60, 0x0B, 0X0E, 0x13, 0x52, 0x34, 0x49,
0x81, 0x8B, 0x38, 0XD9, 0x0C, 0xED, 0x39, 0xDB
},
@@ -242,7 +242,7 @@ struct hyperv_service_callback hv_cb_utils[MAX_MSG_TYPES] = {
/* TimeSync */
{
.msg_type = HV_TIMESYNC_MSG,
- .data = {
+ .data.b = {
0x30, 0xe6, 0x27, 0x95, 0xae, 0xd0, 0x7b, 0x49,
0xad, 0xce, 0xe8, 0x0a, 0xb0, 0x17, 0x5c, 0xaf
},
@@ -252,7 +252,7 @@ struct hyperv_service_callback hv_cb_utils[MAX_MSG_TYPES] = {
/* Heartbeat */
{
.msg_type = HV_HEARTBEAT_MSG,
- .data = {
+ .data.b = {
0x39, 0x4f, 0x16, 0x57, 0x15, 0x91, 0x78, 0x4e,
0xab, 0x55, 0x38, 0x2f, 0x3b, 0xd5, 0x42, 0x2d
},
@@ -261,7 +261,7 @@ struct hyperv_service_callback hv_cb_utils[MAX_MSG_TYPES] = {
/* {A9A0F4E7-5A45-4d96-B827-8A841E8C03E6} */
/* KVP */
{
- .data = {
+ .data.b = {
0xe7, 0xf4, 0xa0, 0xa9, 0x45, 0x5a, 0x96, 0x4d,
0xb8, 0x27, 0x8a, 0x84, 0x1e, 0x8c, 0x3, 0xe6
},
@@ -358,12 +358,10 @@ static void vmbus_process_offer(struct work_struct *work)
spin_lock_irqsave(&vmbus_connection.channel_lock, flags);
list_for_each_entry(channel, &vmbus_connection.chn_list, listentry) {
- if (!memcmp(&channel->offermsg.offer.if_type,
- &newchannel->offermsg.offer.if_type,
- sizeof(struct hv_guid)) &&
- !memcmp(&channel->offermsg.offer.if_instance,
- &newchannel->offermsg.offer.if_instance,
- sizeof(struct hv_guid))) {
+ if (!uuid_le_cmp(channel->offermsg.offer.if_type,
+ newchannel->offermsg.offer.if_type) &&
+ !uuid_le_cmp(channel->offermsg.offer.if_instance,
+ newchannel->offermsg.offer.if_instance)) {
fnew = false;
break;
}
@@ -416,9 +414,8 @@ static void vmbus_process_offer(struct work_struct *work)
/* Open IC channels */
for (cnt = 0; cnt < MAX_MSG_TYPES; cnt++) {
- if (memcmp(&newchannel->offermsg.offer.if_type,
- &hv_cb_utils[cnt].data,
- sizeof(struct hv_guid)) == 0 &&
+ if (!uuid_le_cmp(newchannel->offermsg.offer.if_type,
+ hv_cb_utils[cnt].data) &&
vmbus_open(newchannel, 2 * PAGE_SIZE,
2 * PAGE_SIZE, NULL, 0,
chn_cb_negotiate,
@@ -444,16 +441,15 @@ static void vmbus_onoffer(struct vmbus_channel_message_header *hdr)
{
struct vmbus_channel_offer_channel *offer;
struct vmbus_channel *newchannel;
- struct hv_guid *guidtype;
- struct hv_guid *guidinstance;
+ uuid_le *guidtype;
+ uuid_le *guidinstance;
int i;
int fsupported = 0;
offer = (struct vmbus_channel_offer_channel *)hdr;
for (i = 0; i < MAX_NUM_DEVICE_CLASSES_SUPPORTED; i++) {
- if (memcmp(&offer->offer.if_type,
- &supported_device_classes[i],
- sizeof(struct hv_guid)) == 0) {
+ if (!uuid_le_cmp(offer->offer.if_type,
+ supported_device_classes[i])) {
fsupported = 1;
break;
}
diff --git a/drivers/staging/hv/hv_mouse.c b/drivers/staging/hv/hv_mouse.c
index b191810..6f0992a 100644
--- a/drivers/staging/hv/hv_mouse.c
+++ b/drivers/staging/hv/hv_mouse.c
@@ -180,8 +180,8 @@ struct mousevsc_dev {
static const char *driver_name = "mousevsc";
/* {CFA8B69E-5B4A-4cc0-B98B-8BA1A1F3F95A} */
-static const struct hv_guid mouse_guid = {
- .data = {0x9E, 0xB6, 0xA8, 0xCF, 0x4A, 0x5B, 0xc0, 0x4c,
+static const uuid_le mouse_guid = {
+ .b = {0x9E, 0xB6, 0xA8, 0xCF, 0x4A, 0x5B, 0xc0, 0x4c,
0xB9, 0x8B, 0x8B, 0xA1, 0xA1, 0xF3, 0xF9, 0x5A}
};
@@ -933,7 +933,7 @@ static int __init mousevsc_init(void)
DPRINT_INFO(INPUTVSC_DRV, "Hyper-V Mouse driver initializing.");
memcpy(&drv->dev_type, &mouse_guid,
- sizeof(struct hv_guid));
+ sizeof(uuid_le));
drv->driver.name = driver_name;
diff --git a/drivers/staging/hv/hyperv.h b/drivers/staging/hv/hyperv.h
index 1747a24..399d9fe 100644
--- a/drivers/staging/hv/hyperv.h
+++ b/drivers/staging/hv/hyperv.h
@@ -27,6 +27,7 @@
#include <linux/scatterlist.h>
#include <linux/list.h>
+#include <linux/uuid.h>
#include <linux/timer.h>
#include <linux/workqueue.h>
#include <linux/completion.h>
@@ -35,9 +36,6 @@
#include <asm/hyperv.h>
-struct hv_guid {
- unsigned char data[16];
-};
#define MAX_PAGE_BUFFER_COUNT 16
#define MAX_MULTIPAGE_BUFFER_COUNT 32 /* 128K */
@@ -156,8 +154,8 @@ struct hv_ring_buffer_debug_info {
* struct contains the fundamental information about an offer.
*/
struct vmbus_channel_offer {
- struct hv_guid if_type;
- struct hv_guid if_instance;
+ uuid_le if_type;
+ uuid_le if_instance;
u64 int_latency; /* in 100ns units */
u32 if_revision;
u32 server_ctx_size; /* in bytes */
@@ -526,8 +524,8 @@ enum vmbus_channel_state {
struct vmbus_channel_debug_info {
u32 relid;
enum vmbus_channel_state state;
- struct hv_guid interfacetype;
- struct hv_guid interface_instance;
+ uuid_le interfacetype;
+ uuid_le interface_instance;
u32 monitorid;
u32 servermonitor_pending;
u32 servermonitor_latency;
@@ -786,8 +784,8 @@ struct hv_dev_port_info {
struct hv_device_info {
u32 chn_id;
u32 chn_state;
- struct hv_guid chn_type;
- struct hv_guid chn_instance;
+ uuid_le chn_type;
+ uuid_le chn_instance;
u32 monitor_id;
u32 server_monitor_pending;
@@ -806,7 +804,7 @@ struct hv_driver {
const char *name;
/* the device type supported by this driver */
- struct hv_guid dev_type;
+ uuid_le dev_type;
struct device_driver driver;
@@ -819,10 +817,10 @@ struct hv_driver {
/* Base device object */
struct hv_device {
/* the device type id of this device */
- struct hv_guid dev_type;
+ uuid_le dev_type;
/* the device instance id of this device */
- struct hv_guid dev_instance;
+ uuid_le dev_instance;
struct device device;
@@ -935,7 +933,7 @@ struct ictimesync_data {
struct hyperv_service_callback {
u8 msg_type;
char *log_msg;
- unsigned char data[16];
+ uuid_le data;
struct vmbus_channel *channel;
void (*callback) (void *context);
};
diff --git a/drivers/staging/hv/hyperv_vmbus.h b/drivers/staging/hv/hyperv_vmbus.h
index 349ad80..16ca90d 100644
--- a/drivers/staging/hv/hyperv_vmbus.h
+++ b/drivers/staging/hv/hyperv_vmbus.h
@@ -451,8 +451,8 @@ enum {
/* #define VMBUS_PORT_ID 11 */
/* 628180B8-308D-4c5e-B7DB-1BEB62E62EF4 */
-static const struct hv_guid VMBUS_SERVICE_ID = {
- .data = {
+static const uuid_le VMBUS_SERVICE_ID = {
+ .b = {
0xb8, 0x80, 0x81, 0x62, 0x8d, 0x30, 0x5e, 0x4c,
0xb7, 0xdb, 0x1b, 0xeb, 0x62, 0xe6, 0x2e, 0xf4
},
@@ -601,8 +601,8 @@ extern struct vmbus_connection vmbus_connection;
/* General vmbus interface */
-struct hv_device *vmbus_child_device_create(struct hv_guid *type,
- struct hv_guid *instance,
+struct hv_device *vmbus_child_device_create(uuid_le *type,
+ uuid_le *instance,
struct vmbus_channel *channel);
int vmbus_child_device_register(struct hv_device *child_device_obj);
diff --git a/drivers/staging/hv/netvsc.c b/drivers/staging/hv/netvsc.c
index dc5e5c4..1506b53 100644
--- a/drivers/staging/hv/netvsc.c
+++ b/drivers/staging/hv/netvsc.c
@@ -36,8 +36,8 @@
static const char *driver_name = "netvsc";
/* {F8615163-DF3E-46c5-913F-F2D2F965ED0E} */
-static const struct hv_guid netvsc_device_type = {
- .data = {
+static const uuid_le netvsc_device_type = {
+ .b = {
0x63, 0x51, 0x61, 0xF8, 0x3E, 0xDF, 0xc5, 0x46,
0x91, 0x3F, 0xF2, 0xD2, 0xF9, 0x65, 0xED, 0x0E
}
@@ -1009,7 +1009,7 @@ int netvsc_initialize(struct hv_driver *drv)
{
drv->name = driver_name;
- memcpy(&drv->dev_type, &netvsc_device_type, sizeof(struct hv_guid));
+ memcpy(&drv->dev_type, &netvsc_device_type, sizeof(uuid_le));
return 0;
}
diff --git a/drivers/staging/hv/storvsc_drv.c b/drivers/staging/hv/storvsc_drv.c
index 7effaf3..e4cdbc5 100644
--- a/drivers/staging/hv/storvsc_drv.c
+++ b/drivers/staging/hv/storvsc_drv.c
@@ -45,8 +45,8 @@ MODULE_PARM_DESC(storvsc_ringbuffer_size, "Ring buffer size (bytes)");
static const char *driver_name = "storvsc";
/* {ba6163d9-04a1-4d29-b605-72e2ffb1dc7f} */
-static const struct hv_guid stor_vsci_device_type = {
- .data = {
+static const uuid_le stor_vsci_device_type = {
+ .b = {
0xd9, 0x63, 0x61, 0xba, 0xa1, 0x04, 0x29, 0x4d,
0xb6, 0x05, 0x72, 0xe2, 0xff, 0xb1, 0xdc, 0x7f
}
@@ -765,7 +765,7 @@ static int __init storvsc_drv_init(void)
sizeof(u64)));
memcpy(&drv->dev_type, &stor_vsci_device_type,
- sizeof(struct hv_guid));
+ sizeof(uuid_le));
if (max_outstanding_req_per_channel <
STORVSC_MAX_IO_REQUESTS)
diff --git a/drivers/staging/hv/vmbus_drv.c b/drivers/staging/hv/vmbus_drv.c
index 559353d..291b4e0 100644
--- a/drivers/staging/hv/vmbus_drv.c
+++ b/drivers/staging/hv/vmbus_drv.c
@@ -64,9 +64,9 @@ static void get_channel_info(struct hv_device *device,
info->chn_id = debug_info.relid;
info->chn_state = debug_info.state;
memcpy(&info->chn_type, &debug_info.interfacetype,
- sizeof(struct hv_guid));
+ sizeof(uuid_le));
memcpy(&info->chn_instance, &debug_info.interface_instance,
- sizeof(struct hv_guid));
+ sizeof(uuid_le));
info->monitor_id = debug_info.monitorid;
@@ -116,41 +116,41 @@ static ssize_t vmbus_show_device_attr(struct device *dev,
if (!strcmp(dev_attr->attr.name, "class_id")) {
return sprintf(buf, "{%02x%02x%02x%02x-%02x%02x-%02x%02x-"
"%02x%02x%02x%02x%02x%02x%02x%02x}\n",
- device_info.chn_type.data[3],
- device_info.chn_type.data[2],
- device_info.chn_type.data[1],
- device_info.chn_type.data[0],
- device_info.chn_type.data[5],
- device_info.chn_type.data[4],
- device_info.chn_type.data[7],
- device_info.chn_type.data[6],
- device_info.chn_type.data[8],
- device_info.chn_type.data[9],
- device_info.chn_type.data[10],
- device_info.chn_type.data[11],
- device_info.chn_type.data[12],
- device_info.chn_type.data[13],
- device_info.chn_type.data[14],
- device_info.chn_type.data[15]);
+ device_info.chn_type.b[3],
+ device_info.chn_type.b[2],
+ device_info.chn_type.b[1],
+ device_info.chn_type.b[0],
+ device_info.chn_type.b[5],
+ device_info.chn_type.b[4],
+ device_info.chn_type.b[7],
+ device_info.chn_type.b[6],
+ device_info.chn_type.b[8],
+ device_info.chn_type.b[9],
+ device_info.chn_type.b[10],
+ device_info.chn_type.b[11],
+ device_info.chn_type.b[12],
+ device_info.chn_type.b[13],
+ device_info.chn_type.b[14],
+ device_info.chn_type.b[15]);
} else if (!strcmp(dev_attr->attr.name, "device_id")) {
return sprintf(buf, "{%02x%02x%02x%02x-%02x%02x-%02x%02x-"
"%02x%02x%02x%02x%02x%02x%02x%02x}\n",
- device_info.chn_instance.data[3],
- device_info.chn_instance.data[2],
- device_info.chn_instance.data[1],
- device_info.chn_instance.data[0],
- device_info.chn_instance.data[5],
- device_info.chn_instance.data[4],
- device_info.chn_instance.data[7],
- device_info.chn_instance.data[6],
- device_info.chn_instance.data[8],
- device_info.chn_instance.data[9],
- device_info.chn_instance.data[10],
- device_info.chn_instance.data[11],
- device_info.chn_instance.data[12],
- device_info.chn_instance.data[13],
- device_info.chn_instance.data[14],
- device_info.chn_instance.data[15]);
+ device_info.chn_instance.b[3],
+ device_info.chn_instance.b[2],
+ device_info.chn_instance.b[1],
+ device_info.chn_instance.b[0],
+ device_info.chn_instance.b[5],
+ device_info.chn_instance.b[4],
+ device_info.chn_instance.b[7],
+ device_info.chn_instance.b[6],
+ device_info.chn_instance.b[8],
+ device_info.chn_instance.b[9],
+ device_info.chn_instance.b[10],
+ device_info.chn_instance.b[11],
+ device_info.chn_instance.b[12],
+ device_info.chn_instance.b[13],
+ device_info.chn_instance.b[14],
+ device_info.chn_instance.b[15]);
} else if (!strcmp(dev_attr->attr.name, "state")) {
return sprintf(buf, "%d\n", device_info.chn_state);
} else if (!strcmp(dev_attr->attr.name, "id")) {
@@ -246,22 +246,22 @@ static int vmbus_uevent(struct device *device, struct kobj_uevent_env *env)
ret = add_uevent_var(env, "VMBUS_DEVICE_CLASS_GUID={"
"%02x%02x%02x%02x-%02x%02x-%02x%02x-"
"%02x%02x%02x%02x%02x%02x%02x%02x}",
- dev->dev_type.data[3],
- dev->dev_type.data[2],
- dev->dev_type.data[1],
- dev->dev_type.data[0],
- dev->dev_type.data[5],
- dev->dev_type.data[4],
- dev->dev_type.data[7],
- dev->dev_type.data[6],
- dev->dev_type.data[8],
- dev->dev_type.data[9],
- dev->dev_type.data[10],
- dev->dev_type.data[11],
- dev->dev_type.data[12],
- dev->dev_type.data[13],
- dev->dev_type.data[14],
- dev->dev_type.data[15]);
+ dev->dev_type.b[3],
+ dev->dev_type.b[2],
+ dev->dev_type.b[1],
+ dev->dev_type.b[0],
+ dev->dev_type.b[5],
+ dev->dev_type.b[4],
+ dev->dev_type.b[7],
+ dev->dev_type.b[6],
+ dev->dev_type.b[8],
+ dev->dev_type.b[9],
+ dev->dev_type.b[10],
+ dev->dev_type.b[11],
+ dev->dev_type.b[12],
+ dev->dev_type.b[13],
+ dev->dev_type.b[14],
+ dev->dev_type.b[15]);
if (ret)
return ret;
@@ -269,22 +269,22 @@ static int vmbus_uevent(struct device *device, struct kobj_uevent_env *env)
ret = add_uevent_var(env, "VMBUS_DEVICE_DEVICE_GUID={"
"%02x%02x%02x%02x-%02x%02x-%02x%02x-"
"%02x%02x%02x%02x%02x%02x%02x%02x}",
- dev->dev_instance.data[3],
- dev->dev_instance.data[2],
- dev->dev_instance.data[1],
- dev->dev_instance.data[0],
- dev->dev_instance.data[5],
- dev->dev_instance.data[4],
- dev->dev_instance.data[7],
- dev->dev_instance.data[6],
- dev->dev_instance.data[8],
- dev->dev_instance.data[9],
- dev->dev_instance.data[10],
- dev->dev_instance.data[11],
- dev->dev_instance.data[12],
- dev->dev_instance.data[13],
- dev->dev_instance.data[14],
- dev->dev_instance.data[15]);
+ dev->dev_instance.b[3],
+ dev->dev_instance.b[2],
+ dev->dev_instance.b[1],
+ dev->dev_instance.b[0],
+ dev->dev_instance.b[5],
+ dev->dev_instance.b[4],
+ dev->dev_instance.b[7],
+ dev->dev_instance.b[6],
+ dev->dev_instance.b[8],
+ dev->dev_instance.b[9],
+ dev->dev_instance.b[10],
+ dev->dev_instance.b[11],
+ dev->dev_instance.b[12],
+ dev->dev_instance.b[13],
+ dev->dev_instance.b[14],
+ dev->dev_instance.b[15]);
if (ret)
return ret;
@@ -303,7 +303,7 @@ static int vmbus_match(struct device *device, struct device_driver *driver)
/* We found our driver ? */
if (memcmp(&hv_dev->dev_type, &drv->dev_type,
- sizeof(struct hv_guid)) == 0)
+ sizeof(uuid_le)) == 0)
match = 1;
return match;
@@ -630,8 +630,8 @@ 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 hv_guid *instance,
+struct hv_device *vmbus_child_device_create(uuid_le *type,
+ uuid_le *instance,
struct vmbus_channel *channel)
{
struct hv_device *child_device_obj;
@@ -644,9 +644,9 @@ struct hv_device *vmbus_child_device_create(struct hv_guid *type,
}
child_device_obj->channel = channel;
- memcpy(&child_device_obj->dev_type, type, sizeof(struct hv_guid));
+ memcpy(&child_device_obj->dev_type, type, sizeof(uuid_le));
memcpy(&child_device_obj->dev_instance, instance,
- sizeof(struct hv_guid));
+ sizeof(uuid_le));
return child_device_obj;
--
1.7.4.1
next prev parent reply other threads:[~2011-07-15 17:45 UTC|newest]
Thread overview: 175+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-15 17:47 [PATCH 0000/0117] Staging: hv: Driver cleanup K. Y. Srinivasan
2011-07-15 17:45 ` [PATCH 001/117] Staging: hv: vmbus: VMBUS is an ACPI enumerated device, get rid of the PCI signature K. Y. Srinivasan
2011-07-15 17:45 ` K. Y. Srinivasan [this message]
2011-07-15 17:45 ` [PATCH 003/117] Staging: hv: Add struct hv_vmbus_device_id to mod_devicetable.h K. Y. Srinivasan
2011-08-23 22:41 ` Greg KH
2011-08-24 0:44 ` KY Srinivasan
2011-08-24 2:59 ` Greg KH
2011-08-24 16:46 ` KY Srinivasan
2011-08-24 20:11 ` Greg KH
2011-08-24 21:51 ` KY Srinivasan
2011-08-25 2:27 ` KY Srinivasan
2011-08-25 2:40 ` Greg KH
2011-08-25 14:14 ` KY Srinivasan
2011-08-25 2:38 ` Greg KH
2011-07-15 17:45 ` [PATCH 004/117] Staging: hv: Add code to parse struct hv_vmbus_device_id table K. Y. Srinivasan
2011-07-15 17:45 ` [PATCH 005/117] Staging: hv: vmbus: Introduce vmbus ID space in struct hv_driver K. Y. Srinivasan
2011-07-15 17:45 ` [PATCH 006/117] Staging: hv: blkvsc: Use the newly introduced vmbus ID in the blockvsc driver K. Y. Srinivasan
2011-08-23 22:45 ` Greg KH
2011-07-15 17:45 ` [PATCH 007/117] Staging: hv: storvsc: Use the newly introduced vmbus ID in storvsc driver K. Y. Srinivasan
2011-07-15 17:45 ` [PATCH 008/117] Staging: hv: netvsc: Use the newly introduced vmbus ID in netvsc driver K. Y. Srinivasan
2011-07-15 17:45 ` [PATCH 009/117] Staging: hv: mousevsc: Use the newly introduced vmbus ID in mouse driver K. Y. Srinivasan
2011-07-15 17:45 ` [PATCH 010/117] Staging: hv: util: Make hv_utils a vmbus device driver K. Y. Srinivasan
2011-07-15 17:45 ` [PATCH 011/117] Staging: hv: util: Use the newly introduced vmbus ID in util driver K. Y. Srinivasan
2011-08-23 22:46 ` Greg KH
2011-07-15 17:46 ` [PATCH 012/117] Staging: hv: blkvsc: Add the MODULE_DEVICE_TABLE() line K. Y. Srinivasan
2011-08-23 22:46 ` Greg KH
2011-07-15 17:46 ` [PATCH 013/117] Staging: hv: storvsc: Add " K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 014/117] Staging: hv: netvsc: Add the " K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 015/117] Staging: hv: util: " K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 016/117] Staging: hv: mouse: " K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 017/117] Staging: hv: mouse: Do not auto-load the mouse driver K. Y. Srinivasan
2011-08-23 22:47 ` Greg KH
2011-07-15 17:46 ` [PATCH 018/117] Staging: hv: vmbus: Cleanup vmbus_match() K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 019/117] Staging: hv: vmbus: Cleanup vmbus_uevent() code K. Y. Srinivasan
2011-08-23 22:49 ` Greg KH
2011-08-24 0:38 ` KY Srinivasan
2011-08-24 3:00 ` Greg KH
2011-08-24 14:12 ` KY Srinivasan
2011-07-15 17:46 ` [PATCH 020/117] Staging: hv: vmbus: Support the notion of id tables in vmbus_match() K. Y. Srinivasan
2011-07-16 2:02 ` Christoph Hellwig
2011-07-16 12:54 ` KY Srinivasan
2011-07-16 18:24 ` Christoph Hellwig
2011-08-23 22:51 ` Greg KH
2011-07-15 17:46 ` [PATCH 021/117] Staging: hv: vmbus: Get rid of an unnecessary include line in vmbus_drv.c K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 022/117] Staging: hv: storvsc: Get rid of the DMI signature K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 023/117] Staging: hv: netvsc: Get rid of the PCI signature K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 024/117] Staging: hv: netvsc: Get rid of the DMI signature in netvsc_drv.c K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 025/117] Staging: hv: util: Get rid of the DMI signature in hv_util.c K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 026/117] Staging: hv: util: Get rid of the PCI " K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 027/117] Staging: hv: blkvsc: Get rid of the dev_type guid from blkvsc_drv.c K. Y. Srinivasan
2011-08-23 22:52 ` Greg KH
2011-07-15 17:46 ` [PATCH 028/117] Staging: hv: storvsc: Get rid of the device type guid from storvsc_drv.c K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 029/117] Staging: hv: netvsc: Get rid of the dev_type guid from netvsc.c K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 030/117] Staging: hv: netvsc: Initialize the driver name directly K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 031/117] Staging: hv: netvsc: Get rid of the driver name initialization in netvsc.c K. Y. Srinivasan
2011-08-23 22:56 ` Greg KH
2011-07-15 17:46 ` [PATCH 032/117] Staging: hv: netvsc: Get rid of the empty function netvsc_initialize() K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 033/117] Staging: hv: vmbus: Get rid of the unused name field in struct hv_driver K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 034/117] Staging: hv: mouse: Get rid of the dev_type guid in hv_mouse.c K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 035/117] Staging: hv: vmbus: Introduce a function to map the dev_type guid to a name K. Y. Srinivasan
2011-08-23 23:01 ` Greg KH
2011-07-15 17:46 ` [PATCH 036/117] Staging: hv: vmbus: Make class_id attribute a human readable string K. Y. Srinivasan
2011-08-23 23:02 ` Greg KH
2011-07-15 17:46 ` [PATCH 037/117] Staging: hv: vmbus: Get rid of the device_id attribute K. Y. Srinivasan
2011-08-23 23:03 ` Greg KH
2011-07-15 17:46 ` [PATCH 038/117] Staging: hv: vmbus: Get rid of some unnecessary comments K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 039/117] Staging: hv: vmbus: Cleanup unnecessary comments in hv.c K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 040/117] Staging: hv: vmbus: Cleanup error handling in hv_init() K. Y. Srinivasan
2011-08-23 23:04 ` Greg KH
2011-07-15 17:46 ` [PATCH 041/117] Staging: hv: vmbus: Get rid of unnecessay comments in connection.c K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 042/117] Staging: hv: vmbus: Get rid of the function dump_gpadl_body() K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 043/117] Staging: hv: vmbus: Get rid of the function dump_gpadl_header() K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 044/117] Staging: hv: vmbus: Rename openMsg to open_msg in channel.c K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 045/117] Staging: hv: vmbus: Get rid of unnecessary comments " K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 046/117] Staging: hv: vmbus: Change the variable name openInfo to open_info " K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 047/117] Staging: hv: vmbus: Cleanup error values in ringbuffer.c K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 048/117] Staging: hv: vmbus: Cleanup the error return value in vmbus_recvpacket_raw() K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 049/117] Staging: hv: netvsc: Get rid of an unnecessary print statement in netvsc_probe() K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 050/117] Staging: hv: vmbus: Retry vmbus_post_msg() before giving up K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 051/117] Staging: hv: storvsc: Cleanup error handling in storvsc_dev_add() K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 052/117] Staging: hv: storvsc: Cleanup error handling in storvsc_channel_init() K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 053/117] Staging: hv: storvsc: Cleanup error handling in storvsc_connect_to_vsp() K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 054/117] Staging: hv: storvsc: Cleanup error handling in storvsc_do_io() K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 055/117] Storage: hv: storvsc: Get rid of some unnecessary DPRINTs from storvsc.c K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 056/117] Staging: hv: storvsc: Fix/cleanup some dated comments in storvsc.c K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 057/117] Staging: hv: storvsc: Cleanup returned error code in storvsc_host_reset() K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 058/117] Staging: hv: storvsc: Cleanup error code returned in storvsc_probe() K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 059/117] Staging: hv: storvsc: Cleanup returned error code in storvsc_drv_init() K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 060/117] Staging: hv: netvsc: Cleanup the returned error code in netvsc_probe() K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 061/117] Staging: hv: netvsc: Cleanup error return codes in netvsc_destroy_recv_buf() K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 062/117] Staging: hv: netvsc: Cleanup error return values in netvsc_init_recv_buf() K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 063/117] Staging: hv: netvsc: Cleanup error returns in netvsc_connect_vsp() K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 064/117] Staging: hv: netvsc: Cleanup error return values in netvsc_send() K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 065/117] Staging: hv: netvsc: Cleanup error return codes in netvsc_device_add() K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 066/117] Staging: hv: netvsc: Cleanup error codes in rndis_filter_receive() K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 067/117] Staging: hv: netvsc: Cleanup error code in rndis_filter_query_device() K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 068/117] Staging: hv: netvsc: Cleanup error return values in rndis_filter_set_packet_filter() K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 069/117] Staging: hv: netvsc: Cleanup error returns in rndis_filter_init_device() K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 070/117] Staging: hv: netvsc: Cleanup error code in rndis_filter_device_add() K. Y. Srinivasan
2011-07-15 17:46 ` [PATCH 071/117] Staging: hv: mouse: Change the jump label Cleanup to cleanup K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 072/117] Staging: hv: mouse: Get rid of the unused PCI signature K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 073/117] Staging: hv: netvsc: Change the jump label Cleanup to cleanup K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 074/117] Staging: hv: netvsc: Change the jump label Exit to exit K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 075/117] Staging: hv: storvsc: Inline free_stor_device() K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 076/117] Staging: hv: storvsc: Do not aquire an unnecessary reference on stor_device K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 077/117] Staging: hv: storvsc: Rename must_get_stor_device() K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 078/117] Staging: hv: storvsc: Rename get_stor_device() K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 079/117] Staging: hv: storvsc: Cleanup alloc_stor_device() K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 080/117] Staging: hv: storvsc: Introduce state to manage the lifecycle of stor device K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 081/117] Staging: hv: vmbus: Introduce a lock to protect the ext field in hv_device K. Y. Srinivasan
2011-08-23 23:08 ` Greg KH
2011-08-24 0:55 ` KY Srinivasan
2011-08-24 2:58 ` Greg KH
2011-08-24 14:29 ` KY Srinivasan
2011-07-15 17:47 ` [PATCH 082/117] Staging: hv: storvsc: Use the newly introduced lock in accessing ext field K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 083/117] Staging: hv: storvsc: Prevent outgoing traffic when stor dev is destroyed K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 084/117] Staging: hv: storvsc: Get rid of release_stor_device() by inlining the code K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 085/117] Staging: hv: storvsc: Get rid of final_release_stor_device() by inlining code K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 086/117] Staging: hv: storvsc: Leverage the spinlock to manage ref_cnt K. Y. Srinivasan
2011-08-23 23:10 ` Greg KH
2011-08-24 0:58 ` KY Srinivasan
2011-08-24 2:57 ` Greg KH
2011-08-24 16:25 ` KY Srinivasan
2011-08-24 20:17 ` Greg KH
2011-08-24 22:57 ` KY Srinivasan
2011-08-25 2:45 ` Greg KH
2011-07-15 17:47 ` [PATCH 087/117] Staging: hv: storvsc: Further cleanup reference counting of stor_device K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 088/117] Staging: hv: netvsc: Inline the code for free_net_device() K. Y. Srinivasan
2011-07-16 10:33 ` Dan Carpenter
2011-07-16 13:09 ` KY Srinivasan
2011-07-15 17:47 ` [PATCH 089/117] Staging: hv: netvsc: Cleanup alloc_net_device() K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 090/117] Staging: hv: netvsc: Introduce state to manage the lifecycle of net device K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 091/117] Staging: hv: netvsc: Use the newly introduced lock in accessing ext field K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 092/117] Staging: hv: netvsc: Prevent outgoing traffic when netvsc dev is destroyed K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 093/117] Staging: hv: netvsc: Get rid of release_outbound_net_device() by inlining the code K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 094/117] Staging: hv: netvsc: Get rid of release_inbound_net_device() " K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 095/117] Staging: hv: netvsc: Leverage the spinlock to manage refcnt K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 096/117] Staging: hv: netvsc: Further cleanup reference counting of netvsc_device K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 097/117] Staging: hv: storvsc: Add code to handle IDE devices using the storvsc driver K. Y. Srinivasan
2011-07-16 2:04 ` Christoph Hellwig
2011-07-16 12:57 ` KY Srinivasan
2011-07-16 13:01 ` Sasha Levin
2011-07-16 13:12 ` KY Srinivasan
2011-07-16 18:27 ` Christoph Hellwig
2011-07-15 17:47 ` [PATCH 098/117] Staging: hv: storvsc: Handle " K. Y. Srinivasan
2011-07-16 2:05 ` Christoph Hellwig
2011-07-15 17:47 ` [PATCH 099/117] Staging: hv: storvsc: Optimize bounce buffer handling for the "write" case K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 100/117] Staging: hv: storvsc: Optimize the bounce buffer handling in the "read" case K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 101/117] Staging: hv: storvsc: Include storvsc.c in storvsc_drv.c K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 102/117] Staging: hv: storvsc: Cleanup storvsc_drv.c after adding the contents of storvsc.c K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 103/117] Staging: hv: storvsc: Add the contents of hyperv_storage.h to storvsc_drv.c K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 104/117] Staging: hv: storvsc: Cleanup storvsc_drv.c after adding the contents of hyperv_storage.h K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 105/117] Staging: hv: storvsc: Make some non static functions, static functions K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 106/117] Staging: hv: storvsc: Fixup srb and scsi status for INQUIRY and MODE_SENSE K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 107/117] Staging: hv: storvsc: Fix a typo K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 108/117] Staging: hv: storvsc: In case of scsi errors offline the device K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 109/117] Staging: hv: storvsc: No need to copy from bounce buffer in case of a failure K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 110/117] Staging: hv: vmbus: Change the signature of vmbus_child_driver_register() K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 111/117] Staging: hv: vmbus: Change the signature of vmbus_child_driver_unregister() K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 112/117] Staging: hv: util: Forcefully shutdown when shutdown is requested K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 113/117] Staging: hv: util: Adjust guest time in a process context K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 114/117] Staging: hv: vmbus: Check before invoking the channel callback K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 115/117] Staging: hv: vmbus: Properly deal with de-registering " K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 116/117] Staging: hv: vmbus: Add code to display modalias attribute K. Y. Srinivasan
2011-07-15 17:47 ` [PATCH 117/117] Staging: hv: blkvsc: Get rid of blkvsc_drv.c as this code is not used K. Y. Srinivasan
2011-07-15 18:25 ` Large Patch Series in Email (was Re: [PATCH 0000/0117] Staging: hv: Driver cleanup) Michael Witten
2011-07-15 18:50 ` KY Srinivasan
2011-07-15 21:09 ` Dan Carpenter
2011-07-15 22:55 ` Michael Witten
2011-07-15 23:22 ` Large Patch Series in Email David Miller
2011-07-15 23:07 ` Large Patch Series in Email (was Re: [PATCH 0000/0117] Staging: hv: Driver cleanup) Alan Cox
2011-07-17 10:47 ` Florian Mickler
2011-08-23 23:11 ` [PATCH 0000/0117] Staging: hv: Driver cleanup Greg KH
2011-08-24 1:01 ` KY Srinivasan
2011-08-24 3:08 ` Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1310752065-27895-2-git-send-email-kys@microsoft.com \
--to=kys@microsoft.com \
--cc=devel@linuxdriverproject.org \
--cc=gregkh@suse.de \
--cc=haiyangz@microsoft.com \
--cc=linux-kernel@vger.kernel.org \
--cc=virtualization@lists.osdl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).