diff options
Diffstat (limited to 'include/linux/hyperv.h')
-rw-r--r-- | include/linux/hyperv.h | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h index 192ed8fbc403..11b5612dc066 100644 --- a/include/linux/hyperv.h +++ b/include/linux/hyperv.h | |||
@@ -163,6 +163,7 @@ static inline u32 hv_get_bytes_to_write(const struct hv_ring_buffer_info *rbi) | |||
163 | * 2 . 4 (Windows 8) | 163 | * 2 . 4 (Windows 8) |
164 | * 3 . 0 (Windows 8 R2) | 164 | * 3 . 0 (Windows 8 R2) |
165 | * 4 . 0 (Windows 10) | 165 | * 4 . 0 (Windows 10) |
166 | * 5 . 0 (Newer Windows 10) | ||
166 | */ | 167 | */ |
167 | 168 | ||
168 | #define VERSION_WS2008 ((0 << 16) | (13)) | 169 | #define VERSION_WS2008 ((0 << 16) | (13)) |
@@ -170,10 +171,11 @@ static inline u32 hv_get_bytes_to_write(const struct hv_ring_buffer_info *rbi) | |||
170 | #define VERSION_WIN8 ((2 << 16) | (4)) | 171 | #define VERSION_WIN8 ((2 << 16) | (4)) |
171 | #define VERSION_WIN8_1 ((3 << 16) | (0)) | 172 | #define VERSION_WIN8_1 ((3 << 16) | (0)) |
172 | #define VERSION_WIN10 ((4 << 16) | (0)) | 173 | #define VERSION_WIN10 ((4 << 16) | (0)) |
174 | #define VERSION_WIN10_V5 ((5 << 16) | (0)) | ||
173 | 175 | ||
174 | #define VERSION_INVAL -1 | 176 | #define VERSION_INVAL -1 |
175 | 177 | ||
176 | #define VERSION_CURRENT VERSION_WIN10 | 178 | #define VERSION_CURRENT VERSION_WIN10_V5 |
177 | 179 | ||
178 | /* Make maximum size of pipe payload of 16K */ | 180 | /* Make maximum size of pipe payload of 16K */ |
179 | #define MAX_PIPE_DATA_PAYLOAD (sizeof(u8) * 16384) | 181 | #define MAX_PIPE_DATA_PAYLOAD (sizeof(u8) * 16384) |
@@ -570,7 +572,14 @@ struct vmbus_channel_initiate_contact { | |||
570 | struct vmbus_channel_message_header header; | 572 | struct vmbus_channel_message_header header; |
571 | u32 vmbus_version_requested; | 573 | u32 vmbus_version_requested; |
572 | u32 target_vcpu; /* The VCPU the host should respond to */ | 574 | u32 target_vcpu; /* The VCPU the host should respond to */ |
573 | u64 interrupt_page; | 575 | union { |
576 | u64 interrupt_page; | ||
577 | struct { | ||
578 | u8 msg_sint; | ||
579 | u8 padding1[3]; | ||
580 | u32 padding2; | ||
581 | }; | ||
582 | }; | ||
574 | u64 monitor_page1; | 583 | u64 monitor_page1; |
575 | u64 monitor_page2; | 584 | u64 monitor_page2; |
576 | } __packed; | 585 | } __packed; |
@@ -585,6 +594,19 @@ struct vmbus_channel_tl_connect_request { | |||
585 | struct vmbus_channel_version_response { | 594 | struct vmbus_channel_version_response { |
586 | struct vmbus_channel_message_header header; | 595 | struct vmbus_channel_message_header header; |
587 | u8 version_supported; | 596 | u8 version_supported; |
597 | |||
598 | u8 connection_state; | ||
599 | u16 padding; | ||
600 | |||
601 | /* | ||
602 | * On new hosts that support VMBus protocol 5.0, we must use | ||
603 | * VMBUS_MESSAGE_CONNECTION_ID_4 for the Initiate Contact Message, | ||
604 | * and for subsequent messages, we must use the Message Connection ID | ||
605 | * field in the host-returned Version Response Message. | ||
606 | * | ||
607 | * On old hosts, we should always use VMBUS_MESSAGE_CONNECTION_ID (1). | ||
608 | */ | ||
609 | u32 msg_conn_id; | ||
588 | } __packed; | 610 | } __packed; |
589 | 611 | ||
590 | enum vmbus_channel_state { | 612 | enum vmbus_channel_state { |