aboutsummaryrefslogtreecommitdiff
path: root/system/nvidia-legacy340-kernel/patches/0005-kernel-5.11.patch
diff options
context:
space:
mode:
Diffstat (limited to 'system/nvidia-legacy340-kernel/patches/0005-kernel-5.11.patch')
-rw-r--r--system/nvidia-legacy340-kernel/patches/0005-kernel-5.11.patch169
1 files changed, 159 insertions, 10 deletions
diff --git a/system/nvidia-legacy340-kernel/patches/0005-kernel-5.11.patch b/system/nvidia-legacy340-kernel/patches/0005-kernel-5.11.patch
index f401d98ce3ccc..382d7d3b5a26e 100644
--- a/system/nvidia-legacy340-kernel/patches/0005-kernel-5.11.patch
+++ b/system/nvidia-legacy340-kernel/patches/0005-kernel-5.11.patch
@@ -1,25 +1,174 @@
-
+diff -Naur NVIDIA-Linux-x86_64-340.108-old/kernel/conftest.sh NVIDIA-Linux-x86_64-340.108-new/kernel/conftest.sh
+--- NVIDIA-Linux-x86_64-340.108-old/kernel/conftest.sh 2021-05-24 20:08:18.743742335 +0200
++++ NVIDIA-Linux-x86_64-340.108-new/kernel/conftest.sh 2021-05-24 20:13:18.019314390 +0200
+@@ -1578,21 +1578,21 @@
+ #include <drm/drm_drv.h>
+ #endif
+
+- #if defined(NV_DRM_DRM_PRIME_H_PRESENT)
+- #include <drm/drm_prime.h>
+- #endif
+-
+ #if !defined(CONFIG_DRM) && !defined(CONFIG_DRM_MODULE)
+ #error DRM not enabled
+ #endif
++
+ void conftest_drm_available(void) {
+ struct drm_driver drv;
+- drv.gem_prime_pin = 0;
+- drv.gem_prime_get_sg_table = 0;
+- drv.gem_prime_vmap = 0;
+- drv.gem_prime_vunmap = 0;
+- (void)drm_gem_prime_import;
+- (void)drm_gem_prime_export;
++
++ /* 2013-10-02 1bb72532ac260a2d3982b40bdd4c936d779d0d16 */
++ (void)drm_dev_alloc;
++
++ /* 2013-10-02 c22f0ace1926da399d9a16dfaf09174c1b03594c */
++ (void)drm_dev_register;
++
++ /* 2013-10-02 c3a49737ef7db0bdd4fcf6cf0b7140a883e32b2a */
++ (void)drm_dev_unregister;
+ }"
+
+ compile_check_conftest "$CODE" "NV_DRM_AVAILABLE" "" "generic"
+diff -Naur NVIDIA-Linux-x86_64-340.108-old/kernel/nv-drm.c NVIDIA-Linux-x86_64-340.108-new/kernel/nv-drm.c
+--- NVIDIA-Linux-x86_64-340.108-old/kernel/nv-drm.c 2021-05-24 20:08:18.779739237 +0200
++++ NVIDIA-Linux-x86_64-340.108-new/kernel/nv-drm.c 2021-05-24 20:42:13.443288819 +0200
+@@ -60,6 +60,8 @@
+ #else
+ #include <drm/drm_agpsupport.h>
+
++#include "linux/dma-buf.h"
++
+ struct nv_drm_agp_head {
+ struct agp_kern_info agp_info;
+ struct list_head memory;
+@@ -210,8 +212,10 @@
+
+ /* No locking needed since shadow-attach is single-threaded since it may
+ * only be called from the per-driver module init hook. */
++#if LINUX_VERSION_CODE <= KERNEL_VERSION(5, 10, 0)
+ if (drm_core_check_feature(dev, DRIVER_LEGACY))
+ list_add_tail(&dev->legacy_dev_list, &driver->legacy_dev_list);
++#endif
+
+ return 0;
+
+@@ -239,8 +243,10 @@
+ if (WARN_ON(!(driver->driver_features & DRIVER_LEGACY)))
+ return -EINVAL;
+
++#if LINUX_VERSION_CODE <= KERNEL_VERSION(5, 10, 0)
+ /* If not using KMS, fall back to stealth mode manual scanning. */
+ INIT_LIST_HEAD(&driver->legacy_dev_list);
++#endif
+ for (i = 0; pdriver->id_table[i].vendor != 0; i++) {
+ pid = &pdriver->id_table[i];
+
+@@ -273,11 +279,13 @@
+ if (!(driver->driver_features & DRIVER_LEGACY)) {
+ WARN_ON(1);
+ } else {
++#if LINUX_VERSION_CODE <= KERNEL_VERSION(5, 10, 0)
+ list_for_each_entry_safe(dev, tmp, &driver->legacy_dev_list,
+ legacy_dev_list) {
+ list_del(&dev->legacy_dev_list);
+ drm_put_dev(dev);
+ }
++#endif
+ }
+ DRM_INFO("Module unloaded\n");
+ }
+@@ -402,6 +410,39 @@
+ .llseek = noop_llseek,
+ };
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 11, 0)
++struct sg_table *nv_drm_gem_prime_get_sg_table(struct drm_gem_object *gem)
++{
++ return nv_gem_prime_get_sg_table(gem);
++}
++
++static int nv_drm_gem_vmap(struct drm_gem_object *gem,
++ struct dma_buf_map *map)
++{
++ map->vaddr = nv_gem_prime_vmap(gem);
++ if (map->vaddr == NULL) {
++ return -ENOMEM;
++ }
++ map->is_iomem = true;
++ return 0;
++}
++
++static void nv_drm_gem_vunmap(struct drm_gem_object *gem,
++ struct dma_buf_map *map)
++{
++ nv_gem_prime_vunmap(gem, map->vaddr);
++ map->vaddr = NULL;
++}
++
++static struct drm_gem_object_funcs nv_drm_gem_object_funcs = {
++ .free = nv_gem_free,
++ .export = drm_gem_prime_export,
++ .get_sg_table = nv_drm_gem_prime_get_sg_table,
++ .vmap = nv_drm_gem_vmap,
++ .vunmap = nv_drm_gem_vunmap,
++};
++#endif
++
+ static struct drm_driver nv_drm_driver = {
+
+ .driver_features = DRIVER_GEM
+@@ -420,17 +461,19 @@
+ .set_busid = drm_pci_set_busid,
+ #endif
+
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)
+- .gem_free_object_unlocked = nv_gem_free,
+-#else
++#if LINUX_VERSION_CODE <= KERNEL_VERSION(5, 8, 0)
+ .gem_free_object = nv_gem_free,
++#elif LINUX_VERSION_CODE <= KERNEL_VERSION(5, 10, 0)
++ .gem_free_object_unlocked = nv_gem_free,
+ #endif
+
+ .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
++#if LINUX_VERSION_CODE <= KERNEL_VERSION(5, 10, 0)
+ .gem_prime_export = drm_gem_prime_export,
+ .gem_prime_get_sg_table = nv_gem_prime_get_sg_table,
+ .gem_prime_vmap = nv_gem_prime_vmap,
+ .gem_prime_vunmap = nv_gem_prime_vunmap,
++#endif
+
+ .name = "nvidia-drm",
+ .desc = "NVIDIA DRM driver",
diff -Naur NVIDIA-Linux-x86_64-340.108-old/kernel/nv-linux.h NVIDIA-Linux-x86_64-340.108-new/kernel/nv-linux.h
---- NVIDIA-Linux-x86_64-340.108-old/kernel/nv-linux.h 2021-02-23 20:01:52.429999710 +0100
-+++ NVIDIA-Linux-x86_64-340.108-new/kernel/nv-linux.h 2021-02-23 14:48:00.163333638 +0100
-@@ -119,7 +119,7 @@
+--- NVIDIA-Linux-x86_64-340.108-old/kernel/nv-linux.h 2021-05-24 20:08:18.775739581 +0200
++++ NVIDIA-Linux-x86_64-340.108-new/kernel/nv-linux.h 2021-05-24 20:09:18.748287771 +0200
+@@ -119,7 +119,9 @@
#include <asm/tlbflush.h> /* flush_tlb(), flush_tlb_all() */
#include <linux/cpu.h> /* CPU hotplug support */
#endif
-#include <asm/kmap_types.h> /* page table entry lookup */
-+//#include <asm/kmap_types.h> /* page table entry lookup */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 11, 0)
++ #include <asm/kmap_types.h> /* page table entry lookup */
++#endif
#include <linux/pci.h> /* pci_find_class, etc */
#include <linux/interrupt.h> /* tasklets, interrupt helpers */
---- a/kernel/uvm/nvidia_uvm_linux.h 2019-12-11 17:04:24.000000000 -0500
-+++ b/kernel/uvm/nvidia_uvm_linux.h 2021-02-24 06:26:26.237367942 -0500
-@@ -141,7 +141,7 @@
+diff -Naur NVIDIA-Linux-x86_64-340.108-old/kernel/uvm/nvidia_uvm_linux.h NVIDIA-Linux-x86_64-340.108-new/kernel/uvm/nvidia_uvm_linux.h
+--- NVIDIA-Linux-x86_64-340.108-old/kernel/uvm/nvidia_uvm_linux.h 2021-05-24 20:08:18.775739581 +0200
++++ NVIDIA-Linux-x86_64-340.108-new/kernel/uvm/nvidia_uvm_linux.h 2021-05-24 20:09:18.749287739 +0200
+@@ -141,7 +141,9 @@
#if !defined(NV_VMWARE)
#include <asm/tlbflush.h> /* flush_tlb(), flush_tlb_all() */
#endif
-#include <asm/kmap_types.h> /* page table entry lookup */
-+//#include <asm/kmap_types.h> /* page table entry lookup */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 11, 0)
++ #include <asm/kmap_types.h> /* page table entry lookup */
++#endif
#include <linux/interrupt.h> /* tasklets, interrupt helpers */
#include <linux/timer.h>
-