From 2fcf4da333228fec8442a433f2167718c0d1fa40 Mon Sep 17 00:00:00 2001 From: Silvan Calarco Date: Sat, 6 Jan 2024 07:46:49 +0100 Subject: [PATCH] repackaged with libglvnd and libmesa layout [release 340.108-7mamba;Fri Apr 23 2021] --- nvidia_340-340.108-kernel-5.10.patch | 18 + nvidia_340-340.108-kernel-5.11.patch | 25 + nvidia_340-340.108-kernel-5.7.patch | 780 +++++++++++++++++++++++++++ nvidia_340-340.108-kernel-5.8.patch | 92 ++++ nvidia_340-340.108-kernel-5.9.patch | 107 ++++ nvidia_340.spec | 467 ++++++---------- nvidia_340.sysusers | 1 + 7 files changed, 1195 insertions(+), 295 deletions(-) create mode 100644 nvidia_340-340.108-kernel-5.10.patch create mode 100644 nvidia_340-340.108-kernel-5.11.patch create mode 100644 nvidia_340-340.108-kernel-5.7.patch create mode 100644 nvidia_340-340.108-kernel-5.8.patch create mode 100644 nvidia_340-340.108-kernel-5.9.patch create mode 100644 nvidia_340.sysusers diff --git a/nvidia_340-340.108-kernel-5.10.patch b/nvidia_340-340.108-kernel-5.10.patch new file mode 100644 index 0000000..8bc213c --- /dev/null +++ b/nvidia_340-340.108-kernel-5.10.patch @@ -0,0 +1,18 @@ +https://github.com/warpme/minimyth2/tree/master/script/nvidia/nvidia-340.108/files + +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 2020-12-13 19:10:56.759999937 +0100 ++++ NVIDIA-Linux-x86_64-340.108-new/kernel/nv-drm.c 2020-12-13 19:09:02.039999925 +0100 +@@ -322,8 +322,11 @@ + { + struct nv_gem_object *nv_obj = container_of(obj, struct nv_gem_object, base); + int page_count = obj->size >> PAGE_SHIFT; +- ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 0) ++ return drm_prime_pages_to_sg(obj->dev, nv_obj->pages, page_count); ++#else + return drm_prime_pages_to_sg(nv_obj->pages, page_count); ++#endif + } + + static void* nv_gem_prime_vmap( diff --git a/nvidia_340-340.108-kernel-5.11.patch b/nvidia_340-340.108-kernel-5.11.patch new file mode 100644 index 0000000..f401d98 --- /dev/null +++ b/nvidia_340-340.108-kernel-5.11.patch @@ -0,0 +1,25 @@ + +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 @@ + #include /* flush_tlb(), flush_tlb_all() */ + #include /* CPU hotplug support */ + #endif +-#include /* page table entry lookup */ ++//#include /* page table entry lookup */ + + #include /* pci_find_class, etc */ + #include /* 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 @@ + #if !defined(NV_VMWARE) + #include /* flush_tlb(), flush_tlb_all() */ + #endif +-#include /* page table entry lookup */ ++//#include /* page table entry lookup */ + + #include /* tasklets, interrupt helpers */ + #include + diff --git a/nvidia_340-340.108-kernel-5.7.patch b/nvidia_340-340.108-kernel-5.7.patch new file mode 100644 index 0000000..938ca0f --- /dev/null +++ b/nvidia_340-340.108-kernel-5.7.patch @@ -0,0 +1,780 @@ +From 2154cc447a2377cfd60a7b7c5b619e689ebf71b1 Mon Sep 17 00:00:00 2001 +From: graysky +Date: Thu, 22 Oct 2020 06:58:53 -0400 +Subject: [PATCH 1/3] kernel-5.7 + +credit: https://gitlab.manjaro.org/packages?utf8=%E2%9C%93&filter=nvidia-340xx +--- + kernel/Makefile | 5 + + kernel/conftest.sh | 81 +++++++++++++ + kernel/dkms.conf | 8 +- + kernel/nv-drm.c | 229 ++++++++++++++++++++++++++++++++++- + kernel/nv-linux.h | 49 ++++++++ + kernel/nv-procfs.c | 20 +++ + kernel/nv-time.h | 9 +- + kernel/nv.c | 2 +- + kernel/os-interface.c | 8 +- + kernel/uvm/Makefile | 1 + + kernel/uvm/conftest.sh | 4 + + kernel/uvm/nvidia_uvm_lite.c | 29 ++++- + 12 files changed, 431 insertions(+), 14 deletions(-) + +diff --git a/kernel/Makefile b/kernel/Makefile +index 125a690..2597080 100644 +--- a/kernel/Makefile ++++ b/kernel/Makefile +@@ -108,12 +108,14 @@ COMPILE_TESTS = \ + acquire_console_sem \ + console_lock \ + kmem_cache_create \ ++ kmem_cache_create_usercopy \ + outer_flush_all \ + on_each_cpu \ + smp_call_function \ + nvmap_support \ + acpi_evaluate_integer \ + ioremap_cache \ ++ ioremap_nocache \ + ioremap_wc \ + proc_dir_entry \ + INIT_WORK \ +@@ -122,6 +124,7 @@ COMPILE_TESTS = \ + pci_domain_nr \ + pci_dma_mapping_error \ + file_operations \ ++ proc_ops \ + sg_alloc_table \ + sg_init_table \ + pci_get_domain_bus_and_slot \ +@@ -147,6 +150,8 @@ COMPILE_TESTS = \ + vm_fault_present \ + vm_fault_has_address \ + drm_driver_unload_has_int_return_type \ ++ drm_get_pci_dev \ ++ drm_pci_init \ + drm_legacy_pci_init \ + timer_setup \ + do_gettimeofday \ +diff --git a/kernel/conftest.sh b/kernel/conftest.sh +index b7a85f0..a5225e5 100755 +--- a/kernel/conftest.sh ++++ b/kernel/conftest.sh +@@ -176,6 +176,7 @@ test_headers() { + FILES="$FILES linux/ktime.h" + FILES="$FILES linux/file.h" + ++ FILES_ARCH="$FILES_ARCH asm/pgtable.h" + FILES_ARCH="$FILES_ARCH asm/set_memory.h" + + translate_and_find_header_files $HEADERS $FILES +@@ -440,6 +441,9 @@ compile_test() { + # Determine if the set_memory_array_uc() function is present. + # + CODE=" ++ #if defined(NV_ASM_PGTABLE_H_PRESENT) ++ #include ++ #endif + #if defined(NV_ASM_SET_MEMORY_H_PRESENT) + #include + #else +@@ -914,6 +918,21 @@ compile_test() { + fi + ;; + ++ kmem_cache_create_usercopy) ++ # ++ # Determine if the kmem_cache_create_usercopy function exists. ++ # ++ # This function was added by: ++ # 2017-06-10 8eb8284b412906181357c2b0110d879d5af95e52 ++ CODE=" ++ #include ++ void kmem_cache_create_usercopy(void) { ++ kmem_cache_create_usercopy(); ++ }" ++ ++ compile_check_conftest "$CODE" "NV_KMEM_CACHE_CREATE_USERCOPY_PRESENT" "" "functions" ++ ;; ++ + smp_call_function) + # + # Determine if the smp_call_function() function is +@@ -1188,6 +1207,22 @@ compile_test() { + compile_check_conftest "$CODE" "NV_IOREMAP_CACHE_PRESENT" "" "functions" + ;; + ++ ioremap_nocache) ++ # ++ # Determine if the ioremap_nocache() function is present. ++ # ++ # Removed by commit 4bdc0d676a64 ("remove ioremap_nocache and ++ # devm_ioremap_nocache") in v5.6 (2020-01-06) ++ # ++ CODE=" ++ #include ++ void conftest_ioremap_nocache(void) { ++ ioremap_nocache(); ++ }" ++ ++ compile_check_conftest "$CODE" "NV_IOREMAP_NOCACHE_PRESENT" "" "functions" ++ ;; ++ + ioremap_wc) + # + # Determine if the ioremap_wc() function is present. +@@ -1371,6 +1406,16 @@ compile_test() { + compile_check_conftest "$CODE" "NV_FILE_OPERATIONS_HAS_COMPAT_IOCTL" "" "types" + ;; + ++ proc_ops) ++ CODE=" ++ #include ++ int conftest_proc_ops(void) { ++ return offsetof(struct proc_ops, proc_open); ++ }" ++ ++ compile_check_conftest "$CODE" "NV_HAVE_PROC_OPS" "" "types" ++ ;; ++ + sg_init_table) + # + # Determine if the sg_init_table() function is present. +@@ -2044,6 +2089,42 @@ compile_test() { + compile_check_conftest "$CODE" "NV_DRM_DRIVER_UNLOAD_HAS_INT_RETURN_TYPE" "" "types" + ;; + ++ drm_get_pci_dev) ++ # ++ # Determine if drm_get_pci_dev() is present. ++ # ++ CODE=" ++ #if defined(NV_DRM_DRMP_H_PRESENT) ++ #include ++ #endif ++ ++ #if defined(NV_DRM_DRM_PCI_H_PRESENT) ++ #include ++ #endif ++ ++ void conftest_drm_legacy_pci_init(void) { ++ drm_get_pci_dev(); ++ }" ++ ++ compile_check_conftest "$CODE" "NV_DRM_GET_PCI_DEV_PRESENT" "" "functions" ++ ;; ++ ++ drm_pci_init) ++ # ++ # Determine if drm_pci_init() is present. ++ # ++ CODE=" ++ #if defined(NV_DRM_DRMP_H_PRESENT) ++ #include ++ #endif ++ ++ void conftest_drm_legacy_pci_init(void) { ++ drm_pci_init(); ++ }" ++ ++ compile_check_conftest "$CODE" "NV_DRM_PCI_INIT_PRESENT" "" "functions" ++ ;; ++ + drm_legacy_pci_init) + # + # Determine if drm_legacy_pci_init() is present. drm_pci_init() was +diff --git a/kernel/dkms.conf b/kernel/dkms.conf +index 79a02ae..3140f03 100644 +--- a/kernel/dkms.conf ++++ b/kernel/dkms.conf +@@ -1,7 +1,13 @@ ++if [ -x /usr/bin/nproc ]; then ++ num_cpu_cores=$(nproc) ++else ++ num_cpu_cores=1 ++fi ++ + PACKAGE_NAME="nvidia" + PACKAGE_VERSION="340.108" + BUILT_MODULE_NAME[0]="$PACKAGE_NAME" + DEST_MODULE_LOCATION[0]="/kernel/drivers/video" +-MAKE[0]="make module KERNEL_UNAME=${kernelver}" ++MAKE[0]="make -j$num_cpu_cores module KERNEL_UNAME=${kernelver}" + CLEAN="make clean" + AUTOINSTALL="yes" +diff --git a/kernel/nv-drm.c b/kernel/nv-drm.c +index 0d1cdbf..85db07e 100644 +--- a/kernel/nv-drm.c ++++ b/kernel/nv-drm.c +@@ -50,9 +50,236 @@ + #if defined(NV_DRM_LEGACY_PCI_INIT_PRESENT) + #define nv_drm_pci_init drm_legacy_pci_init + #define nv_drm_pci_exit drm_legacy_pci_exit +-#else ++#elif defined(NV_DRM_PCI_INIT_PRESENT) + #define nv_drm_pci_init drm_pci_init + #define nv_drm_pci_exit drm_pci_exit ++#else ++#if defined(NV_DRM_GET_PCI_DEV_PRESENT) ++#define nv_drm_get_pci_dev drm_get_pci_dev ++#else ++#include ++ ++struct nv_drm_agp_head { ++ struct agp_kern_info agp_info; ++ struct list_head memory; ++ unsigned long mode; ++ struct agp_bridge_data *bridge; ++ int enabled; ++ int acquired; ++ unsigned long base; ++ int agp_mtrr; ++ int cant_use_aperture; ++ unsigned long page_mask; ++}; ++ ++struct nv_drm_agp_mem { ++ unsigned long handle; ++ struct agp_memory *memory; ++ unsigned long bound; ++ int pages; ++ struct list_head head; ++}; ++ ++/* ++ * Code from drm_agp_init/nv_drm_{free,unbind}_agp ++ * Extracted from commit: 5b8b9d0c6d0e0f1993c6c56deaf9646942c49d94, file: drivers/gpu/drm/drm_agpsupport.c ++ */ ++struct drm_agp_head *nv_drm_agp_init(struct drm_device *dev) ++{ ++ struct nv_drm_agp_head *head = NULL; ++ ++ head = kzalloc(sizeof(*head), GFP_KERNEL); ++ if (!head) ++ return NULL; ++ head->bridge = agp_find_bridge(dev->pdev); ++ if (!head->bridge) { ++ head->bridge = agp_backend_acquire(dev->pdev); ++ if (!head->bridge) { ++ kfree(head); ++ return NULL; ++ } ++ agp_copy_info(head->bridge, &head->agp_info); ++ agp_backend_release(head->bridge); ++ } else { ++ agp_copy_info(head->bridge, &head->agp_info); ++ } ++ if (head->agp_info.chipset == NOT_SUPPORTED) { ++ kfree(head); ++ return NULL; ++ } ++ INIT_LIST_HEAD(&head->memory); ++ head->cant_use_aperture = head->agp_info.cant_use_aperture; ++ head->page_mask = head->agp_info.page_mask; ++ head->base = head->agp_info.aper_base; ++ return (struct drm_agp_head *)head; ++} ++ ++void nv_drm_free_agp(struct agp_memory *handle, int pages) ++{ ++ agp_free_memory(handle); ++} ++ ++int nv_drm_unbind_agp(struct agp_memory *handle) ++{ ++ return agp_unbind_memory(handle); ++} ++ ++/* ++ * Code from drm_pci_agp_{clear,destroy,init}/drm_get_pci_dev ++ * Extracted from commit: 5b8b9d0c6d0e0f1993c6c56deaf9646942c49d94, file: drivers/gpu/drm/drm_pci.c ++ */ ++static void nv_drm_pci_agp_init(struct drm_device *dev) ++{ ++ if (drm_core_check_feature(dev, DRIVER_USE_AGP)) { ++ if (pci_find_capability(dev->pdev, PCI_CAP_ID_AGP)) ++ dev->agp = nv_drm_agp_init(dev); ++ if (dev->agp) { ++ dev->agp->agp_mtrr = arch_phys_wc_add( ++ dev->agp->agp_info.aper_base, ++ dev->agp->agp_info.aper_size * ++ 1024 * 1024); ++ } ++ } ++} ++ ++void nv_drm_legacy_agp_clear(struct drm_device *dev) ++{ ++ struct nv_drm_agp_mem *entry, *tempe; ++ ++ if (!dev->agp) ++ return; ++ if (!drm_core_check_feature(dev, DRIVER_LEGACY)) ++ return; ++ ++ list_for_each_entry_safe(entry, tempe, &dev->agp->memory, head) { ++ if (entry->bound) ++ nv_drm_unbind_agp(entry->memory); ++ nv_drm_free_agp(entry->memory, entry->pages); ++ kfree(entry); ++ } ++ INIT_LIST_HEAD(&dev->agp->memory); ++ ++ if (dev->agp->acquired) ++ drm_agp_release(dev); ++ ++ dev->agp->acquired = 0; ++ dev->agp->enabled = 0; ++} ++ ++void nv_drm_pci_agp_destroy(struct drm_device *dev) ++{ ++ if (dev->agp) { ++ arch_phys_wc_del(dev->agp->agp_mtrr); ++ nv_drm_legacy_agp_clear(dev); ++ kfree(dev->agp); ++ dev->agp = NULL; ++ } ++} ++ ++static int nv_drm_get_pci_dev(struct pci_dev *pdev, ++ const struct pci_device_id *ent, ++ struct drm_driver *driver) ++{ ++ struct drm_device *dev; ++ int ret; ++ ++ DRM_DEBUG("\n"); ++ ++ dev = drm_dev_alloc(driver, &pdev->dev); ++ if (IS_ERR(dev)) ++ return PTR_ERR(dev); ++ ++ ret = pci_enable_device(pdev); ++ if (ret) ++ goto err_free; ++ ++ dev->pdev = pdev; ++#ifdef __alpha__ ++ dev->hose = pdev->sysdata; ++#endif ++ ++ if (drm_core_check_feature(dev, DRIVER_MODESET)) ++ pci_set_drvdata(pdev, dev); ++ ++ nv_drm_pci_agp_init(dev); ++ ++ ret = drm_dev_register(dev, ent->driver_data); ++ if (ret) ++ goto err_agp; ++ ++ /* No locking needed since shadow-attach is single-threaded since it may ++ * only be called from the per-driver module init hook. */ ++ if (drm_core_check_feature(dev, DRIVER_LEGACY)) ++ list_add_tail(&dev->legacy_dev_list, &driver->legacy_dev_list); ++ ++ return 0; ++ ++err_agp: ++ nv_drm_pci_agp_destroy(dev); ++ pci_disable_device(pdev); ++err_free: ++ drm_dev_put(dev); ++ return ret; ++} ++#endif ++ ++/* ++ * Code from drm_legacy_pci_{init,exit} ++ * Extracted from tag: v5.6.3, file: drivers/gpu/drm/drm_pci.c ++ */ ++int nv_drm_pci_init(struct drm_driver *driver, struct pci_driver *pdriver) ++{ ++ struct pci_dev *pdev = NULL; ++ const struct pci_device_id *pid; ++ int i; ++ ++ DRM_DEBUG("\n"); ++ ++ if (WARN_ON(!(driver->driver_features & DRIVER_LEGACY))) ++ return -EINVAL; ++ ++ /* If not using KMS, fall back to stealth mode manual scanning. */ ++ INIT_LIST_HEAD(&driver->legacy_dev_list); ++ for (i = 0; pdriver->id_table[i].vendor != 0; i++) { ++ pid = &pdriver->id_table[i]; ++ ++ /* Loop around setting up a DRM device for each PCI device ++ * matching our ID and device class. If we had the internal ++ * function that pci_get_subsys and pci_get_class used, we'd ++ * be able to just pass pid in instead of doing a two-stage ++ * thing. ++ */ ++ pdev = NULL; ++ while ((pdev = ++ pci_get_subsys(pid->vendor, pid->device, pid->subvendor, ++ pid->subdevice, pdev)) != NULL) { ++ if ((pdev->class & pid->class_mask) != pid->class) ++ continue; ++ ++ /* stealth mode requires a manual probe */ ++ pci_dev_get(pdev); ++ nv_drm_get_pci_dev(pdev, pid, driver); ++ } ++ } ++ return 0; ++} ++ ++void nv_drm_pci_exit(struct drm_driver *driver, struct pci_driver *pdriver) ++{ ++ struct drm_device *dev, *tmp; ++ DRM_DEBUG("\n"); ++ ++ if (!(driver->driver_features & DRIVER_LEGACY)) { ++ WARN_ON(1); ++ } else { ++ list_for_each_entry_safe(dev, tmp, &driver->legacy_dev_list, ++ legacy_dev_list) { ++ list_del(&dev->legacy_dev_list); ++ drm_put_dev(dev); ++ } ++ } ++ DRM_INFO("Module unloaded\n"); ++} + #endif + + extern nv_linux_state_t *nv_linux_devices; +diff --git a/kernel/nv-linux.h b/kernel/nv-linux.h +index a1d2c68..83e6433 100644 +--- a/kernel/nv-linux.h ++++ b/kernel/nv-linux.h +@@ -688,11 +688,16 @@ extern nv_spinlock_t km_lock; + VM_ALLOC_RECORD(ptr, size, "vm_ioremap"); \ + } + ++#if defined(NV_IOREMAP_NOCACHE_PRESENT) + #define NV_IOREMAP_NOCACHE(ptr, physaddr, size) \ + { \ + (ptr) = ioremap_nocache(physaddr, size); \ + VM_ALLOC_RECORD(ptr, size, "vm_ioremap_nocache"); \ + } ++#else ++#define NV_IOREMAP_NOCACHE(ptr, physaddr, size) \ ++ NV_IOREMAP(ptr, physaddr, size) ++#endif + + #if defined(NV_IOREMAP_CACHE_PRESENT) + #define NV_IOREMAP_CACHE(ptr, physaddr, size) \ +@@ -774,6 +779,17 @@ extern nv_spinlock_t km_lock; + #error "NV_KMEM_CACHE_CREATE() undefined (kmem_cache_create() unavailable)!" + #endif + ++#if defined(NV_KMEM_CACHE_CREATE_USERCOPY_PRESENT) ++#define NV_KMEM_CACHE_CREATE_USERCOPY(kmem_cache, name, type) \ ++ { \ ++ kmem_cache = kmem_cache_create_usercopy(name, sizeof(type), \ ++ 0, 0, 0, sizeof(type), NULL); \ ++ } ++#else ++#define NV_KMEM_CACHE_CREATE_USERCOPY(kmem_cache, name, type) \ ++ NV_KMEM_CACHE_CREATE(kmem_cache, name, type) ++#endif ++ + #define NV_KMEM_CACHE_ALLOC(ptr, kmem_cache, type) \ + { \ + (ptr) = kmem_cache_alloc(kmem_cache, GFP_KERNEL); \ +@@ -1971,6 +1987,19 @@ extern NvU32 nv_assign_gpu_count; + }) + #endif + ++#if defined(NV_HAVE_PROC_OPS) ++#define NV_CREATE_PROC_FILE(filename,parent,__name,__data) \ ++ ({ \ ++ struct proc_dir_entry *__entry; \ ++ int mode = (S_IFREG | S_IRUGO); \ ++ const struct proc_ops *fops = &nv_procfs_##__name##_fops; \ ++ if (fops->proc_write != 0) \ ++ mode |= S_IWUSR; \ ++ __entry = NV_CREATE_PROC_ENTRY(filename, mode, parent, fops, \ ++ __data); \ ++ __entry; \ ++ }) ++#else + #define NV_CREATE_PROC_FILE(filename,parent,__name,__data) \ + ({ \ + struct proc_dir_entry *__entry; \ +@@ -1982,6 +2011,7 @@ extern NvU32 nv_assign_gpu_count; + __data); \ + __entry; \ + }) ++#endif + + /* + * proc_mkdir_mode exists in Linux 2.6.9, but isn't exported until Linux 3.0. +@@ -2023,6 +2053,24 @@ extern NvU32 nv_assign_gpu_count; + remove_proc_entry(entry->name, entry->parent); + #endif + ++#if defined(NV_HAVE_PROC_OPS) ++#define NV_DEFINE_PROCFS_SINGLE_FILE(__name) \ ++ static int nv_procfs_open_##__name( \ ++ struct inode *inode, \ ++ struct file *filep \ ++ ) \ ++ { \ ++ return single_open(filep, nv_procfs_read_##__name, \ ++ NV_PDE_DATA(inode)); \ ++ } \ ++ \ ++ static const struct proc_ops nv_procfs_##__name##_fops = { \ ++ .proc_open = nv_procfs_open_##__name, \ ++ .proc_read = seq_read, \ ++ .proc_lseek = seq_lseek, \ ++ .proc_release = single_release, \ ++ }; ++#else + #define NV_DEFINE_PROCFS_SINGLE_FILE(__name) \ + static int nv_procfs_open_##__name( \ + struct inode *inode, \ +@@ -2040,6 +2088,7 @@ extern NvU32 nv_assign_gpu_count; + .llseek = seq_lseek, \ + .release = single_release, \ + }; ++#endif + + #endif /* CONFIG_PROC_FS */ + +diff --git a/kernel/nv-procfs.c b/kernel/nv-procfs.c +index ebca3e8..9365c3c 100644 +--- a/kernel/nv-procfs.c ++++ b/kernel/nv-procfs.c +@@ -409,6 +409,15 @@ done: + return ((status < 0) ? status : (int)count); + } + ++#if defined(NV_HAVE_PROC_OPS) ++static struct proc_ops nv_procfs_registry_fops = { ++ .proc_open = nv_procfs_open_registry, ++ .proc_read = seq_read, ++ .proc_write = nv_procfs_write_file, ++ .proc_lseek = seq_lseek, ++ .proc_release = nv_procfs_close_registry, ++}; ++#else + static struct file_operations nv_procfs_registry_fops = { + .owner = THIS_MODULE, + .open = nv_procfs_open_registry, +@@ -417,6 +426,7 @@ static struct file_operations nv_procfs_registry_fops = { + .llseek = seq_lseek, + .release = nv_procfs_close_registry, + }; ++#endif + + static int + nv_procfs_read_unbind_lock( +@@ -538,6 +548,15 @@ done: + return rc; + } + ++#if defined(NV_HAVE_PROC_OPS) ++static struct proc_ops nv_procfs_unbind_lock_fops = { ++ .proc_open = nv_procfs_open_unbind_lock, ++ .proc_read = seq_read, ++ .proc_write = nv_procfs_write_file, ++ .proc_lseek = seq_lseek, ++ .proc_release = nv_procfs_close_unbind_lock, ++}; ++#else + static struct file_operations nv_procfs_unbind_lock_fops = { + .owner = THIS_MODULE, + .open = nv_procfs_open_unbind_lock, +@@ -546,6 +565,7 @@ static struct file_operations nv_procfs_unbind_lock_fops = { + .llseek = seq_lseek, + .release = nv_procfs_close_unbind_lock, + }; ++#endif + + static int + nv_procfs_read_text_file( +diff --git a/kernel/nv-time.h b/kernel/nv-time.h +index a34ceb2..780f8bc 100644 +--- a/kernel/nv-time.h ++++ b/kernel/nv-time.h +@@ -28,7 +28,12 @@ + #include + #endif + +-static inline void nv_gettimeofday(struct timeval *tv) ++struct nv_timeval { ++ __kernel_long_t tv_sec; ++ __kernel_suseconds_t tv_usec; ++}; ++ ++static inline void nv_gettimeofday(struct nv_timeval *tv) + { + #ifdef NV_DO_GETTIMEOFDAY_PRESENT + do_gettimeofday(tv); +@@ -37,7 +42,7 @@ static inline void nv_gettimeofday(struct timeval *tv) + + ktime_get_real_ts64(&now); + +- *tv = (struct timeval) { ++ *tv = (struct nv_timeval) { + .tv_sec = now.tv_sec, + .tv_usec = now.tv_nsec/1000, + }; +diff --git a/kernel/nv.c b/kernel/nv.c +index a167be9..a218f83 100644 +--- a/kernel/nv.c ++++ b/kernel/nv.c +@@ -752,7 +752,7 @@ int __init nvidia_init_module(void) + NV_SPIN_LOCK_INIT(&km_lock); + #endif + +- NV_KMEM_CACHE_CREATE(nv_stack_t_cache, NV_STACK_CACHE_STR, nv_stack_t); ++ NV_KMEM_CACHE_CREATE_USERCOPY(nv_stack_t_cache, NV_STACK_CACHE_STR, nv_stack_t); + if (nv_stack_t_cache == NULL) + { + nv_printf(NV_DBG_ERRORS, "NVRM: stack cache allocation failed!\n"); +diff --git a/kernel/os-interface.c b/kernel/os-interface.c +index 7190b26..0c0dc05 100644 +--- a/kernel/os-interface.c ++++ b/kernel/os-interface.c +@@ -439,7 +439,7 @@ RM_STATUS NV_API_CALL os_get_current_time( + NvU32 *useconds + ) + { +- struct timeval tm; ++ struct nv_timeval tm; + + nv_gettimeofday(&tm); + +@@ -474,7 +474,7 @@ RM_STATUS NV_API_CALL os_delay_us(NvU32 MicroSeconds) + unsigned long usec; + + #ifdef NV_CHECK_DELAY_ACCURACY +- struct timeval tm1, tm2; ++ struct nv_timeval tm1, tm2; + + nv_gettimeofday(&tm1); + #endif +@@ -514,9 +514,9 @@ RM_STATUS NV_API_CALL os_delay(NvU32 MilliSeconds) + unsigned long MicroSeconds; + unsigned long jiffies; + unsigned long mdelay_safe_msec; +- struct timeval tm_end, tm_aux; ++ struct nv_timeval tm_end, tm_aux; + #ifdef NV_CHECK_DELAY_ACCURACY +- struct timeval tm_start; ++ struct nv_timeval tm_start; + #endif + + nv_gettimeofday(&tm_aux); +diff --git a/kernel/uvm/Makefile b/kernel/uvm/Makefile +index 0cad8ff..043a08d 100644 +--- a/kernel/uvm/Makefile ++++ b/kernel/uvm/Makefile +@@ -207,6 +207,7 @@ ccflags-y += $(EXTRA_CFLAGS) + + RM_MODULE_SYMVERS:= $(RM_OUT_DIR)/Module.symvers + UVM_MODULE_SYMVERS:= $(obj)/Module.symvers ++KBUILD_EXTRA_SYMBOLS:= $(UVM_MODULE_SYMVERS) + + module $(MODULE_NAME).ko: $(UVM_MODULE_SYMVERS) debug_diagnostics_printing + +diff --git a/kernel/uvm/conftest.sh b/kernel/uvm/conftest.sh +index b7a85f0..33e2a63 100755 +--- a/kernel/uvm/conftest.sh ++++ b/kernel/uvm/conftest.sh +@@ -176,6 +176,7 @@ test_headers() { + FILES="$FILES linux/ktime.h" + FILES="$FILES linux/file.h" + ++ FILES_ARCH="$FILES_ARCH asm/pgtable.h" + FILES_ARCH="$FILES_ARCH asm/set_memory.h" + + translate_and_find_header_files $HEADERS $FILES +@@ -440,6 +441,9 @@ compile_test() { + # Determine if the set_memory_array_uc() function is present. + # + CODE=" ++ #if defined(NV_ASM_PGTABLE_H_PRESENT) ++ #include ++ #endif + #if defined(NV_ASM_SET_MEMORY_H_PRESENT) + #include + #else +diff --git a/kernel/uvm/nvidia_uvm_lite.c b/kernel/uvm/nvidia_uvm_lite.c +index 6943e7c..9a7e3b6 100644 +--- a/kernel/uvm/nvidia_uvm_lite.c ++++ b/kernel/uvm/nvidia_uvm_lite.c +@@ -131,8 +131,8 @@ static + RM_STATUS _preexisting_error_on_channel(UvmGpuMigrationTracking *pMigTracker, + UvmCommitRecord *pRecord); + +-static void _set_timeout_in_usec(struct timeval *src, +- struct timeval *result, ++static void _set_timeout_in_usec(struct nv_timeval *src, ++ struct nv_timeval *result, + unsigned long timeoutInUsec) + { + if (!src || !result) +@@ -820,7 +820,13 @@ done: + } + + #if defined(NV_VM_OPERATIONS_STRUCT_HAS_FAULT) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0) ++vm_fault_t _fault(struct vm_fault *vmf) ++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) ++int _fault(struct vm_fault *vmf) ++#else + int _fault(struct vm_area_struct *vma, struct vm_fault *vmf) ++#endif + { + #if defined(NV_VM_FAULT_HAS_ADDRESS) + unsigned long vaddr = vmf->address; +@@ -828,8 +834,15 @@ int _fault(struct vm_area_struct *vma, struct vm_fault *vmf) + unsigned long vaddr = (unsigned long)vmf->virtual_address; + #endif + struct page *page = NULL; ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0) ++ vm_fault_t retval; ++#else + int retval; + ++#endif ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) ++ struct vm_area_struct *vma = vmf->vma; ++#endif + retval = _fault_common(vma, vaddr, &page, vmf->flags); + + vmf->page = page; +@@ -868,7 +881,13 @@ static struct vm_operations_struct uvmlite_vma_ops = + // it's dealing with anonymous mapping (see handle_pte_fault). + // + #if defined(NV_VM_OPERATIONS_STRUCT_HAS_FAULT) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 17, 0) ++vm_fault_t _sigbus_fault(struct vm_fault *vmf) ++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) ++int _sigbus_fault(struct vm_fault *vmf) ++#else + int _sigbus_fault(struct vm_area_struct *vma, struct vm_fault *vmf) ++#endif + { + vmf->page = NULL; + return VM_FAULT_SIGBUS; +@@ -1992,9 +2011,9 @@ void umvlite_destroy_per_process_gpu_resources(UvmGpuUuid *gpuUuidStruct) + static RM_STATUS _check_ecc_errors(UvmGpuMigrationTracking *pMigTracker, + NvBool *pIsEccErrorSet) + { +- struct timeval eccErrorStartTime = {0}; +- struct timeval eccErrorCurrentTime = {0}; +- struct timeval eccTimeout = {0}; ++ struct nv_timeval eccErrorStartTime = {0}; ++ struct nv_timeval eccErrorCurrentTime = {0}; ++ struct nv_timeval eccTimeout = {0}; + NvBool bEccErrorTimeout = NV_FALSE; + NvBool bEccIncomingError = NV_FALSE; + unsigned rmInterruptSet = 0; +-- +2.29.0 + diff --git a/nvidia_340-340.108-kernel-5.8.patch b/nvidia_340-340.108-kernel-5.8.patch new file mode 100644 index 0000000..1d8b1a4 --- /dev/null +++ b/nvidia_340-340.108-kernel-5.8.patch @@ -0,0 +1,92 @@ +From 2cc3342b4b3c96bcc4062513011d35c079b009a2 Mon Sep 17 00:00:00 2001 +From: graysky +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 + diff --git a/nvidia_340-340.108-kernel-5.9.patch b/nvidia_340-340.108-kernel-5.9.patch new file mode 100644 index 0000000..d858431 --- /dev/null +++ b/nvidia_340-340.108-kernel-5.9.patch @@ -0,0 +1,107 @@ +From fea401df7500bfbead5a42b1e74560dbddf2f5a3 Mon Sep 17 00:00:00 2001 +From: graysky +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 /* sys_ioctl() */ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 9, 0) + #include /* 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 /* sys_ioctl() */ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 9, 0) + #include /* register_ioctl32_conversion() */ + #endif ++#endif + + #if !defined(NV_FILE_OPERATIONS_HAS_IOCTL) && \ + !defined(NV_FILE_OPERATIONS_HAS_UNLOCKED_IOCTL) +-- +2.29.0 + diff --git a/nvidia_340.spec b/nvidia_340.spec index 04dadc6..5f6a605 100644 --- a/nvidia_340.spec +++ b/nvidia_340.spec @@ -2,7 +2,7 @@ Name: nvidia_340 Version: 340.108 Epoch: 1 -Release: 3mamba +Release: 7mamba Summary: NVIDIA proprietary accelerated drivers for the Linux Kernel Group: System/Kernel and Hardware Vendor: openmamba @@ -11,15 +11,29 @@ Packager: Silvan Calarco URL: http://www.nvidia.com/object/unix.html Source0: http://us.download.nvidia.com/XFree86/Linux-x86/%{version}/NVIDIA-Linux-x86-%{version}.run Source1: http://us.download.nvidia.com/XFree86/Linux-x86_64/%{version}/NVIDIA-Linux-x86_64-%{version}.run +Source2: nvidia_340.sysusers Patch0: nvidia-331.20-x86-conftest.patch Patch1: nvidia-340.102-kernel-4.9.patch Patch2: nvidia_340-340.102-kernel-4.9-2.patch Patch3: nvidia_340-340.107-conftest-x86.patch +Patch4: nvidia_340-340.108-kernel-5.7.patch +Patch5: nvidia_340-340.108-kernel-5.8.patch +Patch6: nvidia_340-340.108-kernel-5.9.patch +Patch7: nvidia_340-340.108-kernel-5.10.patch +Patch8: nvidia_340-340.108-kernel-5.11.patch License: no OSI Approved ## AUTOBUILDREQ-BEGIN +BuildRequires: glibc-devel +BuildRequires: libX11-devel +BuildRequires: libXext-devel +BuildRequires: libatk-devel +BuildRequires: libgdk-pixbuf-devel +BuildRequires: libglib-devel +BuildRequires: libglvnd-devel +BuildRequires: libgtk2-devel +BuildRequires: libpango-devel ## AUTOBUILDREQ-END ExclusiveArch: i586 x86_64 -BuildRoot: %{_tmppath}/%{name}-%{version}-root %description nvidia proprietary accelerated drivers for the Linux Kernel. @@ -38,59 +52,27 @@ Provides: xorgdrvvideo Provides: kernelnvidia Conflicts: xorg-drv-video-nvidia Conflicts: xorg-drv-video-nvidia_304 -AutoReq: no +Conflicts: xorg-drv-video-nvidia_390 +Provides: libGL-%{name}-X11 +Obsoletes: libGL-%{name}-X11 < 1:340.108-7mamba +Obsoletes: libglx-nvidia < 1:340.108-7mamba +Provides: xorg-ext-libglx-%{name} +Obsoletes: xorg-ext-libglx-%{name} < 1:340.108-7mamba +Conflicts: xorg-ext-libglx-nvidia_304 +Conflicts: xorg-ext-libglx-nvidia_390 +Conflicts: xorg-ext-libglx-nvidia +Provides: xorg-apps-%{name} +Obsoletes: xorg-apps-%{name} < 1:340.108-7mamba +Conflicts: xorg-apps-nvidia_304 +Conflicts: xorg-apps-nvidia_390 +Conflicts: xorg-apps-nvidia %description -n xorg-drv-video-%{name} The NVIDIA Accelerated Linux Driver Set brings both accelerated 2D functionality and high performance OpenGL support to Linux x86 with theuse of NVIDIA graphics processing units (GPUs). - These drivers provide optimized hardware acceleration of OpenGL applications via a direct-rendering X Server and support nearly all NVIDIA graphics chips. TwinView, TV-Out and flat panel displays are also supported. - This package contains the Xorg libraries. -%package -n libGL-%{name}-X11 -Group: System/Libraries -Summary: NVIDIA proprietary OpenGL library implementation -Requires: xorg-ext-libglx-%{name} == %{epoch}:%{version}-%{release} -Provides: xorglibGL -Provides: libGL.so.1 -Conflicts: libGL-nvidia-X11 - -%description -n libGL-%{name}-X11 -The NVIDIA Accelerated Linux Driver Set brings both accelerated 2D functionality and high performance OpenGL support to Linux x86 with theuse of NVIDIA graphics processing units (GPUs). - -These drivers provide optimized hardware acceleration of OpenGL applications via a direct-rendering X Server and support nearly all NVIDIA graphics chips. -TwinView, TV-Out and flat panel displays are also supported. - -This package contains the NVIDIA proprietary OpenGL library implementation for Xorg. - -%package -n xorg-ext-libglx-%{name} -Group: System/Libraries -Summary: NVIDIA proprietary glx library implementation -Provides: xorglibglx -Conflicts: xorg-ext-libglx-nvidia - -%description -n xorg-ext-libglx-%{name} -The NVIDIA Accelerated Linux Driver Set brings both accelerated 2D functionality and high performance OpenGL support to Linux x86 with theuse of NVIDIA graphics processing units (GPUs). - -These drivers provide optimized hardware acceleration of OpenGL applications via a direct-rendering X Server and support nearly all NVIDIA graphics chips. -TwinView, TV-Out and flat panel displays are also supported. - -This package contains the NVIDIA proprietary glx library implementation for Xorg. - -%package -n xorg-apps-%{name} -Group: System/Tools -Summary: NVIDIA configuration tools -Conflicts: xorg-apps-nvidia - -%description -n xorg-apps-%{name} -The NVIDIA Accelerated Linux Driver Set brings both accelerated 2D functionality and high performance OpenGL support to Linux x86 with theuse of NVIDIA graphics processing units (GPUs). - -These drivers provide optimized hardware acceleration of OpenGL applications via a direct-rendering X Server and support nearly all NVIDIA graphics chips. -TwinView, TV-Out and flat panel displays are also supported. - -This package contains the NVIDIA tools nvidia-settings, nvidia-xconfig, and nvidia-smi. - %package -n xorg-drv-video-%{name}-doc Group: Documentation Summary: HTML documentation for NVIDIA Accelerated Libraries for Xorg @@ -98,14 +80,15 @@ AutoReq: no %description -n xorg-drv-video-%{name}-doc The NVIDIA Accelerated Linux Driver Set brings both accelerated 2D functionality and high performance OpenGL support to Linux x86 with theuse of NVIDIA graphics processing units (GPUs). - These drivers provide optimized hardware acceleration of OpenGL applications via a direct-rendering X Server and support nearly all NVIDIA graphics chips. TwinView, TV-Out and flat panel displays are also supported. - This package contains the HTML documentation. %prep %setup -q -c -n %{name}-%{version} -T + +%global __provides_exclude ^(libGL\\.so.*|libEGL\\.so.*|libGLESv1_CM\\.so.*|libGLESv2\\.so.*|libOpenCL\\.so.*)$ + # # unpack NVIDIA files # @@ -125,6 +108,12 @@ cd current %patch1 -p1 #%patch2 -p1 %patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +tar xf nvidia-persistenced-init.tar.bz2 cd .. %build @@ -133,126 +122,104 @@ cd .. [ "%{buildroot}" != / ] && rm -rf "%{buildroot}" pushd current +# From Arch Linux +# X driver +install -D -m755 nvidia_drv.so %{buildroot}%{_libdir}/xorg/modules/drivers/nvidia_drv.so + +# GLX extension module for X +install -D -m755 libglx.so.%{version} %{buildroot}%{_libdir}/nvidia/xorg/libglx.so.%{version} + +# Ensure that X finds glx +ln -s libglx.so.%{version} %{buildroot}%{_libdir}/nvidia/xorg/libglx.so.1 +ln -s libglx.so.%{version} %{buildroot}%{_libdir}/nvidia/xorg/libglx.so + +# EGL and OpenGL ES libraries +install -D -m755 libGL.so.%{version} %{buildroot}%{_libdir}/libGL.so.%{version} +install -D -m755 libEGL.so.%{version} %{buildroot}%{_libdir}/libEGL.so.%{version} +install -D -m755 libGLESv1_CM.so.%{version} %{buildroot}%{_libdir}/libGLESv1_CM.so.%{version} +install -D -m755 libGLESv2.so.%{version} %{buildroot}%{_libdir}/libGLESv2.so.%{version} + +# OpenGL core library +install -D -m755 libnvidia-glcore.so.%{version} %{buildroot}%{_libdir}/libnvidia-glcore.so.%{version} +install -D -m755 libnvidia-eglcore.so.%{version} %{buildroot}%{_libdir}/libnvidia-eglcore.so.%{version} +install -D -m755 libnvidia-glsi.so.%{version} %{buildroot}%{_libdir}/libnvidia-glsi.so.%{version} + +# OpenCL +install -D -m644 nvidia.icd %{buildroot}%{_sysconfdir}/OpenCL/vendors/nvidia.icd +install -D -m755 libnvidia-compiler.so.%{version} %{buildroot}%{_libdir}/libnvidia-compiler.so.%{version} +install -D -m755 libnvidia-opencl.so.%{version} %{buildroot}%{_libdir}/libnvidia-opencl.so.%{version} + +# misc +install -D -m755 libnvidia-ifr.so.%{version} %{buildroot}%{_libdir}/libnvidia-ifr.so.%{version} +install -D -m755 libnvidia-fbc.so.%{version} %{buildroot}%{_libdir}/libnvidia-fbc.so.%{version} +install -D -m755 libnvidia-encode.so.%{version} %{buildroot}%{_libdir}/libnvidia-encode.so.%{version} +install -D -m755 libnvidia-cfg.so.%{version} %{buildroot}%{_libdir}/libnvidia-cfg.so.%{version} +install -D -m755 libnvidia-ml.so.%{version} %{buildroot}%{_libdir}/libnvidia-ml.so.%{version} + +# VDPAU +install -D -m755 libvdpau_nvidia.so.%{version} %{buildroot}%{_libdir}/vdpau/libvdpau_nvidia.so.%{version} + +# nvidia-tls library +install -D -m755 tls/libnvidia-tls.so.%{version} %{buildroot}%{_libdir}/tls/libnvidia-tls.so.%{version} + +# CUDA +install -D -m755 libcuda.so.%{version} %{buildroot}%{_libdir}/libcuda.so.%{version} +install -D -m755 libnvcuvid.so.%{version} %{buildroot}%{_libdir}/libnvcuvid.so.%{version} + +# DEBUG +install -D -m755 nvidia-debugdump %{buildroot}%{_bindir}/nvidia-debugdump + +# nvidia-xconfig +install -D -m755 nvidia-xconfig %{buildroot}%{_bindir}/nvidia-xconfig +install -D -m644 nvidia-xconfig.1.gz %{buildroot}%{_mandir}/man1/nvidia-xconfig.1.gz + +# nvidia-settings +install -D -m755 nvidia-settings %{buildroot}%{_bindir}/nvidia-settings +install -D -m644 nvidia-settings.1.gz %{buildroot}%{_mandir}/man1/nvidia-settings.1.gz +install -D -m644 nvidia-settings.desktop %{buildroot}%{_datadir}/applications/nvidia-settings.desktop +install -D -m644 nvidia-settings.png %{buildroot}%{_datadir}/pixmaps/nvidia-settings.png +sed -e 's:__UTILS_PATH__:/usr/bin:' -e 's:__PIXMAP_PATH__:/usr/share/pixmaps:' -i %{buildroot}%{_datadir}/applications/nvidia-settings.desktop + +# nvidia-bug-report +install -D -m755 nvidia-bug-report.sh %{buildroot}%{_bindir}/nvidia-bug-report.sh + +# nvidia-smi +install -D -m755 nvidia-smi %{buildroot}%{_bindir}/nvidia-smi +install -D -m644 nvidia-smi.1.gz %{buildroot}%{_mandir}/man1/nvidia-smi.1.gz + +# nvidia-cuda-mps +install -D -m755 nvidia-cuda-mps-server %{buildroot}%{_bindir}/nvidia-cuda-mps-server +install -D -m755 nvidia-cuda-mps-control %{buildroot}%{_bindir}/nvidia-cuda-mps-control +install -D -m644 nvidia-cuda-mps-control.1.gz %{buildroot}%{_mandir}/man1/nvidia-cuda-mps-control.1.gz + +# nvidia-modprobe +# This should be removed if nvidia fixed their uvm module! +install -D -m4755 nvidia-modprobe %{buildroot}%{_bindir}/nvidia-modprobe +install -D -m644 nvidia-modprobe.1.gz %{buildroot}%{_mandir}/man1/nvidia-modprobe.1.gz + +# nvidia-persistenced +install -D -m755 nvidia-persistenced %{buildroot}%{_bindir}/nvidia-persistenced +install -D -m644 nvidia-persistenced.1.gz %{buildroot}%{_mandir}/man1/nvidia-persistenced.1.gz +install -D -m644 nvidia-persistenced-init/systemd/nvidia-persistenced.service.template %{buildroot}%{_unitdir}/nvidia-persistenced.service +sed -i 's/__USER__/nvidia-persistenced/' %{buildroot}%{_unitdir}/nvidia-persistenced.service + +# application profiles +install -D -m644 nvidia-application-profiles-%{version}-rc %{buildroot}%{_datadir}/nvidia/nvidia-application-profiles-%{version}-rc +install -D -m644 nvidia-application-profiles-%{version}-key-documentation %{buildroot}%{_datadir}/nvidia/nvidia-application-profiles-%{version}-key-documentation + +install -Dm644 %{SOURCE2} %{buildroot}%{_sysusersdir}/nvidia.conf + # dkms install -d -m0755 %{buildroot}%{_prefix}/src/%{name}-%{version} cp -a kernel/* %{buildroot}%{_prefix}/src/%{name}-%{version}/ -cat > %{buildroot}%{_prefix}/src/%{name}-%{version}/dkms.conf << _EOF -PACKAGE_NAME=%{name} -PACKAGE_VERSION=%{version} -MAKE="ln -sf /usr/src/\${PACKAGE_NAME}-\${PACKAGE_VERSION}/nv-kernel.o \${dkms_tree}/\${PACKAGE_NAME}/\${PACKAGE_VERSION}/build/;\ -IGNORE_CC_MISMATCH=1 make -C \${kernel_source_dir} KERNEL_SOURCES=\${kernel_source_dir} M=\${dkms_tree}/\${PACKAGE_NAME}/\${PACKAGE_VERSION}/build modules" -CLEAN="make -C \${kernel_source_dir} M=\${dkms_tree}/\${PACKAGE_NAME}/\${PACKAGE_VERSION}/build clean" -BUILT_MODULE_NAME=nvidia -BUILT_MODULE_LOCATION=./ -DEST_MODULE_LOCATION=/kernel/drivers/video -REMAKE_INITRD=no -AUTOINSTALL=yes -_EOF +cat kernel/uvm/dkms.conf.fragment >> %{buildroot}%{_prefix}/src/%{name}-%{version}/dkms.conf -install -D -m 0755 libnvidia-wfb.so.%{nvidia_current_libver} \ - %{buildroot}%{_libdir}/xorg/modules/libnvidia-wfb.so.%{nvidia_current_libver} - -install -D -m 0755 libcuda.so.%{nvidia_current_libver} \ - %{buildroot}%{_libdir}/libcuda.so.%{nvidia_current_libver} - -install -D -m 0755 libGL.so.%{nvidia_current_libver} \ - %{buildroot}%{_libdir}/libGL_so.%{nvidia_current_libver} -ln -s libGL_so.%{nvidia_current_libver} %{buildroot}%{_libdir}/libGL_current_so.1 - -install -D -m 0755 libglx.so.%{nvidia_current_libver} \ - %{buildroot}%{_libdir}/xorg/modules/extensions/libglx_so.%{nvidia_current_libver} -ln -s libglx_so.%{nvidia_current_libver} \ - %{buildroot}%{_libdir}/xorg/modules/extensions/libglx_current_so - -install -D -m 0755 libnvcuvid.so.%{nvidia_current_libver} \ - %{buildroot}%{_libdir}/libnvcuvid.so.%{nvidia_current_libver} - -install -D -m 0755 libnvidia-cfg.so.%{nvidia_current_libver} \ - %{buildroot}%{_libdir}/libnvidia-cfg_so.%{nvidia_current_libver} -ln -s libnvidia-cfg_so.%{nvidia_current_libver} \ - %{buildroot}%{_libdir}/libnvidia-cfg_current_so - -install -D -m 0755 libnvidia-compiler.so.%{nvidia_current_libver} \ - %{buildroot}%{_libdir}/libnvidia-compiler.so.%{nvidia_current_libver} - -install -D -m 0755 libnvidia-encode.so.%{nvidia_current_libver} \ - %{buildroot}%{_libdir}/libnvidia-encode.so.%{nvidia_current_libver} - -install -D -m 0755 libnvidia-glcore.so.%{nvidia_current_libver} \ - %{buildroot}%{_libdir}/libnvidia-glcore.so.%{nvidia_current_libver} - -install -D -m 0755 libnvidia-ml.so.%{nvidia_current_libver} \ - %{buildroot}%{_libdir}/libnvidia-ml.so.%{nvidia_current_libver} -ln -s libnvidia-ml.so.%{nvidia_current_libver} \ - %{buildroot}%{_libdir}/libnvidia-ml.so.1 - -install -D -m 0755 libnvidia-opencl.so.%{nvidia_current_libver} \ - %{buildroot}%{_libdir}/libnvidia-opencl.so.%{nvidia_current_libver} - -install -D -m 0755 tls/libnvidia-tls.so.%{nvidia_current_libver} \ - %{buildroot}%{_libdir}/tls/libnvidia-tls.so.%{nvidia_current_libver} -#ln -s libnvidia-tls_so.%{nvidia_current_libver} \ -# %{buildroot}%{_libdir}/tls/libnvidia-tls_current_so.1 - -install -D -m 0755 libnvidia-tls.so.%{nvidia_current_libver} \ - %{buildroot}%{_libdir}/libnvidia-tls.so.%{nvidia_current_libver} -#ln -s libnvidia-tls_so.%{nvidia_current_libver} \ -# %{buildroot}%{_libdir}/libnvidia-tls_current_so.1 - -install -D -m755 libOpenCL.so.1.0.0 \ - %{buildroot}%{_libdir}/libOpenCL_nvidia_so.1.0.0 - -#install -D -m755 libvdpau_nvidia.so.%{nvidia_current_libver} \ -# %{buildroot}%{_libdir}/vdpau/libvdpau_nvidia.so.%{nvidia_current_libver} -#ln -s libvdpau_nvidia.so.%{nvidia_current_libver} \ -# %{buildroot}%{_libdir}/vdpau/libvdpau_nvidia.so - -#install -D -m 0755 libXvMCNVIDIA.so.%{nvidia_current_libver} \ -# %{buildroot}%{_libdir}/libXvMCNVIDIA_so.%{nvidia_current_libver} -#ln -s libXvMCNVIDIA_so.%{nvidia_current_libver} \ -# %{buildroot}%{_libdir}/libXvMCNVIDIA_current_so - -#install -D -m 644 libXvMCNVIDIA.a %{buildroot}%{_libdir}/libXvMCNVIDIA.a - -install -D -m 0755 nvidia_drv.so \ - %{buildroot}%{_libdir}/xorg/modules/drivers/nvidia_current_drv_so - -install -d %{buildroot}%{_sbindir} -cat > %{buildroot}%{_sbindir}/update-alternatives-set-nvidia << _EOF -#!/bin/sh -#update-alternatives --set nvidia_\$(uname -r)_%{kernel_ver_u}.ko \ -#/lib/modules/\$(uname -r)/kernel/drivers/video/nvidia_current_ko -update-alternatives --set libglx.so %{_libdir}/xorg/modules/extensions/libglx_current_so -update-alternatives --set nvidia_drv.so %{_libdir}/xorg/modules/drivers/nvidia_current_drv_so -update-alternatives --set libGL.so.1 %{_libdir}/libGL_current_so.1 -#update-alternatives --set libXvMCNVIDIA_dynamic.so %{_libdir}/libXvMCNVIDIA_current_so -update-alternatives --set libnvidia-cfg.so %{_libdir}/libnvidia-cfg_current_so -update-alternatives --set libOpenCL.so.1 %{_libdir}/libOpenCL_nvidia_so.1.0.0 -#update-alternatives --set libnvidia-tls.so.1.lib %{_libdir}/libnvidia-tls_current_so.1 -#update-alternatives --set libnvidia-tls.so.1 %{_libdir}/tls/libnvidia-tls_current_so.1 -_EOF - -for f in nvidia-xconfig nvidia-settings nvidia-smi; do - install -D -m 775 ${f} %{buildroot}%{_bindir}/${f} - install -D -m 644 ${f}.1.gz %{buildroot}%{_mandir}/man1/${f}.1.gz -done -install -D -m 644 nvidia-settings.desktop \ - %{buildroot}%{_datadir}/applications/nvidia-settings.desktop -install -D -m 644 nvidia-settings.png \ - %{buildroot}%{_datadir}/pixmaps/nvidia-settings.png -install -D -m755 libvdpau_nvidia.so.%{nvidia_current_libver} \ - %{buildroot}%{_libdir}/vdpau/libvdpau_nvidia.so.%{nvidia_current_libver} -install -D -m755 libOpenCL.so.1.0.0 \ - %{buildroot}%{_libdir}/libOpenCL_nvidia_so.1.0.0 -ln -s libvdpau_nvidia.so.%{nvidia_current_libver} \ - %{buildroot}%{_libdir}/vdpau/libvdpau_nvidia.so - -# Clutter workaround (http://blog.sukimashita.com/2015/04/13/gnome-3-16-and-nvidia-binary-driver-crash-with-totem-gnome-maps-cheese-and-others/) -mkdir -p %{buildroot}%{_sysconfdir}/profile.d/ -cat > %{buildroot}%{_sysconfdir}/profile.d/nvidia-clutter.sh << _EOF -export CLUTTER_BACKEND=x11 -_EOF -chmod +x %{buildroot}%{_sysconfdir}/profile.d/nvidia-clutter.sh +## Clutter workaround (http://blog.sukimashita.com/2015/04/13/gnome-3-16-and-nvidia-binary-driver-crash-with-totem-gnome-maps-cheese-and-others/) +#mkdir -p %{buildroot}%{_sysconfdir}/profile.d/ +#cat > %{buildroot}%{_sysconfdir}/profile.d/nvidia-clutter.sh << _EOF +#export CLUTTER_BACKEND=x11 +#_EOF +#chmod +x %{buildroot}%{_sysconfdir}/profile.d/nvidia-clutter.sh %check cd current/kernel @@ -283,161 +250,71 @@ fi : %post -n xorg-drv-video-%{name} -# new install -update-alternatives --remove libnvidia-tls.so %{_libdir}/libnvidia-tls_current.so 2>/dev/null - -if [ $1 -ge 1 ]; then -# update-alternatives \ -# --install %{_libdir}/libXvMCNVIDIA_dynamic.so libXvMCNVIDIA_dynamic.so \ -# %{_libdir}/libXvMCNVIDIA_current_so 50 - update-alternatives \ - --install %{_libdir}/libnvidia-cfg.so libnvidia-cfg.so \ - %{_libdir}/libnvidia-cfg_current_so 50 -# update-alternatives \ -# --install %{_libdir}/libnvidia-tls.so.1 libnvidia-tls.so.1.lib \ -# %{_libdir}/libnvidia-tls_current_so.1 50 -# update-alternatives \ -# --install %{_libdir}/tls/libnvidia-tls.so.1 libnvidia-tls.so.1 \ -# %{_libdir}/tls/libnvidia-tls_current_so.1 50 - - [ -e %{_libdir}/xorg/modules/drivers/nvidia_drv.so ] && \ - rm -f %{_libdir}/xorg/modules/drivers/nvidia_drv.so - - update-alternatives \ - --install %{_libdir}/xorg/modules/drivers/nvidia_drv.so nvidia_drv.so \ - %{_libdir}/xorg/modules/drivers/nvidia_current_drv_so 50 - - update-alternatives \ - --install %{_libdir}/libOpenCL.so.1 libOpenCL.so.1 \ - %{_libdir}/libOpenCL_nvidia_so.1.0.0 20 -fi - -if [ $1 -eq 1 -a -n "`grep nv /etc/X11/xorg.conf 2>/dev/null`" ]; then - sed -i "s|\"nv\"|\"nvidia\"|" /etc/X11/xorg.conf - sed -i "s|Load \"dri\"||" /etc/X11/xorg.conf -fi /sbin/ldconfig /sbin/depmod -a -F /boot/System.map-%{kernel_ver}%{?KERNEL_TARGET} \ %{kernel_ver}%{?KERNEL_TARGET} &>/dev/null -exit 0 +: %preun -n xorg-drv-video-%{name} # erase dkms remove -q -m %{name} -v %{version} --all if [ $1 -eq 0 ]; then -# update-alternatives \ -# --remove libXvMCNVIDIA_dynamic.so %{_libdir}/libXvMCNVIDIA_current_so - update-alternatives \ - --remove libnvidia-cfg.so %{_libdir}/libnvidia-cfg_current_so - update-alternatives \ - --remove libnvidia-tls.so.1.lib %{_libdir}/libnvidia-tls_current_so.1 - update-alternatives \ - --remove libnvidia-tls.so.1 %{_libdir}/tls/libnvidia-tls_current_so.1 - - [ ! -L %{_libdir}/xorg/modules/drivers/nvidia_drv.so ] && \ - rm -f %{_libdir}/xorg/modules/drivers/nvidia_drv.so - - update-alternatives \ - --remove nvidia_drv.so %{_libdir}/xorg/modules/drivers/nvidia_current_drv_so - - update-alternatives \ - --remove libOpenCL.so.1 %{_libdir}/libOpenCL_nvidia_so.1.0.0 - - [ -w /etc/X11/xorg.conf ] && \ - sed -i "s|\"nvidia\"|\"nv\"|" /etc/X11/xorg.conf /sbin/ldconfig /sbin/depmod -a -F /boot/System.map-`uname -r` \ `uname -r` &>/dev/null fi -exit 0 - -%post -n xorg-ext-libglx-%{name} -update-alternatives --remove libglx.so %{_libdir}/libglx_current.so 2>/dev/null -/usr/sbin/update-alternatives \ - --install %{_libdir}/xorg/modules/extensions/libglx.so libglx.so \ - %{_libdir}/xorg/modules/extensions/libglx_current_so 20 -exit 0 - -%preun -n xorg-ext-libglx-%{name} -if [ $1 -eq 0 ]; then - /usr/sbin/update-alternatives --remove libglx.so \ - %{_libdir}/xorg/modules/extensions/libglx_current_so -fi -exit 0 - -%post -n libGL-%{name}-X11 -update-alternatives --remove libGL.so.1 %{_libdir}/libGL_current.so.1 2>/dev/null -/usr/sbin/update-alternatives \ - --install %{_libdir}/libGL.so.1 libGL.so.1 \ - %{_libdir}/libGL_current_so.1 20 -/sbin/ldconfig -exit 0 - -%preun -n libGL-%{name}-X11 -if [ $1 -eq 0 ]; then - /usr/sbin/update-alternatives --remove libGL.so.1 \ - %{_libdir}/libGL_current_so.1 -fi -/sbin/ldconfig -exit 0 - -%files -n libGL-%{name}-X11 -%defattr(-,root,root) -%{_libdir}/libGL_so.%{nvidia_current_libver} -%{_libdir}/libGL_current_so.1 - -%files -n xorg-ext-libglx-%{name} -%defattr(-,root,root) -%{_libdir}/xorg/modules/extensions/libglx_current_so -%{_libdir}/xorg/modules/extensions/libglx_so.%{nvidia_current_libver} +: %files -n xorg-drv-video-%{name} %defattr(-,root,root) -%{_sysconfdir}/profile.d/nvidia-clutter.sh +#%{_sysconfdir}/profile.d/nvidia-clutter.sh +%{_sysconfdir}/OpenCL/vendors/nvidia.icd %dir %{_prefix}/src/%{name}-%{version} %{_prefix}/src/%{name}-%{version}/* -%attr(0755,root,root) %{_sbindir}/update-alternatives-set-nvidia -%{_libdir}/libnvidia-glcore.so.%{nvidia_current_libver} -#%{_libdir}/libXvMCNVIDIA.a -#%{_libdir}/libXvMCNVIDIA_so.%{nvidia_current_libver} -#%{_libdir}/libXvMCNVIDIA_current_so -%{_libdir}/xorg/modules/drivers/nvidia_current_drv_so -%{_libdir}/xorg/modules/libnvidia-wfb.so.%{nvidia_current_libver} -#%{_libdir}/xorg/modules/libwfb.so +%{_bindir}/nvidia-* +%{_prefix}/lib/systemd/system/nvidia-persistenced.service +%{_prefix}/lib/sysusers.d/nvidia.conf +%{_libdir}/libEGL.so.* +%{_libdir}/libGL.so.* +%{_libdir}/libGLESv1_CM.so.* +%{_libdir}/libGLESv2.so.* %{_libdir}/libcuda.so.* %{_libdir}/libnvcuvid.so.* -%{_libdir}/libnvidia-compiler.so.* -%{_libdir}/libnvidia-encode.so.* -%{_libdir}/libnvidia-opencl.so.* -%{_libdir}/libnvidia-cfg_so.%{nvidia_current_libver} -%{_libdir}/libnvidia-cfg_current_so -%{_libdir}/libnvidia-tls.so.%{nvidia_current_libver} -#%{_libdir}/libnvidia-tls_current_so.1 -#%{_libdir}/tls/libnvidia-tls_current_so.1 -%{_libdir}/libnvidia-ml.so.1 -%{_libdir}/libnvidia-ml.so.%{nvidia_current_libver} -%{_libdir}/tls/libnvidia-tls.so.%{nvidia_current_libver} -%{_libdir}/libOpenCL_nvidia_so.1.0.0 -%{_libdir}/vdpau/libvdpau_nvidia.so -%{_libdir}/vdpau/libvdpau_nvidia.so.%{nvidia_current_libver} -%doc current/LICENSE - -%files -n xorg-apps-%{name} -%defattr(-,root,root) -%{_bindir}/nvidia-settings -%{_bindir}/nvidia-xconfig -%{_bindir}/nvidia-smi +%{_libdir}/libnvidia-*.so.* +%{_libdir}/nvidia/xorg/libglx.so +%{_libdir}/nvidia/xorg/libglx.so.* +%{_libdir}/tls/libnvidia-tls.so.* +%{_libdir}/vdpau/libvdpau_nvidia.so.* +%{_libdir}/xorg/modules/drivers/nvidia_drv.so %{_datadir}/applications/nvidia-settings.desktop +%{_datadir}/nvidia/nvidia-application-profiles-%{version}-key-documentation +%{_datadir}/nvidia/nvidia-application-profiles-%{version}-rc %{_datadir}/pixmaps/nvidia-settings.png -%{_mandir}/man1/nvidia-settings.* -%{_mandir}/man1/nvidia-smi.* -%{_mandir}/man1/nvidia-xconfig.* +%{_mandir}/man1/nvidia-cuda-mps-control.1* +%{_mandir}/man1/nvidia-modprobe.1* +%{_mandir}/man1/nvidia-persistenced.1* +%{_mandir}/man1/nvidia-settings.1* +%{_mandir}/man1/nvidia-smi.1* +%{_mandir}/man1/nvidia-xconfig.1* +%doc current/LICENSE %files -n xorg-drv-video-%{name}-doc %defattr(-,root,root) -%doc current/{LICENSE,NVIDIA_Changelog,README.txt} current/html +%doc current/{NVIDIA_Changelog,README.txt} current/html %changelog +* Fri Apr 23 2021 Silvan Calarco 340.108-7mamba +- repackaged with libglvnd and libmesa layout + +* Sun Apr 18 2021 Silvan Calarco 340.108-6mamba +- install included dkms file + +* Sun Apr 18 2021 Silvan Calarco 340.108-5mamba +- install included dkms file + +* Thu Apr 15 2021 Silvan Calarco 340.108-4mamba +- added patches up to kernel 5.11 + * Fri Aug 21 2020 Silvan Calarco 340.108-3mamba - dkms: add IGNORE_CC_MISMATCH=1 before make command to fix build with gcc 10.1+ diff --git a/nvidia_340.sysusers b/nvidia_340.sysusers new file mode 100644 index 0000000..71c0608 --- /dev/null +++ b/nvidia_340.sysusers @@ -0,0 +1 @@ +u nvidia-persistenced 143 'NVIDIA Persistence Daemon'