]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 3 Jun 2014 23:16:46 +0000 (16:16 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 3 Jun 2014 23:16:46 +0000 (16:16 -0700)
added patches:
drivers-hv-vmbus-negotiate-version-3.0-when-running-on.patch

queue-3.10/drivers-hv-vmbus-negotiate-version-3.0-when-running-on.patch [new file with mode: 0644]
queue-3.10/series

diff --git a/queue-3.10/drivers-hv-vmbus-negotiate-version-3.0-when-running-on.patch b/queue-3.10/drivers-hv-vmbus-negotiate-version-3.0-when-running-on.patch
new file mode 100644 (file)
index 0000000..d948efc
--- /dev/null
@@ -0,0 +1,76 @@
+From 03367ef5ea811475187a0732aada068919e14d61 Mon Sep 17 00:00:00 2001
+From: "K. Y. Srinivasan" <kys@microsoft.com>
+Date: Thu, 3 Apr 2014 18:02:45 -0700
+Subject: Drivers: hv: vmbus: Negotiate version 3.0 when running on
+ ws2012r2 hosts
+
+From: "K. Y. Srinivasan" <kys@microsoft.com>
+
+commit 03367ef5ea811475187a0732aada068919e14d61 upstream.
+
+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>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+
+---
+ drivers/hv/connection.c |    6 ++++++
+ include/linux/hyperv.h  |    7 +++++--
+ 2 files changed, 11 insertions(+), 2 deletions(-)
+
+--- a/drivers/hv/connection.c
++++ b/drivers/hv/connection.c
+@@ -55,6 +55,9 @@ static __u32 vmbus_get_next_version(__u3
+       case (VERSION_WIN8):
+               return VERSION_WIN7;
++      case (VERSION_WIN8_1):
++              return VERSION_WIN8;
++
+       case (VERSION_WS2008):
+       default:
+               return VERSION_INVAL;
+@@ -80,6 +83,9 @@ static int vmbus_negotiate_version(struc
+                       (void *)((unsigned long)vmbus_connection.monitor_pages +
+                                PAGE_SIZE));
++      if (version == VERSION_WIN8_1)
++              msg->target_vcpu = hv_context.vp_index[smp_processor_id()];
++
+       /*
+        * Add to list before we send the request since we may
+        * receive the response before returning from this routine
+--- a/include/linux/hyperv.h
++++ b/include/linux/hyperv.h
+@@ -483,15 +483,18 @@ hv_get_ringbuffer_availbytes(struct hv_r
+  * 0 . 13 (Windows Server 2008)
+  * 1 . 1  (Windows 7)
+  * 2 . 4  (Windows 8)
++ * 3 . 0  (Windows 8 R2)
+  */
+ #define VERSION_WS2008  ((0 << 16) | (13))
+ #define VERSION_WIN7    ((1 << 16) | (1))
+ #define VERSION_WIN8    ((2 << 16) | (4))
++#define VERSION_WIN8_1    ((3 << 16) | (0))
++
+ #define VERSION_INVAL -1
+-#define VERSION_CURRENT VERSION_WIN8
++#define VERSION_CURRENT VERSION_WIN8_1
+ /* Make maximum size of pipe payload of 16K */
+ #define MAX_PIPE_DATA_PAYLOAD         (sizeof(u8) * 16384)
+@@ -894,7 +897,7 @@ struct vmbus_channel_relid_released {
+ struct vmbus_channel_initiate_contact {
+       struct vmbus_channel_message_header header;
+       u32 vmbus_version_requested;
+-      u32 padding2;
++      u32 target_vcpu; /* The VCPU the host should respond to */
+       u64 interrupt_page;
+       u64 monitor_page1;
+       u64 monitor_page2;
index 6999f3d58823cc15aa613900d8430970fb6b6fa6..dba430b25c2f6d36f356187fc5d72169b5ba7b13 100644 (file)
@@ -59,3 +59,4 @@ clk-vexpress-null-dereference-on-error-path.patch
 media-media-device-fix-infoleak-in-ioctl-media_enum_entities.patch
 i2c-i801-add-device-ids-for-intel-wildcat-point-lp-pch.patch
 i2c-i801-enable-intel-baytrail-smbus.patch
+drivers-hv-vmbus-negotiate-version-3.0-when-running-on.patch