Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Drivers: hv: vmbus: Negotiate version 3.0 when running on ws2012r2 hosts

Only ws2012r2 hosts support the ability to reconnect to the host on VMBUS. This functionality
is needed by kexec in Linux. To use this functionality we need to negotiate version 3.0 of the
VMBUS protocol.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Cc: <stable@vger.kernel.org> [3.9+]
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

K. Y. Srinivasan and committed by
Greg Kroah-Hartman
03367ef5 314672a2

+7 -2
+4 -1
drivers/hv/connection.c
··· 55 55 case (VERSION_WIN8): 56 56 return VERSION_WIN7; 57 57 58 + case (VERSION_WIN8_1): 59 + return VERSION_WIN8; 60 + 58 61 case (VERSION_WS2008): 59 62 default: 60 63 return VERSION_INVAL; ··· 80 77 msg->interrupt_page = virt_to_phys(vmbus_connection.int_page); 81 78 msg->monitor_page1 = virt_to_phys(vmbus_connection.monitor_pages[0]); 82 79 msg->monitor_page2 = virt_to_phys(vmbus_connection.monitor_pages[1]); 83 - if (version == VERSION_WIN8) 80 + if (version == VERSION_WIN8_1) 84 81 msg->target_vcpu = hv_context.vp_index[smp_processor_id()]; 85 82 86 83 /*
+3 -1
include/linux/hyperv.h
··· 147 147 * 0 . 13 (Windows Server 2008) 148 148 * 1 . 1 (Windows 7) 149 149 * 2 . 4 (Windows 8) 150 + * 3 . 0 (Windows 8 R2) 150 151 */ 151 152 152 153 #define VERSION_WS2008 ((0 << 16) | (13)) 153 154 #define VERSION_WIN7 ((1 << 16) | (1)) 154 155 #define VERSION_WIN8 ((2 << 16) | (4)) 156 + #define VERSION_WIN8_1 ((3 << 16) | (0)) 155 157 156 158 #define VERSION_INVAL -1 157 159 158 - #define VERSION_CURRENT VERSION_WIN8 160 + #define VERSION_CURRENT VERSION_WIN8_1 159 161 160 162 /* Make maximum size of pipe payload of 16K */ 161 163 #define MAX_PIPE_DATA_PAYLOAD (sizeof(u8) * 16384)