mirror of
https://github.com/archlinux-jerry/nvidia-340xx
synced 2024-12-22 22:19:24 +08:00
108 lines
3.4 KiB
Diff
108 lines
3.4 KiB
Diff
|
From fea401df7500bfbead5a42b1e74560dbddf2f5a3 Mon Sep 17 00:00:00 2001
|
||
|
From: graysky <graysky@archlinux.us>
|
||
|
Date: Thu, 22 Oct 2020 07:00:35 -0400
|
||
|
Subject: [PATCH 3/3] kernel-5.9
|
||
|
|
||
|
credit: https://github.com/warpme/minimyth2/blob/master/script/nvidia/nvidia-340.108/files/nvidia-340.108-fix-5.9-kernel-compile.patch
|
||
|
---
|
||
|
kernel/nv-drm.c | 8 ++++++++
|
||
|
kernel/nv-linux.h | 9 +++++++--
|
||
|
kernel/nv.c | 4 ++++
|
||
|
kernel/uvm/nvidia_uvm_linux.h | 2 ++
|
||
|
4 files changed, 21 insertions(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/kernel/nv-drm.c b/kernel/nv-drm.c
|
||
|
index 85db07e..f0c1299 100644
|
||
|
--- a/kernel/nv-drm.c
|
||
|
+++ b/kernel/nv-drm.c
|
||
|
@@ -415,7 +415,11 @@ static struct drm_driver nv_drm_driver = {
|
||
|
.set_busid = drm_pci_set_busid,
|
||
|
#endif
|
||
|
|
||
|
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)
|
||
|
+ .gem_free_object_unlocked = nv_gem_free,
|
||
|
+#else
|
||
|
.gem_free_object = nv_gem_free,
|
||
|
+#endif
|
||
|
|
||
|
.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
|
||
|
.gem_prime_export = drm_gem_prime_export,
|
||
|
@@ -511,8 +515,12 @@ RM_STATUS NV_API_CALL nv_alloc_os_descriptor_handle(
|
||
|
|
||
|
#if defined(NV_DRM_GEM_OBJECT_PUT_UNLOCKED_PRESENT)
|
||
|
drm_gem_object_put_unlocked(&nv_obj->base);
|
||
|
+#else
|
||
|
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)
|
||
|
+ drm_gem_object_put_locked(&nv_obj->base);
|
||
|
#else
|
||
|
drm_gem_object_unreference_unlocked(&nv_obj->base);
|
||
|
+#endif
|
||
|
#endif
|
||
|
|
||
|
status = RM_OK;
|
||
|
diff --git a/kernel/nv-linux.h b/kernel/nv-linux.h
|
||
|
index d055552..524a8fe 100644
|
||
|
--- a/kernel/nv-linux.h
|
||
|
+++ b/kernel/nv-linux.h
|
||
|
@@ -136,8 +136,10 @@
|
||
|
|
||
|
#if defined(NVCPU_X86_64) && !defined(HAVE_COMPAT_IOCTL)
|
||
|
#include <linux/syscalls.h> /* sys_ioctl() */
|
||
|
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 9, 0)
|
||
|
#include <linux/ioctl32.h> /* register_ioctl32_conversion() */
|
||
|
#endif
|
||
|
+#endif
|
||
|
|
||
|
#if !defined(NV_FILE_OPERATIONS_HAS_IOCTL) && \
|
||
|
!defined(NV_FILE_OPERATIONS_HAS_UNLOCKED_IOCTL)
|
||
|
@@ -2249,10 +2251,13 @@ static inline NvU64 nv_node_end_pfn(int nid)
|
||
|
pages, vmas, NULL);
|
||
|
|
||
|
#else
|
||
|
-
|
||
|
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)
|
||
|
+ return get_user_pages_remote(mm, start, nr_pages, flags,
|
||
|
+ pages, vmas, NULL);
|
||
|
+#else
|
||
|
return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
|
||
|
pages, vmas);
|
||
|
-
|
||
|
+#endif
|
||
|
#endif
|
||
|
|
||
|
}
|
||
|
diff --git a/kernel/nv.c b/kernel/nv.c
|
||
|
index a218f83..be4e0f8 100644
|
||
|
--- a/kernel/nv.c
|
||
|
+++ b/kernel/nv.c
|
||
|
@@ -2785,7 +2785,11 @@ nvidia_probe
|
||
|
|
||
|
#if defined(CONFIG_VGA_ARB)
|
||
|
#if defined(VGA_DEFAULT_DEVICE)
|
||
|
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)
|
||
|
+ vga_get(VGA_DEFAULT_DEVICE, VGA_RSRC_LEGACY_MASK, 0);
|
||
|
+#else
|
||
|
vga_tryget(VGA_DEFAULT_DEVICE, VGA_RSRC_LEGACY_MASK);
|
||
|
+#endif
|
||
|
#endif
|
||
|
vga_set_legacy_decoding(dev, VGA_RSRC_NONE);
|
||
|
#endif
|
||
|
diff --git a/kernel/uvm/nvidia_uvm_linux.h b/kernel/uvm/nvidia_uvm_linux.h
|
||
|
index 1625209..efc181f 100644
|
||
|
--- a/kernel/uvm/nvidia_uvm_linux.h
|
||
|
+++ b/kernel/uvm/nvidia_uvm_linux.h
|
||
|
@@ -158,8 +158,10 @@
|
||
|
|
||
|
#if defined(NVCPU_X86_64) && !defined(HAVE_COMPAT_IOCTL)
|
||
|
#include <linux/syscalls.h> /* sys_ioctl() */
|
||
|
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 9, 0)
|
||
|
#include <linux/ioctl32.h> /* register_ioctl32_conversion() */
|
||
|
#endif
|
||
|
+#endif
|
||
|
|
||
|
#if !defined(NV_FILE_OPERATIONS_HAS_IOCTL) && \
|
||
|
!defined(NV_FILE_OPERATIONS_HAS_UNLOCKED_IOCTL)
|
||
|
--
|
||
|
2.29.0
|
||
|
|