[pve-devel] [PATCH kernel 4.13 2/7] rebase patches

Fabian Grünbichler f.gruenbichler at proxmox.com
Wed Mar 21 11:26:28 CET 2018


and drop those applied upstream

Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>
---
 ...sable-default-dynamic-halt-polling-growth.patch |   2 +-
 ...d-crash-on-pkey-enforcement-failed-in-re.patch} |   0
 .../0007-KVM-x86-fix-APIC-page-invalidation.patch  |  90 -------
 ...-Don-t-enforce-PKey-security-on-SMI-MADs.patch} |   0
 .../0008-vhost-fix-skb-leak-in-handle_rx.patch     |  72 -----
 ...PAT.patch => 0009-KVM-SVM-obey-guest-PAT.patch} |   0
 .../kernel/0009-tun-free-skb-in-early-errors.patch |  86 ------
 ...em_nbyte-don-t-add-the-data-offset-twice.patch} |   0
 .../kernel/0010-tap-free-skb-if-flags-error.patch  |  58 ----
 ...x-TCF_LAYER_LINK-case-in-tcf_get_base_pt.patch} |   0
 ...-Add-memory-barrier-on-vmcs-field-lookup.patch} |   2 +-
 ...EDAC-sb_edac-Fix-missing-break-in-switch.patch} |   4 +-
 ...nstate-support-for-CPUs-without-virtual-N.patch | 299 ---------------------
 ...ait-Fix-add_wait_queue-behavioral-change.patch} |   0
 ...line-Warn-about-missing-retpoline-in-mod.patch} |   0
 ...p-close-sock-if-net-namespace-is-exiting.patch} |   0
 ...mory-leak-related-filter-programming-stat.patch | 127 ---------
 ...p-fix-dst-refcnt-leak-in-sctp_v4_get_dst.patch} |   0
 ...p-fix-dst-refcnt-leak-in-sctp_v6_get_dst.patch} |   2 +-
 ...c-Don-t-create-a-second-memory-controller.patch | 102 -------
 ...ollback-of-set_grace_period-in-lockd_dow.patch} |   0
 ...e-metadata-estimation-accurate-and-clear.patch} |   0
 ...-reuse-extent-block-in-dealloc-without-m.patch} |   0
 ...-scsi-lpfc-Fix-loop-mode-target-discovery.patch |  45 ----
 24 files changed, 5 insertions(+), 884 deletions(-)
 rename patches/kernel/{0011-IB-core-Avoid-crash-on-pkey-enforcement-failed-in-re.patch => 0007-IB-core-Avoid-crash-on-pkey-enforcement-failed-in-re.patch} (100%)
 delete mode 100644 patches/kernel/0007-KVM-x86-fix-APIC-page-invalidation.patch
 rename patches/kernel/{0012-IB-core-Don-t-enforce-PKey-security-on-SMI-MADs.patch => 0008-IB-core-Don-t-enforce-PKey-security-on-SMI-MADs.patch} (100%)
 delete mode 100644 patches/kernel/0008-vhost-fix-skb-leak-in-handle_rx.patch
 rename patches/kernel/{0014-KVM-SVM-obey-guest-PAT.patch => 0009-KVM-SVM-obey-guest-PAT.patch} (100%)
 delete mode 100644 patches/kernel/0009-tun-free-skb-in-early-errors.patch
 rename patches/kernel/{0015-net-sched-em_nbyte-don-t-add-the-data-offset-twice.patch => 0010-net-sched-em_nbyte-don-t-add-the-data-offset-twice.patch} (100%)
 delete mode 100644 patches/kernel/0010-tap-free-skb-if-flags-error.patch
 rename patches/kernel/{0016-net-sched-fix-TCF_LAYER_LINK-case-in-tcf_get_base_pt.patch => 0011-net-sched-fix-TCF_LAYER_LINK-case-in-tcf_get_base_pt.patch} (100%)
 rename patches/kernel/{0018-KVM-x86-Add-memory-barrier-on-vmcs-field-lookup.patch => 0012-KVM-x86-Add-memory-barrier-on-vmcs-field-lookup.patch} (97%)
 rename patches/kernel/{0020-EDAC-sb_edac-Fix-missing-break-in-switch.patch => 0013-EDAC-sb_edac-Fix-missing-break-in-switch.patch} (92%)
 delete mode 100644 patches/kernel/0013-kvm-vmx-Reinstate-support-for-CPUs-without-virtual-N.patch
 rename patches/kernel/{0022-sched-wait-Fix-add_wait_queue-behavioral-change.patch => 0014-sched-wait-Fix-add_wait_queue-behavioral-change.patch} (100%)
 rename patches/kernel/{0023-module-retpoline-Warn-about-missing-retpoline-in-mod.patch => 0015-module-retpoline-Warn-about-missing-retpoline-in-mod.patch} (100%)
 rename patches/kernel/{0024-net-tcp-close-sock-if-net-namespace-is-exiting.patch => 0016-net-tcp-close-sock-if-net-namespace-is-exiting.patch} (100%)
 delete mode 100644 patches/kernel/0017-i40e-Fix-memory-leak-related-filter-programming-stat.patch
 rename patches/kernel/{0025-sctp-fix-dst-refcnt-leak-in-sctp_v4_get_dst.patch => 0017-sctp-fix-dst-refcnt-leak-in-sctp_v4_get_dst.patch} (100%)
 rename patches/kernel/{0026-sctp-fix-dst-refcnt-leak-in-sctp_v6_get_dst.patch => 0018-sctp-fix-dst-refcnt-leak-in-sctp_v6_get_dst.patch} (98%)
 delete mode 100644 patches/kernel/0019-EDAC-sb_edac-Don-t-create-a-second-memory-controller.patch
 rename patches/kernel/{0027-lockd-lost-rollback-of-set_grace_period-in-lockd_dow.patch => 0019-lockd-lost-rollback-of-set_grace_period-in-lockd_dow.patch} (100%)
 rename patches/kernel/{0028-ocfs2-make-metadata-estimation-accurate-and-clear.patch => 0020-ocfs2-make-metadata-estimation-accurate-and-clear.patch} (100%)
 rename patches/kernel/{0029-ocfs2-try-to-reuse-extent-block-in-dealloc-without-m.patch => 0021-ocfs2-try-to-reuse-extent-block-in-dealloc-without-m.patch} (100%)
 delete mode 100644 patches/kernel/0021-scsi-lpfc-Fix-loop-mode-target-discovery.patch

diff --git a/patches/kernel/0004-kvm-disable-default-dynamic-halt-polling-growth.patch b/patches/kernel/0004-kvm-disable-default-dynamic-halt-polling-growth.patch
index 863f916..1e8b2d8 100644
--- a/patches/kernel/0004-kvm-disable-default-dynamic-halt-polling-growth.patch
+++ b/patches/kernel/0004-kvm-disable-default-dynamic-halt-polling-growth.patch
@@ -12,7 +12,7 @@ Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
-index 4d81f6ded88e..bfa9c4d34102 100644
+index 3b3e54742263..d0085c9d6297 100644
 --- a/virt/kvm/kvm_main.c
 +++ b/virt/kvm/kvm_main.c
 @@ -77,7 +77,7 @@ module_param(halt_poll_ns, uint, 0644);
