]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Drivers: hv: vmbus: Specify the target CPU that should receive notification
authorK. Y. Srinivasan <kys@microsoft.com>
Thu, 16 Jan 2014 01:12:58 +0000 (17:12 -0800)
committerJiri Slaby <jslaby@suse.cz>
Thu, 15 May 2014 07:49:12 +0000 (09:49 +0200)
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>
Cc: <stable@vger.kernel.org> [3.9+]
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
drivers/hv/connection.c
include/linux/hyperv.h

index 13c23a4789de0b4754fe591c543aa41462685d27..d6b1e29b0ad26e2300abce4abd7a8f6942af11bf 100644 (file)
@@ -79,6 +79,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
index d98503bde7e9bc7ace0e2c3ddc5f2ae019f527ff..1835c615948c0c0f7582e2ff103ec14d7715cdd2 100644 (file)
@@ -884,7 +884,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;