From 2cc3342b4b3c96bcc4062513011d35c079b009a2 Mon Sep 17 00:00:00 2001
From: graysky <graysky@archlinux.us>
Date: Thu, 22 Oct 2020 06:59:59 -0400
Subject: [PATCH 2/3] kernel-5.8

credit: https://launchpad.net/~kelebek333/+archive/ubuntu/nvidia-legacy/+packages
extracted from: https://launchpadlibrarian.net/492468557/nvidia-graphics-drivers-340_340.108-1lmtrfocal3_340.108-2lmtrfocal.diff.gz
---
 kernel/nv-linux.h                | 8 ++++++++
 kernel/nvidia-modules-common.mk  | 1 +
 kernel/os-mlock.c                | 8 ++++++++
 kernel/uvm/nvidia_uvm_lite_api.c | 4 ++++
 4 files changed, 21 insertions(+)

diff --git a/kernel/nv-linux.h b/kernel/nv-linux.h
index 83e6433..d055552 100644
--- a/kernel/nv-linux.h
+++ b/kernel/nv-linux.h
@@ -669,11 +669,19 @@ extern nv_spinlock_t km_lock;
 #  define KM_FREE_RECORD(a,b,c)
 #endif
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0)
+#define NV_VMALLOC(ptr, size)                     \
+    {                                             \
+        (ptr) = __vmalloc(size, GFP_KERNEL);      \
+        VM_ALLOC_RECORD(ptr, size, "vm_vmalloc"); \
+    }
+#else
 #define NV_VMALLOC(ptr, size)                               \
     {                                                       \
         (ptr) = __vmalloc(size, GFP_KERNEL, PAGE_KERNEL);   \
         VM_ALLOC_RECORD(ptr, size, "vm_vmalloc");           \
     }
+#endif
 
 #define NV_VFREE(ptr, size)                         \
     {                                               \
diff --git a/kernel/nvidia-modules-common.mk b/kernel/nvidia-modules-common.mk
index b94591b..0e4c228 100644
--- a/kernel/nvidia-modules-common.mk
+++ b/kernel/nvidia-modules-common.mk
@@ -222,6 +222,7 @@ build-sanity-checks:
 define BUILD_MODULE_RULE
  $(1): build-sanity-checks $(3)
 	@echo "NVIDIA: calling KBUILD..."; \
+	touch .nv-kernel.o.cmd; \
 	$$(MAKE) "CC=$$(CC)" NV_MODULE_SUFFIX=$$(strip $(2)) $$(KBUILD_PARAMS) modules; \
 	echo "NVIDIA: left KBUILD."; \
 	if ! [ -f $(1) ]; then \
diff --git a/kernel/os-mlock.c b/kernel/os-mlock.c
index 8a1fa2f..fc50543 100644
--- a/kernel/os-mlock.c
+++ b/kernel/os-mlock.c
@@ -44,11 +44,19 @@ RM_STATUS NV_API_CALL os_lock_user_pages(
         return rmStatus;
     }
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0)
+    down_read(&mm->mmap_lock);
+    ret = NV_GET_USER_PAGES((unsigned long)address,
+                            page_count, write, force, user_pages, NULL);
+    up_read(&mm->mmap_lock);
+    pinned = ret;
+#else
     down_read(&mm->mmap_sem);
     ret = NV_GET_USER_PAGES((unsigned long)address,
                             page_count, write, force, user_pages, NULL);
     up_read(&mm->mmap_sem);
     pinned = ret;
+#endif
 
     if (ret < 0)
     {
diff --git a/kernel/uvm/nvidia_uvm_lite_api.c b/kernel/uvm/nvidia_uvm_lite_api.c
index 8448eb6..97a4818 100644
--- a/kernel/uvm/nvidia_uvm_lite_api.c
+++ b/kernel/uvm/nvidia_uvm_lite_api.c
@@ -30,6 +30,10 @@
 #include "uvm_gpu_ops_tests.h"
 #endif
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0)
+#define mmap_sem mmap_lock
+#endif
+
 //
 // nvidia_uvm_lite_api.c
 //
-- 
2.29.0

