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 { |
