diff mbox

[3.11.y.z,extended,stable] Patch "Drivers: hv: vmbus: Specify the target CPU that should receive" has been added to staging queue

Message ID 1392985489-5590-1-git-send-email-luis.henriques@canonical.com
State New
Headers show

Commit Message

Luis Henriques Feb. 21, 2014, 12:24 p.m. UTC
This is a note to let you know that I have just added a patch titled

    Drivers: hv: vmbus: Specify the target CPU that should receive

to the linux-3.11.y-queue branch of the 3.11.y.z extended stable tree 
which can be found at:

 http://kernel.ubuntu.com/git?p=ubuntu/linux.git;a=shortlog;h=refs/heads/linux-3.11.y-queue

If you, or anyone else, feels it should not be added to this tree, please 
reply to this email.

For more information about the 3.11.y.z tree, see
https://wiki.ubuntu.com/Kernel/Dev/ExtendedStable

Thanks.
-Luis

------

From 5dfbd117a31224b9f7ebdcd86fbbdc5e81ae0032 Mon Sep 17 00:00:00 2001
From: "K. Y. Srinivasan" <kys@microsoft.com>
Date: Wed, 15 Jan 2014 17:12:58 -0800
Subject: Drivers: hv: vmbus: Specify the target CPU that should receive
 notification

commit e28bab4828354583bb66ac09021ca69b341a7db4 upstream.

During the initial VMBUS connect phase, starting with WS2012 R2, we should
specify the VPCU in the guest that should receive the notification. Fix this
issue. This fix is required to properly connect to the host in the kexeced
kernel.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
[ luis: backported to 3.11: adjusted context ]
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/hv/connection.c | 2 ++
 include/linux/hyperv.h  | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

--
1.9.0
diff mbox

Patch

diff --git a/drivers/hv/connection.c b/drivers/hv/connection.c
index ec3b8cd..0742931 100644
--- a/drivers/hv/connection.c
+++ b/drivers/hv/connection.c
@@ -80,6 +80,8 @@  static int vmbus_negotiate_version(struct vmbus_channel_msginfo *msginfo,
 	msg->monitor_page2 = virt_to_phys(
 			(void *)((unsigned long)vmbus_connection.monitor_pages +
 				 PAGE_SIZE));
+	if (version == VERSION_WIN8)
+		msg->target_vcpu = hv_context.vp_index[smp_processor_id()];

 	/*
 	 * Add to list before we send the request since we may
diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h
index fae8bac..e0e64d1 100644
--- a/include/linux/hyperv.h
+++ b/include/linux/hyperv.h
@@ -894,7 +894,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;