$ git diff --patch-with-stat --summary 4ed5a4a2f5f819b7f33ee8a4fde7d8710d3a1d6d..4dc28dfca08216311ca2eea3a92b19e87be653e4
fixes_for_changes_in_cpu_tlbstate.patch | 25 ---
fixes_for_mm_struct.patch | 161 -----------------
fixes_for_module_memory.patch | 51 ------
iwlwifi-dont-scream-about-debug-firmware.patch | 24 +++
kernel-5.8-aarch64-gcc-10.2-workaround.patch | 20 +++
kernel-release.spec | 12 +-
vbox-6.1.12-kernel-5.8.patch | 235 +++++++++++++++++++++++++
7 files changed, 284 insertions(+), 244 deletions(-)
delete mode 100644 fixes_for_changes_in_cpu_tlbstate.patch
delete mode 100644 fixes_for_mm_struct.patch
delete mode 100644 fixes_for_module_memory.patch
create mode 100644 iwlwifi-dont-scream-about-debug-firmware.patch
create mode 100644 kernel-5.8-aarch64-gcc-10.2-workaround.patch
create mode 100644 vbox-6.1.12-kernel-5.8.patch
diff --git a/fixes_for_changes_in_cpu_tlbstate.patch b/fixes_for_changes_in_cpu_tlbstate.patch
deleted file mode 100644
index 134847d..0000000
--- a/fixes_for_changes_in_cpu_tlbstate.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Index: linux-5.8-rc2/drivers/virt/vboxdrv/linux/SUPDrv-linux.c
-===================================================================
---- linux-5.8-rc2/drivers/virt/vboxdrv/linux/SUPDrv-linux.c
-+++ linux-5.8-rc2/drivers/virt/vboxdrv/linux/SUPDrv-linux.c
-@@ -763,12 +763,19 @@ EXPORT_SYMBOL(SUPDrvLinuxIDC);
- RTCCUINTREG VBOXCALL supdrvOSChangeCR4(RTCCUINTREG fOrMask, RTCCUINTREG fAndMask)
- {
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 20, 0)
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
- RTCCUINTREG uOld = this_cpu_read(cpu_tlbstate.cr4);
-+#else
-+ RTCCUINTREG uOld = __read_cr4();
-+#endif
- RTCCUINTREG uNew = (uOld & fAndMask) | fOrMask;
- if (uNew != uOld)
- {
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
- this_cpu_write(cpu_tlbstate.cr4, uNew);
- __write_cr4(uNew);
-+#endif
-+ ASMSetCR4(uNew);
- }
- #else
- RTCCUINTREG uOld = ASMGetCR4();
-
diff --git a/fixes_for_mm_struct.patch b/fixes_for_mm_struct.patch
deleted file mode 100644
index 5f3d900..0000000
--- a/fixes_for_mm_struct.patch
+++ /dev/null
@@ -1,161 +0,0 @@
-Index: linux-5.8-rc2/drivers/virt/vboxdrv/r0drv/linux/memobj-r0drv-linux.c
-===================================================================
---- linux-5.8-rc2/drivers/virt/vboxdrv/r0drv/linux/memobj-r0drv-linux.c
-+++ linux-5.8-rc2/drivers/virt/vboxdrv/r0drv/linux/memobj-r0drv-linux.c
-@@ -222,9 +222,17 @@ static void *rtR0MemObjLinuxDoMmap(RTR3P
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0)
- ulAddr = vm_mmap(NULL, R3PtrFixed, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, 0);
- #else
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
- down_write(&pTask->mm->mmap_sem);
-+#else
-+ down_write(&pTask->mm->mmap_lock);
-+#endif
- ulAddr = do_mmap(NULL, R3PtrFixed, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, 0);
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
- up_write(&pTask->mm->mmap_sem);
-+#else
-+ up_write(&pTask->mm->mmap_lock);
-+#endif
- #endif
- }
- else
-@@ -232,9 +240,17 @@ static void *rtR0MemObjLinuxDoMmap(RTR3P
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0)
- ulAddr = vm_mmap(NULL, 0, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS, 0);
- #else
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
- down_write(&pTask->mm->mmap_sem);
-+#else
-+ down_write(&pTask->mm->mmap_lock);
-+#endif
- ulAddr = do_mmap(NULL, 0, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS, 0);
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
- up_write(&pTask->mm->mmap_sem);
-+#else
-+ up_write(&pTask->mm->mmap_lock);
-+#endif
- #endif
- if ( !(ulAddr & ~PAGE_MASK)
- && (ulAddr & (uAlignment - 1)))
-@@ -269,13 +285,29 @@ static void rtR0MemObjLinuxDoMunmap(void
- Assert(pTask == current); RT_NOREF_PV(pTask);
- vm_munmap((unsigned long)pv, cb);
- #elif defined(USE_RHEL4_MUNMAP)
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
- down_write(&pTask->mm->mmap_sem);
-+#else
-+ down_write(&pTask->mm->mmap_lock);
-+#endif
- do_munmap(pTask->mm, (unsigned long)pv, cb, 0); /* should it be 1 or 0? */
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
- up_write(&pTask->mm->mmap_sem);
- #else
-+ up_write(&pTask->mm->mmap_lock);
-+#endif
-+#else
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
- down_write(&pTask->mm->mmap_sem);
-+#else
-+ down_write(&pTask->mm->mmap_lock);
-+#endif
- do_munmap(pTask->mm, (unsigned long)pv, cb);
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
- up_write(&pTask->mm->mmap_sem);
-+#else
-+ up_write(&pTask->mm->mmap_lock);
-+#endif
- #endif
- }
-
-@@ -593,7 +625,11 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR
- size_t iPage;
- Assert(pTask);
- if (pTask && pTask->mm)
-- down_read(&pTask->mm->mmap_sem);
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
-+ down_read(&pTask->mm->mmap_sem);
-+#else
-+ down_read(&pTask->mm->mmap_lock);
-+#endif
-
- iPage = pMemLnx->cPages;
- while (iPage-- > 0)
-@@ -608,7 +644,11 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR
- }
-
- if (pTask && pTask->mm)
-- up_read(&pTask->mm->mmap_sem);
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
-+ up_read(&pTask->mm->mmap_sem);
-+#else
-+ up_read(&pTask->mm->mmap_lock);
-+#endif
- }
- /* else: kernel memory - nothing to do here. */
- break;
-@@ -1076,7 +1116,11 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser
- papVMAs = (struct vm_area_struct **)RTMemAlloc(sizeof(*papVMAs) * cPages);
- if (papVMAs)
- {
-- down_read(&pTask->mm->mmap_sem);
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
-+ down_read(&pTask->mm->mmap_sem);
-+#else
-+ down_read(&pTask->mm->mmap_lock);
-+#endif
-
- /*
- * Get user pages.
-@@ -1162,7 +1206,11 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser
- papVMAs[rc]->vm_flags |= VM_DONTCOPY | VM_LOCKED;
- }
-
-- up_read(&pTask->mm->mmap_sem);
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
-+ up_read(&pTask->mm->mmap_sem);
-+#else
-+ up_read(&pTask->mm->mmap_lock);
-+#endif
-
- RTMemFree(papVMAs);
-
-@@ -1189,7 +1237,11 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser
- #endif
- }
-
-- up_read(&pTask->mm->mmap_sem);
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
-+ up_read(&pTask->mm->mmap_sem);
-+#else
-+ up_read(&pTask->mm->mmap_lock);
-+#endif
-
- RTMemFree(papVMAs);
- rc = VERR_LOCK_FAILED;
-@@ -1604,7 +1656,11 @@ DECLHIDDEN(int) rtR0MemObjNativeMapUser(
- const size_t cPages = (offSub + cbSub) >> PAGE_SHIFT;
- size_t iPage;
-
-- down_write(&pTask->mm->mmap_sem);
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
-+ down_write(&pTask->mm->mmap_sem);
-+#else
-+ down_write(&pTask->mm->mmap_lock);
-+#endif
-
- rc = VINF_SUCCESS;
- if (pMemLnxToMap->cPages)
-@@ -1721,7 +1777,11 @@ DECLHIDDEN(int) rtR0MemObjNativeMapUser(
- }
- #endif /* CONFIG_NUMA_BALANCING */
-
-- up_write(&pTask->mm->mmap_sem);
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
-+ up_write(&pTask->mm->mmap_sem);
-+#else
-+ up_write(&pTask->mm->mmap_lock);
-+#endif
-
- if (RT_SUCCESS(rc))
- {
diff --git a/fixes_for_module_memory.patch b/fixes_for_module_memory.patch
deleted file mode 100644
index 8b55375..0000000
--- a/fixes_for_module_memory.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-Index: linux-5.8-rc2/drivers/virt/vboxdrv/r0drv/linux/alloc-r0drv-linux.c
-===================================================================
---- linux-5.8-rc2/drivers/virt/vboxdrv/r0drv/linux/alloc-r0drv-linux.c
-+++ linux-5.8-rc2/drivers/virt/vboxdrv/r0drv/linux/alloc-r0drv-linux.c
-@@ -153,6 +153,8 @@ RT_EXPORT_SYMBOL(RTR0MemExecDonate);
-
-
- #ifdef RTMEMALLOC_EXEC_VM_AREA
-+
-+
- /**
- * Allocate executable kernel memory in the module range.
- *
-@@ -168,7 +170,12 @@ static PRTMEMHDR rtR0MemAllocExecVmArea(
- struct vm_struct *pVmArea;
- size_t iPage;
-
-+# if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0)
-+ pVmArea = __get_vm_area_caller(cbAlloc, VM_ALLOC, MODULES_VADDR, MODULES_END,
-+ __builtin_return_address(0));
-+#else
- pVmArea = __get_vm_area(cbAlloc, VM_ALLOC, MODULES_VADDR, MODULES_END);
-+#endif
- if (!pVmArea)
- return NULL;
- pVmArea->nr_pages = 0; /* paranoia? */
-@@ -201,14 +208,21 @@ static PRTMEMHDR rtR0MemAllocExecVmArea(
- # endif
- pVmArea->nr_pages = cPages;
- pVmArea->pages = papPages;
-- if (!map_vm_area(pVmArea, PAGE_KERNEL_EXEC,
-+# if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0)
-+ unsigned long start = (unsigned long)pVmArea->addr;
-+ unsigned long size = get_vm_area_size(pVmArea);
-+
-+ if (!map_kernel_range(start, size, PAGE_KERNEL_EXEC, papPages))
-+#else
-+ if (!map_vm_area(pVmArea, PAGE_KERNEL_EXEC,
- # if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0)
- &papPagesIterator
- # else
- papPages
- # endif
- ))
-- {
-+#endif
-+ {
- PRTMEMLNXHDREX pHdrEx = (PRTMEMLNXHDREX)pVmArea->addr;
- pHdrEx->pVmArea = pVmArea;
- pHdrEx->pvDummy = NULL;
-
diff --git a/iwlwifi-dont-scream-about-debug-firmware.patch b/iwlwifi-dont-scream-about-debug-firmware.patch
new file mode 100644
index 0000000..616d0a7
--- /dev/null
+++ b/iwlwifi-dont-scream-about-debug-firmware.patch
@@ -0,0 +1,24 @@
+commit 09971062c6c83e66c23d41c86321bbd6353725dc
+Author: Bernhard Rosenkränzer <bero@lindev.ch>
+Date: Sat Aug 15 04:48:06 2020 +0200
+
+ Don't whine about missing iwlwifi debugging firmware
+
+ iwl-debug-yoyo.bin doesn't seem to be publicly available, and it's
+ not required for the driver to work -- so shut up about it.
+
+ Signed-off-by: Bernhard Rosenkränzer <bero@lindev.ch>
+
+diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c b/drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c
+index 27116c7d3f4f8..9ce7207d9ec5b 100644
+--- a/drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c
++++ b/drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c
+@@ -480,7 +480,7 @@ void iwl_dbg_tlv_load_bin(struct device *dev, struct iwl_trans *trans)
+ if (!iwlwifi_mod_params.enable_ini)
+ return;
+
+- res = request_firmware(&fw, "iwl-debug-yoyo.bin", dev);
++ res = firmware_request_nowarn(&fw, "iwl-debug-yoyo.bin", dev);
+ if (res)
+ return;
+
diff --git a/kernel-5.8-aarch64-gcc-10.2-workaround.patch b/kernel-5.8-aarch64-gcc-10.2-workaround.patch
new file mode 100644
index 0000000..744f04d
--- /dev/null
+++ b/kernel-5.8-aarch64-gcc-10.2-workaround.patch
@@ -0,0 +1,20 @@
+diff -up linux-5.8/crypto/aegis128-neon-inner.c.omv~ linux-5.8/crypto/aegis128-neon-inner.c
+--- linux-5.8/crypto/aegis128-neon-inner.c.omv~ 2020-08-15 19:03:20.471769367 +0000
++++ linux-5.8/crypto/aegis128-neon-inner.c 2020-08-15 19:08:13.868446240 +0000
+@@ -144,12 +144,14 @@ void crypto_aegis128_init_neon(void *sta
+ };
+ uint8x16_t k = vld1q_u8(key);
+ uint8x16_t kiv = k ^ vld1q_u8(iv);
++ const uint8x16_t c0 = k ^ vld1q_u8(const0);
++ const uint8x16_t c1 = k ^ vld1q_u8(const1);
+ struct aegis128_state st = {{
+ kiv,
+ vld1q_u8(const1),
+ vld1q_u8(const0),
+- k ^ vld1q_u8(const0),
+- k ^ vld1q_u8(const1),
++ c0,
++ c1,
+ }};
+ int i;
+
diff --git a/kernel-release.spec b/kernel-release.spec
index 1010b65..790bce8 100644
--- a/kernel-release.spec
+++ b/kernel-release.spec
@@ -32,7 +32,7 @@
%define rpmrel 0.rc%{relc}.1
%define tar_ver %{kernelversion}.%{patchlevel}-rc%{relc}
%else
-%define rpmrel 3
+%define rpmrel 4
%define tar_ver %{kernelversion}.%{patchlevel}
%endif
%define buildrpmrel %{rpmrel}%{rpmtag}
@@ -240,6 +240,7 @@ Patch8: socket.h-include-bitsperlong.h.patch
# Make Nouveau work on SynQuacer (and probably all other non-x86 boards)
Patch9: kernel-5.8-nouveau-write-combining-only-on-x86.patch
Patch10: kernel-5.7-fewer-conditions-for-ARM64_PTR_AUTH.patch
+Patch11: kernel-5.8-aarch64-gcc-10.2-workaround.patch
# FIXME git bisect shows upstream commit
# 7a8b64d17e35810dc3176fe61208b45c15d25402 breaks
@@ -310,9 +311,7 @@ Patch202: extra-wifi-drivers-port-to-5.6.patch
Source301: vbox-6.1-fix-build-on-znver1-hosts.patch
# Re-export a few symbols vbox wants
Patch301: https://gitweb.frugalware.org/wip_kernel/raw/9d0e99ff5fef596388913549a8418c07d367a940/source/base/kernel/fix_virtualbox.patch
-Source302: https://www.virtualbox.org/raw-attachment/ticket/19644/fixes_for_mm_struct.patch
-Source303: https://www.virtualbox.org/raw-attachment/ticket/19644/fixes_for_changes_in_cpu_tlbstate.patch
-Source304: https://www.virtualbox.org/raw-attachment/ticket/19644/fixes_for_module_memory.patch
+Source302: vbox-6.1.12-kernel-5.8.patch
# Better support for newer x86 processors
# Original patch:
@@ -370,6 +369,7 @@ Patch809: nvme-pci-more-info.patch
# until is implemented / fixed.
#Patch810: acer-wmi-silence-unknow-functions-messages.patch
Patch810: linux-5.4.5-fix-build.patch
+Patch811: iwlwifi-dont-scream-about-debug-firmware.patch
Patch812: linux-5.5-corsair-strafe-quirks.patch
Patch814: http://crazy.dev.frugalware.org/smpboot-no-stack-protector-for-gcc10.patch
@@ -377,7 +377,7 @@ Patch814: http://crazy.dev.frugalware.org/smpboot-no-stack-protector-for-gcc10.p
# We provide also Futex patch for glibc to improve performance in native games/app
# https://steamcommunity.com/app/221410/discussions/0/3158631000006906163/
# For testing/benchmarking, futex can be disabled by env or by launch command: "PROTON_NO_FSYNC=1"
-# Patch teken from https://gitlab.manjaro.org/packages/core/linux57/-/blob/master/0001-futex.patch
+# Patch taken from https://gitlab.manjaro.org/packages/core/linux57/-/blob/master/0001-futex.patch
Patch815: 0001-futex.patch
# Defines for the things that are needed for all the kernels
@@ -950,8 +950,6 @@ sed -i -e "s,^KERN_DIR.*,KERN_DIR := $(pwd)," drivers/pci/vboxpci/Makefile*
echo 'obj-m += vboxpci/' >>drivers/pci/Makefile
patch -p1 -z .301a~ -b <%{S:301}
patch -p1 -z .302a~ -b <%{S:302}
-patch -p1 -z .303a~ -b <%{S:303}
-patch -p1 -z .304a~ -b <%{S:304}
%endif
# get rid of unwanted files
diff --git a/vbox-6.1.12-kernel-5.8.patch b/vbox-6.1.12-kernel-5.8.patch
new file mode 100644
index 0000000..00ec487
--- /dev/null
+++ b/vbox-6.1.12-kernel-5.8.patch
@@ -0,0 +1,235 @@
+diff -Naur a/drivers/virt/vboxdrv/linux/SUPDrv-linux.c b/drivers/virt/vboxdrv/linux/SUPDrv-linux.c
+--- a/drivers/virt/vboxdrv/linux/SUPDrv-linux.c 2020-07-11 10:10:43.000000000 +0200
++++ b/drivers/virt/vboxdrv/linux/SUPDrv-linux.c 2020-08-15 00:09:47.484697930 +0200
+@@ -756,21 +756,17 @@
+
+ RTCCUINTREG VBOXCALL supdrvOSChangeCR4(RTCCUINTREG fOrMask, RTCCUINTREG fAndMask)
+ {
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 20, 0)
+- RTCCUINTREG uOld = this_cpu_read(cpu_tlbstate.cr4);
+- RTCCUINTREG uNew = (uOld & fAndMask) | fOrMask;
+- if (uNew != uOld)
+- {
+- this_cpu_write(cpu_tlbstate.cr4, uNew);
+- __write_cr4(uNew);
+- }
+-#else
+- RTCCUINTREG uOld = ASMGetCR4();
+- RTCCUINTREG uNew = (uOld & fAndMask) | fOrMask;
+- if (uNew != uOld)
+- ASMSetCR4(uNew);
+-#endif
+- return uOld;
++ /* only works on 5.8+ */
++ unsigned long fSavedFlags;
++
++ local_irq_save(fSavedFlags);
++ RTCCUINTREG const uOld = cr4_read_shadow();
++ cr4_update_irqsoff(fOrMask, ~fAndMask); /* Same as this function, only it is not returning the old value. */
++ AssertMsg(cr4_read_shadow() == ((uOld & fAndMask) | fOrMask),
++ ("fOrMask=%#RTreg fAndMask=%#RTreg uOld=%#RTreg; new cr4=%#llx\n", fOrMask, fAndMask, uOld, cr4_read_shadow()));
++ local_irq_restore(fSavedFlags);
++
++ return uOld;
+ }
+
+
+diff -Naur a/drivers/virt/vboxdrv/r0drv/linux/alloc-r0drv-linux.c b/drivers/virt/vboxdrv/r0drv/linux/alloc-r0drv-linux.c
+--- a/drivers/virt/vboxdrv/r0drv/linux/alloc-r0drv-linux.c 2020-07-11 10:11:26.000000000 +0200
++++ b/drivers/virt/vboxdrv/r0drv/linux/alloc-r0drv-linux.c 2020-08-14 14:22:37.796941099 +0200
+@@ -153,6 +153,8 @@
+
+
+ #ifdef RTMEMALLOC_EXEC_VM_AREA
++
++
+ /**
+ * Allocate executable kernel memory in the module range.
+ *
+@@ -168,7 +170,12 @@
+ struct vm_struct *pVmArea;
+ size_t iPage;
+
++# if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0)
++ pVmArea = __get_vm_area_caller(cbAlloc, VM_ALLOC, MODULES_VADDR, MODULES_END,
++ __builtin_return_address(0));
++#else
+ pVmArea = __get_vm_area(cbAlloc, VM_ALLOC, MODULES_VADDR, MODULES_END);
++#endif
+ if (!pVmArea)
+ return NULL;
+ pVmArea->nr_pages = 0; /* paranoia? */
+@@ -201,6 +208,12 @@
+ # endif
+ pVmArea->nr_pages = cPages;
+ pVmArea->pages = papPages;
++# if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0)
++ unsigned long start = (unsigned long)pVmArea->addr;
++ unsigned long size = get_vm_area_size(pVmArea);
++
++ if (!map_kernel_range(start, size, PAGE_KERNEL_EXEC, papPages))
++#else
+ if (!map_vm_area(pVmArea, PAGE_KERNEL_EXEC,
+ # if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0)
+ &papPagesIterator
+@@ -208,6 +221,7 @@
+ papPages
+ # endif
+ ))
++#endif
+ {
+ PRTMEMLNXHDREX pHdrEx = (PRTMEMLNXHDREX)pVmArea->addr;
+ pHdrEx->pVmArea = pVmArea;
+diff -Naur a/drivers/virt/vboxdrv/r0drv/linux/memobj-r0drv-linux.c b/drivers/virt/vboxdrv/r0drv/linux/memobj-r0drv-linux.c
+--- a/drivers/virt/vboxdrv/r0drv/linux/memobj-r0drv-linux.c 2020-07-11 10:11:26.000000000 +0200
++++ b/drivers/virt/vboxdrv/r0drv/linux/memobj-r0drv-linux.c 2020-08-14 14:22:31.100239263 +0200
+@@ -222,9 +222,17 @@
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0)
+ ulAddr = vm_mmap(NULL, R3PtrFixed, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, 0);
+ #else
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
+ down_write(&pTask->mm->mmap_sem);
++#else
++ down_write(&pTask->mm->mmap_lock);
++#endif
+ ulAddr = do_mmap(NULL, R3PtrFixed, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, 0);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
+ up_write(&pTask->mm->mmap_sem);
++#else
++ up_write(&pTask->mm->mmap_lock);
++#endif
+ #endif
+ }
+ else
+@@ -232,9 +240,17 @@
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0)
+ ulAddr = vm_mmap(NULL, 0, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS, 0);
+ #else
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
+ down_write(&pTask->mm->mmap_sem);
++#else
++ down_write(&pTask->mm->mmap_lock);
++#endif
+ ulAddr = do_mmap(NULL, 0, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS, 0);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
+ up_write(&pTask->mm->mmap_sem);
++#else
++ up_write(&pTask->mm->mmap_lock);
++#endif
+ #endif
+ if ( !(ulAddr & ~PAGE_MASK)
+ && (ulAddr & (uAlignment - 1)))
+@@ -269,13 +285,29 @@
+ Assert(pTask == current); RT_NOREF_PV(pTask);
+ vm_munmap((unsigned long)pv, cb);
+ #elif defined(USE_RHEL4_MUNMAP)
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
+ down_write(&pTask->mm->mmap_sem);
++#else
++ down_write(&pTask->mm->mmap_lock);
++#endif
+ do_munmap(pTask->mm, (unsigned long)pv, cb, 0); /* should it be 1 or 0? */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
+ up_write(&pTask->mm->mmap_sem);
+ #else
++ up_write(&pTask->mm->mmap_lock);
++#endif
++#else
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
+ down_write(&pTask->mm->mmap_sem);
++#else
++ down_write(&pTask->mm->mmap_lock);
++#endif
+ do_munmap(pTask->mm, (unsigned long)pv, cb);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
+ up_write(&pTask->mm->mmap_sem);
++#else
++ up_write(&pTask->mm->mmap_lock);
++#endif
+ #endif
+ }
+
+@@ -593,7 +625,11 @@
+ size_t iPage;
+ Assert(pTask);
+ if (pTask && pTask->mm)
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
+ down_read(&pTask->mm->mmap_sem);
++#else
++ down_read(&pTask->mm->mmap_lock);
++#endif
+
+ iPage = pMemLnx->cPages;
+ while (iPage-- > 0)
+@@ -608,7 +644,11 @@
+ }
+
+ if (pTask && pTask->mm)
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
+ up_read(&pTask->mm->mmap_sem);
++#else
++ up_read(&pTask->mm->mmap_lock);
++#endif
+ }
+ /* else: kernel memory - nothing to do here. */
+ break;
+@@ -1076,7 +1116,11 @@
+ papVMAs = (struct vm_area_struct **)RTMemAlloc(sizeof(*papVMAs) * cPages);
+ if (papVMAs)
+ {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
+ down_read(&pTask->mm->mmap_sem);
++#else
++ down_read(&pTask->mm->mmap_lock);
++#endif
+
+ /*
+ * Get user pages.
+@@ -1162,7 +1206,11 @@
+ papVMAs[rc]->vm_flags |= VM_DONTCOPY | VM_LOCKED;
+ }
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
+ up_read(&pTask->mm->mmap_sem);
++#else
++ up_read(&pTask->mm->mmap_lock);
++#endif
+
+ RTMemFree(papVMAs);
+
+@@ -1189,7 +1237,11 @@
+ #endif
+ }
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
+ up_read(&pTask->mm->mmap_sem);
++#else
++ up_read(&pTask->mm->mmap_lock);
++#endif
+
+ RTMemFree(papVMAs);
+ rc = VERR_LOCK_FAILED;
+@@ -1604,7 +1656,11 @@
+ const size_t cPages = (offSub + cbSub) >> PAGE_SHIFT;
+ size_t iPage;
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
+ down_write(&pTask->mm->mmap_sem);
++#else
++ down_write(&pTask->mm->mmap_lock);
++#endif
+
+ rc = VINF_SUCCESS;
+ if (pMemLnxToMap->cPages)
+@@ -1721,7 +1777,11 @@
+ }
+ #endif /* CONFIG_NUMA_BALANCING */
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
+ up_write(&pTask->mm->mmap_sem);
++#else
++ up_write(&pTask->mm->mmap_lock);
++#endif
+
+ if (RT_SUCCESS(rc))
+ {