20#define VMBUS_MESSAGE_ID 1
23#define VMBUS_EVENT_ID 2
26#define VMBUS_MESSAGE_TYPE 1
29#define VMBUS_MESSAGE_SINT 2
333#define VMBUS_PACKET_MAX_HEADER_LEN 64
407 const void *
data,
size_t len );
435 const void *
data,
size_t len );
545#define VMBUS_DRIVERS __table ( struct vmbus_driver, "vmbus_drivers" )
548#define __vmbus_driver __table_entry ( VMBUS_DRIVERS, 01 )
551#define VMBUS_ROM( _name, _desc )
574#define VMBUS_TYPE( a, b, c, d, e0, e1, e2, e3, e4, e5 ) { \
576 cpu_to_le32 ( a ), cpu_to_le16 ( b ), \
577 cpu_to_le16 ( c ), cpu_to_be16 ( d ), \
578 { e0, e1, e2, e3, e4, e5 } \
642 unsigned int gpadl );
648 const void *
data,
size_t len );
653 const void *
data,
size_t len );
unsigned long long uint64_t
uint16_t offset
Offset to command line.
uint8_t data[48]
Additional event data.
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
#define PAGE_SIZE
Page size.
#define list_del(list)
Delete an entry from a list.
#define list_check_contains_entry(entry, head, member)
Check list contains a specified entry.
#define list_add(new, head)
Add a new entry to the head of a list.
static uint16_t struct vmbus_xfer_pages_operations * op
A doubly-linked list entry (or list head)
VMBus channel operations.
int(* recv_completion)(struct vmbus_device *vmdev, uint64_t xid, const void *data, size_t len)
Handle received completion packet.
int(* recv_data)(struct vmbus_device *vmdev, uint64_t xid, const void *data, size_t len, struct list_head *list)
Handle received data packet.
int(* recv_cancellation)(struct vmbus_device *vmdev, uint64_t xid)
Handle received cancellation packet.
int(* recv_control)(struct vmbus_device *vmdev, uint64_t xid, const void *data, size_t len)
Handle received control packet.
VMBus "close channel" message.
uint32_t channel
Channel ID.
struct vmbus_message_header header
Message header.
void(* signal)(struct vmbus_device *vmdev)
Signal channel.
void * packet
Packet buffer.
struct vmbus_ring * in
Inbound ring buffer.
unsigned int gpadl
Ring buffer GPADL ID.
struct vmbus_channel_operations * op
Channel operations.
struct vmbus_driver * driver
Driver.
uint32_t out_len
Outbound ring buffer length.
unsigned int monitor
Monitor ID.
struct vmbus_ring * out
Outbound ring buffer.
union uuid instance
Channel instance.
struct hv_hypervisor * hv
Hyper-V hypervisor.
struct list_head pages
List of transfer page sets.
void * priv
Driver-private data.
size_t mtu
Maximum expected data packet length.
unsigned int channel
Channel ID.
uint32_t in_len
Inbound ring buffer length.
struct device dev
Generic iPXE device.
int(* probe)(struct vmbus_device *vmdev)
Probe device.
int(* reset)(struct vmbus_device *vmdev)
Reset device.
void(* remove)(struct vmbus_device *vmdev)
Remove device.
union uuid type
Device type.
Guest physical address range descriptor.
uint64_t pfn[0]
Page frame numbers.
uint32_t offset
Starting byte offset.
VMBus "GPADL created" message.
uint32_t channel
Channel ID.
struct vmbus_message_header header
Message header.
uint32_t status
Creation status.
VMBus "GPADL teardown" message.
struct vmbus_message_header header
Message header.
uint32_t channel
Channel ID.
VMBus "GPADL torndown" message.
struct vmbus_message_header header
Message header.
uint8_t in[PAGE_SIZE/2]
Inbound interrupts.
uint8_t out[PAGE_SIZE/2]
Outbound interrupts.
VMBus "offer channel" message.
union uuid type
Channel type.
uint8_t reserved_a[16]
Reserved.
union uuid instance
Channel instance.
uint8_t monitor
Monitor ID.
uint8_t reserved[2]
Reserved.
uint8_t data[120]
User data.
uint8_t reserved_c[4]
Reserved.
struct vmbus_message_header header
Message header.
uint32_t connection
Connection ID.
uint8_t monitored
Monitor exists.
uint32_t channel
Channel ID.
uint8_t reserved_b[2]
Reserved.
VMBus "open channel result" message.
uint32_t channel
Channel ID.
struct vmbus_message_header header
Message header.
VMBus "open channel" message.
struct vmbus_message_header header
Message header.
uint32_t reserved
Reserved.
uint32_t channel
Channel ID.
uint32_t gpadl
Ring buffer GPADL ID.
uint32_t out_pages
Outbound ring buffer size (in pages)
uint8_t data[120]
User-specific data.
uint32_t intr_mask
Interrupt mask.
uint8_t data[0]
Ring buffer contents.
uint32_t cons
Consumer index (modulo ring length)
uint32_t prod
Producer index (modulo ring length)
uint8_t reserved[4084]
Reserved.
VMBus "version response" message.
union vmbus_version version
Version.
struct vmbus_message_header header
Message header.
uint8_t supported
Version is supported.
uint8_t reserved[3]
Reserved.
VMBus transfer page range.
VMBus transfer page set operations.
int(* copy)(struct vmbus_xfer_pages *pages, void *data, size_t offset, size_t len)
Copy data from transfer page.
struct vmbus_xfer_pages_operations * op
Page set operations.
struct list_head list
List of all transfer page sets.
uint16_t pageset
Page set ID (in protocol byte order)
struct vmbus_interrupt * intr
Interrupt page.
struct hv_monitor * monitor_out
Outbound notifications.
const union vmbus_message * message
Received message buffer.
struct hv_monitor * monitor_in
Inbound notifications.
static struct tlan_private * priv
struct vmbus_message_header header
Common message header.
struct vmbus_gpadl_created created
"GPADL created" message
struct vmbus_gpadl_torndown torndown
"GPADL torndown" message
struct vmbus_close_channel close
"Close channel" message
struct vmbus_open_channel_result opened
"Open channel result" message
struct vmbus_offer_channel offer
"Offer channel" message
struct vmbus_open_channel open
"Open channel" message
struct vmbus_version_response version
"Version response" message
struct vmbus_gpadl_teardown teardown
"GPADL teardown" message
struct vmbus_gpadl_header gpadlhdr
"GPADL header" message
struct vmbus_initiate_contact initiate
"Initiate contact" message
uint16_t minor
Minor version.
uint16_t major
Major version.
unsigned int vmbus_obsolete_gpadl
Obsolete GPADL ID threshold.
int vmbus_send_data(struct vmbus_device *vmdev, uint64_t xid, const void *data, size_t len, struct io_buffer *iobuf)
Send data packet via ring buffer.
static void * vmbus_get_drvdata(struct vmbus_device *vmdev)
Get VMBus device driver-private data.
void vmbus_close(struct vmbus_device *vmdev)
Close VMBus channel.
int vmbus_probe(struct hv_hypervisor *hv, struct device *parent)
Probe Hyper-V virtual machine bus.
static void vmbus_set_drvdata(struct vmbus_device *vmdev, void *priv)
Set VMBus device driver-private data.
int vmbus_send_control(struct vmbus_device *vmdev, uint64_t xid, const void *data, size_t len)
Send control packet via ring buffer.
#define VMBUS_PACKET_MAX_HEADER_LEN
Maximum expected size of VMBus packet header.
void vmbus_remove(struct hv_hypervisor *hv, struct device *parent)
Remove Hyper-V virtual machine bus.
int vmbus_send_completion(struct vmbus_device *vmdev, uint64_t xid, const void *data, size_t len)
Send completion packet via ring buffer.
int vmbus_send_cancellation(struct vmbus_device *vmdev, uint64_t xid)
Send cancellation packet via ring buffer.
vmbus_packet_type
VMBus packet types.
void vmbus_dump_channel(struct vmbus_device *vmdev)
Dump channel status (for debugging)
vmbus_message_type
VMBus message types.
@ VMBUS_OPEN_CHANNEL_RESULT
@ VMBUS_ALL_OFFERS_DELIVERED
static int vmbus_gpadl_is_obsolete(unsigned int gpadl)
Check if GPADL is obsolete.
static int vmbus_has_data(struct vmbus_device *vmdev)
Check if data is present in ring buffer.
static void vmbus_unregister_pages(struct vmbus_device *vmdev, struct vmbus_xfer_pages *pages)
Unregister transfer page set.
int vmbus_reset(struct hv_hypervisor *hv, struct device *parent)
Reset Hyper-V virtual machine bus.
int vmbus_establish_gpadl(struct vmbus_device *vmdev, void *data, size_t len)
Establish GPA descriptor list.
int vmbus_open(struct vmbus_device *vmdev, struct vmbus_channel_operations *op, size_t out_len, size_t in_len, size_t mtu)
Open VMBus channel.
vmbus_raw_version
Known VMBus protocol versions.
@ VMBUS_VERSION_WIN7
Windows 7.
@ VMBUS_VERSION_WIN8_1
Windows 8.1.
@ VMBUS_VERSION_WIN8
Windows 8.
@ VMBUS_VERSION_WS2008
Windows Server 2008.
static int vmbus_register_pages(struct vmbus_device *vmdev, struct vmbus_xfer_pages *pages)
Register transfer page set.
int vmbus_poll(struct vmbus_device *vmdev)
Poll ring buffer.
int vmbus_gpadl_teardown(struct vmbus_device *vmdev, unsigned int gpadl)
Tear down GPA descriptor list.
vmbus_packet_flags
VMBus packet flags.
@ VMBUS_COMPLETION_REQUESTED