Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:wkazubski:G03
nvidia-gfxG03
0007-fix-5.14.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0007-fix-5.14.patch of Package nvidia-gfxG03
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 @@ -52,7 +52,9 @@ #define nv_drm_pci_exit drm_legacy_pci_exit #elif LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0) -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 7, 0) +#include "linux/dma-buf.h" + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 7, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0) #include <drm/drm_agpsupport.h> struct drm_agp_mem { @@ -168,8 +170,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; @@ -193,8 +197,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]; @@ -219,7 +219,9 @@ /* stealth mode requires a manual probe */ pci_dev_get(pdev); +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0) drm_get_pci_dev(pdev, pid, driver); +#endif } } return 0; @@ -227,11 +233,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"); } @@ -254,6 +262,8 @@ { nv_linux_state_t *nvl; +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0) + /* dev->pdev is no longer avaialble in 5.14 */ for (nvl = nv_linux_devices; nvl != NULL; nvl = nvl->next) { if (nvl->dev == dev->pdev) @@ -262,6 +272,7 @@ return 0; } } +#endif return -ENODEV; } @@ -278,6 +289,8 @@ { nv_linux_state_t *nvl; +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0) + /* dev->pdev is no longer avaialble in 5.14 */ for (nvl = nv_linux_devices; nvl != NULL; nvl = nvl->next) { if (nvl->dev == dev->pdev) @@ -287,6 +300,7 @@ return 0; } } +#endif return -ENODEV; } @@ -359,6 +373,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 @@ -377,17 +424,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-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 */ +#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 */ 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 */ +#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> diff -Naur NVIDIA-Linux-x86_64-340.108-old/kernel/os-interface.c NVIDIA-Linux-x86_64-340.108-new/kernel/os-interface.c --- NVIDIA-Linux-x86_64-340.108-old/kernel/os-interface.c 2021-09-12 11:21:27.916526901 +0200 +++ NVIDIA-Linux-x86_64-340.108-new/kernel/os-interface.c 2021-09-12 11:17:40.059864352 +0200 @@ -549,7 +549,13 @@ // the requested timeout has expired, loop until less // than a jiffie of the desired delay remains. // + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 14, 0) + current->__state = TASK_INTERRUPTIBLE; +#else current->state = TASK_INTERRUPTIBLE; +#endif + do { schedule_timeout(jiffies);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor