aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/hyperv/include
diff options
context:
space:
mode:
authorSepherosa Ziehau <sephe@FreeBSD.org>2016-07-15 06:40:59 +0000
committerSepherosa Ziehau <sephe@FreeBSD.org>2016-07-15 06:40:59 +0000
commit66e132bd0f8262f9a5ef2172d4eee244313e077d (patch)
tree7ee7542e4fc94ee5652ae83f6555c15ef944f1ac /sys/dev/hyperv/include
parent7ff1939db0436c79d58549fd5bfc69b9ab233413 (diff)
Notes
Diffstat (limited to 'sys/dev/hyperv/include')
-rw-r--r--sys/dev/hyperv/include/hyperv.h25
-rw-r--r--sys/dev/hyperv/include/vmbus.h13
2 files changed, 13 insertions, 25 deletions
diff --git a/sys/dev/hyperv/include/hyperv.h b/sys/dev/hyperv/include/hyperv.h
index 5d9373e7310e..692aa36bd3c1 100644
--- a/sys/dev/hyperv/include/hyperv.h
+++ b/sys/dev/hyperv/include/hyperv.h
@@ -82,18 +82,6 @@ typedef uint8_t hv_bool_uint8_t;
#define VMBUS_VERSION_MAJOR(ver) (((uint32_t)(ver)) >> 16)
#define VMBUS_VERSION_MINOR(ver) (((uint32_t)(ver)) & 0xffff)
-#define HV_MAX_MULTIPAGE_BUFFER_COUNT 32
-
-#define HV_ALIGN_UP(value, align) \
- (((value) & (align-1)) ? \
- (((value) + (align-1)) & ~(align-1) ) : (value))
-
-#define HV_ALIGN_DOWN(value, align) ( (value) & ~(align-1) )
-
-#define HV_NUM_PAGES_SPANNED(addr, len) \
- ((HV_ALIGN_UP(addr+len, PAGE_SIZE) - \
- HV_ALIGN_DOWN(addr, PAGE_SIZE)) >> PAGE_SHIFT )
-
struct hyperv_guid {
uint8_t hv_guid[16];
} __packed;
@@ -224,12 +212,6 @@ typedef struct {
} __packed hv_vmbus_ring_buffer;
typedef struct {
- int length;
- int offset;
- uint64_t pfn_array[HV_MAX_MULTIPAGE_BUFFER_COUNT];
-} __packed hv_vmbus_multipage_buffer;
-
-typedef struct {
hv_vmbus_ring_buffer* ring_buffer;
struct mtx ring_lock;
uint32_t ring_data_size; /* ring_size */
@@ -368,13 +350,6 @@ int hv_vmbus_channel_send_packet(
hv_vmbus_packet_type type,
uint32_t flags);
-int hv_vmbus_channel_send_packet_multipagebuffer(
- hv_vmbus_channel* channel,
- hv_vmbus_multipage_buffer* multi_page_buffer,
- void* buffer,
- uint32_t buffer_len,
- uint64_t request_id);
-
int hv_vmbus_channel_establish_gpadl(
hv_vmbus_channel* channel,
/* must be phys and virt contiguous */
diff --git a/sys/dev/hyperv/include/vmbus.h b/sys/dev/hyperv/include/vmbus.h
index 19b2c86b9705..3931fc72d690 100644
--- a/sys/dev/hyperv/include/vmbus.h
+++ b/sys/dev/hyperv/include/vmbus.h
@@ -31,6 +31,15 @@
#include <sys/param.h>
+/*
+ * GPA stuffs.
+ */
+struct vmbus_gpa_range {
+ uint32_t gpa_len;
+ uint32_t gpa_ofs;
+ uint64_t gpa_page[0];
+} __packed;
+
/* This is actually vmbus_gpa_range.gpa_page[1] */
struct vmbus_gpa {
uint32_t gpa_len;
@@ -39,11 +48,15 @@ struct vmbus_gpa {
} __packed;
#define VMBUS_CHAN_SGLIST_MAX 32
+#define VMBUS_CHAN_PRPLIST_MAX 32
struct hv_vmbus_channel;
int vmbus_chan_send_sglist(struct hv_vmbus_channel *chan,
struct vmbus_gpa sg[], int sglen, void *data, int dlen,
uint64_t xactid);
+int vmbus_chan_send_prplist(struct hv_vmbus_channel *chan,
+ struct vmbus_gpa_range *prp, int prp_cnt, void *data, int dlen,
+ uint64_t xactid);
#endif /* !_VMBUS_H_ */