$ git diff --patch-with-stat --summary 92596fa0e5640a055eb9d3333161fa2d363dd38d..a99bbf1b294c50d94613ac972c096a61330c9b8b
.abf.yml | 2 +-
...Kconfig-option-to-skip-raid6-benchmarking.patch | 14 +-
0121-use-lfence-instead-of-rep-and-nop.patch | 25 ++++
...accept-in-LIFO-order-for-cache-efficiency.patch | 89 ++++++++++++
0123-locking-rwsem-spin-faster.patch | 35 +++++
0124-ata-libahci-ignore-staggered-spin-up.patch | 42 ++++++
0131-overload-on-wakeup.patch | 61 ++++++++
common.config | 3 +
kernel-release-clang.spec | 26 ++--
uksm-5.6.patch | 2 +-
vbox-kernel-5.6.patch | 154 ---------------------
virtualbox-kernel-5.3.patch | 61 --------
x86_64-common.config | 1 +
13 files changed, 273 insertions(+), 242 deletions(-)
create mode 100644 0121-use-lfence-instead-of-rep-and-nop.patch
create mode 100644 0122-do-accept-in-LIFO-order-for-cache-efficiency.patch
create mode 100644 0123-locking-rwsem-spin-faster.patch
create mode 100644 0124-ata-libahci-ignore-staggered-spin-up.patch
create mode 100644 0131-overload-on-wakeup.patch
delete mode 100644 vbox-kernel-5.6.patch
delete mode 100644 virtualbox-kernel-5.3.patch
diff --git a/.abf.yml b/.abf.yml
index 7094d50..f9df032 100644
--- a/.abf.yml
+++ b/.abf.yml
@@ -3,4 +3,4 @@ sources:
linux-5.6.tar.xz: 3957d9d71454c26048ce4c71774d21386ac72be6
saa716x-driver.tar.xz: f9b6ef1cd6f1f71f53d9a8aadfba2cf6b5c3d7b6
extra-wifi-drivers-20200301.tar.zst: 3390c738c7d91250714ce0f88d26371e93bc40b8
- patch-5.6.6.xz: 46530795bd45ac3ebd9ab44a3aad4a74ead4ed48
+ patch-5.6.13.xz: cb45cfd067067ee034a332e871b9ae5483e5922e
diff --git a/0109-raid6-add-Kconfig-option-to-skip-raid6-benchmarking.patch b/0109-raid6-add-Kconfig-option-to-skip-raid6-benchmarking.patch
index efe5e9d..600f5bb 100644
--- a/0109-raid6-add-Kconfig-option-to-skip-raid6-benchmarking.patch
+++ b/0109-raid6-add-Kconfig-option-to-skip-raid6-benchmarking.patch
@@ -18,7 +18,7 @@ Signed-off-by: Jim Kukunas <james.t.kukunas@linux.intel.com>
create mode 100644 lib/raid6/Kconfig
diff --git a/lib/Kconfig b/lib/Kconfig
-index 90623a0e1942..7678577daaf4 100644
+index bc7e563..ae9a695 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -8,8 +8,7 @@ config BINARY_PRINTF
@@ -33,7 +33,7 @@ index 90623a0e1942..7678577daaf4 100644
bool "Automatically choose fastest RAID6 PQ functions"
diff --git a/lib/raid6/Kconfig b/lib/raid6/Kconfig
new file mode 100644
-index 000000000000..d881d6be89bb
+index 0000000..d881d6b
--- /dev/null
+++ b/lib/raid6/Kconfig
@@ -0,0 +1,38 @@
@@ -76,12 +76,12 @@ index 000000000000..d881d6be89bb
+
+endmenu
diff --git a/lib/raid6/algos.c b/lib/raid6/algos.c
-index 17417eee0866..8af3d7c737c1 100644
+index bf1b476..098fdad 100644
--- a/lib/raid6/algos.c
+++ b/lib/raid6/algos.c
-@@ -124,6 +124,63 @@ const struct raid6_recov_calls *const raid6_recov_algos[] = {
- #define time_before(x, y) ((x) < (y))
- #endif
+@@ -127,6 +127,63 @@ const struct raid6_recov_calls *const raid6_recov_algos[] = {
+ #define RAID6_TEST_DISKS 8
+ #define RAID6_TEST_DISKS_ORDER 3
+#ifdef CONFIG_RAID6_FORCE_ALGO
+/* TODO don't compile in algos that will never be used */
@@ -143,7 +143,7 @@ index 17417eee0866..8af3d7c737c1 100644
static inline const struct raid6_recov_calls *raid6_choose_recov(void)
{
const struct raid6_recov_calls *const *algo;
-@@ -260,6 +317,7 @@ int __init raid6_select_algo(void)
+@@ -277,6 +334,7 @@ int __init raid6_select_algo(void)
return gen_best && rec_best ? 0 : -EINVAL;
}
diff --git a/0121-use-lfence-instead-of-rep-and-nop.patch b/0121-use-lfence-instead-of-rep-and-nop.patch
new file mode 100644
index 0000000..9027bca
--- /dev/null
+++ b/0121-use-lfence-instead-of-rep-and-nop.patch
@@ -0,0 +1,25 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan@linux.intel.com>
+Date: Sat, 8 Dec 2018 18:21:32 +0000
+Subject: [PATCH] use lfence instead of rep and nop
+
+---
+ arch/x86/include/asm/processor.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
+index 09705cc..2e4e588 100644
+--- a/arch/x86/include/asm/processor.h
++++ b/arch/x86/include/asm/processor.h
+@@ -680,7 +680,7 @@ static inline unsigned int cpuid_edx(unsigned int op)
+ /* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */
+ static __always_inline void rep_nop(void)
+ {
+- asm volatile("rep; nop" ::: "memory");
++ asm volatile("lfence" ::: "memory");
+ }
+
+ static __always_inline void cpu_relax(void)
+--
+https://clearlinux.org
+
diff --git a/0122-do-accept-in-LIFO-order-for-cache-efficiency.patch b/0122-do-accept-in-LIFO-order-for-cache-efficiency.patch
new file mode 100644
index 0000000..69e4ca2
--- /dev/null
+++ b/0122-do-accept-in-LIFO-order-for-cache-efficiency.patch
@@ -0,0 +1,89 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan@linux.intel.com>
+Date: Thu, 13 Dec 2018 01:00:49 +0000
+Subject: [PATCH] do accept() in LIFO order for cache efficiency
+
+---
+ include/linux/wait.h | 2 ++
+ kernel/sched/wait.c | 24 ++++++++++++++++++++++++
+ net/ipv4/inet_connection_sock.c | 2 +-
+ 3 files changed, 27 insertions(+), 1 deletion(-)
+
+diff --git a/include/linux/wait.h b/include/linux/wait.h
+index 3283c8d..2cc18fd 100644
+--- a/include/linux/wait.h
++++ b/include/linux/wait.h
+@@ -162,6 +162,7 @@ static inline bool wq_has_sleeper(struct wait_queue_head *wq_head)
+
+ extern void add_wait_queue(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);
+ extern void add_wait_queue_exclusive(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);
++extern void add_wait_queue_exclusive_lifo(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);
+ extern void remove_wait_queue(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);
+
+ static inline void __add_wait_queue(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry)
+@@ -1125,6 +1126,7 @@ do { \
+ */
+ void prepare_to_wait(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state);
+ void prepare_to_wait_exclusive(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state);
++void prepare_to_wait_exclusive_lifo(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state);
+ long prepare_to_wait_event(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state);
+ void finish_wait(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry);
+ long wait_woken(struct wait_queue_entry *wq_entry, unsigned mode, long timeout);
+diff --git a/kernel/sched/wait.c b/kernel/sched/wait.c
+index ba059fb..5f26ae9 100644
+--- a/kernel/sched/wait.c
++++ b/kernel/sched/wait.c
+@@ -37,6 +37,17 @@ void add_wait_queue_exclusive(struct wait_queue_head *wq_head, struct wait_queue
+ }
+ EXPORT_SYMBOL(add_wait_queue_exclusive);
+
++void add_wait_queue_exclusive_lifo(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry)
++{
++ unsigned long flags;
++
++ wq_entry->flags |= WQ_FLAG_EXCLUSIVE;
++ spin_lock_irqsave(&wq_head->lock, flags);
++ __add_wait_queue(wq_head, wq_entry);
++ spin_unlock_irqrestore(&wq_head->lock, flags);
++}
++EXPORT_SYMBOL(add_wait_queue_exclusive_lifo);
++
+ void remove_wait_queue(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry)
+ {
+ unsigned long flags;
+@@ -263,6 +274,19 @@ prepare_to_wait_exclusive(struct wait_queue_head *wq_head, struct wait_queue_ent
+ }
+ EXPORT_SYMBOL(prepare_to_wait_exclusive);
+
++void prepare_to_wait_exclusive_lifo(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state)
++{
++ unsigned long flags;
++
++ wq_entry->flags |= WQ_FLAG_EXCLUSIVE;
++ spin_lock_irqsave(&wq_head->lock, flags);
++ if (list_empty(&wq_entry->entry))
++ __add_wait_queue(wq_head, wq_entry);
++ set_current_state(state);
++ spin_unlock_irqrestore(&wq_head->lock, flags);
++}
++EXPORT_SYMBOL(prepare_to_wait_exclusive_lifo);
++
+ void init_wait_entry(struct wait_queue_entry *wq_entry, int flags)
+ {
+ wq_entry->flags = flags;
+diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c
+index d545fb9..03b7b40 100644
+--- a/net/ipv4/inet_connection_sock.c
++++ b/net/ipv4/inet_connection_sock.c
+@@ -407,7 +407,7 @@ static int inet_csk_wait_for_connect(struct sock *sk, long timeo)
+ * having to remove and re-insert us on the wait queue.
+ */
+ for (;;) {
+- prepare_to_wait_exclusive(sk_sleep(sk), &wait,
++ prepare_to_wait_exclusive_lifo(sk_sleep(sk), &wait,
+ TASK_INTERRUPTIBLE);
+ release_sock(sk);
+ if (reqsk_queue_empty(&icsk->icsk_accept_queue))
+--
+https://clearlinux.org
+
diff --git a/0123-locking-rwsem-spin-faster.patch b/0123-locking-rwsem-spin-faster.patch
new file mode 100644
index 0000000..79f8bf7
--- /dev/null
+++ b/0123-locking-rwsem-spin-faster.patch
@@ -0,0 +1,35 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Arjan van de Ven <arjan@linux.intel.com>
+Date: Sun, 18 Feb 2018 23:35:41 +0000
+Subject: [PATCH] locking: rwsem: spin faster
+
+tweak rwsem owner spinning a bit
+---
+ kernel/locking/rwsem.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/kernel/locking/rwsem.c b/kernel/locking/rwsem.c
+index 0d9b6be..a2aad28 100644
+--- a/kernel/locking/rwsem.c
++++ b/kernel/locking/rwsem.c
+@@ -720,6 +720,7 @@ rwsem_spin_on_owner(struct rw_semaphore *sem, unsigned long nonspinnable)
+ struct task_struct *new, *owner;
+ unsigned long flags, new_flags;
+ enum owner_state state;
++ int i = 0;
+
+ owner = rwsem_owner_flags(sem, &flags);
+ state = rwsem_owner_state(owner, flags, nonspinnable);
+@@ -753,7 +754,8 @@ rwsem_spin_on_owner(struct rw_semaphore *sem, unsigned long nonspinnable)
+ break;
+ }
+
+- cpu_relax();
++ if (i++ > 1000)
++ cpu_relax();
+ }
+ rcu_read_unlock();
+
+--
+https://clearlinux.org
+
diff --git a/0124-ata-libahci-ignore-staggered-spin-up.patch b/0124-ata-libahci-ignore-staggered-spin-up.patch
new file mode 100644
index 0000000..71cc94a
--- /dev/null
+++ b/0124-ata-libahci-ignore-staggered-spin-up.patch
@@ -0,0 +1,42 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Joe Konno <joe.konno@intel.com>
+Date: Tue, 25 Jun 2019 10:35:54 -0700
+Subject: [PATCH] ata: libahci: ignore staggered spin-up
+
+Change libahci to ignore firmware's staggered spin-up flag. End-users
+who wish to honor firmware's SSS flag can add the following kernel
+parameter to a new file at /etc/kernel/cmdline.d/ignore_sss.conf:
+ libahci.ignore_sss=0
+
+And then run
+ sudo clr-boot-manager update
+
+Signed-off-by: Joe Konno <joe.konno@intel.com>
+---
+ drivers/ata/libahci.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
+index ea5bf5f..6adee9c 100644
+--- a/drivers/ata/libahci.c
++++ b/drivers/ata/libahci.c
+@@ -33,14 +33,14 @@
+ #include "libata.h"
+
+ static int ahci_skip_host_reset;
+-int ahci_ignore_sss;
++int ahci_ignore_sss=1;
+ EXPORT_SYMBOL_GPL(ahci_ignore_sss);
+
+ module_param_named(skip_host_reset, ahci_skip_host_reset, int, 0444);
+ MODULE_PARM_DESC(skip_host_reset, "skip global host reset (0=don't skip, 1=skip)");
+
+ module_param_named(ignore_sss, ahci_ignore_sss, int, 0444);
+-MODULE_PARM_DESC(ignore_sss, "Ignore staggered spinup flag (0=don't ignore, 1=ignore)");
++MODULE_PARM_DESC(ignore_sss, "Ignore staggered spinup flag (0=don't ignore, 1=ignore [default])");
+
+ static int ahci_set_lpm(struct ata_link *link, enum ata_lpm_policy policy,
+ unsigned hints);
+--
+https://clearlinux.org
+
diff --git a/0131-overload-on-wakeup.patch b/0131-overload-on-wakeup.patch
new file mode 100644
index 0000000..b9a0da4
--- /dev/null
+++ b/0131-overload-on-wakeup.patch
@@ -0,0 +1,61 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: jplozi <jplozi@unice.fr>
+Date: Thu, 16 Apr 2020 14:23:27 -0500
+Subject: [PATCH] overload on wakeup
+
+As an experiment, apply the learnings from the wasted-cores paper
+and see how the performance works out. With the data from this we should
+be able to work with Peter and the rest of the scheduler folks on
+a more permanent/elegant solution.
+
+Source: https://github.com/jplozi/wastedcores
+---
+ kernel/sched/fair.c | 28 ++++++++++++++++++++++++++++
+ 1 file changed, 28 insertions(+)
+
+diff -Naur a/kernel/sched/fair.c b/kernel/sched/fair.c
+--- a/kernel/sched/fair.c 2020-05-11 20:23:55.936777326 +0000
++++ b/kernel/sched/fair.c 2020-05-11 20:27:43.632807989 +0000
+@@ -6378,6 +6378,7 @@
+ return -1;
+ }
+
++static unsigned int once_in_a_while;
+ /*
+ * select_task_rq_fair: Select target runqueue for the waking task in domains
+ * that have the 'sd_flag' flag set. In practice, this is SD_BALANCE_WAKE,
+@@ -6414,6 +6415,32 @@
+ }
+
+ rcu_read_lock();
++
++ once_in_a_while++;
++
++ if (cpu_rq(prev_cpu)->nr_running || (once_in_a_while & 15) == 0) {
++ int _cpu;
++ int bestprio = -5000;
++ int bestcpu = -1;
++
++ for_each_online_cpu(_cpu) {
++ if (!cpumask_test_cpu(_cpu, p->cpus_ptr)
++ || cpu_rq(_cpu)->nr_running)
++ continue;
++ if (arch_asym_cpu_priority(_cpu) > bestprio
++ || (prev_cpu == _cpu
++ && bestprio == arch_asym_cpu_priority(_cpu))) {
++ bestcpu = _cpu;
++ bestprio = arch_asym_cpu_priority(_cpu);
++ }
++ }
++
++ if (bestcpu >= 0) {
++ rcu_read_unlock();
++ return bestcpu;
++ }
++ }
++
+ for_each_domain(cpu, tmp) {
+ if (!(tmp->flags & SD_LOAD_BALANCE))
+ break;
+--
+https://clearlinux.org
diff --git a/common.config b/common.config
index 7bde3e9..e3417ec 100644
--- a/common.config
+++ b/common.config
@@ -33,6 +33,7 @@ CONFIG_CGROUP_HUGETLB=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CGROUP_PERF=y
CONFIG_CGROUP_BPF=y
+CONFIG_CGROUP_FREEZER=y
# CONFIG_HAVE_GCC_PLUGINS is not set
# CONFIG_GCC_PLUGINS is not set
CONFIG_SOCK_CGROUP_DATA=y
@@ -404,6 +405,7 @@ CONFIG_TCP_CONG_YEAH=m
CONFIG_TCP_CONG_ILLINOIS=m
CONFIG_TCP_CONG_DCTCP=m
CONFIG_TCP_CONG_BBR=m
+CONFIG_MPTCP=y
CONFIG_IPV6=m
CONFIG_IPV6_ROUTER_PREF=y
CONFIG_IPV6_ROUTE_INFO=y
@@ -840,6 +842,7 @@ CONFIG_IEEE802154_SOCKET=m
CONFIG_IEEE802154_6LOWPAN=m
CONFIG_MAC802154=m
CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_ETS=m
CONFIG_NET_SCH_CAKE=m
CONFIG_NET_SCH_HTB=m
CONFIG_NET_SCH_HFSC=m
diff --git a/kernel-release-clang.spec b/kernel-release-clang.spec
index 45e4ed2..46a3a75 100644
--- a/kernel-release-clang.spec
+++ b/kernel-release-clang.spec
@@ -15,7 +15,7 @@
# compose tar.xz name and release
%define kernelversion 5
%define patchlevel 6
-%define sublevel 6
+%define sublevel 13
%define relc %{nil}
# Only ever wrong on x.0 releases...
%define previous %{kernelversion}.%(echo $((%{patchlevel}-1)))
@@ -118,13 +118,7 @@
%bcond_with build_cpupower
%endif
-# (tpg) Virtualbox module makes sens only on ix86 and x86_64
-# 2019-09-23
-# BUILDSTDERR: In file included from drivers/net/vboxnetadp/linux/VBoxNetAdp-linux.c:31:
-# BUILDSTDERR: drivers/net/vboxnetadp/r0drv/linux/the-linux-kernel.h:46:34: error: unknown warning group '-Wold-style-declaration', ignored [-Werror,-Wunknown-warning-option]
-# BUILDSTDERR: # pragma GCC diagnostic ignored "-Wold-style-declaration" /* 2.6.18-411.0.0.0.1.el5/build/include/asm/apic.h:110: warning: 'inline' is not at beginning of declaration [-Wold-style-declaration] */
-# BUILDSTDERR: ^
-# BUILDSTDERR: 1 error generated.
+# (tpg) Virtualbox module makes sense only on x86_64
%ifarch %{x86_64}
%bcond_without virtualbox
%else
@@ -257,7 +251,6 @@ Patch7: aacraid-dont-freak-out-dependency-generator.patch
%if %{with uksm}
Patch120: https://raw.githubusercontent.com/dolohow/uksm/master/v5.x/uksm-5.6.patch
%endif
-
%if %{with build_modzstd}
# https://lkml.org/lkml/2020/3/25/991
Patch126: v3-1-8-lib-prepare-zstd-for-preboot-environment.patch
@@ -302,7 +295,6 @@ Patch202: extra-wifi-drivers-port-to-5.6.patch
# VirtualBox patches -- added as Source: rather than Patch:
# because they need to be applied after stuff from the
# virtualbox-kernel-module-sources package is copied around
-Source300: vbox-kernel-5.6.patch
Source301: vbox-6.1-fix-build-on-znver1-hosts.patch
Source302: vbox-6.1.2-clang.patch
%endif
@@ -338,8 +330,7 @@ Patch405: 0107-intel_idle-tweak-cpuidle-cstates.patch
%ifarch %{ix86} %{x86_64}
Patch407: 0114-smpboot-reuse-timer-calibration.patch
%endif
-# waiting for rediff ?
-#Patch408: 0109-raid6-add-Kconfig-option-to-skip-raid6-benchmarking.patch
+Patch408: 0109-raid6-add-Kconfig-option-to-skip-raid6-benchmarking.patch
Patch409: 0116-Initialize-ata-before-graphics.patch
Patch410: 0119-e1000e-change-default-policy.patch
Patch411: 0112-give-rdrand-some-credit.patch
@@ -347,6 +338,11 @@ Patch412: 0120-ipv4-tcp-allow-the-memory-tuning-for-tcp-to-go-a-lit.patch
Patch413: 0124-kernel-time-reduce-ntp-wakeups.patch
Patch414: 0125-init-wait-for-partition-and-retry-scan.patch
Patch415: 0120-Migrate-some-systemd-defaults-to-the-kernel-defaults.patch
+Patch416: 0121-use-lfence-instead-of-rep-and-nop.patch
+Patch417: 0122-do-accept-in-LIFO-order-for-cache-efficiency.patch
+Patch418: 0123-locking-rwsem-spin-faster.patch
+Patch419: 0124-ata-libahci-ignore-staggered-spin-up.patch
+Patch420: 0131-overload-on-wakeup.patch
%endif
# (crazy) see: https://forum.openmandriva.org/t/nvme-ssd-m2-not-seen-by-omlx-4-0/2407
@@ -427,7 +423,6 @@ input and output, etc.
%define kconflicts4 dkms-nvidia-long-lived < 319.49-1
%define kconflicts5 dkms-nvidia304 < 304.108-1
# nvidia173 does not support this kernel
-
Autoreqprov: no
%if %{with build_modzstd}
BuildRequires: zstd
@@ -849,11 +844,7 @@ cp %{S:6} %{S:7} %{S:8} %{S:9} %{S:10} %{S:11} %{S:12} %{S:13} kernel/configs/
xzcat %{SOURCE90} |git apply - || git apply %{SOURCE90}
rm -rf .git
%endif
-%if %mdvver > 3000000
%autopatch -p1
-%else
-%apply_patches
-%endif
# merge SAA716x DVB driver from extra tarball
sed -i -e '/saa7164/isource "drivers/media/pci/saa716x/Kconfig"' drivers/media/pci/Kconfig
@@ -936,7 +927,6 @@ cp -a $(ls --sort=time -1d /usr/src/virtualbox-*|head -n1)/vboxpci drivers/pci/
sed -i -e 's,\$(KBUILD_EXTMOD),drivers/pci/vboxpci,g' drivers/pci/vboxpci/Makefile*
sed -i -e "s,^KERN_DIR.*,KERN_DIR := $(pwd)," drivers/pci/vboxpci/Makefile*
echo 'obj-m += vboxpci/' >>drivers/pci/Makefile
-patch -p1 -z .300a~ -b <%{S:300}
patch -p1 -z .301a~ -b <%{S:301}
patch -p1 -z .302a~ -b <%{S:302}
%endif
diff --git a/uksm-5.6.patch b/uksm-5.6.patch
index 0fbc88d..bdb5637 100644
--- a/uksm-5.6.patch
+++ b/uksm-5.6.patch
@@ -80,7 +80,7 @@ index db17be51b112..0ce4c6303f53 100644
@@ -1387,6 +1388,7 @@ void setup_new_exec(struct linux_binprm * bprm)
/* An exec changes our domain. We are no longer part of the thread
group */
- current->self_exec_id++;
+ WRITE_ONCE(current->self_exec_id, current->self_exec_id + 1);
+
flush_signal_handlers(current, 0);
}
diff --git a/vbox-kernel-5.6.patch b/vbox-kernel-5.6.patch
deleted file mode 100644
index 9b1a919..0000000
--- a/vbox-kernel-5.6.patch
+++ /dev/null
@@ -1,154 +0,0 @@
-diff -up linux-5.6-rc4/drivers/net/vboxnetadp/include/iprt/time.h.302a~ linux-5.6-rc4/drivers/net/vboxnetadp/include/iprt/time.h
---- linux-5.6-rc4/drivers/net/vboxnetadp/include/iprt/time.h.302a~ 2020-01-13 11:44:20.000000000 +0100
-+++ linux-5.6-rc4/drivers/net/vboxnetadp/include/iprt/time.h 2020-03-03 04:29:44.706626571 +0100
-@@ -357,7 +357,7 @@ DECLINLINE(void) RTTimeSpecGetSecondsAnd
-
-
- /* PORTME: Add struct timeval guard macro here. */
--#if defined(RTTIME_INCL_TIMEVAL) || defined(_STRUCT_TIMEVAL) || defined(_SYS__TIMEVAL_H_) || defined(_SYS_TIME_H) || defined(_TIMEVAL) || defined(_LINUX_TIME_H) \
-+#if 0 && defined(RTTIME_INCL_TIMEVAL) || defined(_STRUCT_TIMEVAL) || defined(_SYS__TIMEVAL_H_) || defined(_SYS_TIME_H) || defined(_TIMEVAL) || defined(_LINUX_TIME_H) \
- || (defined(RT_OS_NETBSD) && defined(_SYS_TIME_H_))
- /**
- * Gets the time as POSIX timeval.
-@@ -433,7 +433,7 @@ DECLINLINE(PRTTIMESPEC) RTTimeSpecSetTim
- }
-
-
--# ifdef _LINUX_TIME64_H
-+# if 1 //def _LINUX_TIME64_H
- DECLINLINE(PRTTIMESPEC) RTTimeSpecSetTimespec64(PRTTIMESPEC pTime, const struct timespec64 *pTimeval)
- {
- return RTTimeSpecAddNano(RTTimeSpecSetSeconds(pTime, pTimeval->tv_sec), pTimeval->tv_nsec);
-diff -up linux-5.6-rc4/drivers/net/vboxnetflt/include/iprt/time.h.302a~ linux-5.6-rc4/drivers/net/vboxnetflt/include/iprt/time.h
---- linux-5.6-rc4/drivers/net/vboxnetflt/include/iprt/time.h.302a~ 2020-01-13 11:44:20.000000000 +0100
-+++ linux-5.6-rc4/drivers/net/vboxnetflt/include/iprt/time.h 2020-03-03 16:55:57.194735855 +0100
-@@ -357,8 +357,8 @@ DECLINLINE(void) RTTimeSpecGetSecondsAnd
-
-
- /* PORTME: Add struct timeval guard macro here. */
--#if defined(RTTIME_INCL_TIMEVAL) || defined(_STRUCT_TIMEVAL) || defined(_SYS__TIMEVAL_H_) || defined(_SYS_TIME_H) || defined(_TIMEVAL) || defined(_LINUX_TIME_H) \
-- || (defined(RT_OS_NETBSD) && defined(_SYS_TIME_H_))
-+#if 0 && (defined(RTTIME_INCL_TIMEVAL) || defined(_STRUCT_TIMEVAL) || defined(_SYS__TIMEVAL_H_) || defined(_SYS_TIME_H) || defined(_TIMEVAL) || defined(_LINUX_TIME_H) \
-+ || (defined(RT_OS_NETBSD) && defined(_SYS_TIME_H_)))
- /**
- * Gets the time as POSIX timeval.
- *
-@@ -433,7 +433,7 @@ DECLINLINE(PRTTIMESPEC) RTTimeSpecSetTim
- }
-
-
--# ifdef _LINUX_TIME64_H
-+# if 1 //def _LINUX_TIME64_H
- DECLINLINE(PRTTIMESPEC) RTTimeSpecSetTimespec64(PRTTIMESPEC pTime, const struct timespec64 *pTimeval)
- {
- return RTTimeSpecAddNano(RTTimeSpecSetSeconds(pTime, pTimeval->tv_sec), pTimeval->tv_nsec);
-diff -up linux-5.6-rc4/drivers/pci/vboxpci/include/iprt/time.h.302a~ linux-5.6-rc4/drivers/pci/vboxpci/include/iprt/time.h
---- linux-5.6-rc4/drivers/pci/vboxpci/include/iprt/time.h.302a~ 2020-01-13 11:44:20.000000000 +0100
-+++ linux-5.6-rc4/drivers/pci/vboxpci/include/iprt/time.h 2020-03-03 04:29:44.707626571 +0100
-@@ -357,7 +357,7 @@ DECLINLINE(void) RTTimeSpecGetSecondsAnd
-
-
- /* PORTME: Add struct timeval guard macro here. */
--#if defined(RTTIME_INCL_TIMEVAL) || defined(_STRUCT_TIMEVAL) || defined(_SYS__TIMEVAL_H_) || defined(_SYS_TIME_H) || defined(_TIMEVAL) || defined(_LINUX_TIME_H) \
-+#if 0 && defined(RTTIME_INCL_TIMEVAL) || defined(_STRUCT_TIMEVAL) || defined(_SYS__TIMEVAL_H_) || defined(_SYS_TIME_H) || defined(_TIMEVAL) || defined(_LINUX_TIME_H) \
- || (defined(RT_OS_NETBSD) && defined(_SYS_TIME_H_))
- /**
- * Gets the time as POSIX timeval.
-@@ -433,7 +433,7 @@ DECLINLINE(PRTTIMESPEC) RTTimeSpecSetTim
- }
-
-
--# ifdef _LINUX_TIME64_H
-+# if 1 //def _LINUX_TIME64_H
- DECLINLINE(PRTTIMESPEC) RTTimeSpecSetTimespec64(PRTTIMESPEC pTime, const struct timespec64 *pTimeval)
- {
- return RTTimeSpecAddNano(RTTimeSpecSetSeconds(pTime, pTimeval->tv_sec), pTimeval->tv_nsec);
-diff -up linux-5.6-rc4/drivers/pci/vboxpci/linux/VBoxPci-linux.c.302a~ linux-5.6-rc4/drivers/pci/vboxpci/linux/VBoxPci-linux.c
---- linux-5.6-rc4/drivers/pci/vboxpci/linux/VBoxPci-linux.c.302a~ 2020-01-13 11:53:40.000000000 +0100
-+++ linux-5.6-rc4/drivers/pci/vboxpci/linux/VBoxPci-linux.c 2020-03-03 04:29:44.705626571 +0100
-@@ -843,8 +843,8 @@ DECLHIDDEN(int) vboxPciOsDevMapRegion(PV
- if (!rcLnx)
- {
- /* For now no caching, try to optimize later. */
-- RTR0PTR R0PtrMapping = ioremap_nocache(pci_resource_start(pPciDev, iRegion),
-- pci_resource_len(pPciDev, iRegion));
-+ RTR0PTR R0PtrMapping = ioremap(pci_resource_start(pPciDev, iRegion),
-+ pci_resource_len(pPciDev, iRegion));
-
- if (R0PtrMapping != NIL_RTR0PTR)
- pIns->aRegionR0Mapping[iRegion] = R0PtrMapping;
-diff -up linux-5.6-rc4/drivers/virt/vboxdrv/include/iprt/time.h.302a~ linux-5.6-rc4/drivers/virt/vboxdrv/include/iprt/time.h
---- linux-5.6-rc4/drivers/virt/vboxdrv/include/iprt/time.h.302a~ 2020-01-13 11:44:20.000000000 +0100
-+++ linux-5.6-rc4/drivers/virt/vboxdrv/include/iprt/time.h 2020-03-03 17:07:41.953706093 +0100
-@@ -357,8 +357,8 @@ DECLINLINE(void) RTTimeSpecGetSecondsAnd
-
-
- /* PORTME: Add struct timeval guard macro here. */
--#if defined(RTTIME_INCL_TIMEVAL) || defined(_STRUCT_TIMEVAL) || defined(_SYS__TIMEVAL_H_) || defined(_SYS_TIME_H) || defined(_TIMEVAL) || defined(_LINUX_TIME_H) \
-- || (defined(RT_OS_NETBSD) && defined(_SYS_TIME_H_))
-+#if 0 && (defined(RTTIME_INCL_TIMEVAL) || defined(_STRUCT_TIMEVAL) || defined(_SYS__TIMEVAL_H_) || defined(_SYS_TIME_H) || defined(_TIMEVAL) || defined(_LINUX_TIME_H) \
-+ || (defined(RT_OS_NETBSD) && defined(_SYS_TIME_H_)))
- /**
- * Gets the time as POSIX timeval.
- *
-@@ -433,7 +433,7 @@ DECLINLINE(PRTTIMESPEC) RTTimeSpecSetTim
- }
-
-
--# ifdef _LINUX_TIME64_H
-+# if 1 //def _LINUX_TIME64_H
- DECLINLINE(PRTTIMESPEC) RTTimeSpecSetTimespec64(PRTTIMESPEC pTime, const struct timespec64 *pTimeval)
- {
- return RTTimeSpecAddNano(RTTimeSpecSetSeconds(pTime, pTimeval->tv_sec), pTimeval->tv_nsec);
-diff -up linux-5.6-rc4/drivers/virt/vboxdrv/r0drv/linux/memobj-r0drv-linux.c.302a~ linux-5.6-rc4/drivers/virt/vboxdrv/r0drv/linux/memobj-r0drv-linux.c
---- linux-5.6-rc4/drivers/virt/vboxdrv/r0drv/linux/memobj-r0drv-linux.c.302a~ 2020-01-13 11:54:19.000000000 +0100
-+++ linux-5.6-rc4/drivers/virt/vboxdrv/r0drv/linux/memobj-r0drv-linux.c 2020-03-03 04:29:44.705626571 +0100
-@@ -1461,9 +1461,7 @@ DECLHIDDEN(int) rtR0MemObjNativeMapKerne
- * MMIO / physical memory.
- */
- Assert(pMemLnxToMap->Core.enmType == RTR0MEMOBJTYPE_PHYS && !pMemLnxToMap->Core.u.Phys.fAllocated);
-- pMemLnx->Core.pv = pMemLnxToMap->Core.u.Phys.uCachePolicy == RTMEM_CACHE_POLICY_MMIO
-- ? ioremap_nocache(pMemLnxToMap->Core.u.Phys.PhysBase + offSub, cbSub)
-- : ioremap(pMemLnxToMap->Core.u.Phys.PhysBase + offSub, cbSub);
-+ pMemLnx->Core.pv = ioremap(pMemLnxToMap->Core.u.Phys.PhysBase + offSub, cbSub);
- if (pMemLnx->Core.pv)
- {
- /** @todo fix protection. */
-diff -up linux-5.6-rc4/virt/kvm/kvm_main.c.302a~ linux-5.6-rc4/virt/kvm/kvm_main.c
---- linux-5.6-rc4/virt/kvm/kvm_main.c.302a~ 2020-03-01 23:38:46.000000000 +0100
-+++ linux-5.6-rc4/virt/kvm/kvm_main.c 2020-03-03 04:29:44.706626571 +0100
-@@ -2219,7 +2219,7 @@ static int __kvm_gfn_to_hva_cache_init(s
- gfn_t start_gfn = gpa >> PAGE_SHIFT;
- gfn_t end_gfn = (gpa + len - 1) >> PAGE_SHIFT;
- gfn_t nr_pages_needed = end_gfn - start_gfn + 1;
-- gfn_t nr_pages_avail;
-+ gfn_t nr_pages_avail = 0;
-
- /* Update ghc->generation before performing any error checks. */
- ghc->generation = slots->generation;
-diff -up linux-5.6-rc4/drivers/virt/vboxdrv/r0drv/linux/time-r0drv-linux.c.omv~ linux-5.6-rc4/drivers/virt/vboxdrv/r0drv/linux/time-r0drv-linux.c
---- linux-5.6-rc4/drivers/virt/vboxdrv/r0drv/linux/time-r0drv-linux.c.omv~ 2020-03-03 17:10:12.583699732 +0100
-+++ linux-5.6-rc4/drivers/virt/vboxdrv/r0drv/linux/time-r0drv-linux.c 2020-03-03 17:12:59.803692670 +0100
-@@ -34,7 +34,10 @@
- #include <iprt/time.h>
- #include <iprt/asm.h>
-
--
-+DECLINLINE(PRTTIMESPEC) RTTimeSpecSetTimespec64(PRTTIMESPEC pTime, const struct timespec64 *pTimeval)
-+{
-+ return RTTimeSpecAddNano(RTTimeSpecSetSeconds(pTime, pTimeval->tv_sec), pTimeval->tv_nsec);
-+}
-
- DECLINLINE(uint64_t) rtTimeGetSystemNanoTS(void)
- {
-@@ -43,8 +46,8 @@ DECLINLINE(uint64_t) rtTimeGetSystemNano
- * Use ktime_get_ts, this is also what clock_gettime(CLOCK_MONOTONIC,) is using.
- */
- uint64_t u64;
-- struct timespec Ts;
-- ktime_get_ts(&Ts);
-+ struct timespec64 Ts;
-+ ktime_get_ts64(&Ts);
- u64 = Ts.tv_sec * RT_NS_1SEC_64 + Ts.tv_nsec;
- return u64;
-
diff --git a/virtualbox-kernel-5.3.patch b/virtualbox-kernel-5.3.patch
deleted file mode 100644
index bf90473..0000000
--- a/virtualbox-kernel-5.3.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-diff -up linux-5.3/drivers/net/vboxnetflt/linux/VBoxNetFlt-linux.c.omv~ linux-5.3/drivers/net/vboxnetflt/linux/VBoxNetFlt-linux.c
---- linux-5.3/drivers/net/vboxnetflt/linux/VBoxNetFlt-linux.c.omv~ 2019-09-16 21:17:58.193558616 +0200
-+++ linux-5.3/drivers/net/vboxnetflt/linux/VBoxNetFlt-linux.c 2019-09-16 21:46:25.574504611 +0200
-@@ -2106,6 +2106,7 @@ static int vboxNetFltLinuxEnumeratorCall
- struct net_device *dev = VBOX_NETDEV_NOTIFIER_INFO_TO_DEV(ptr);
- struct in_device *in_dev;
- struct inet6_dev *in6_dev;
-+ const struct in_ifaddr *ifa;
-
- if (ulEventType != NETDEV_REGISTER)
- return NOTIFY_OK;
-@@ -2123,7 +2124,7 @@ static int vboxNetFltLinuxEnumeratorCall
- #endif
- if (in_dev != NULL)
- {
-- for_ifa(in_dev) {
-+ in_dev_for_each_ifa_rcu(ifa, in_dev) {
- if (VBOX_IPV4_IS_LOOPBACK(ifa->ifa_address))
- return NOTIFY_OK;
-
-@@ -2137,7 +2138,7 @@ static int vboxNetFltLinuxEnumeratorCall
-
- pThis->pSwitchPort->pfnNotifyHostAddress(pThis->pSwitchPort,
- /* :fAdded */ true, kIntNetAddrType_IPv4, &ifa->ifa_address);
-- } endfor_ifa(in_dev);
-+ }
- }
-
- /*
-diff -up linux-5.3/drivers/virt/vboxdrv/r0drv/linux/mp-r0drv-linux.c.omv~ linux-5.3/drivers/virt/vboxdrv/r0drv/linux/mp-r0drv-linux.c
---- linux-5.3/drivers/virt/vboxdrv/r0drv/linux/mp-r0drv-linux.c.omv~ 2019-09-16 21:44:46.283687150 +0200
-+++ linux-5.3/drivers/virt/vboxdrv/r0drv/linux/mp-r0drv-linux.c 2019-09-16 21:45:20.384699043 +0200
-@@ -284,11 +284,10 @@ RTDECL(int) RTMpOnAll(PFNRTMPWORKER pfnW
- {
- /* Fire the function on all other CPUs without waiting for completion. */
- # if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
-- int rc = smp_call_function(rtmpLinuxAllWrapper, &Args, 0 /* wait */);
-+ smp_call_function(rtmpLinuxAllWrapper, &Args, 0 /* wait */);
- # else
- int rc = smp_call_function(rtmpLinuxAllWrapper, &Args, 0 /* retry */, 0 /* wait */);
- # endif
-- Assert(!rc); NOREF(rc);
- }
- #endif
-
-@@ -338,13 +337,12 @@ RTDECL(int) RTMpOnOthers(PFNRTMPWORKER p
-
- RTThreadPreemptDisable(&PreemptState);
- # if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)
-- rc = smp_call_function(rtmpLinuxWrapper, &Args, 1 /* wait */);
-+ smp_call_function(rtmpLinuxWrapper, &Args, 1 /* wait */);
- # else /* older kernels */
-- rc = smp_call_function(rtmpLinuxWrapper, &Args, 0 /* retry */, 1 /* wait */);
-+ smp_call_function(rtmpLinuxWrapper, &Args, 0 /* retry */, 1 /* wait */);
- # endif /* older kernels */
- RTThreadPreemptRestore(&PreemptState);
-
-- Assert(rc == 0); NOREF(rc);
- IPRT_LINUX_RESTORE_EFL_AC();
- #else
- RT_NOREF(pfnWorker, pvUser1, pvUser2);
diff --git a/x86_64-common.config b/x86_64-common.config
index 50aec35..8f00b77 100644
--- a/x86_64-common.config
+++ b/x86_64-common.config
@@ -79,6 +79,7 @@ CONFIG_SND_SOC_INTEL_BYT_MAX98090_MACH=m
CONFIG_SND_SOC_INTEL_BYT_RT5640_MACH=m
CONFIG_CRYPTO_GLUE_HELPER_X86=m
CONFIG_CRYPTO_CHACHA20_X86_64=m
+CONFIG_CRYPTO_POLY1305_x86_64=m
CONFIG_CRYPTO_AES_X86_64=m
CONFIG_CRYPTO_BLOWFISH_X86_64=m
CONFIG_CRYPTO_CAMELLIA_X86_64=m