diff --git a/patches/kernel/0011-IB-core-Avoid-crash-on-pkey-enforcement-failed-in-re.patch b/patches/kernel/0007-IB-core-Avoid-crash-on-pkey-enforcement-failed-in-re.patch
similarity index 100%
rename from patches/kernel/0011-IB-core-Avoid-crash-on-pkey-enforcement-failed-in-re.patch
rename to patches/kernel/0007-IB-core-Avoid-crash-on-pkey-enforcement-failed-in-re.patch
diff --git a/patches/kernel/0007-KVM-x86-fix-APIC-page-invalidation.patch b/patches/kernel/0007-KVM-x86-fix-APIC-page-invalidation.patch
deleted file mode 100644
index 1e693f9..0000000
--- a/patches/kernel/0007-KVM-x86-fix-APIC-page-invalidation.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= <rkrcmar at redhat.com>
-Date: Thu, 30 Nov 2017 19:05:45 +0100
-Subject: [PATCH] KVM: x86: fix APIC page invalidation
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Implementation of the unpinned APIC page didn't update the VMCS address
-cache when invalidation was done through range mmu notifiers.
-This became a problem when the page notifier was removed.
-
-Re-introduce the arch-specific helper and call it from ...range_start.
-
-Fixes: 38b9917350cb ("kvm: vmx: Implement set_apic_access_page_addr")
-Fixes: 369ea8242c0f ("mm/rmap: update to new mmu_notifier semantic v2")
-Signed-off-by: Radim Krčmář <rkrcmar at redhat.com>
-Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>
----
- arch/x86/include/asm/kvm_host.h |  3 +++
- arch/x86/kvm/x86.c              | 14 ++++++++++++++
- virt/kvm/kvm_main.c             |  8 ++++++++
- 3 files changed, 25 insertions(+)
-
-diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
-index 78ec3cda9429..1953c0a5b972 100644
---- a/arch/x86/include/asm/kvm_host.h
-+++ b/arch/x86/include/asm/kvm_host.h
-@@ -1439,4 +1439,7 @@ static inline int kvm_cpu_get_apicid(int mps_cpu)
- #endif
- }
- 
-+void kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
-+		unsigned long start, unsigned long end);
-+
- #endif /* _ASM_X86_KVM_HOST_H */
-diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
-index f896c441fc2c..eae4aecf3cfe 100644
---- a/arch/x86/kvm/x86.c
-+++ b/arch/x86/kvm/x86.c
-@@ -6711,6 +6711,20 @@ static void kvm_vcpu_flush_tlb(struct kvm_vcpu *vcpu)
- 	kvm_x86_ops->tlb_flush(vcpu);
- }
- 
-+void kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
-+		unsigned long start, unsigned long end)
-+{
-+	unsigned long apic_address;
-+
-+	/*
-+	 * The physical address of apic access page is stored in the VMCS.
-+	 * Update it when it becomes invalid.
-+	 */
-+	apic_address = gfn_to_hva(kvm, APIC_DEFAULT_PHYS_BASE >> PAGE_SHIFT);
-+	if (start <= apic_address && apic_address < end)
-+		kvm_make_all_cpus_request(kvm, KVM_REQ_APIC_PAGE_RELOAD);
-+}
-+
- void kvm_vcpu_reload_apic_access_page(struct kvm_vcpu *vcpu)
- {
- 	struct page *page = NULL;
-diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
-index bfa9c4d34102..d0085c9d6297 100644
---- a/virt/kvm/kvm_main.c
-+++ b/virt/kvm/kvm_main.c
-@@ -136,6 +136,11 @@ static void kvm_uevent_notify_change(unsigned int type, struct kvm *kvm);
- static unsigned long long kvm_createvm_count;
- static unsigned long long kvm_active_vms;
- 
-+__weak void kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
-+		unsigned long start, unsigned long end)
-+{
-+}
-+
- bool kvm_is_reserved_pfn(kvm_pfn_t pfn)
- {
- 	if (pfn_valid(pfn))
-@@ -361,6 +366,9 @@ static void kvm_mmu_notifier_invalidate_range_start(struct mmu_notifier *mn,
- 		kvm_flush_remote_tlbs(kvm);
- 
- 	spin_unlock(&kvm->mmu_lock);
-+
-+	kvm_arch_mmu_notifier_invalidate_range(kvm, start, end);
-+
- 	srcu_read_unlock(&kvm->srcu, idx);
- }
- 
--- 
-2.14.2
-
diff --git a/patches/kernel/0012-IB-core-Don-t-enforce-PKey-security-on-SMI-MADs.patch b/patches/kernel/0008-IB-core-Don-t-enforce-PKey-security-on-SMI-MADs.patch
similarity index 100%
rename from patches/kernel/0012-IB-core-Don-t-enforce-PKey-security-on-SMI-MADs.patch
rename to patches/kernel/0008-IB-core-Don-t-enforce-PKey-security-on-SMI-MADs.patch
diff --git a/patches/kernel/0008-vhost-fix-skb-leak-in-handle_rx.patch b/patches/kernel/0008-vhost-fix-skb-leak-in-handle_rx.patch
deleted file mode 100644
index 2176dbc..0000000
--- a/patches/kernel/0008-vhost-fix-skb-leak-in-handle_rx.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Wei Xu <wexu at redhat.com>
-Date: Fri, 1 Dec 2017 05:10:36 -0500
-Subject: [PATCH] vhost: fix skb leak in handle_rx()
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Matthew found a roughly 40% tcp throughput regression with commit
-c67df11f(vhost_net: try batch dequing from skb array) as discussed
-in the following thread:
-https://www.mail-archive.com/netdev@vger.kernel.org/msg187936.html
-
-Eventually we figured out that it was a skb leak in handle_rx()
-when sending packets to the VM. This usually happens when a guest
-can not drain out vq as fast as vhost fills in, afterwards it sets
-off the traffic jam and leaks skb(s) which occurs as no headcount
-to send on the vq from vhost side.
-
-This can be avoided by making sure we have got enough headcount
-before actually consuming a skb from the batched rx array while
-transmitting, which is simply done by moving checking the zero
-headcount a bit ahead.
-
-Signed-off-by: Wei Xu <wexu at redhat.com>
-Reported-by: Matthew Rosato <mjrosato at linux.vnet.ibm.com>
-Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>
----
- drivers/vhost/net.c | 20 ++++++++++----------
- 1 file changed, 10 insertions(+), 10 deletions(-)
-
-diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c
-index 1c75572f5a3f..010253847022 100644
---- a/drivers/vhost/net.c
-+++ b/drivers/vhost/net.c
-@@ -781,16 +781,6 @@ static void handle_rx(struct vhost_net *net)
- 		/* On error, stop handling until the next kick. */
- 		if (unlikely(headcount < 0))
- 			goto out;
--		if (nvq->rx_array)
--			msg.msg_control = vhost_net_buf_consume(&nvq->rxq);
--		/* On overrun, truncate and discard */
--		if (unlikely(headcount > UIO_MAXIOV)) {
--			iov_iter_init(&msg.msg_iter, READ, vq->iov, 1, 1);
--			err = sock->ops->recvmsg(sock, &msg,
--						 1, MSG_DONTWAIT | MSG_TRUNC);
--			pr_debug("Discarded rx packet: len %zd\n", sock_len);
--			continue;
--		}
- 		/* OK, now we need to know about added descriptors. */
- 		if (!headcount) {
- 			if (unlikely(vhost_enable_notify(&net->dev, vq))) {
-@@ -803,6 +793,16 @@ static void handle_rx(struct vhost_net *net)
- 			 * they refilled. */
- 			goto out;
- 		}
-+		if (nvq->rx_array)
-+			msg.msg_control = vhost_net_buf_consume(&nvq->rxq);
-+		/* On overrun, truncate and discard */
-+		if (unlikely(headcount > UIO_MAXIOV)) {
-+			iov_iter_init(&msg.msg_iter, READ, vq->iov, 1, 1);
-+			err = sock->ops->recvmsg(sock, &msg,
-+						 1, MSG_DONTWAIT | MSG_TRUNC);
-+			pr_debug("Discarded rx packet: len %zd\n", sock_len);
-+			continue;
-+		}
- 		/* We don't need to be notified again. */
- 		iov_iter_init(&msg.msg_iter, READ, vq->iov, in, vhost_len);
- 		fixup = msg.msg_iter;
--- 
-2.14.2
-
diff --git a/patches/kernel/0014-KVM-SVM-obey-guest-PAT.patch b/patches/kernel/0009-KVM-SVM-obey-guest-PAT.patch
similarity index 100%
rename from patches/kernel/0014-KVM-SVM-obey-guest-PAT.patch
rename to patches/kernel/0009-KVM-SVM-obey-guest-PAT.patch
diff --git a/patches/kernel/0009-tun-free-skb-in-early-errors.patch b/patches/kernel/0009-tun-free-skb-in-early-errors.patch
deleted file mode 100644
index 0185bbd..0000000
--- a/patches/kernel/0009-tun-free-skb-in-early-errors.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Wei Xu <wexu at redhat.com>
-Date: Fri, 1 Dec 2017 05:10:37 -0500
-Subject: [PATCH] tun: free skb in early errors
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-tun_recvmsg() supports accepting skb by msg_control after
-commit ac77cfd4258f ("tun: support receiving skb through msg_control"),
-the skb if presented should be freed no matter how far it can go
-along, otherwise it would be leaked.
-
-This patch fixes several missed cases.
-
-Signed-off-by: Wei Xu <wexu at redhat.com>
-Reported-by: Matthew Rosato <mjrosato at linux.vnet.ibm.com>
-Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>
----
- drivers/net/tun.c | 24 ++++++++++++++++++------
- 1 file changed, 18 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/net/tun.c b/drivers/net/tun.c
-index d1cb1ff83251..d58ae8ad0a4e 100644
---- a/drivers/net/tun.c
-+++ b/drivers/net/tun.c
-@@ -1519,8 +1519,11 @@ static ssize_t tun_do_read(struct tun_struct *tun, struct tun_file *tfile,
- 
- 	tun_debug(KERN_INFO, tun, "tun_do_read\n");
- 
--	if (!iov_iter_count(to))
-+	if (!iov_iter_count(to)) {
-+		if (skb)
-+			kfree_skb(skb);
- 		return 0;
-+	}
- 
- 	if (!skb) {
- 		/* Read frames from ring */
-@@ -1636,22 +1639,24 @@ static int tun_recvmsg(struct socket *sock, struct msghdr *m, size_t total_len,
- {
- 	struct tun_file *tfile = container_of(sock, struct tun_file, socket);
- 	struct tun_struct *tun = __tun_get(tfile);
-+	struct sk_buff *skb = m->msg_control;
- 	int ret;
- 
--	if (!tun)
--		return -EBADFD;
-+	if (!tun) {
-+		ret = -EBADFD;
-+		goto out_free_skb;
-+	}
- 
- 	if (flags & ~(MSG_DONTWAIT|MSG_TRUNC|MSG_ERRQUEUE)) {
- 		ret = -EINVAL;
--		goto out;
-+		goto out_put_tun;
- 	}
- 	if (flags & MSG_ERRQUEUE) {
- 		ret = sock_recv_errqueue(sock->sk, m, total_len,
- 					 SOL_PACKET, TUN_TX_TIMESTAMP);
- 		goto out;
- 	}
--	ret = tun_do_read(tun, tfile, &m->msg_iter, flags & MSG_DONTWAIT,
--			  m->msg_control);
-+	ret = tun_do_read(tun, tfile, &m->msg_iter, flags & MSG_DONTWAIT, skb);
- 	if (ret > (ssize_t)total_len) {
- 		m->msg_flags |= MSG_TRUNC;
- 		ret = flags & MSG_TRUNC ? ret : total_len;
-@@ -1659,6 +1664,13 @@ static int tun_recvmsg(struct socket *sock, struct msghdr *m, size_t total_len,
- out:
- 	tun_put(tun);
- 	return ret;
-+
-+out_put_tun:
-+	tun_put(tun);
-+out_free_skb:
-+	if (skb)
-+		kfree_skb(skb);
-+	return ret;
- }
- 
- static int tun_peek_len(struct socket *sock)
--- 
-2.14.2
-
diff --git a/patches/kernel/0015-net-sched-em_nbyte-don-t-add-the-data-offset-twice.patch b/patches/kernel/0010-net-sched-em_nbyte-don-t-add-the-data-offset-twice.patch
similarity index 100%
rename from patches/kernel/0015-net-sched-em_nbyte-don-t-add-the-data-offset-twice.patch
rename to patches/kernel/0010-net-sched-em_nbyte-don-t-add-the-data-offset-twice.patch
diff --git a/patches/kernel/0010-tap-free-skb-if-flags-error.patch b/patches/kernel/0010-tap-free-skb-if-flags-error.patch
deleted file mode 100644
index 87f6502..0000000
--- a/patches/kernel/0010-tap-free-skb-if-flags-error.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Wei Xu <wexu at redhat.com>
-Date: Fri, 1 Dec 2017 05:10:38 -0500
-Subject: [PATCH] tap: free skb if flags error
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-tap_recvmsg() supports accepting skb by msg_control after
-commit 3b4ba04acca8 ("tap: support receiving skb from msg_control"),
-the skb if presented should be freed within the function, otherwise
-it would be leaked.
-
-Signed-off-by: Wei Xu <wexu at redhat.com>
-Reported-by: Matthew Rosato <mjrosato at linux.vnet.ibm.com>
-Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>
----
- drivers/net/tap.c | 14 ++++++++++----
- 1 file changed, 10 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/tap.c b/drivers/net/tap.c
-index 7a2f6bebfd15..96e5e5b2ae39 100644
---- a/drivers/net/tap.c
-+++ b/drivers/net/tap.c
-@@ -829,8 +829,11 @@ static ssize_t tap_do_read(struct tap_queue *q,
- 	DEFINE_WAIT(wait);
- 	ssize_t ret = 0;
- 
--	if (!iov_iter_count(to))
-+	if (!iov_iter_count(to)) {
-+		if (skb)
-+			kfree_skb(skb);
- 		return 0;
-+	}
- 
- 	if (skb)
- 		goto put;
-@@ -1157,11 +1160,14 @@ static int tap_recvmsg(struct socket *sock, struct msghdr *m,
- 		       size_t total_len, int flags)
- {
- 	struct tap_queue *q = container_of(sock, struct tap_queue, sock);
-+	struct sk_buff *skb = m->msg_control;
- 	int ret;
--	if (flags & ~(MSG_DONTWAIT|MSG_TRUNC))
-+	if (flags & ~(MSG_DONTWAIT|MSG_TRUNC)) {
-+		if (skb)
-+			kfree_skb(skb);
- 		return -EINVAL;
--	ret = tap_do_read(q, &m->msg_iter, flags & MSG_DONTWAIT,
--			  m->msg_control);
-+	}
-+	ret = tap_do_read(q, &m->msg_iter, flags & MSG_DONTWAIT, skb);
- 	if (ret > total_len) {
- 		m->msg_flags |= MSG_TRUNC;
- 		ret = flags & MSG_TRUNC ? ret : total_len;
--- 
-2.14.2
-
diff --git a/patches/kernel/0016-net-sched-fix-TCF_LAYER_LINK-case-in-tcf_get_base_pt.patch b/patches/kernel/0011-net-sched-fix-TCF_LAYER_LINK-case-in-tcf_get_base_pt.patch
similarity index 100%
rename from patches/kernel/0016-net-sched-fix-TCF_LAYER_LINK-case-in-tcf_get_base_pt.patch
rename to patches/kernel/0011-net-sched-fix-TCF_LAYER_LINK-case-in-tcf_get_base_pt.patch
diff --git a/patches/kernel/0018-KVM-x86-Add-memory-barrier-on-vmcs-field-lookup.patch b/patches/kernel/0012-KVM-x86-Add-memory-barrier-on-vmcs-field-lookup.patch
similarity index 97%
rename from patches/kernel/0018-KVM-x86-Add-memory-barrier-on-vmcs-field-lookup.patch
rename to patches/kernel/0012-KVM-x86-Add-memory-barrier-on-vmcs-field-lookup.patch
index 8fc4603..0523e06 100644
--- a/patches/kernel/0018-KVM-x86-Add-memory-barrier-on-vmcs-field-lookup.patch
+++ b/patches/kernel/0012-KVM-x86-Add-memory-barrier-on-vmcs-field-lookup.patch
@@ -22,7 +22,7 @@ Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>
  1 file changed, 10 insertions(+), 2 deletions(-)
 
 diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
-index 146caacd8fdd..80732f87cac0 100644
+index 097f3daae037..b078b56234bb 100644
 --- a/arch/x86/kvm/vmx.c
 +++ b/arch/x86/kvm/vmx.c
 @@ -883,8 +883,16 @@ static inline short vmcs_field_to_offset(unsigned long field)
diff --git a/patches/kernel/0020-EDAC-sb_edac-Fix-missing-break-in-switch.patch b/patches/kernel/0013-EDAC-sb_edac-Fix-missing-break-in-switch.patch
similarity index 92%
rename from patches/kernel/0020-EDAC-sb_edac-Fix-missing-break-in-switch.patch
rename to patches/kernel/0013-EDAC-sb_edac-Fix-missing-break-in-switch.patch
index b7ca81a..0421f14 100644
--- a/patches/kernel/0020-EDAC-sb_edac-Fix-missing-break-in-switch.patch
+++ b/patches/kernel/0013-EDAC-sb_edac-Fix-missing-break-in-switch.patch
@@ -21,10 +21,10 @@ Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>
  1 file changed, 1 insertion(+)
 
 diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c
-index 7a3b201d51df..fb0264ef83a3 100644
+index 5c3e707ff3fc..59af590b660c 100644
 --- a/drivers/edac/sb_edac.c
 +++ b/drivers/edac/sb_edac.c
-@@ -2467,6 +2467,7 @@ static int ibridge_mci_bind_devs(struct mem_ctl_info *mci,
+@@ -2454,6 +2454,7 @@ static int ibridge_mci_bind_devs(struct mem_ctl_info *mci,
  		case PCI_DEVICE_ID_INTEL_IBRIDGE_IMC_HA0_TA:
  		case PCI_DEVICE_ID_INTEL_IBRIDGE_IMC_HA1_TA:
  			pvt->pci_ta = pdev;
diff --git a/patches/kernel/0013-kvm-vmx-Reinstate-support-for-CPUs-without-virtual-N.patch b/patches/kernel/0013-kvm-vmx-Reinstate-support-for-CPUs-without-virtual-N.patch
deleted file mode 100644
index 54a3fdb..0000000
--- a/patches/kernel/0013-kvm-vmx-Reinstate-support-for-CPUs-without-virtual-N.patch
+++ /dev/null
@@ -1,299 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Paolo Bonzini <pbonzini at redhat.com>
-Date: Mon, 6 Nov 2017 13:31:12 +0100
-Subject: [PATCH] kvm: vmx: Reinstate support for CPUs without virtual NMI
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-commit 8a1b43922d0d1279e7936ba85c4c2a870403c95f upstream.
-
-This is more or less a revert of commit 2c82878b0cb3 ("KVM: VMX: require
-virtual NMI support", 2017-03-27); it turns out that Core 2 Duo machines
-only had virtual NMIs in some SKUs.
-
-The revert is not trivial because in the meanwhile there have been several
-fixes to nested NMI injection.  Therefore, the entire vNMI state is moved
-to struct loaded_vmcs.
-
-Another change compared to before the patch is a simplification here:
-
-       if (unlikely(!cpu_has_virtual_nmis() && vmx->soft_vnmi_blocked &&
-           !(is_guest_mode(vcpu) && nested_cpu_has_virtual_nmis(
-                                       get_vmcs12(vcpu))))) {
-
-The final condition here is always true (because nested_cpu_has_virtual_nmis
-is always false) and is removed.
-
-Fixes: 2c82878b0cb38fd516fd612c67852a6bbf282003
-Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1490803
-Signed-off-by: Paolo Bonzini <pbonzini at redhat.com>
-Signed-off-by: Radim Krčmář <rkrcmar at redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
-Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>
----
- arch/x86/kvm/vmx.c | 150 +++++++++++++++++++++++++++++++++++++----------------
- 1 file changed, 106 insertions(+), 44 deletions(-)
-
-diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
-index 5edf05ce45de..146caacd8fdd 100644
---- a/arch/x86/kvm/vmx.c
-+++ b/arch/x86/kvm/vmx.c
-@@ -204,6 +204,10 @@ struct loaded_vmcs {
- 	bool nmi_known_unmasked;
- 	unsigned long vmcs_host_cr3;	/* May not match real cr3 */
- 	unsigned long vmcs_host_cr4;	/* May not match real cr4 */
-+	/* Support for vnmi-less CPUs */
-+	int soft_vnmi_blocked;
-+	ktime_t entry_time;
-+	s64 vnmi_blocked_time;
- 	struct list_head loaded_vmcss_on_cpu_link;
- };
- 
-@@ -1290,6 +1294,11 @@ static inline bool cpu_has_vmx_invpcid(void)
- 		SECONDARY_EXEC_ENABLE_INVPCID;
- }
- 
-+static inline bool cpu_has_virtual_nmis(void)
-+{
-+	return vmcs_config.pin_based_exec_ctrl & PIN_BASED_VIRTUAL_NMIS;
-+}
-+
- static inline bool cpu_has_vmx_wbinvd_exit(void)
- {
- 	return vmcs_config.cpu_based_2nd_exec_ctrl &
-@@ -1341,11 +1350,6 @@ static inline bool nested_cpu_has2(struct vmcs12 *vmcs12, u32 bit)
- 		(vmcs12->secondary_vm_exec_control & bit);
- }
- 
--static inline bool nested_cpu_has_virtual_nmis(struct vmcs12 *vmcs12)
--{
--	return vmcs12->pin_based_vm_exec_control & PIN_BASED_VIRTUAL_NMIS;
--}
--
- static inline bool nested_cpu_has_preemption_timer(struct vmcs12 *vmcs12)
- {
- 	return vmcs12->pin_based_vm_exec_control &
-@@ -3687,9 +3691,9 @@ static __init int setup_vmcs_config(struct vmcs_config *vmcs_conf)
- 				&_vmexit_control) < 0)
- 		return -EIO;
- 
--	min = PIN_BASED_EXT_INTR_MASK | PIN_BASED_NMI_EXITING |
--		PIN_BASED_VIRTUAL_NMIS;
--	opt = PIN_BASED_POSTED_INTR | PIN_BASED_VMX_PREEMPTION_TIMER;
-+	min = PIN_BASED_EXT_INTR_MASK | PIN_BASED_NMI_EXITING;
-+	opt = PIN_BASED_VIRTUAL_NMIS | PIN_BASED_POSTED_INTR |
-+		 PIN_BASED_VMX_PREEMPTION_TIMER;
- 	if (adjust_vmx_controls(min, opt, MSR_IA32_VMX_PINBASED_CTLS,
- 				&_pin_based_exec_control) < 0)
- 		return -EIO;
-@@ -5549,7 +5553,8 @@ static void enable_irq_window(struct kvm_vcpu *vcpu)
- 
- static void enable_nmi_window(struct kvm_vcpu *vcpu)
- {
--	if (vmcs_read32(GUEST_INTERRUPTIBILITY_INFO) & GUEST_INTR_STATE_STI) {
-+	if (!cpu_has_virtual_nmis() ||
-+	    vmcs_read32(GUEST_INTERRUPTIBILITY_INFO) & GUEST_INTR_STATE_STI) {
- 		enable_irq_window(vcpu);
- 		return;
- 	}
-@@ -5589,6 +5594,19 @@ static void vmx_inject_nmi(struct kvm_vcpu *vcpu)
- {
- 	struct vcpu_vmx *vmx = to_vmx(vcpu);
- 
-+	if (!cpu_has_virtual_nmis()) {
-+		/*
-+		 * Tracking the NMI-blocked state in software is built upon
-+		 * finding the next open IRQ window. This, in turn, depends on
-+		 * well-behaving guests: They have to keep IRQs disabled at
-+		 * least as long as the NMI handler runs. Otherwise we may
-+		 * cause NMI nesting, maybe breaking the guest. But as this is
-+		 * highly unlikely, we can live with the residual risk.
-+		 */
-+		vmx->loaded_vmcs->soft_vnmi_blocked = 1;
-+		vmx->loaded_vmcs->vnmi_blocked_time = 0;
-+	}
-+
- 	++vcpu->stat.nmi_injections;
- 	vmx->loaded_vmcs->nmi_known_unmasked = false;
- 
-@@ -5607,6 +5625,8 @@ static bool vmx_get_nmi_mask(struct kvm_vcpu *vcpu)
- 	struct vcpu_vmx *vmx = to_vmx(vcpu);
- 	bool masked;
- 
-+	if (!cpu_has_virtual_nmis())
-+		return vmx->loaded_vmcs->soft_vnmi_blocked;
- 	if (vmx->loaded_vmcs->nmi_known_unmasked)
- 		return false;
- 	masked = vmcs_read32(GUEST_INTERRUPTIBILITY_INFO) & GUEST_INTR_STATE_NMI;
-@@ -5618,13 +5638,20 @@ static void vmx_set_nmi_mask(struct kvm_vcpu *vcpu, bool masked)
- {
- 	struct vcpu_vmx *vmx = to_vmx(vcpu);
- 
--	vmx->loaded_vmcs->nmi_known_unmasked = !masked;
--	if (masked)
--		vmcs_set_bits(GUEST_INTERRUPTIBILITY_INFO,
--			      GUEST_INTR_STATE_NMI);
--	else
--		vmcs_clear_bits(GUEST_INTERRUPTIBILITY_INFO,
--				GUEST_INTR_STATE_NMI);
-+	if (!cpu_has_virtual_nmis()) {
-+		if (vmx->loaded_vmcs->soft_vnmi_blocked != masked) {
-+			vmx->loaded_vmcs->soft_vnmi_blocked = masked;
-+			vmx->loaded_vmcs->vnmi_blocked_time = 0;
-+		}
-+	} else {
-+		vmx->loaded_vmcs->nmi_known_unmasked = !masked;
-+		if (masked)
-+			vmcs_set_bits(GUEST_INTERRUPTIBILITY_INFO,
-+				      GUEST_INTR_STATE_NMI);
-+		else
-+			vmcs_clear_bits(GUEST_INTERRUPTIBILITY_INFO,
-+					GUEST_INTR_STATE_NMI);
-+	}
- }
- 
- static int vmx_nmi_allowed(struct kvm_vcpu *vcpu)
-@@ -5632,6 +5659,10 @@ static int vmx_nmi_allowed(struct kvm_vcpu *vcpu)
- 	if (to_vmx(vcpu)->nested.nested_run_pending)
- 		return 0;
- 
-+	if (!cpu_has_virtual_nmis() &&
-+	    to_vmx(vcpu)->loaded_vmcs->soft_vnmi_blocked)
-+		return 0;
-+
- 	return	!(vmcs_read32(GUEST_INTERRUPTIBILITY_INFO) &
- 		  (GUEST_INTR_STATE_MOV_SS | GUEST_INTR_STATE_STI
- 		   | GUEST_INTR_STATE_NMI));
-@@ -6360,6 +6391,7 @@ static int handle_ept_violation(struct kvm_vcpu *vcpu)
- 	 * AAK134, BY25.
- 	 */
- 	if (!(to_vmx(vcpu)->idt_vectoring_info & VECTORING_INFO_VALID_MASK) &&
-+			cpu_has_virtual_nmis() &&
- 			(exit_qualification & INTR_INFO_UNBLOCK_NMI))
- 		vmcs_set_bits(GUEST_INTERRUPTIBILITY_INFO, GUEST_INTR_STATE_NMI);
- 
-@@ -6834,7 +6866,7 @@ static struct loaded_vmcs *nested_get_current_vmcs02(struct vcpu_vmx *vmx)
- 	}
- 
- 	/* Create a new VMCS */
--	item = kmalloc(sizeof(struct vmcs02_list), GFP_KERNEL);
-+	item = kzalloc(sizeof(struct vmcs02_list), GFP_KERNEL);
- 	if (!item)
- 		return NULL;
- 	item->vmcs02.vmcs = alloc_vmcs();
-@@ -7851,6 +7883,7 @@ static int handle_pml_full(struct kvm_vcpu *vcpu)
- 	 * "blocked by NMI" bit has to be set before next VM entry.
- 	 */
- 	if (!(to_vmx(vcpu)->idt_vectoring_info & VECTORING_INFO_VALID_MASK) &&
-+			cpu_has_virtual_nmis() &&
- 			(exit_qualification & INTR_INFO_UNBLOCK_NMI))
- 		vmcs_set_bits(GUEST_INTERRUPTIBILITY_INFO,
- 				GUEST_INTR_STATE_NMI);
-@@ -8568,6 +8601,25 @@ static int vmx_handle_exit(struct kvm_vcpu *vcpu)
- 		return 0;
- 	}
- 
-+	if (unlikely(!cpu_has_virtual_nmis() &&
-+		     vmx->loaded_vmcs->soft_vnmi_blocked)) {
-+		if (vmx_interrupt_allowed(vcpu)) {
-+			vmx->loaded_vmcs->soft_vnmi_blocked = 0;
-+		} else if (vmx->loaded_vmcs->vnmi_blocked_time > 1000000000LL &&
-+			   vcpu->arch.nmi_pending) {
-+			/*
-+			 * This CPU don't support us in finding the end of an
-+			 * NMI-blocked window if the guest runs with IRQs
-+			 * disabled. So we pull the trigger after 1 s of
-+			 * futile waiting, but inform the user about this.
-+			 */
-+			printk(KERN_WARNING "%s: Breaking out of NMI-blocked "
-+			       "state on VCPU %d after 1 s timeout\n",
-+			       __func__, vcpu->vcpu_id);
-+			vmx->loaded_vmcs->soft_vnmi_blocked = 0;
-+		}
-+	}
-+
- 	if (exit_reason < kvm_vmx_max_exit_handlers
- 	    && kvm_vmx_exit_handlers[exit_reason])
- 		return kvm_vmx_exit_handlers[exit_reason](vcpu);
-@@ -8850,33 +8902,38 @@ static void vmx_recover_nmi_blocking(struct vcpu_vmx *vmx)
- 
- 	idtv_info_valid = vmx->idt_vectoring_info & VECTORING_INFO_VALID_MASK;
- 
--	if (vmx->loaded_vmcs->nmi_known_unmasked)
--		return;
--	/*
--	 * Can't use vmx->exit_intr_info since we're not sure what
--	 * the exit reason is.
--	 */
--	exit_intr_info = vmcs_read32(VM_EXIT_INTR_INFO);
--	unblock_nmi = (exit_intr_info & INTR_INFO_UNBLOCK_NMI) != 0;
--	vector = exit_intr_info & INTR_INFO_VECTOR_MASK;
--	/*
--	 * SDM 3: 27.7.1.2 (September 2008)
--	 * Re-set bit "block by NMI" before VM entry if vmexit caused by
--	 * a guest IRET fault.
--	 * SDM 3: 23.2.2 (September 2008)
--	 * Bit 12 is undefined in any of the following cases:
--	 *  If the VM exit sets the valid bit in the IDT-vectoring
--	 *   information field.
--	 *  If the VM exit is due to a double fault.
--	 */
--	if ((exit_intr_info & INTR_INFO_VALID_MASK) && unblock_nmi &&
--	    vector != DF_VECTOR && !idtv_info_valid)
--		vmcs_set_bits(GUEST_INTERRUPTIBILITY_INFO,
--			      GUEST_INTR_STATE_NMI);
--	else
--		vmx->loaded_vmcs->nmi_known_unmasked =
--			!(vmcs_read32(GUEST_INTERRUPTIBILITY_INFO)
--			  & GUEST_INTR_STATE_NMI);
-+	if (cpu_has_virtual_nmis()) {
-+		if (vmx->loaded_vmcs->nmi_known_unmasked)
-+			return;
-+		/*
-+		 * Can't use vmx->exit_intr_info since we're not sure what
-+		 * the exit reason is.
-+		 */
-+		exit_intr_info = vmcs_read32(VM_EXIT_INTR_INFO);
-+		unblock_nmi = (exit_intr_info & INTR_INFO_UNBLOCK_NMI) != 0;
-+		vector = exit_intr_info & INTR_INFO_VECTOR_MASK;
-+		/*
-+		 * SDM 3: 27.7.1.2 (September 2008)
-+		 * Re-set bit "block by NMI" before VM entry if vmexit caused by
-+		 * a guest IRET fault.
-+		 * SDM 3: 23.2.2 (September 2008)
-+		 * Bit 12 is undefined in any of the following cases:
-+		 *  If the VM exit sets the valid bit in the IDT-vectoring
-+		 *   information field.
-+		 *  If the VM exit is due to a double fault.
-+		 */
-+		if ((exit_intr_info & INTR_INFO_VALID_MASK) && unblock_nmi &&
-+		    vector != DF_VECTOR && !idtv_info_valid)
-+			vmcs_set_bits(GUEST_INTERRUPTIBILITY_INFO,
-+				      GUEST_INTR_STATE_NMI);
-+		else
-+			vmx->loaded_vmcs->nmi_known_unmasked =
-+				!(vmcs_read32(GUEST_INTERRUPTIBILITY_INFO)
-+				  & GUEST_INTR_STATE_NMI);
-+	} else if (unlikely(vmx->loaded_vmcs->soft_vnmi_blocked))
-+		vmx->loaded_vmcs->vnmi_blocked_time +=
-+			ktime_to_ns(ktime_sub(ktime_get(),
-+					      vmx->loaded_vmcs->entry_time));
- }
- 
- static void __vmx_complete_interrupts(struct kvm_vcpu *vcpu,
-@@ -8993,6 +9050,11 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu)
- 	struct vcpu_vmx *vmx = to_vmx(vcpu);
- 	unsigned long debugctlmsr, cr3, cr4;
- 
-+	/* Record the guest's net vcpu time for enforced NMI injections. */
-+	if (unlikely(!cpu_has_virtual_nmis() &&
-+		     vmx->loaded_vmcs->soft_vnmi_blocked))
-+		vmx->loaded_vmcs->entry_time = ktime_get();
-+
- 	/* Don't enter VMX if guest state is invalid, let the exit handler
- 	   start emulation until we arrive back to a valid state */
- 	if (vmx->emulation_required)
--- 
-2.14.2
-
diff --git a/patches/kernel/0022-sched-wait-Fix-add_wait_queue-behavioral-change.patch b/patches/kernel/0014-sched-wait-Fix-add_wait_queue-behavioral-change.patch
similarity index 100%
rename from patches/kernel/0022-sched-wait-Fix-add_wait_queue-behavioral-change.patch
rename to patches/kernel/0014-sched-wait-Fix-add_wait_queue-behavioral-change.patch
diff --git a/patches/kernel/0023-module-retpoline-Warn-about-missing-retpoline-in-mod.patch b/patches/kernel/0015-module-retpoline-Warn-about-missing-retpoline-in-mod.patch
similarity index 100%
rename from patches/kernel/0023-module-retpoline-Warn-about-missing-retpoline-in-mod.patch
rename to patches/kernel/0015-module-retpoline-Warn-about-missing-retpoline-in-mod.patch
diff --git a/patches/kernel/0024-net-tcp-close-sock-if-net-namespace-is-exiting.patch b/patches/kernel/0016-net-tcp-close-sock-if-net-namespace-is-exiting.patch
similarity index 100%
rename from patches/kernel/0024-net-tcp-close-sock-if-net-namespace-is-exiting.patch
rename to patches/kernel/0016-net-tcp-close-sock-if-net-namespace-is-exiting.patch
diff --git a/patches/kernel/0017-i40e-Fix-memory-leak-related-filter-programming-stat.patch b/patches/kernel/0017-i40e-Fix-memory-leak-related-filter-programming-stat.patch
deleted file mode 100644
index e318a18..0000000
--- a/patches/kernel/0017-i40e-Fix-memory-leak-related-filter-programming-stat.patch
+++ /dev/null
@@ -1,127 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Alexander Duyck <alexander.h.duyck at intel.com>
-Date: Wed, 4 Oct 2017 08:44:43 -0700
-Subject: [PATCH] i40e: Fix memory leak related filter programming status
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-It looks like we weren't correctly placing the pages from buffers that had
-been used to return a filter programming status back on the ring. As a
-result they were being overwritten and tracking of the pages was lost.
-
-This change works to correct that by incorporating part of
-i40e_put_rx_buffer into the programming status handler code. As a result we
-should now be correctly placing the pages for those buffers on the
-re-allocation list instead of letting them stay in place.
-
-Fixes: 0e626ff7ccbf ("i40e: Fix support for flow director programming status")
-Reported-by: Anders K. Pedersen <akp at cohaesio.com>
-Signed-off-by: Alexander Duyck <alexander.h.duyck at intel.com>
-Tested-by: Anders K Pedersen <akp at cohaesio.com>
-Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher at intel.com>
-(cherry picked from commit 2b9478ffc550f17c6cd8c69057234e91150f5972)
-Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>
----
- drivers/net/ethernet/intel/i40e/i40e_txrx.c | 63 ++++++++++++++++-------------
- 1 file changed, 36 insertions(+), 27 deletions(-)
-
-diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
-index 2194960d5855..391b1878c24b 100644
---- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
-+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
-@@ -1042,6 +1042,32 @@ static bool i40e_set_new_dynamic_itr(struct i40e_ring_container *rc)
- 	return false;
- }
- 
-+/**
-+ * i40e_reuse_rx_page - page flip buffer and store it back on the ring
-+ * @rx_ring: rx descriptor ring to store buffers on
-+ * @old_buff: donor buffer to have page reused
-+ *
-+ * Synchronizes page for reuse by the adapter
-+ **/
-+static void i40e_reuse_rx_page(struct i40e_ring *rx_ring,
-+			       struct i40e_rx_buffer *old_buff)
-+{
-+	struct i40e_rx_buffer *new_buff;
-+	u16 nta = rx_ring->next_to_alloc;
-+
-+	new_buff = &rx_ring->rx_bi[nta];
-+
-+	/* update, and store next to alloc */
-+	nta++;
-+	rx_ring->next_to_alloc = (nta < rx_ring->count) ? nta : 0;
-+
-+	/* transfer page from old buffer to new buffer */
-+	new_buff->dma		= old_buff->dma;
-+	new_buff->page		= old_buff->page;
-+	new_buff->page_offset	= old_buff->page_offset;
-+	new_buff->pagecnt_bias	= old_buff->pagecnt_bias;
-+}
-+
- /**
-  * i40e_rx_is_programming_status - check for programming status descriptor
-  * @qw: qword representing status_error_len in CPU ordering
-@@ -1076,15 +1102,24 @@ static void i40e_clean_programming_status(struct i40e_ring *rx_ring,
- 					  union i40e_rx_desc *rx_desc,
- 					  u64 qw)
- {
--	u32 ntc = rx_ring->next_to_clean + 1;
-+	struct i40e_rx_buffer *rx_buffer;
-+	u32 ntc = rx_ring->next_to_clean;
- 	u8 id;
- 
- 	/* fetch, update, and store next to clean */
-+	rx_buffer = &rx_ring->rx_bi[ntc++];
- 	ntc = (ntc < rx_ring->count) ? ntc : 0;
- 	rx_ring->next_to_clean = ntc;
- 
- 	prefetch(I40E_RX_DESC(rx_ring, ntc));
- 
-+	/* place unused page back on the ring */
-+	i40e_reuse_rx_page(rx_ring, rx_buffer);
-+	rx_ring->rx_stats.page_reuse_count++;
-+
-+	/* clear contents of buffer_info */
-+	rx_buffer->page = NULL;
-+
- 	id = (qw & I40E_RX_PROG_STATUS_DESC_QW1_PROGID_MASK) >>
- 		  I40E_RX_PROG_STATUS_DESC_QW1_PROGID_SHIFT;
- 
-@@ -1643,32 +1678,6 @@ static bool i40e_cleanup_headers(struct i40e_ring *rx_ring, struct sk_buff *skb,
- 	return false;
- }
- 
--/**
-- * i40e_reuse_rx_page - page flip buffer and store it back on the ring
-- * @rx_ring: rx descriptor ring to store buffers on
-- * @old_buff: donor buffer to have page reused
-- *
-- * Synchronizes page for reuse by the adapter
-- **/
--static void i40e_reuse_rx_page(struct i40e_ring *rx_ring,
--			       struct i40e_rx_buffer *old_buff)
--{
--	struct i40e_rx_buffer *new_buff;
--	u16 nta = rx_ring->next_to_alloc;
--
--	new_buff = &rx_ring->rx_bi[nta];
--
--	/* update, and store next to alloc */
--	nta++;
--	rx_ring->next_to_alloc = (nta < rx_ring->count) ? nta : 0;
--
--	/* transfer page from old buffer to new buffer */
--	new_buff->dma		= old_buff->dma;
--	new_buff->page		= old_buff->page;
--	new_buff->page_offset	= old_buff->page_offset;
--	new_buff->pagecnt_bias	= old_buff->pagecnt_bias;
--}
--
- /**
-  * i40e_page_is_reusable - check if any reuse is possible
-  * @page: page struct to check
--- 
-2.14.2
-
diff --git a/patches/kernel/0025-sctp-fix-dst-refcnt-leak-in-sctp_v4_get_dst.patch b/patches/kernel/0017-sctp-fix-dst-refcnt-leak-in-sctp_v4_get_dst.patch
similarity index 100%
rename from patches/kernel/0025-sctp-fix-dst-refcnt-leak-in-sctp_v4_get_dst.patch
rename to patches/kernel/0017-sctp-fix-dst-refcnt-leak-in-sctp_v4_get_dst.patch
diff --git a/patches/kernel/0026-sctp-fix-dst-refcnt-leak-in-sctp_v6_get_dst.patch b/patches/kernel/0018-sctp-fix-dst-refcnt-leak-in-sctp_v6_get_dst.patch
similarity index 98%
rename from patches/kernel/0026-sctp-fix-dst-refcnt-leak-in-sctp_v6_get_dst.patch
rename to patches/kernel/0018-sctp-fix-dst-refcnt-leak-in-sctp_v6_get_dst.patch
index 58087ed..e6de54a 100644
--- a/patches/kernel/0026-sctp-fix-dst-refcnt-leak-in-sctp_v6_get_dst.patch
+++ b/patches/kernel/0018-sctp-fix-dst-refcnt-leak-in-sctp_v6_get_dst.patch
@@ -27,7 +27,7 @@ Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>
  1 file changed, 7 insertions(+), 3 deletions(-)
 
 diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c
-index a4b6ffb61495..c5a5ad8ac00f 100644
+index edb462b0b73b..e626d72868fe 100644
 --- a/net/sctp/ipv6.c
 +++ b/net/sctp/ipv6.c
 @@ -326,8 +326,10 @@ static void sctp_v6_get_dst(struct sctp_transport *t, union sctp_addr *saddr,
diff --git a/patches/kernel/0019-EDAC-sb_edac-Don-t-create-a-second-memory-controller.patch b/patches/kernel/0019-EDAC-sb_edac-Don-t-create-a-second-memory-controller.patch
deleted file mode 100644
index 4272010..0000000
--- a/patches/kernel/0019-EDAC-sb_edac-Don-t-create-a-second-memory-controller.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Qiuxu Zhuo <qiuxu.zhuo at intel.com>
-Date: Wed, 13 Sep 2017 18:42:14 +0800
-Subject: [PATCH] EDAC, sb_edac: Don't create a second memory controller if HA1
- is not present
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Yi Zhang reported the following failure on a 2-socket Haswell (E5-2603v3)
-server (DELL PowerEdge 730xd):
-
-  EDAC sbridge: Some needed devices are missing
-  EDAC MC: Removed device 0 for sb_edac.c Haswell SrcID#0_Ha#0: DEV 0000:7f:12.0
-  EDAC MC: Removed device 1 for sb_edac.c Haswell SrcID#1_Ha#0: DEV 0000:ff:12.0
-  EDAC sbridge: Couldn't find mci handler
-  EDAC sbridge: Couldn't find mci handler
-  EDAC sbridge: Failed to register device with error -19.
-
-The refactored sb_edac driver creates the IMC1 (the 2nd memory
-controller) if any IMC1 device is present. In this case only
-HA1_TA of IMC1 was present, but the driver expected to find
-HA1/HA1_TM/HA1_TAD[0-3] devices too, leading to the above failure.
-
-The document [1] says the 'E5-2603 v3' CPU has 4 memory channels max. Yi
-Zhang inserted one DIMM per channel for each CPU, and did random error
-address injection test with this patch:
-
-      4024  addresses fell in TOLM hole area
-     12715  addresses fell in CPU_SrcID#0_Ha#0_Chan#0_DIMM#0
-     12774  addresses fell in CPU_SrcID#0_Ha#0_Chan#1_DIMM#0
-     12798  addresses fell in CPU_SrcID#0_Ha#0_Chan#2_DIMM#0
-     12913  addresses fell in CPU_SrcID#0_Ha#0_Chan#3_DIMM#0
-     12674  addresses fell in CPU_SrcID#1_Ha#0_Chan#0_DIMM#0
-     12686  addresses fell in CPU_SrcID#1_Ha#0_Chan#1_DIMM#0
-     12882  addresses fell in CPU_SrcID#1_Ha#0_Chan#2_DIMM#0
-     12934  addresses fell in CPU_SrcID#1_Ha#0_Chan#3_DIMM#0
-    106400  addresses were injected totally.
-
-The test result shows that all the 4 channels belong to IMC0 per CPU, so
-the server really only has one IMC per CPU.
-
-In the 1st page of chapter 2 in datasheet [2], it also says 'E5-2600 v3'
-implements either one or two IMCs. For CPUs with one IMC, IMC1 is not
-used and should be ignored.
-
-Thus, do not create a second memory controller if the key HA1 is absent.
-
-[1] http://ark.intel.com/products/83349/Intel-Xeon-Processor-E5-2603-v3-15M-Cache-1_60-GHz
-[2] https://www.intel.com/content/dam/www/public/us/en/documents/datasheets/xeon-e5-v3-datasheet-vol-2.pdf
-
-Reported-and-tested-by: Yi Zhang <yizhan at redhat.com>
-Signed-off-by: Qiuxu Zhuo <qiuxu.zhuo at intel.com>
-Cc: Tony Luck <tony.luck at intel.com>
-Cc: linux-edac <linux-edac at vger.kernel.org>
-Fixes: e2f747b1f42a ("EDAC, sb_edac: Assign EDAC memory controller per h/w controller")
-Link: http://lkml.kernel.org/r/20170913104214.7325-1-qiuxu.zhuo@intel.com
-[ Massage commit message. ]
-Signed-off-by: Borislav Petkov <bp at suse.de>
-(cherry picked from commit 15cc3ae001873845b5d842e212478a6570c7d938)
-Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>
----
- drivers/edac/sb_edac.c | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c
-index 80d860cb0746..7a3b201d51df 100644
---- a/drivers/edac/sb_edac.c
-+++ b/drivers/edac/sb_edac.c
-@@ -455,6 +455,7 @@ static const struct pci_id_table pci_dev_descr_sbridge_table[] = {
- static const struct pci_id_descr pci_dev_descr_ibridge[] = {
- 		/* Processor Home Agent */
- 	{ PCI_DESCR(PCI_DEVICE_ID_INTEL_IBRIDGE_IMC_HA0,        0, IMC0) },
-+	{ PCI_DESCR(PCI_DEVICE_ID_INTEL_IBRIDGE_IMC_HA1,        1, IMC1) },
- 
- 		/* Memory controller */
- 	{ PCI_DESCR(PCI_DEVICE_ID_INTEL_IBRIDGE_IMC_HA0_TA,     0, IMC0) },
-@@ -465,7 +466,6 @@ static const struct pci_id_descr pci_dev_descr_ibridge[] = {
- 	{ PCI_DESCR(PCI_DEVICE_ID_INTEL_IBRIDGE_IMC_HA0_TAD3,   0, IMC0) },
- 
- 		/* Optional, mode 2HA */
--	{ PCI_DESCR(PCI_DEVICE_ID_INTEL_IBRIDGE_IMC_HA1,        1, IMC1) },
- 	{ PCI_DESCR(PCI_DEVICE_ID_INTEL_IBRIDGE_IMC_HA1_TA,     1, IMC1) },
- 	{ PCI_DESCR(PCI_DEVICE_ID_INTEL_IBRIDGE_IMC_HA1_RAS,    1, IMC1) },
- 	{ PCI_DESCR(PCI_DEVICE_ID_INTEL_IBRIDGE_IMC_HA1_TAD0,   1, IMC1) },
-@@ -2260,6 +2260,13 @@ static int sbridge_get_onedevice(struct pci_dev **prev,
- next_imc:
- 	sbridge_dev = get_sbridge_dev(bus, dev_descr->dom, multi_bus, sbridge_dev);
- 	if (!sbridge_dev) {
-+		/* If the HA1 wasn't found, don't create EDAC second memory controller */
-+		if (dev_descr->dom == IMC1 && devno != 1) {
-+			edac_dbg(0, "Skip IMC1: %04x:%04x (since HA1 was absent)\n",
-+				 PCI_VENDOR_ID_INTEL, dev_descr->dev_id);
-+			pci_dev_put(pdev);
-+			return 0;
-+		}
- 
- 		if (dev_descr->dom == SOCK)
- 			goto out_imc;
--- 
-2.14.2
-
diff --git a/patches/kernel/0027-lockd-lost-rollback-of-set_grace_period-in-lockd_dow.patch b/patches/kernel/0019-lockd-lost-rollback-of-set_grace_period-in-lockd_dow.patch
similarity index 100%
rename from patches/kernel/0027-lockd-lost-rollback-of-set_grace_period-in-lockd_dow.patch
rename to patches/kernel/0019-lockd-lost-rollback-of-set_grace_period-in-lockd_dow.patch
diff --git a/patches/kernel/0028-ocfs2-make-metadata-estimation-accurate-and-clear.patch b/patches/kernel/0020-ocfs2-make-metadata-estimation-accurate-and-clear.patch
similarity index 100%
rename from patches/kernel/0028-ocfs2-make-metadata-estimation-accurate-and-clear.patch
rename to patches/kernel/0020-ocfs2-make-metadata-estimation-accurate-and-clear.patch
diff --git a/patches/kernel/0029-ocfs2-try-to-reuse-extent-block-in-dealloc-without-m.patch b/patches/kernel/0021-ocfs2-try-to-reuse-extent-block-in-dealloc-without-m.patch
similarity index 100%
rename from patches/kernel/0029-ocfs2-try-to-reuse-extent-block-in-dealloc-without-m.patch
rename to patches/kernel/0021-ocfs2-try-to-reuse-extent-block-in-dealloc-without-m.patch
diff --git a/patches/kernel/0021-scsi-lpfc-Fix-loop-mode-target-discovery.patch b/patches/kernel/0021-scsi-lpfc-Fix-loop-mode-target-discovery.patch
deleted file mode 100644
index 4f7bf71..0000000
--- a/patches/kernel/0021-scsi-lpfc-Fix-loop-mode-target-discovery.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Dick Kennedy <dick.kennedy at broadcom.com>
-Date: Wed, 23 Aug 2017 16:55:31 -0700
-Subject: [PATCH] scsi: lpfc: Fix loop mode target discovery
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The driver does not discover targets when in loop mode.
-
-The NLP type is correctly getting set when a fabric connection is
-detected but, not for loop. The unknown NLP type means that the driver
-does not issue a PRLI when in loop topology. Thus target discovery
-fails.
-
-Fix by checking the topology during discovery.  If it is loop, set the
-NLP FC4 type to FCP.
-
-Signed-off-by: Dick Kennedy <dick.kennedy at broadcom.com>
-Signed-off-by: James Smart <james.smart at broadcom.com>
-Reviewed-by: Johannes Thumshirn <jthumshirn at suse.de>
-Signed-off-by: Martin K. Petersen <martin.petersen at oracle.com>
-(cherry picked from commit 2877cbffb79ed121a6bcc5edbe629d3aba36cd29)
-Signed-off-by: Fabian Grünbichler <f.gruenbichler at proxmox.com>
----
- drivers/scsi/lpfc/lpfc_nportdisc.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/drivers/scsi/lpfc/lpfc_nportdisc.c b/drivers/scsi/lpfc/lpfc_nportdisc.c
-index f74cb0142fd4..95b2b43ac37d 100644
---- a/drivers/scsi/lpfc/lpfc_nportdisc.c
-+++ b/drivers/scsi/lpfc/lpfc_nportdisc.c
-@@ -1724,6 +1724,9 @@ lpfc_cmpl_reglogin_reglogin_issue(struct lpfc_vport *vport,
- 				lpfc_nvme_update_localport(vport);
- 			}
- 
-+		} else if (phba->fc_topology == LPFC_TOPOLOGY_LOOP) {
-+			ndlp->nlp_fc4_type |= NLP_FC4_FCP;
-+
- 		} else if (ndlp->nlp_fc4_type == 0) {
- 			rc = lpfc_ns_cmd(vport, SLI_CTNS_GFT_ID,
- 					 0, ndlp->nlp_DID);
--- 
-2.14.2
-
-- 
2.14.2





More information about the pve-devel mailing list