mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-23 11:00:25 +00:00
Merge pull request #524 from rneugeba/kern-up
linux: update kernel to 4.4.21
This commit is contained in:
commit
6f7568d5ed
@ -1,6 +1,6 @@
|
||||
FROM mobylinux/debian-build-kernel:a009a11bf0ad
|
||||
|
||||
ARG KERNEL_VERSION=4.4.20
|
||||
ARG KERNEL_VERSION=4.4.21
|
||||
|
||||
ENV KERNEL_SOURCE=https://www.kernel.org/pub/linux/kernel/v4.x/linux-${KERNEL_VERSION}.tar.xz
|
||||
|
||||
@ -8,10 +8,10 @@ RUN curl -sSL -o linux-${KERNEL_VERSION}.tar.xz ${KERNEL_SOURCE}
|
||||
|
||||
RUN cat linux-${KERNEL_VERSION}.tar.xz | tar --absolute-names -xJ && mv /linux-${KERNEL_VERSION} /linux
|
||||
|
||||
# this is aufs4.4 20160905
|
||||
# this is aufs4.4 20160912
|
||||
ENV AUFS_REPO https://github.com/sfjro/aufs4-standalone
|
||||
ENV AUFS_BRANCH aufs4.4
|
||||
ENV AUFS_COMMIT 8be74e42b108f9cbbb0d59a87468505a48ff2757
|
||||
ENV AUFS_COMMIT 7d174ae40b4c9c876ee51aa50fa4ee1f3747de23
|
||||
|
||||
# Download AUFS
|
||||
RUN git clone -b "$AUFS_BRANCH" "$AUFS_REPO" /aufs && \
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 0d67af6648f600656eb20cb2ca1d35cb0985e9bd Mon Sep 17 00:00:00 2001
|
||||
From 622883ec571c468f756195c13726740bdd33a0ee Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Hajnoczi <stefanha@redhat.com>
|
||||
Date: Thu, 17 Dec 2015 16:53:43 +0800
|
||||
Subject: [PATCH 01/46] virtio: make find_vqs() checkpatch.pl-friendly
|
||||
Subject: [PATCH 01/42] virtio: make find_vqs() checkpatch.pl-friendly
|
||||
|
||||
checkpatch.pl wants arrays of strings declared as follows:
|
||||
|
||||
@ -215,5 +215,5 @@ index e5ce8ab..6e6cb0c 100644
|
||||
u64 (*get_features)(struct virtio_device *vdev);
|
||||
int (*finalize_features)(struct virtio_device *vdev);
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From f1e0be6f17679e7f532989bae3290bb4ed3ba773 Mon Sep 17 00:00:00 2001
|
||||
From 8dc15fd8fab55e076a640d1a5d6f34b77e196632 Mon Sep 17 00:00:00 2001
|
||||
From: Julia Lawall <julia.lawall@lip6.fr>
|
||||
Date: Sat, 21 Nov 2015 18:39:17 +0100
|
||||
Subject: [PATCH 02/46] VSOCK: constify vmci_transport_notify_ops structures
|
||||
Subject: [PATCH 02/42] VSOCK: constify vmci_transport_notify_ops structures
|
||||
|
||||
The vmci_transport_notify_ops structures are never modified, so declare
|
||||
them as const.
|
||||
@ -73,5 +73,5 @@ index dc9c792..21e591d 100644
|
||||
vmci_transport_notify_pkt_socket_destruct,
|
||||
vmci_transport_notify_pkt_poll_in,
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From bc63a861a8379269f4a51fdaac3d40f9161aea4d Mon Sep 17 00:00:00 2001
|
||||
From 761aa629641afa804127aea0e3ce5c95dddfcb17 Mon Sep 17 00:00:00 2001
|
||||
From: Claudio Imbrenda <imbrenda@linux.vnet.ibm.com>
|
||||
Date: Tue, 22 Mar 2016 17:05:52 +0100
|
||||
Subject: [PATCH 03/46] AF_VSOCK: Shrink the area influenced by prepare_to_wait
|
||||
Subject: [PATCH 03/42] AF_VSOCK: Shrink the area influenced by prepare_to_wait
|
||||
|
||||
When a thread is prepared for waiting by calling prepare_to_wait, sleeping
|
||||
is not allowed until either the wait has taken place or finish_wait has
|
||||
@ -332,5 +332,5 @@ index 9b5bd6d..b5f1221 100644
|
||||
release_sock(sk);
|
||||
return err;
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From c1bc13ebe28532f99cb6b8edaa57a6aa61adbe58 Mon Sep 17 00:00:00 2001
|
||||
From 8386f4e436f280cec08f95338ae5e44bc8aa5b5e Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Hajnoczi <stefanha@redhat.com>
|
||||
Date: Thu, 23 Jun 2016 16:28:58 +0100
|
||||
Subject: [PATCH 04/46] vsock: make listener child lock ordering explicit
|
||||
Subject: [PATCH 04/42] vsock: make listener child lock ordering explicit
|
||||
|
||||
There are several places where the listener and pending or accept queue
|
||||
child sockets are accessed at the same time. Lockdep is unhappy that
|
||||
@ -59,5 +59,5 @@ index b5f1221..b96ac91 100644
|
||||
|
||||
/* If the listener socket has received an error, then we should
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 3351d8e1a0e52529aea4b5c3ce0c2ef3ad43ee17 Mon Sep 17 00:00:00 2001
|
||||
From ae6d39c3a4cd08ce37606ab36b202702a48f5440 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Hajnoczi <stefanha@redhat.com>
|
||||
Date: Thu, 28 Jul 2016 15:36:30 +0100
|
||||
Subject: [PATCH 05/46] VSOCK: transport-specific vsock_transport functions
|
||||
Subject: [PATCH 05/42] VSOCK: transport-specific vsock_transport functions
|
||||
|
||||
struct vsock_transport contains function pointers called by AF_VSOCK
|
||||
core code. The transport may want its own transport-specific function
|
||||
@ -55,5 +55,5 @@ index b96ac91..e34d96f 100644
|
||||
MODULE_DESCRIPTION("VMware Virtual Socket Family");
|
||||
MODULE_VERSION("1.0.1.0-k");
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 54f528a28ab97e1306180adde7ba15c4158428db Mon Sep 17 00:00:00 2001
|
||||
From 816c87fe6ecfa46981c0ca332d21f1e0d8bfd8a0 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Hajnoczi <stefanha@redhat.com>
|
||||
Date: Thu, 28 Jul 2016 15:36:31 +0100
|
||||
Subject: [PATCH 06/46] VSOCK: defer sock removal to transports
|
||||
Subject: [PATCH 06/42] VSOCK: defer sock removal to transports
|
||||
|
||||
The virtio transport will implement graceful shutdown and the related
|
||||
SO_LINGER socket option. This requires orphaning the sock but keeping
|
||||
@ -79,5 +79,5 @@ index 0a369bb..706991e 100644
|
||||
vmci_datagram_destroy_handle(vmci_trans(vsk)->dg_handle);
|
||||
vmci_trans(vsk)->dg_handle = VMCI_INVALID_HANDLE;
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From ec54f262b84f327f1c0ecabce6f0c9b5c75ff2df Mon Sep 17 00:00:00 2001
|
||||
From fe9f8cb30a5c819adabb5b9b598f7776cbbdc4f0 Mon Sep 17 00:00:00 2001
|
||||
From: Asias He <asias@redhat.com>
|
||||
Date: Thu, 28 Jul 2016 15:36:32 +0100
|
||||
Subject: [PATCH 07/46] VSOCK: Introduce virtio_vsock_common.ko
|
||||
Subject: [PATCH 07/42] VSOCK: Introduce virtio_vsock_common.ko
|
||||
|
||||
This module contains the common code and header files for the following
|
||||
virtio_transporto and vhost_vsock kernel modules.
|
||||
@ -27,10 +27,10 @@ Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
|
||||
create mode 100644 net/vmw_vsock/virtio_transport_common.c
|
||||
|
||||
diff --git a/MAINTAINERS b/MAINTAINERS
|
||||
index 48bd523..3e60f59 100644
|
||||
index ab65bbe..b93ba8b 100644
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -11395,6 +11395,16 @@ S: Maintained
|
||||
@@ -11382,6 +11382,16 @@ S: Maintained
|
||||
F: drivers/media/v4l2-core/videobuf2-*
|
||||
F: include/media/videobuf2-*
|
||||
|
||||
@ -371,10 +371,10 @@ index 0000000..b7f1d62
|
||||
+/* This part must be outside protection */
|
||||
+#include <trace/define_trace.h>
|
||||
diff --git a/include/uapi/linux/Kbuild b/include/uapi/linux/Kbuild
|
||||
index 32152e7..c830e9f 100644
|
||||
index ebd10e6..6c51a4d 100644
|
||||
--- a/include/uapi/linux/Kbuild
|
||||
+++ b/include/uapi/linux/Kbuild
|
||||
@@ -448,6 +448,7 @@ header-y += virtio_ring.h
|
||||
@@ -447,6 +447,7 @@ header-y += virtio_ring.h
|
||||
header-y += virtio_rng.h
|
||||
header-y += virtio_scsi.h
|
||||
header-y += virtio_types.h
|
||||
@ -1492,5 +1492,5 @@ index 0000000..a53b3a1
|
||||
+MODULE_AUTHOR("Asias He");
|
||||
+MODULE_DESCRIPTION("common code for virtio vsock");
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From e21bdf5a9a62fbdabddca3cafc8aa2b02f2cc165 Mon Sep 17 00:00:00 2001
|
||||
From c384834d9495c7b2a36b0054d08ddf3240687bdc Mon Sep 17 00:00:00 2001
|
||||
From: Asias He <asias@redhat.com>
|
||||
Date: Thu, 28 Jul 2016 15:36:33 +0100
|
||||
Subject: [PATCH 08/46] VSOCK: Introduce virtio_transport.ko
|
||||
Subject: [PATCH 08/42] VSOCK: Introduce virtio_transport.ko
|
||||
|
||||
VM sockets virtio transport implementation. This driver runs in the
|
||||
guest.
|
||||
@ -17,10 +17,10 @@ Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
|
||||
create mode 100644 net/vmw_vsock/virtio_transport.c
|
||||
|
||||
diff --git a/MAINTAINERS b/MAINTAINERS
|
||||
index 3e60f59..c7e4c9a 100644
|
||||
index b93ba8b..82d1123 100644
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -11404,6 +11404,7 @@ S: Maintained
|
||||
@@ -11391,6 +11391,7 @@ S: Maintained
|
||||
F: include/linux/virtio_vsock.h
|
||||
F: include/uapi/linux/virtio_vsock.h
|
||||
F: net/vmw_vsock/virtio_transport_common.c
|
||||
@ -659,5 +659,5 @@ index 0000000..699dfab
|
||||
+MODULE_DESCRIPTION("virtio transport for vsock");
|
||||
+MODULE_DEVICE_TABLE(virtio, id_table);
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 7cba4e91a9e1359345ccb7dbff243cedf5b5e6ea Mon Sep 17 00:00:00 2001
|
||||
From a0af1060ea091348b94bd3780e5b92a3334e64b2 Mon Sep 17 00:00:00 2001
|
||||
From: Asias He <asias@redhat.com>
|
||||
Date: Thu, 28 Jul 2016 15:36:34 +0100
|
||||
Subject: [PATCH 09/46] VSOCK: Introduce vhost_vsock.ko
|
||||
Subject: [PATCH 09/42] VSOCK: Introduce vhost_vsock.ko
|
||||
|
||||
VM sockets vhost transport implementation. This driver runs on the
|
||||
host.
|
||||
@ -18,10 +18,10 @@ Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
|
||||
create mode 100644 drivers/vhost/vsock.c
|
||||
|
||||
diff --git a/MAINTAINERS b/MAINTAINERS
|
||||
index c7e4c9a..fa94182 100644
|
||||
index 82d1123..12d49f5 100644
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -11405,6 +11405,8 @@ F: include/linux/virtio_vsock.h
|
||||
@@ -11392,6 +11392,8 @@ F: include/linux/virtio_vsock.h
|
||||
F: include/uapi/linux/virtio_vsock.h
|
||||
F: net/vmw_vsock/virtio_transport_common.c
|
||||
F: net/vmw_vsock/virtio_transport.c
|
||||
@ -773,5 +773,5 @@ index ab373191..b306476 100644
|
||||
+
|
||||
#endif
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 5600cbdcb09f2a322c696e37570d031932a3baa4 Mon Sep 17 00:00:00 2001
|
||||
From 30e1801c9e9683512a0cd169edf015923497dd70 Mon Sep 17 00:00:00 2001
|
||||
From: Asias He <asias@redhat.com>
|
||||
Date: Thu, 28 Jul 2016 15:36:35 +0100
|
||||
Subject: [PATCH 10/46] VSOCK: Add Makefile and Kconfig
|
||||
Subject: [PATCH 10/42] VSOCK: Add Makefile and Kconfig
|
||||
|
||||
Enable virtio-vsock and vhost-vsock.
|
||||
|
||||
@ -102,5 +102,5 @@ index 2ce52d7..bc27c70 100644
|
||||
+
|
||||
+vmw_vsock_virtio_transport_common-y += virtio_transport_common.o
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From d722f0d8acd78f91e079f2fe0b4e4a29b42435b7 Mon Sep 17 00:00:00 2001
|
||||
From e9a09f08525c736a71d8331fd6412a0ad19ee428 Mon Sep 17 00:00:00 2001
|
||||
From: Wei Yongjun <weiyj.lk@gmail.com>
|
||||
Date: Tue, 2 Aug 2016 13:50:42 +0000
|
||||
Subject: [PATCH 11/46] VSOCK: Use kvfree()
|
||||
Subject: [PATCH 11/42] VSOCK: Use kvfree()
|
||||
|
||||
Use kvfree() instead of open-coding it.
|
||||
|
||||
@ -29,5 +29,5 @@ index 028ca16..0ddf3a2 100644
|
||||
|
||||
static int vhost_vsock_dev_open(struct inode *inode, struct file *file)
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From f2e2e9e439f717e454a1cf0e71e098b19ff0005d Mon Sep 17 00:00:00 2001
|
||||
From f886059ea8d0ac8ed981263d91d94275b85c50d5 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Hajnoczi <stefanha@redhat.com>
|
||||
Date: Thu, 4 Aug 2016 14:52:53 +0100
|
||||
Subject: [PATCH 12/46] vhost/vsock: fix vhost virtio_vsock_pkt use-after-free
|
||||
Subject: [PATCH 12/42] vhost/vsock: fix vhost virtio_vsock_pkt use-after-free
|
||||
|
||||
Stash the packet length in a local variable before handing over
|
||||
ownership of the packet to virtio_transport_recv_pkt() or
|
||||
@ -49,5 +49,5 @@ index 0ddf3a2..e3b30ea 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 1a8274f5f22a79f10aae3b4cf35f9b8a65f7f423 Mon Sep 17 00:00:00 2001
|
||||
From 6ded3ac18eabf23a790d6b6876119d8cd0538964 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Hajnoczi <stefanha@redhat.com>
|
||||
Date: Fri, 5 Aug 2016 13:52:09 +0100
|
||||
Subject: [PATCH 13/46] virtio-vsock: fix include guard typo
|
||||
Subject: [PATCH 13/42] virtio-vsock: fix include guard typo
|
||||
|
||||
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
|
||||
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
|
||||
@ -24,5 +24,5 @@ index 6b011c1..1d57ed3 100644
|
||||
#include <linux/types.h>
|
||||
#include <linux/virtio_ids.h>
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 5377a4a3e61adb924efdb4ff47ca2213c63e5bc4 Mon Sep 17 00:00:00 2001
|
||||
From 5fcd2673fadd46b0d2d5f896281113cd67a2efa7 Mon Sep 17 00:00:00 2001
|
||||
From: Gerard Garcia <ggarcia@deic.uab.cat>
|
||||
Date: Wed, 10 Aug 2016 17:24:34 +0200
|
||||
Subject: [PATCH 14/46] vhost/vsock: drop space available check for TX vq
|
||||
Subject: [PATCH 14/42] vhost/vsock: drop space available check for TX vq
|
||||
|
||||
Remove unnecessary use of enable/disable callback notifications
|
||||
and the incorrect more space available check.
|
||||
@ -57,5 +57,5 @@ index 699dfab..936d7ee 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From fc2bc563ce2a5205b7504c39e8dbb0a5db2d63e9 Mon Sep 17 00:00:00 2001
|
||||
From 8719b508f509c06a7821d6f8e2fc1fcad84d6fbb Mon Sep 17 00:00:00 2001
|
||||
From: Ian Campbell <ian.campbell@docker.com>
|
||||
Date: Mon, 4 Apr 2016 14:50:10 +0100
|
||||
Subject: [PATCH 15/46] VSOCK: Only allow host network namespace to use
|
||||
Subject: [PATCH 15/42] VSOCK: Only allow host network namespace to use
|
||||
AF_VSOCK.
|
||||
|
||||
The VSOCK addressing schema does not really lend itself to simply creating an
|
||||
@ -27,5 +27,5 @@ index 17dbbe6..1bb1b01 100644
|
||||
return -EINVAL;
|
||||
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 7c37cbd1fd8bff6d8373cff4d7e1c33fcb2aa653 Mon Sep 17 00:00:00 2001
|
||||
From 84e1e7a4981f6ef926bb01481445def66e0982b2 Mon Sep 17 00:00:00 2001
|
||||
From: Jake Oshins <jakeo@microsoft.com>
|
||||
Date: Mon, 14 Dec 2015 16:01:41 -0800
|
||||
Subject: [PATCH 16/46] drivers:hv: Define the channel type for Hyper-V PCI
|
||||
Subject: [PATCH 16/42] drivers:hv: Define the channel type for Hyper-V PCI
|
||||
Express pass-through
|
||||
|
||||
This defines the channel type for PCI front-ends in Hyper-V VMs.
|
||||
@ -16,10 +16,10 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
2 files changed, 14 insertions(+)
|
||||
|
||||
diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c
|
||||
index 652afd1..a77646b 100644
|
||||
index 37238df..a562318 100644
|
||||
--- a/drivers/hv/channel_mgmt.c
|
||||
+++ b/drivers/hv/channel_mgmt.c
|
||||
@@ -358,6 +358,7 @@ enum {
|
||||
@@ -359,6 +359,7 @@ enum {
|
||||
SCSI,
|
||||
NIC,
|
||||
ND_NIC,
|
||||
@ -27,7 +27,7 @@ index 652afd1..a77646b 100644
|
||||
MAX_PERF_CHN,
|
||||
};
|
||||
|
||||
@@ -375,6 +376,8 @@ static const struct hv_vmbus_device_id hp_devs[] = {
|
||||
@@ -376,6 +377,8 @@ static const struct hv_vmbus_device_id hp_devs[] = {
|
||||
{ HV_NIC_GUID, },
|
||||
/* NetworkDirect Guest RDMA */
|
||||
{ HV_ND_GUID, },
|
||||
@ -59,5 +59,5 @@ index ae6a711..10dda1e 100644
|
||||
*/
|
||||
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From b26f3791593f6645c4e0e11fd93db7e47390fab6 Mon Sep 17 00:00:00 2001
|
||||
From 12fbf6bcf859c7ce33766ae450dc291d0b857197 Mon Sep 17 00:00:00 2001
|
||||
From: "K. Y. Srinivasan" <kys@microsoft.com>
|
||||
Date: Mon, 14 Dec 2015 16:01:43 -0800
|
||||
Subject: [PATCH 17/46] Drivers: hv: vmbus: Use uuid_le type consistently
|
||||
Subject: [PATCH 17/42] Drivers: hv: vmbus: Use uuid_le type consistently
|
||||
|
||||
Consistently use uuid_le type in the Hyper-V driver code.
|
||||
|
||||
@ -17,10 +17,10 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
5 files changed, 40 insertions(+), 68 deletions(-)
|
||||
|
||||
diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c
|
||||
index a77646b..38470aa 100644
|
||||
index a562318..339277b 100644
|
||||
--- a/drivers/hv/channel_mgmt.c
|
||||
+++ b/drivers/hv/channel_mgmt.c
|
||||
@@ -408,7 +408,7 @@ static void init_vp_index(struct vmbus_channel *channel, const uuid_le *type_gui
|
||||
@@ -409,7 +409,7 @@ static void init_vp_index(struct vmbus_channel *channel, const uuid_le *type_gui
|
||||
struct cpumask *alloced_mask;
|
||||
|
||||
for (i = IDE; i < MAX_PERF_CHN; i++) {
|
||||
@ -30,10 +30,10 @@ index a77646b..38470aa 100644
|
||||
perf_chn = true;
|
||||
break;
|
||||
diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
|
||||
index 9b5440f..9aadcc2 100644
|
||||
index 509ed97..6ce2bf8 100644
|
||||
--- a/drivers/hv/vmbus_drv.c
|
||||
+++ b/drivers/hv/vmbus_drv.c
|
||||
@@ -532,7 +532,7 @@ static int vmbus_uevent(struct device *device, struct kobj_uevent_env *env)
|
||||
@@ -533,7 +533,7 @@ static int vmbus_uevent(struct device *device, struct kobj_uevent_env *env)
|
||||
|
||||
static const uuid_le null_guid;
|
||||
|
||||
@ -42,7 +42,7 @@ index 9b5440f..9aadcc2 100644
|
||||
{
|
||||
if (memcmp(guid, &null_guid, sizeof(uuid_le)))
|
||||
return false;
|
||||
@@ -545,9 +545,9 @@ static inline bool is_null_guid(const __u8 *guid)
|
||||
@@ -546,9 +546,9 @@ static inline bool is_null_guid(const __u8 *guid)
|
||||
*/
|
||||
static const struct hv_vmbus_device_id *hv_vmbus_get_id(
|
||||
const struct hv_vmbus_device_id *id,
|
||||
@ -54,7 +54,7 @@ index 9b5440f..9aadcc2 100644
|
||||
if (!memcmp(&id->guid, guid, sizeof(uuid_le)))
|
||||
return id;
|
||||
|
||||
@@ -564,7 +564,7 @@ static int vmbus_match(struct device *device, struct device_driver *driver)
|
||||
@@ -565,7 +565,7 @@ static int vmbus_match(struct device *device, struct device_driver *driver)
|
||||
struct hv_driver *drv = drv_to_hv_drv(driver);
|
||||
struct hv_device *hv_dev = device_to_hv_device(device);
|
||||
|
||||
@ -63,7 +63,7 @@ index 9b5440f..9aadcc2 100644
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
@@ -581,7 +581,7 @@ static int vmbus_probe(struct device *child_device)
|
||||
@@ -582,7 +582,7 @@ static int vmbus_probe(struct device *child_device)
|
||||
struct hv_device *dev = device_to_hv_device(child_device);
|
||||
const struct hv_vmbus_device_id *dev_id;
|
||||
|
||||
@ -293,5 +293,5 @@ index 9f5cdd4..8e8c69b 100644
|
||||
strcpy(alias, "vmbus:");
|
||||
strcat(alias, guid_name);
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 9ae0af317c2a085434b46197a663165895decaf6 Mon Sep 17 00:00:00 2001
|
||||
From 01a403dce6afb34dd0430e12d93b7acd5f384439 Mon Sep 17 00:00:00 2001
|
||||
From: "K. Y. Srinivasan" <kys@microsoft.com>
|
||||
Date: Mon, 14 Dec 2015 16:01:44 -0800
|
||||
Subject: [PATCH 18/46] Drivers: hv: vmbus: Use uuid_le_cmp() for comparing
|
||||
Subject: [PATCH 18/42] Drivers: hv: vmbus: Use uuid_le_cmp() for comparing
|
||||
GUIDs
|
||||
|
||||
Use uuid_le_cmp() for comparing GUIDs.
|
||||
@ -15,10 +15,10 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
2 files changed, 3 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c
|
||||
index 38470aa..dc4fb0b 100644
|
||||
index 339277b..9b4525c 100644
|
||||
--- a/drivers/hv/channel_mgmt.c
|
||||
+++ b/drivers/hv/channel_mgmt.c
|
||||
@@ -408,8 +408,7 @@ static void init_vp_index(struct vmbus_channel *channel, const uuid_le *type_gui
|
||||
@@ -409,8 +409,7 @@ static void init_vp_index(struct vmbus_channel *channel, const uuid_le *type_gui
|
||||
struct cpumask *alloced_mask;
|
||||
|
||||
for (i = IDE; i < MAX_PERF_CHN; i++) {
|
||||
@ -29,10 +29,10 @@ index 38470aa..dc4fb0b 100644
|
||||
break;
|
||||
}
|
||||
diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
|
||||
index 9aadcc2..bf54455 100644
|
||||
index 6ce2bf8..7973aa5 100644
|
||||
--- a/drivers/hv/vmbus_drv.c
|
||||
+++ b/drivers/hv/vmbus_drv.c
|
||||
@@ -534,7 +534,7 @@ static const uuid_le null_guid;
|
||||
@@ -535,7 +535,7 @@ static const uuid_le null_guid;
|
||||
|
||||
static inline bool is_null_guid(const uuid_le *guid)
|
||||
{
|
||||
@ -41,7 +41,7 @@ index 9aadcc2..bf54455 100644
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
@@ -548,7 +548,7 @@ static const struct hv_vmbus_device_id *hv_vmbus_get_id(
|
||||
@@ -549,7 +549,7 @@ static const struct hv_vmbus_device_id *hv_vmbus_get_id(
|
||||
const uuid_le *guid)
|
||||
{
|
||||
for (; !is_null_guid(&id->guid); id++)
|
||||
@ -51,5 +51,5 @@ index 9aadcc2..bf54455 100644
|
||||
|
||||
return NULL;
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 8bba0d5b705be1f1d0bdfe7fa8465042fa936c3c Mon Sep 17 00:00:00 2001
|
||||
From a9c4320f47b5a2d2ef7600c5f61f3d4256de2ba5 Mon Sep 17 00:00:00 2001
|
||||
From: Dexuan Cui <decui@microsoft.com>
|
||||
Date: Mon, 14 Dec 2015 16:01:48 -0800
|
||||
Subject: [PATCH 20/46] Drivers: hv: vmbus: do sanity check of channel state in
|
||||
Subject: [PATCH 19/42] Drivers: hv: vmbus: do sanity check of channel state in
|
||||
vmbus_close_internal()
|
||||
|
||||
This fixes an incorrect assumption of channel state in the function.
|
||||
@ -15,7 +15,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
1 file changed, 12 insertions(+)
|
||||
|
||||
diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c
|
||||
index 6a90c69..b3c14ca 100644
|
||||
index 1ef37c7..2889d97 100644
|
||||
--- a/drivers/hv/channel.c
|
||||
+++ b/drivers/hv/channel.c
|
||||
@@ -512,6 +512,18 @@ static int vmbus_close_internal(struct vmbus_channel *channel)
|
||||
@ -38,5 +38,5 @@ index 6a90c69..b3c14ca 100644
|
||||
channel->sc_creation_callback = NULL;
|
||||
/* Stop callback and cancel the timer asap */
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
@ -1,87 +0,0 @@
|
||||
From 5c3a0d077f4c0ecd17117c04b0b6fef7e8acbdea Mon Sep 17 00:00:00 2001
|
||||
From: Dexuan Cui <decui@microsoft.com>
|
||||
Date: Mon, 14 Dec 2015 16:01:47 -0800
|
||||
Subject: [PATCH 19/46] Drivers: hv: vmbus: serialize process_chn_event() and
|
||||
vmbus_close_internal()
|
||||
|
||||
process_chn_event(), running in the tasklet, can race with
|
||||
vmbus_close_internal() in the case of SMP guest, e.g., when the former is
|
||||
accessing channel->inbound.ring_buffer, the latter could be freeing the
|
||||
ring_buffer pages.
|
||||
|
||||
To resolve the race, we can serialize them by disabling the tasklet when
|
||||
the latter is running here.
|
||||
|
||||
Signed-off-by: Dexuan Cui <decui@microsoft.com>
|
||||
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
(cherry picked from commit 63d55b2aeb5e4faa170316fee73c3c47ea9268c7)
|
||||
---
|
||||
drivers/hv/channel.c | 21 +++++++++++++++++++--
|
||||
1 file changed, 19 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c
|
||||
index 9098f13..6a90c69 100644
|
||||
--- a/drivers/hv/channel.c
|
||||
+++ b/drivers/hv/channel.c
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/hyperv.h>
|
||||
#include <linux/uio.h>
|
||||
+#include <linux/interrupt.h>
|
||||
|
||||
#include "hyperv_vmbus.h"
|
||||
|
||||
@@ -496,8 +497,21 @@ static void reset_channel_cb(void *arg)
|
||||
static int vmbus_close_internal(struct vmbus_channel *channel)
|
||||
{
|
||||
struct vmbus_channel_close_channel *msg;
|
||||
+ struct tasklet_struct *tasklet;
|
||||
int ret;
|
||||
|
||||
+ /*
|
||||
+ * process_chn_event(), running in the tasklet, can race
|
||||
+ * with vmbus_close_internal() in the case of SMP guest, e.g., when
|
||||
+ * the former is accessing channel->inbound.ring_buffer, the latter
|
||||
+ * could be freeing the ring_buffer pages.
|
||||
+ *
|
||||
+ * To resolve the race, we can serialize them by disabling the
|
||||
+ * tasklet when the latter is running here.
|
||||
+ */
|
||||
+ tasklet = hv_context.event_dpc[channel->target_cpu];
|
||||
+ tasklet_disable(tasklet);
|
||||
+
|
||||
channel->state = CHANNEL_OPEN_STATE;
|
||||
channel->sc_creation_callback = NULL;
|
||||
/* Stop callback and cancel the timer asap */
|
||||
@@ -525,7 +539,7 @@ static int vmbus_close_internal(struct vmbus_channel *channel)
|
||||
* If we failed to post the close msg,
|
||||
* it is perhaps better to leak memory.
|
||||
*/
|
||||
- return ret;
|
||||
+ goto out;
|
||||
}
|
||||
|
||||
/* Tear down the gpadl for the channel's ring buffer */
|
||||
@@ -538,7 +552,7 @@ static int vmbus_close_internal(struct vmbus_channel *channel)
|
||||
* If we failed to teardown gpadl,
|
||||
* it is perhaps better to leak memory.
|
||||
*/
|
||||
- return ret;
|
||||
+ goto out;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -555,6 +569,9 @@ static int vmbus_close_internal(struct vmbus_channel *channel)
|
||||
if (channel->rescind)
|
||||
hv_process_channel_removal(channel,
|
||||
channel->offermsg.child_relid);
|
||||
+out:
|
||||
+ tasklet_enable(tasklet);
|
||||
+
|
||||
return ret;
|
||||
}
|
||||
|
||||
--
|
||||
2.9.3
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 667defbc25ef5dcfa89b60c0bd534d5a27f8c116 Mon Sep 17 00:00:00 2001
|
||||
From b92976804d10f78b9a50f5d8f62f3663a44f32e6 Mon Sep 17 00:00:00 2001
|
||||
From: Dexuan Cui <decui@microsoft.com>
|
||||
Date: Mon, 14 Dec 2015 16:01:50 -0800
|
||||
Subject: [PATCH 22/46] Drivers: hv: vmbus: release relid on error in
|
||||
Subject: [PATCH 20/42] Drivers: hv: vmbus: release relid on error in
|
||||
vmbus_process_offer()
|
||||
|
||||
We want to simplify vmbus_onoffer_rescind() by not invoking
|
||||
@ -16,10 +16,10 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
1 file changed, 15 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c
|
||||
index 7903acc..9c9da3a 100644
|
||||
index 9b4525c..8529dd2 100644
|
||||
--- a/drivers/hv/channel_mgmt.c
|
||||
+++ b/drivers/hv/channel_mgmt.c
|
||||
@@ -177,19 +177,22 @@ static void percpu_channel_deq(void *arg)
|
||||
@@ -178,19 +178,22 @@ static void percpu_channel_deq(void *arg)
|
||||
}
|
||||
|
||||
|
||||
@ -47,7 +47,7 @@ index 7903acc..9c9da3a 100644
|
||||
|
||||
BUG_ON(!channel->rescind);
|
||||
|
||||
@@ -336,6 +339,8 @@ static void vmbus_process_offer(struct vmbus_channel *newchannel)
|
||||
@@ -337,6 +340,8 @@ static void vmbus_process_offer(struct vmbus_channel *newchannel)
|
||||
return;
|
||||
|
||||
err_deq_chan:
|
||||
@ -56,7 +56,7 @@ index 7903acc..9c9da3a 100644
|
||||
spin_lock_irqsave(&vmbus_connection.channel_lock, flags);
|
||||
list_del(&newchannel->listentry);
|
||||
spin_unlock_irqrestore(&vmbus_connection.channel_lock, flags);
|
||||
@@ -587,7 +592,11 @@ static void vmbus_onoffer_rescind(struct vmbus_channel_message_header *hdr)
|
||||
@@ -640,7 +645,11 @@ static void vmbus_onoffer_rescind(struct vmbus_channel_message_header *hdr)
|
||||
channel = relid2channel(rescind->child_relid);
|
||||
|
||||
if (channel == NULL) {
|
||||
@ -70,5 +70,5 @@ index 7903acc..9c9da3a 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 235e2935d2d0700ac21db0cb0d6a64d6f9ff09fa Mon Sep 17 00:00:00 2001
|
||||
From e34354b98924dba0128289e722bde4ca35eafa90 Mon Sep 17 00:00:00 2001
|
||||
From: Dexuan Cui <decui@microsoft.com>
|
||||
Date: Mon, 14 Dec 2015 16:01:51 -0800
|
||||
Subject: [PATCH 23/46] Drivers: hv: vmbus: channge
|
||||
Subject: [PATCH 21/42] Drivers: hv: vmbus: channge
|
||||
vmbus_connection.channel_lock to mutex
|
||||
|
||||
spinlock is unnecessary here.
|
||||
@ -18,10 +18,10 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
3 files changed, 10 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c
|
||||
index 9c9da3a..d013171 100644
|
||||
index 8529dd2..306c7df 100644
|
||||
--- a/drivers/hv/channel_mgmt.c
|
||||
+++ b/drivers/hv/channel_mgmt.c
|
||||
@@ -206,9 +206,9 @@ void hv_process_channel_removal(struct vmbus_channel *channel, u32 relid)
|
||||
@@ -207,9 +207,9 @@ void hv_process_channel_removal(struct vmbus_channel *channel, u32 relid)
|
||||
}
|
||||
|
||||
if (channel->primary_channel == NULL) {
|
||||
@ -33,7 +33,7 @@ index 9c9da3a..d013171 100644
|
||||
|
||||
primary_channel = channel;
|
||||
} else {
|
||||
@@ -253,7 +253,7 @@ static void vmbus_process_offer(struct vmbus_channel *newchannel)
|
||||
@@ -254,7 +254,7 @@ static void vmbus_process_offer(struct vmbus_channel *newchannel)
|
||||
unsigned long flags;
|
||||
|
||||
/* Make sure this is a new offer */
|
||||
@ -42,7 +42,7 @@ index 9c9da3a..d013171 100644
|
||||
|
||||
list_for_each_entry(channel, &vmbus_connection.chn_list, listentry) {
|
||||
if (!uuid_le_cmp(channel->offermsg.offer.if_type,
|
||||
@@ -269,7 +269,7 @@ static void vmbus_process_offer(struct vmbus_channel *newchannel)
|
||||
@@ -270,7 +270,7 @@ static void vmbus_process_offer(struct vmbus_channel *newchannel)
|
||||
list_add_tail(&newchannel->listentry,
|
||||
&vmbus_connection.chn_list);
|
||||
|
||||
@ -51,7 +51,7 @@ index 9c9da3a..d013171 100644
|
||||
|
||||
if (!fnew) {
|
||||
/*
|
||||
@@ -341,9 +341,9 @@ static void vmbus_process_offer(struct vmbus_channel *newchannel)
|
||||
@@ -342,9 +342,9 @@ static void vmbus_process_offer(struct vmbus_channel *newchannel)
|
||||
err_deq_chan:
|
||||
vmbus_release_relid(newchannel->offermsg.child_relid);
|
||||
|
||||
@ -99,10 +99,10 @@ index 4fc2e88..521f48e 100644
|
||||
return found_channel;
|
||||
}
|
||||
diff --git a/drivers/hv/hyperv_vmbus.h b/drivers/hv/hyperv_vmbus.h
|
||||
index 3782636..d9937be 100644
|
||||
index 12156db..50b1de7 100644
|
||||
--- a/drivers/hv/hyperv_vmbus.h
|
||||
+++ b/drivers/hv/hyperv_vmbus.h
|
||||
@@ -678,7 +678,7 @@ struct vmbus_connection {
|
||||
@@ -683,7 +683,7 @@ struct vmbus_connection {
|
||||
|
||||
/* List of channels */
|
||||
struct list_head chn_list;
|
||||
@ -112,5 +112,5 @@ index 3782636..d9937be 100644
|
||||
struct workqueue_struct *work_queue;
|
||||
};
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
@ -1,122 +0,0 @@
|
||||
From 4185d167c4c6db493a3e96e59689e32562761563 Mon Sep 17 00:00:00 2001
|
||||
From: Dexuan Cui <decui@microsoft.com>
|
||||
Date: Mon, 14 Dec 2015 16:01:49 -0800
|
||||
Subject: [PATCH 21/46] Drivers: hv: vmbus: fix rescind-offer handling for
|
||||
device without a driver
|
||||
|
||||
In the path vmbus_onoffer_rescind() -> vmbus_device_unregister() ->
|
||||
device_unregister() -> ... -> __device_release_driver(), we can see for a
|
||||
device without a driver loaded: dev->driver is NULL, so
|
||||
dev->bus->remove(dev), namely vmbus_remove(), isn't invoked.
|
||||
|
||||
As a result, vmbus_remove() -> hv_process_channel_removal() isn't invoked
|
||||
and some cleanups(like sending a CHANNELMSG_RELID_RELEASED message to the
|
||||
host) aren't done.
|
||||
|
||||
We can demo the issue this way:
|
||||
1. rmmod hv_utils;
|
||||
2. disable the Heartbeat Integration Service in Hyper-V Manager and lsvmbus
|
||||
shows the device disappears.
|
||||
3. re-enable the Heartbeat in Hyper-V Manager and modprobe hv_utils, but
|
||||
lsvmbus shows the device can't appear again.
|
||||
This is because, the host thinks the VM hasn't released the relid, so can't
|
||||
re-offer the device to the VM.
|
||||
|
||||
We can fix the issue by moving hv_process_channel_removal()
|
||||
from vmbus_close_internal() to vmbus_device_release(), since the latter is
|
||||
always invoked on device_unregister(), whether or not the dev has a driver
|
||||
loaded.
|
||||
|
||||
Signed-off-by: Dexuan Cui <decui@microsoft.com>
|
||||
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
(cherry picked from commit 34c6801e3310ad286c7bb42bc88d42926b8f99bf)
|
||||
---
|
||||
drivers/hv/channel.c | 6 ------
|
||||
drivers/hv/channel_mgmt.c | 6 +++---
|
||||
drivers/hv/vmbus_drv.c | 15 +++------------
|
||||
3 files changed, 6 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c
|
||||
index b3c14ca..2889d97 100644
|
||||
--- a/drivers/hv/channel.c
|
||||
+++ b/drivers/hv/channel.c
|
||||
@@ -575,12 +575,6 @@ static int vmbus_close_internal(struct vmbus_channel *channel)
|
||||
free_pages((unsigned long)channel->ringbuffer_pages,
|
||||
get_order(channel->ringbuffer_pagecount * PAGE_SIZE));
|
||||
|
||||
- /*
|
||||
- * If the channel has been rescinded; process device removal.
|
||||
- */
|
||||
- if (channel->rescind)
|
||||
- hv_process_channel_removal(channel,
|
||||
- channel->offermsg.child_relid);
|
||||
out:
|
||||
tasklet_enable(tasklet);
|
||||
|
||||
diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c
|
||||
index dc4fb0b..7903acc 100644
|
||||
--- a/drivers/hv/channel_mgmt.c
|
||||
+++ b/drivers/hv/channel_mgmt.c
|
||||
@@ -191,6 +191,8 @@ void hv_process_channel_removal(struct vmbus_channel *channel, u32 relid)
|
||||
if (channel == NULL)
|
||||
return;
|
||||
|
||||
+ BUG_ON(!channel->rescind);
|
||||
+
|
||||
if (channel->target_cpu != get_cpu()) {
|
||||
put_cpu();
|
||||
smp_call_function_single(channel->target_cpu,
|
||||
@@ -230,9 +232,7 @@ void vmbus_free_channels(void)
|
||||
|
||||
list_for_each_entry_safe(channel, tmp, &vmbus_connection.chn_list,
|
||||
listentry) {
|
||||
- /* if we don't set rescind to true, vmbus_close_internal()
|
||||
- * won't invoke hv_process_channel_removal().
|
||||
- */
|
||||
+ /* hv_process_channel_removal() needs this */
|
||||
channel->rescind = true;
|
||||
|
||||
vmbus_device_unregister(channel->device_obj);
|
||||
diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
|
||||
index bf54455..8bf1f31 100644
|
||||
--- a/drivers/hv/vmbus_drv.c
|
||||
+++ b/drivers/hv/vmbus_drv.c
|
||||
@@ -603,23 +603,11 @@ static int vmbus_remove(struct device *child_device)
|
||||
{
|
||||
struct hv_driver *drv;
|
||||
struct hv_device *dev = device_to_hv_device(child_device);
|
||||
- u32 relid = dev->channel->offermsg.child_relid;
|
||||
|
||||
if (child_device->driver) {
|
||||
drv = drv_to_hv_drv(child_device->driver);
|
||||
if (drv->remove)
|
||||
drv->remove(dev);
|
||||
- else {
|
||||
- hv_process_channel_removal(dev->channel, relid);
|
||||
- pr_err("remove not set for driver %s\n",
|
||||
- dev_name(child_device));
|
||||
- }
|
||||
- } else {
|
||||
- /*
|
||||
- * We don't have a driver for this device; deal with the
|
||||
- * rescind message by removing the channel.
|
||||
- */
|
||||
- hv_process_channel_removal(dev->channel, relid);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -654,7 +642,10 @@ static void vmbus_shutdown(struct device *child_device)
|
||||
static void vmbus_device_release(struct device *device)
|
||||
{
|
||||
struct hv_device *hv_dev = device_to_hv_device(device);
|
||||
+ struct vmbus_channel *channel = hv_dev->channel;
|
||||
|
||||
+ hv_process_channel_removal(channel,
|
||||
+ channel->offermsg.child_relid);
|
||||
kfree(hv_dev);
|
||||
|
||||
}
|
||||
--
|
||||
2.9.3
|
||||
|
@ -1,7 +1,7 @@
|
||||
From d6cc8615d22926bb1e2d8ba85fd391df9f1cf089 Mon Sep 17 00:00:00 2001
|
||||
From 91a65c691fc22cc6bfb884dea29cc7c5c3e5f9a9 Mon Sep 17 00:00:00 2001
|
||||
From: Vitaly Kuznetsov <vkuznets@redhat.com>
|
||||
Date: Mon, 14 Dec 2015 19:02:00 -0800
|
||||
Subject: [PATCH 24/46] Drivers: hv: remove code duplication between
|
||||
Subject: [PATCH 22/42] Drivers: hv: remove code duplication between
|
||||
vmbus_recvpacket()/vmbus_recvpacket_raw()
|
||||
|
||||
vmbus_recvpacket() and vmbus_recvpacket_raw() are almost identical but
|
||||
@ -122,5 +122,5 @@ index 2889d97..dd6de7f 100644
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(vmbus_recvpacket_raw);
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 64c112c50e6a404431f5adc7685915cd9b5e8d42 Mon Sep 17 00:00:00 2001
|
||||
From 4c754b011766c2d8a99424637656ea8096d55890 Mon Sep 17 00:00:00 2001
|
||||
From: Dexuan Cui <decui@microsoft.com>
|
||||
Date: Mon, 21 Dec 2015 12:21:22 -0800
|
||||
Subject: [PATCH 25/46] Drivers: hv: vmbus: fix the building warning with
|
||||
Subject: [PATCH 23/42] Drivers: hv: vmbus: fix the building warning with
|
||||
hyperv-keyboard
|
||||
|
||||
With the recent change af3ff643ea91ba64dd8d0b1cbed54d44512f96cd
|
||||
@ -68,5 +68,5 @@ index 4712d7d..9e2de6a 100644
|
||||
*/
|
||||
#define HV_VSS_GUID \
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 6ee99ea70b9975b03c436c05a55c154bed392a94 Mon Sep 17 00:00:00 2001
|
||||
From 6cb1a2f24c7b049f8a0c259afa4f5de37ac84084 Mon Sep 17 00:00:00 2001
|
||||
From: "K. Y. Srinivasan" <kys@microsoft.com>
|
||||
Date: Tue, 15 Dec 2015 16:27:27 -0800
|
||||
Subject: [PATCH 26/46] Drivers: hv: vmbus: Treat Fibre Channel devices as
|
||||
Subject: [PATCH 24/42] Drivers: hv: vmbus: Treat Fibre Channel devices as
|
||||
performance critical
|
||||
|
||||
For performance critical devices, we distribute the incoming
|
||||
@ -17,10 +17,10 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c
|
||||
index d013171..1c1ad47 100644
|
||||
index 306c7df..763d0c1 100644
|
||||
--- a/drivers/hv/channel_mgmt.c
|
||||
+++ b/drivers/hv/channel_mgmt.c
|
||||
@@ -361,6 +361,7 @@ err_free_chan:
|
||||
@@ -362,6 +362,7 @@ err_free_chan:
|
||||
enum {
|
||||
IDE = 0,
|
||||
SCSI,
|
||||
@ -28,7 +28,7 @@ index d013171..1c1ad47 100644
|
||||
NIC,
|
||||
ND_NIC,
|
||||
PCIE,
|
||||
@@ -377,6 +378,8 @@ static const struct hv_vmbus_device_id hp_devs[] = {
|
||||
@@ -378,6 +379,8 @@ static const struct hv_vmbus_device_id hp_devs[] = {
|
||||
{ HV_IDE_GUID, },
|
||||
/* Storage - SCSI */
|
||||
{ HV_SCSI_GUID, },
|
||||
@ -38,5 +38,5 @@ index d013171..1c1ad47 100644
|
||||
{ HV_NIC_GUID, },
|
||||
/* NetworkDirect Guest RDMA */
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 5131dc31aecd376785b71bb3bb16bf70573682b3 Mon Sep 17 00:00:00 2001
|
||||
From 69933a7f325a93afbb5ed819388b8b063d602066 Mon Sep 17 00:00:00 2001
|
||||
From: "K. Y. Srinivasan" <kys@microsoft.com>
|
||||
Date: Fri, 25 Dec 2015 20:00:30 -0800
|
||||
Subject: [PATCH 27/46] Drivers: hv: vmbus: Add vendor and device atttributes
|
||||
Subject: [PATCH 25/42] Drivers: hv: vmbus: Add vendor and device atttributes
|
||||
|
||||
Add vendor and device attributes to VMBUS devices. These will be used
|
||||
by Hyper-V tools as well user-level RDMA libraries that will use the
|
||||
@ -40,10 +40,10 @@ index 636e938..5d0125f 100644
|
||||
+Description: The 16 bit vendor ID of the device
|
||||
+Users: tools/hv/lsvmbus and user level RDMA libraries
|
||||
diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c
|
||||
index 1c1ad47..107d72f 100644
|
||||
index 763d0c1..d6c6114 100644
|
||||
--- a/drivers/hv/channel_mgmt.c
|
||||
+++ b/drivers/hv/channel_mgmt.c
|
||||
@@ -32,8 +32,122 @@
|
||||
@@ -33,8 +33,122 @@
|
||||
|
||||
#include "hyperv_vmbus.h"
|
||||
|
||||
@ -168,7 +168,7 @@ index 1c1ad47..107d72f 100644
|
||||
|
||||
/**
|
||||
* vmbus_prep_negotiate_resp() - Create default response for Hyper-V Negotiate message
|
||||
@@ -251,6 +365,7 @@ static void vmbus_process_offer(struct vmbus_channel *newchannel)
|
||||
@@ -252,6 +366,7 @@ static void vmbus_process_offer(struct vmbus_channel *newchannel)
|
||||
struct vmbus_channel *channel;
|
||||
bool fnew = true;
|
||||
unsigned long flags;
|
||||
@ -176,7 +176,7 @@ index 1c1ad47..107d72f 100644
|
||||
|
||||
/* Make sure this is a new offer */
|
||||
mutex_lock(&vmbus_connection.channel_mutex);
|
||||
@@ -288,7 +403,9 @@ static void vmbus_process_offer(struct vmbus_channel *newchannel)
|
||||
@@ -289,7 +404,9 @@ static void vmbus_process_offer(struct vmbus_channel *newchannel)
|
||||
goto err_free_chan;
|
||||
}
|
||||
|
||||
@ -187,7 +187,7 @@ index 1c1ad47..107d72f 100644
|
||||
|
||||
if (newchannel->target_cpu != get_cpu()) {
|
||||
put_cpu();
|
||||
@@ -325,6 +442,7 @@ static void vmbus_process_offer(struct vmbus_channel *newchannel)
|
||||
@@ -326,6 +443,7 @@ static void vmbus_process_offer(struct vmbus_channel *newchannel)
|
||||
if (!newchannel->device_obj)
|
||||
goto err_deq_chan;
|
||||
|
||||
@ -195,7 +195,7 @@ index 1c1ad47..107d72f 100644
|
||||
/*
|
||||
* Add the new device to the bus. This will kick off device-driver
|
||||
* binding which eventually invokes the device driver's AddDevice()
|
||||
@@ -358,37 +476,6 @@ err_free_chan:
|
||||
@@ -359,37 +477,6 @@ err_free_chan:
|
||||
free_channel(newchannel);
|
||||
}
|
||||
|
||||
@ -233,7 +233,7 @@ index 1c1ad47..107d72f 100644
|
||||
/*
|
||||
* We use this state to statically distribute the channel interrupt load.
|
||||
*/
|
||||
@@ -405,22 +492,15 @@ static int next_numa_node_id;
|
||||
@@ -406,22 +493,15 @@ static int next_numa_node_id;
|
||||
* For pre-win8 hosts or non-performance critical channels we assign the
|
||||
* first CPU in the first NUMA node.
|
||||
*/
|
||||
@ -259,10 +259,10 @@ index 1c1ad47..107d72f 100644
|
||||
(vmbus_proto_version == VERSION_WIN7) || (!perf_chn)) {
|
||||
/*
|
||||
diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
|
||||
index 8bf1f31..959b656 100644
|
||||
index 7973aa5..de7130c 100644
|
||||
--- a/drivers/hv/vmbus_drv.c
|
||||
+++ b/drivers/hv/vmbus_drv.c
|
||||
@@ -479,6 +479,24 @@ static ssize_t channel_vp_mapping_show(struct device *dev,
|
||||
@@ -480,6 +480,24 @@ static ssize_t channel_vp_mapping_show(struct device *dev,
|
||||
}
|
||||
static DEVICE_ATTR_RO(channel_vp_mapping);
|
||||
|
||||
@ -287,7 +287,7 @@ index 8bf1f31..959b656 100644
|
||||
/* Set up per device attributes in /sys/bus/vmbus/devices/<bus device> */
|
||||
static struct attribute *vmbus_attrs[] = {
|
||||
&dev_attr_id.attr,
|
||||
@@ -504,6 +522,8 @@ static struct attribute *vmbus_attrs[] = {
|
||||
@@ -505,6 +523,8 @@ static struct attribute *vmbus_attrs[] = {
|
||||
&dev_attr_in_read_bytes_avail.attr,
|
||||
&dev_attr_in_write_bytes_avail.attr,
|
||||
&dev_attr_channel_vp_mapping.attr,
|
||||
@ -296,7 +296,7 @@ index 8bf1f31..959b656 100644
|
||||
NULL,
|
||||
};
|
||||
ATTRIBUTE_GROUPS(vmbus);
|
||||
@@ -960,6 +980,7 @@ struct hv_device *vmbus_device_create(const uuid_le *type,
|
||||
@@ -963,6 +983,7 @@ struct hv_device *vmbus_device_create(const uuid_le *type,
|
||||
memcpy(&child_device_obj->dev_type, type, sizeof(uuid_le));
|
||||
memcpy(&child_device_obj->dev_instance, instance,
|
||||
sizeof(uuid_le));
|
||||
@ -351,5 +351,5 @@ index 9e2de6a..51c98fd 100644
|
||||
struct device device;
|
||||
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 1686f700609459bc6cf9d4597a8a39bf5f133409 Mon Sep 17 00:00:00 2001
|
||||
From 64f93cfc49018e7ffa772506cfe3631b3db530b9 Mon Sep 17 00:00:00 2001
|
||||
From: Dexuan Cui <decui@microsoft.com>
|
||||
Date: Wed, 27 Jan 2016 22:29:37 -0800
|
||||
Subject: [PATCH 30/46] Drivers: hv: vmbus: add a helper function to set a
|
||||
Subject: [PATCH 26/42] Drivers: hv: vmbus: add a helper function to set a
|
||||
channel's pending send size
|
||||
|
||||
This will be used by the coming net/hvsock driver.
|
||||
@ -32,5 +32,5 @@ index 51c98fd..934542a 100644
|
||||
|
||||
int vmbus_request_offers(void);
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From f22a67d17cb1f357da61258ee181729bcf0af3b1 Mon Sep 17 00:00:00 2001
|
||||
From 8658862991789c9dca080be3d35a7e72479b91e9 Mon Sep 17 00:00:00 2001
|
||||
From: Dexuan Cui <decui@microsoft.com>
|
||||
Date: Wed, 27 Jan 2016 22:29:38 -0800
|
||||
Subject: [PATCH 31/46] Drivers: hv: vmbus: define the new offer type for
|
||||
Subject: [PATCH 27/42] Drivers: hv: vmbus: define the new offer type for
|
||||
Hyper-V socket (hvsock)
|
||||
|
||||
A helper function is also added.
|
||||
@ -40,5 +40,5 @@ index 934542a..a4f105d 100644
|
||||
enum hv_signal_policy policy)
|
||||
{
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
@ -1,49 +0,0 @@
|
||||
From 2dd3d37c7e1a4ce1adeb2a4af3df878907d44ebe Mon Sep 17 00:00:00 2001
|
||||
From: Vitaly Kuznetsov <vkuznets@redhat.com>
|
||||
Date: Wed, 27 Jan 2016 22:29:34 -0800
|
||||
Subject: [PATCH 28/46] Drivers: hv: vmbus: avoid infinite loop in
|
||||
init_vp_index()
|
||||
|
||||
When we pick a CPU to use for a new subchannel we try find a non-used one
|
||||
on the appropriate NUMA node, we keep track of them with the
|
||||
primary->alloced_cpus_in_node mask. Under normal circumstances we don't run
|
||||
out of available CPUs but it is possible when we we don't initialize some
|
||||
cpus in Linux, e.g. when we boot with 'nr_cpus=' limitation.
|
||||
|
||||
Avoid the infinite loop in init_vp_index() by checking that we still have
|
||||
non-used CPUs in the alloced_cpus_in_node mask and resetting it in case
|
||||
we don't.
|
||||
|
||||
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
|
||||
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
(cherry picked from commit 79fd8e706637a5c7c41f9498fe0fbfb437abfdc8)
|
||||
---
|
||||
drivers/hv/channel_mgmt.c | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c
|
||||
index 107d72f..af1d82e 100644
|
||||
--- a/drivers/hv/channel_mgmt.c
|
||||
+++ b/drivers/hv/channel_mgmt.c
|
||||
@@ -549,6 +549,17 @@ static void init_vp_index(struct vmbus_channel *channel, u16 dev_type)
|
||||
cpumask_of_node(primary->numa_node));
|
||||
|
||||
cur_cpu = -1;
|
||||
+
|
||||
+ /*
|
||||
+ * Normally Hyper-V host doesn't create more subchannels than there
|
||||
+ * are VCPUs on the node but it is possible when not all present VCPUs
|
||||
+ * on the node are initialized by guest. Clear the alloced_cpus_in_node
|
||||
+ * to start over.
|
||||
+ */
|
||||
+ if (cpumask_equal(&primary->alloced_cpus_in_node,
|
||||
+ cpumask_of_node(primary->numa_node)))
|
||||
+ cpumask_clear(&primary->alloced_cpus_in_node);
|
||||
+
|
||||
while (true) {
|
||||
cur_cpu = cpumask_next(cur_cpu, &available_mask);
|
||||
if (cur_cpu >= nr_cpu_ids) {
|
||||
--
|
||||
2.9.3
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 6d465cc94028d9c3b7e36996b09e7c9d95b269f3 Mon Sep 17 00:00:00 2001
|
||||
From 60af2c3c5565e40ee66123edb9386ccaa1355dff Mon Sep 17 00:00:00 2001
|
||||
From: Dexuan Cui <decui@microsoft.com>
|
||||
Date: Wed, 27 Jan 2016 22:29:39 -0800
|
||||
Subject: [PATCH 32/46] Drivers: hv: vmbus: vmbus_sendpacket_ctl: hvsock: avoid
|
||||
Subject: [PATCH 28/42] Drivers: hv: vmbus: vmbus_sendpacket_ctl: hvsock: avoid
|
||||
unnecessary signaling
|
||||
|
||||
When the hvsock channel's outbound ringbuffer is full (i.e.,
|
||||
@ -41,5 +41,5 @@ index dd6de7f..128dcf2 100644
|
||||
|
||||
return ret;
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
@ -1,99 +0,0 @@
|
||||
From f478bef9bcd76c17c338c7c96422f22dad0d02e3 Mon Sep 17 00:00:00 2001
|
||||
From: Vitaly Kuznetsov <vkuznets@redhat.com>
|
||||
Date: Wed, 27 Jan 2016 22:29:35 -0800
|
||||
Subject: [PATCH 29/46] Drivers: hv: vmbus: avoid scheduling in interrupt
|
||||
context in vmbus_initiate_unload()
|
||||
|
||||
We have to call vmbus_initiate_unload() on crash to make kdump work but
|
||||
the crash can also be happening in interrupt (e.g. Sysrq + c results in
|
||||
such) where we can't schedule or the following will happen:
|
||||
|
||||
[ 314.905786] bad: scheduling from the idle thread!
|
||||
|
||||
Just skipping the wait (and even adding some random wait here) won't help:
|
||||
to make host-side magic working we're supposed to receive CHANNELMSG_UNLOAD
|
||||
(and actually confirm the fact that we received it) but we can't use
|
||||
interrupt-base path (vmbus_isr()-> vmbus_on_msg_dpc()). Implement a simple
|
||||
busy wait ignoring all the other messages and use it if we're in an
|
||||
interrupt context.
|
||||
|
||||
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
|
||||
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
(cherry picked from commit 415719160de3fae3bb9cbc617664649919cd00d0)
|
||||
---
|
||||
drivers/hv/channel_mgmt.c | 44 +++++++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 43 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c
|
||||
index af1d82e..d6c6114 100644
|
||||
--- a/drivers/hv/channel_mgmt.c
|
||||
+++ b/drivers/hv/channel_mgmt.c
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <linux/list.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/completion.h>
|
||||
+#include <linux/delay.h>
|
||||
#include <linux/hyperv.h>
|
||||
|
||||
#include "hyperv_vmbus.h"
|
||||
@@ -589,6 +590,40 @@ static void init_vp_index(struct vmbus_channel *channel, u16 dev_type)
|
||||
channel->target_vp = hv_context.vp_index[cur_cpu];
|
||||
}
|
||||
|
||||
+static void vmbus_wait_for_unload(void)
|
||||
+{
|
||||
+ int cpu = smp_processor_id();
|
||||
+ void *page_addr = hv_context.synic_message_page[cpu];
|
||||
+ struct hv_message *msg = (struct hv_message *)page_addr +
|
||||
+ VMBUS_MESSAGE_SINT;
|
||||
+ struct vmbus_channel_message_header *hdr;
|
||||
+ bool unloaded = false;
|
||||
+
|
||||
+ while (1) {
|
||||
+ if (msg->header.message_type == HVMSG_NONE) {
|
||||
+ mdelay(10);
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ hdr = (struct vmbus_channel_message_header *)msg->u.payload;
|
||||
+ if (hdr->msgtype == CHANNELMSG_UNLOAD_RESPONSE)
|
||||
+ unloaded = true;
|
||||
+
|
||||
+ msg->header.message_type = HVMSG_NONE;
|
||||
+ /*
|
||||
+ * header.message_type needs to be written before we do
|
||||
+ * wrmsrl() below.
|
||||
+ */
|
||||
+ mb();
|
||||
+
|
||||
+ if (msg->header.message_flags.msg_pending)
|
||||
+ wrmsrl(HV_X64_MSR_EOM, 0);
|
||||
+
|
||||
+ if (unloaded)
|
||||
+ break;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* vmbus_unload_response - Handler for the unload response.
|
||||
*/
|
||||
@@ -614,7 +649,14 @@ void vmbus_initiate_unload(void)
|
||||
hdr.msgtype = CHANNELMSG_UNLOAD;
|
||||
vmbus_post_msg(&hdr, sizeof(struct vmbus_channel_message_header));
|
||||
|
||||
- wait_for_completion(&vmbus_connection.unload_event);
|
||||
+ /*
|
||||
+ * vmbus_initiate_unload() is also called on crash and the crash can be
|
||||
+ * happening in an interrupt context, where scheduling is impossible.
|
||||
+ */
|
||||
+ if (!in_interrupt())
|
||||
+ wait_for_completion(&vmbus_connection.unload_event);
|
||||
+ else
|
||||
+ vmbus_wait_for_unload();
|
||||
}
|
||||
|
||||
/*
|
||||
--
|
||||
2.9.3
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 7a337a1dcbdcb4c5ab22822f5cbf5b5fbe45551c Mon Sep 17 00:00:00 2001
|
||||
From 2c5183043209906ad0a41fb1a5b4d0c4c8a8e735 Mon Sep 17 00:00:00 2001
|
||||
From: Dexuan Cui <decui@microsoft.com>
|
||||
Date: Wed, 27 Jan 2016 22:29:40 -0800
|
||||
Subject: [PATCH 33/46] Drivers: hv: vmbus: define a new VMBus message type for
|
||||
Subject: [PATCH 29/42] Drivers: hv: vmbus: define a new VMBus message type for
|
||||
hvsock
|
||||
|
||||
A function to send the type of message is also added.
|
||||
@ -97,5 +97,5 @@ index a4f105d..191bc5d 100644
|
||||
+ const uuid_le *shv_host_servie_id);
|
||||
#endif /* _HYPERV_H */
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 6a067b8e07452ec14629bea5bfe0951877c27451 Mon Sep 17 00:00:00 2001
|
||||
From 58a10705d630bdcb5ea08c894d28851c73e9bd4f Mon Sep 17 00:00:00 2001
|
||||
From: Dexuan Cui <decui@microsoft.com>
|
||||
Date: Wed, 27 Jan 2016 22:29:41 -0800
|
||||
Subject: [PATCH 34/46] Drivers: hv: vmbus: add a hvsock flag in struct
|
||||
Subject: [PATCH 30/42] Drivers: hv: vmbus: add a hvsock flag in struct
|
||||
hv_driver
|
||||
|
||||
Only the coming hv_sock driver has a "true" value for this flag.
|
||||
@ -20,10 +20,10 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
2 files changed, 18 insertions(+)
|
||||
|
||||
diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
|
||||
index 959b656..d46b4ff 100644
|
||||
index de7130c..03fc5d3 100644
|
||||
--- a/drivers/hv/vmbus_drv.c
|
||||
+++ b/drivers/hv/vmbus_drv.c
|
||||
@@ -584,6 +584,10 @@ static int vmbus_match(struct device *device, struct device_driver *driver)
|
||||
@@ -585,6 +585,10 @@ static int vmbus_match(struct device *device, struct device_driver *driver)
|
||||
struct hv_driver *drv = drv_to_hv_drv(driver);
|
||||
struct hv_device *hv_dev = device_to_hv_device(device);
|
||||
|
||||
@ -60,5 +60,5 @@ index 191bc5d..05966e2 100644
|
||||
uuid_le dev_type;
|
||||
const struct hv_vmbus_device_id *id_table;
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From e8bf64d13b450b3a224bd12779c38931e4a5691d Mon Sep 17 00:00:00 2001
|
||||
From 6dd9db116b0985dfc56b3028205549f4c52d8be0 Mon Sep 17 00:00:00 2001
|
||||
From: Dexuan Cui <decui@microsoft.com>
|
||||
Date: Wed, 27 Jan 2016 22:29:42 -0800
|
||||
Subject: [PATCH 35/46] Drivers: hv: vmbus: add a per-channel rescind callback
|
||||
Subject: [PATCH 31/42] Drivers: hv: vmbus: add a per-channel rescind callback
|
||||
|
||||
This will be used by the coming hv_sock driver.
|
||||
|
||||
@ -68,5 +68,5 @@ index 05966e2..ad04017 100644
|
||||
* Retrieve the (sub) channel on which to send an outgoing request.
|
||||
* When a primary channel has multiple sub-channels, we choose a
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From b27d9192ab78946005526ee9574bc971b69205a2 Mon Sep 17 00:00:00 2001
|
||||
From 5e89daa5e8c0b5950b46ba77dd6248c5e61bc405 Mon Sep 17 00:00:00 2001
|
||||
From: Dexuan Cui <decui@microsoft.com>
|
||||
Date: Wed, 27 Jan 2016 22:29:43 -0800
|
||||
Subject: [PATCH 36/46] Drivers: hv: vmbus: add an API
|
||||
Subject: [PATCH 32/42] Drivers: hv: vmbus: add an API
|
||||
vmbus_hvsock_device_unregister()
|
||||
|
||||
The hvsock driver needs this API to release all the resources related
|
||||
@ -149,5 +149,5 @@ index ad04017..993318a 100644
|
||||
resource_size_t min, resource_size_t max,
|
||||
resource_size_t size, resource_size_t align,
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From d5f89659d3c0c5e05c3a76c3cc1b84aa505bc06e Mon Sep 17 00:00:00 2001
|
||||
From b7e3c4ad47b7fd47a79a723ac0c1823b6782d1ff Mon Sep 17 00:00:00 2001
|
||||
From: "K. Y. Srinivasan" <kys@microsoft.com>
|
||||
Date: Wed, 27 Jan 2016 22:29:45 -0800
|
||||
Subject: [PATCH 37/46] Drivers: hv: vmbus: Give control over how the ring
|
||||
Subject: [PATCH 33/42] Drivers: hv: vmbus: Give control over how the ring
|
||||
access is serialized
|
||||
|
||||
On the channel send side, many of the VMBUS
|
||||
@ -111,10 +111,10 @@ index cf311be..b40f429 100644
|
||||
spin_lock_init(&channel->lock);
|
||||
|
||||
diff --git a/drivers/hv/hyperv_vmbus.h b/drivers/hv/hyperv_vmbus.h
|
||||
index d9937be..b925fa3 100644
|
||||
index 50b1de7..89bb559 100644
|
||||
--- a/drivers/hv/hyperv_vmbus.h
|
||||
+++ b/drivers/hv/hyperv_vmbus.h
|
||||
@@ -612,7 +612,7 @@ void hv_ringbuffer_cleanup(struct hv_ring_buffer_info *ring_info);
|
||||
@@ -617,7 +617,7 @@ void hv_ringbuffer_cleanup(struct hv_ring_buffer_info *ring_info);
|
||||
|
||||
int hv_ringbuffer_write(struct hv_ring_buffer_info *ring_info,
|
||||
struct kvec *kv_list,
|
||||
@ -204,5 +204,5 @@ index 993318a..6c9695e 100644
|
||||
{
|
||||
return !!(c->offermsg.offer.chn_flags &
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From f565fcc8decc0d57427b8506ea4b430de70440b1 Mon Sep 17 00:00:00 2001
|
||||
From af2dd29e3cf40c789045199893c232d57f0b7057 Mon Sep 17 00:00:00 2001
|
||||
From: Vitaly Kuznetsov <vkuznets@redhat.com>
|
||||
Date: Fri, 26 Feb 2016 15:13:16 -0800
|
||||
Subject: [PATCH 38/46] Drivers: hv: vmbus: avoid wait_for_completion() on
|
||||
Subject: [PATCH 34/42] Drivers: hv: vmbus: avoid wait_for_completion() on
|
||||
crash
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
@ -61,10 +61,10 @@ index 09c08b5..78b8be8 100644
|
||||
if (vmbus_connection.work_queue) {
|
||||
drain_workqueue(vmbus_connection.work_queue);
|
||||
diff --git a/drivers/hv/hyperv_vmbus.h b/drivers/hv/hyperv_vmbus.h
|
||||
index b925fa3..10efab0 100644
|
||||
index 89bb559..f424c2d 100644
|
||||
--- a/drivers/hv/hyperv_vmbus.h
|
||||
+++ b/drivers/hv/hyperv_vmbus.h
|
||||
@@ -751,7 +751,7 @@ void hv_vss_onchannelcallback(void *);
|
||||
@@ -756,7 +756,7 @@ void hv_vss_onchannelcallback(void *);
|
||||
int hv_fcopy_init(struct hv_util_service *);
|
||||
void hv_fcopy_deinit(void);
|
||||
void hv_fcopy_onchannelcallback(void *);
|
||||
@ -74,10 +74,10 @@ index b925fa3..10efab0 100644
|
||||
static inline void hv_poll_channel(struct vmbus_channel *channel,
|
||||
void (*cb)(void *))
|
||||
diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
|
||||
index d46b4ff..f5f57ee 100644
|
||||
index 03fc5d3..b0cc6fd 100644
|
||||
--- a/drivers/hv/vmbus_drv.c
|
||||
+++ b/drivers/hv/vmbus_drv.c
|
||||
@@ -1266,7 +1266,7 @@ static void hv_kexec_handler(void)
|
||||
@@ -1276,7 +1276,7 @@ static void hv_kexec_handler(void)
|
||||
int cpu;
|
||||
|
||||
hv_synic_clockevents_cleanup();
|
||||
@ -86,7 +86,7 @@ index d46b4ff..f5f57ee 100644
|
||||
for_each_online_cpu(cpu)
|
||||
smp_call_function_single(cpu, hv_synic_cleanup, NULL, 1);
|
||||
hv_cleanup();
|
||||
@@ -1274,7 +1274,7 @@ static void hv_kexec_handler(void)
|
||||
@@ -1284,7 +1284,7 @@ static void hv_kexec_handler(void)
|
||||
|
||||
static void hv_crash_handler(struct pt_regs *regs)
|
||||
{
|
||||
@ -96,5 +96,5 @@ index d46b4ff..f5f57ee 100644
|
||||
* In crash handler we can't schedule synic cleanup for all CPUs,
|
||||
* doing the cleanup for current CPU only. This should be sufficient
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 0b4365983ef397e8b43f9f77e591c4c9f83fca26 Mon Sep 17 00:00:00 2001
|
||||
From fa3647ae889af3cccaaee37ac0723fc1b74689e3 Mon Sep 17 00:00:00 2001
|
||||
From: Vitaly Kuznetsov <vkuznets@redhat.com>
|
||||
Date: Fri, 26 Feb 2016 15:13:18 -0800
|
||||
Subject: [PATCH 39/46] Drivers: hv: vmbus: avoid unneeded compiler
|
||||
Subject: [PATCH 35/42] Drivers: hv: vmbus: avoid unneeded compiler
|
||||
optimizations in vmbus_wait_for_unload()
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
@ -35,5 +35,5 @@ index f70e352..c892db5 100644
|
||||
continue;
|
||||
}
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From f3d84d9ee57ed72603ea8334302c2ed2971882b9 Mon Sep 17 00:00:00 2001
|
||||
From afde92b79d7bbdf25d3f583898cbee4773b07d41 Mon Sep 17 00:00:00 2001
|
||||
From: Tom Herbert <tom@herbertland.com>
|
||||
Date: Mon, 7 Mar 2016 14:11:06 -0800
|
||||
Subject: [PATCH 40/46] kcm: Kernel Connection Multiplexor module
|
||||
Subject: [PATCH 36/42] kcm: Kernel Connection Multiplexor module
|
||||
|
||||
This module implements the Kernel Connection Multiplexor.
|
||||
|
||||
@ -2308,5 +2308,5 @@ index 0000000..649d246
|
||||
+MODULE_LICENSE("GPL");
|
||||
+MODULE_ALIAS_NETPROTO(PF_KCM);
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From d436f250cb94cdc0f8ceb18c73e641f8285f2c87 Mon Sep 17 00:00:00 2001
|
||||
From 2f2e6e31ed1b82f1658139e0abe7155ee3755da1 Mon Sep 17 00:00:00 2001
|
||||
From: Dexuan Cui <decui@microsoft.com>
|
||||
Date: Mon, 21 Mar 2016 02:51:09 -0700
|
||||
Subject: [PATCH 41/46] net: add the AF_KCM entries to family name tables
|
||||
Subject: [PATCH 37/42] net: add the AF_KCM entries to family name tables
|
||||
|
||||
This is for the recent kcm driver, which introduces AF_KCM(41) in
|
||||
b7ac4eb(kcm: Kernel Connection Multiplexor module).
|
||||
@ -48,5 +48,5 @@ index 0d91f7d..925def4 100644
|
||||
|
||||
/*
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 550437ba0f633b470b719d981110cbd38a4a83c4 Mon Sep 17 00:00:00 2001
|
||||
From 9e184cb0991a4cc08cd7688f2d4e23740c60e382 Mon Sep 17 00:00:00 2001
|
||||
From: Courtney Cavin <courtney.cavin@sonymobile.com>
|
||||
Date: Wed, 27 Apr 2016 12:13:03 -0700
|
||||
Subject: [PATCH 42/46] net: Add Qualcomm IPC router
|
||||
Subject: [PATCH 38/42] net: Add Qualcomm IPC router
|
||||
|
||||
Add an implementation of Qualcomm's IPC router protocol, used to
|
||||
communicate with service providing remote processors.
|
||||
@ -1303,5 +1303,5 @@ index 0000000..84ebce7
|
||||
+MODULE_DESCRIPTION("Qualcomm IPC-Router SMD interface driver");
|
||||
+MODULE_LICENSE("GPL v2");
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 87e2463282f0dc46f866cce2efd5cb36eb964bdb Mon Sep 17 00:00:00 2001
|
||||
From 51293adacd73d7bc6baee18e87b0d17ad52a61d4 Mon Sep 17 00:00:00 2001
|
||||
From: Dexuan Cui <decui@microsoft.com>
|
||||
Date: Sun, 15 May 2016 09:53:11 -0700
|
||||
Subject: [PATCH 43/46] hv_sock: introduce Hyper-V Sockets
|
||||
Subject: [PATCH 39/42] hv_sock: introduce Hyper-V Sockets
|
||||
|
||||
Hyper-V Sockets (hv_sock) supplies a byte-stream based communication
|
||||
mechanism between the host and the guest. It's somewhat like TCP over
|
||||
@ -41,10 +41,10 @@ Origin: https://patchwork.ozlabs.org/patch/622404/
|
||||
create mode 100644 net/hv_sock/af_hvsock.c
|
||||
|
||||
diff --git a/MAINTAINERS b/MAINTAINERS
|
||||
index fa94182..ff17e76 100644
|
||||
index 12d49f5..fa87bdd 100644
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -5136,7 +5136,9 @@ F: drivers/input/serio/hyperv-keyboard.c
|
||||
@@ -5123,7 +5123,9 @@ F: drivers/input/serio/hyperv-keyboard.c
|
||||
F: drivers/net/hyperv/
|
||||
F: drivers/scsi/storvsc_drv.c
|
||||
F: drivers/video/fbdev/hyperv_fb.c
|
||||
@ -185,7 +185,7 @@ index 0000000..7c8c41e
|
||||
+
|
||||
+#endif /* __AF_HVSOCK_H__ */
|
||||
diff --git a/include/uapi/linux/hyperv.h b/include/uapi/linux/hyperv.h
|
||||
index e4c0a35..9a698c1 100644
|
||||
index e347b24..408b832 100644
|
||||
--- a/include/uapi/linux/hyperv.h
|
||||
+++ b/include/uapi/linux/hyperv.h
|
||||
@@ -26,6 +26,7 @@
|
||||
@ -196,7 +196,7 @@ index e4c0a35..9a698c1 100644
|
||||
|
||||
/*
|
||||
* Framework version for util services.
|
||||
@@ -395,4 +396,28 @@ struct hv_kvp_ip_msg {
|
||||
@@ -396,4 +397,28 @@ struct hv_kvp_ip_msg {
|
||||
struct hv_kvp_ipaddr_value kvp_ip_val;
|
||||
} __attribute__((packed));
|
||||
|
||||
@ -1801,5 +1801,5 @@ index 0000000..b91bd60
|
||||
+MODULE_DESCRIPTION("Hyper-V Sockets");
|
||||
+MODULE_LICENSE("Dual BSD/GPL");
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From d3aac2768b413cea5e281290dfe236d7531638ad Mon Sep 17 00:00:00 2001
|
||||
From b7da2c01ddbb00ed9ccdd3d646f6129f07016cf8 Mon Sep 17 00:00:00 2001
|
||||
From: Dexuan Cui <decui@microsoft.com>
|
||||
Date: Mon, 21 Mar 2016 02:53:08 -0700
|
||||
Subject: [PATCH 44/46] net: add the AF_HYPERV entries to family name tables
|
||||
Subject: [PATCH 40/42] net: add the AF_HYPERV entries to family name tables
|
||||
|
||||
This is for the hv_sock driver, which introduces AF_HYPERV(42).
|
||||
|
||||
@ -45,5 +45,5 @@ index 925def4..323f7a3 100644
|
||||
|
||||
/*
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 56e767526878b2fc79b0dfaa2860ed2ae836a52e Mon Sep 17 00:00:00 2001
|
||||
From cd11346c60451032d97062e25ed025bf692dff91 Mon Sep 17 00:00:00 2001
|
||||
From: Dexuan Cui <decui@microsoft.com>
|
||||
Date: Sat, 21 May 2016 16:55:50 +0800
|
||||
Subject: [PATCH 45/46] Drivers: hv: vmbus: fix the race when querying &
|
||||
Subject: [PATCH 41/42] Drivers: hv: vmbus: fix the race when querying &
|
||||
updating the percpu list
|
||||
|
||||
There is a rare race when we remove an entry from the global list
|
||||
@ -129,5 +129,5 @@ index c892db5..0a54317 100644
|
||||
err_free_chan:
|
||||
free_channel(newchannel);
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 44694d7a14f502c9222ea100ab62fa7030acf548 Mon Sep 17 00:00:00 2001
|
||||
From 7abd92fd5987e1ad79f2272cbe544be0cfe84165 Mon Sep 17 00:00:00 2001
|
||||
From: Rolf Neugebauer <rolf.neugebauer@gmail.com>
|
||||
Date: Mon, 23 May 2016 18:55:45 +0100
|
||||
Subject: [PATCH 46/46] vmbus: Don't spam the logs with unknown GUIDs
|
||||
Subject: [PATCH 42/42] vmbus: Don't spam the logs with unknown GUIDs
|
||||
|
||||
With Hyper-V sockets device types are introduced on the fly. The pr_info()
|
||||
then prints a message on every connection, which is way too verbose. Since
|
||||
@ -26,5 +26,5 @@ index 0a54317..120ee22 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.9.3
|
||||
2.10.0
|
||||
|
Loading…
Reference in New Issue
Block a user