diff --git a/kernel/drivers/module-nvidia-current/actions.py b/kernel/drivers/module-nvidia-current/actions.py index c5768129ac..ca3c6165ae 100644 --- a/kernel/drivers/module-nvidia-current/actions.py +++ b/kernel/drivers/module-nvidia-current/actions.py @@ -30,8 +30,7 @@ def setup(): shelltools.move("tmp/.manifest", ".") shelltools.system("patch -p1 < NVIDIA-Linux-x86_64-430.64-work-around-mga-bug-25890.patch") - #shelltools.system("patch -p1 < NVIDIA-Linux-x86_64-430.64-kernel-5.5.patch") - + #shelltools.system("patch -p1 < NVIDIA-Linux-x86_64-430.64-kernel-5.5.patch") shelltools.echo("ld.so.conf", nvlibdir) diff --git a/kernel/drivers/module-nvidia-current/files/mageia/NVIDIA-Linux-x86_64-430.64-kernel-5.6.patch b/kernel/drivers/module-nvidia-current/files/mageia/NVIDIA-Linux-x86_64-430.64-kernel-5.6.patch new file mode 100644 index 0000000000..1963c03ad9 --- /dev/null +++ b/kernel/drivers/module-nvidia-current/files/mageia/NVIDIA-Linux-x86_64-430.64-kernel-5.6.patch @@ -0,0 +1,508 @@ +diff -Nurp NVIDIA-Linux-x86_64-430.64.orig/kernel/common/inc/nv-linux.h NVIDIA-Linux-x86_64-430.64/kernel/common/inc/nv-linux.h +--- NVIDIA-Linux-x86_64-430.64.orig/kernel/common/inc/nv-linux.h 2019-10-27 13:48:11.000000000 +0200 ++++ NVIDIA-Linux-x86_64-430.64/kernel/common/inc/nv-linux.h 2020-04-11 01:30:24.576641371 +0300 +@@ -534,7 +534,11 @@ static inline void *nv_ioremap(NvU64 phy + + static inline void *nv_ioremap_nocache(NvU64 phys, NvU64 size) + { ++#if defined(NV_IOREMAP_NOCACHE_PRESENT) + void *ptr = ioremap_nocache(phys, size); ++#else ++ void *ptr = ioremap(phys, size); ++#endif + if (ptr) + NV_MEMDBG_ADD(ptr, size); + return ptr; +diff -Nurp NVIDIA-Linux-x86_64-430.64.orig/kernel/common/inc/nv-procfs.h NVIDIA-Linux-x86_64-430.64/kernel/common/inc/nv-procfs.h +--- NVIDIA-Linux-x86_64-430.64.orig/kernel/common/inc/nv-procfs.h 2020-04-11 01:29:29.475036592 +0300 ++++ NVIDIA-Linux-x86_64-430.64/kernel/common/inc/nv-procfs.h 2020-04-11 01:28:48.300091052 +0300 +@@ -28,6 +28,18 @@ + + #define IS_EXERCISE_ERROR_FORWARDING_ENABLED() (EXERCISE_ERROR_FORWARDING) + ++#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 = proc_create_data(filename, mode, parent, fops, __data);\ ++ __entry; \ ++ }) ++#else + #define NV_CREATE_PROC_FILE(filename,parent,__name,__data) \ + ({ \ + struct proc_dir_entry *__entry; \ +@@ -38,6 +50,7 @@ + __entry = proc_create_data(filename, mode, parent, fops, __data);\ + __entry; \ + }) ++#endif + + /* + * proc_mkdir_mode exists in Linux 2.6.9, but isn't exported until Linux 3.0. +@@ -77,6 +90,44 @@ + remove_proc_entry(entry->name, entry->parent); + #endif + ++#if defined(NV_HAVE_PROC_OPS) ++#define NV_DEFINE_SINGLE_PROCFS_FILE(name, open_callback, close_callback) \ ++ static int nv_procfs_open_##name( \ ++ struct inode *inode, \ ++ struct file *filep \ ++ ) \ ++ { \ ++ int ret; \ ++ ret = single_open(filep, nv_procfs_read_##name, \ ++ NV_PDE_DATA(inode)); \ ++ if (ret < 0) \ ++ { \ ++ return ret; \ ++ } \ ++ ret = open_callback(); \ ++ if (ret < 0) \ ++ { \ ++ single_release(inode, filep); \ ++ } \ ++ return ret; \ ++ } \ ++ \ ++ static int nv_procfs_release_##name( \ ++ struct inode *inode, \ ++ struct file *filep \ ++ ) \ ++ { \ ++ close_callback(); \ ++ return single_release(inode, filep); \ ++ } \ ++ \ ++ 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 = nv_procfs_release_##name, \ ++ }; ++#else + #define NV_DEFINE_SINGLE_PROCFS_FILE(name, open_callback, close_callback) \ + static int nv_procfs_open_##name( \ + struct inode *inode, \ +@@ -114,6 +165,7 @@ + .llseek = seq_lseek, \ + .release = nv_procfs_release_##name, \ + }; ++#endif + + #endif /* CONFIG_PROC_FS */ + +diff -Nurp NVIDIA-Linux-x86_64-430.64.orig/kernel/common/inc/nv-time.h NVIDIA-Linux-x86_64-430.64/kernel/common/inc/nv-time.h +--- NVIDIA-Linux-x86_64-430.64.orig/kernel/common/inc/nv-time.h 2020-04-11 01:29:29.475036592 +0300 ++++ NVIDIA-Linux-x86_64-430.64/kernel/common/inc/nv-time.h 2020-04-11 01:28:48.300091052 +0300 +@@ -27,7 +27,12 @@ + + #include + +-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); +@@ -36,7 +41,7 @@ static inline void nv_gettimeofday(struc + + ktime_get_real_ts64(&now); + +- *tv = (struct timeval) { ++ *tv = (struct nv_timeval) { + .tv_sec = now.tv_sec, + .tv_usec = now.tv_nsec/1000, + }; +diff -Nurp NVIDIA-Linux-x86_64-430.64.orig/kernel/conftest.sh NVIDIA-Linux-x86_64-430.64/kernel/conftest.sh +--- NVIDIA-Linux-x86_64-430.64.orig/kernel/conftest.sh 2020-04-11 01:29:29.476036639 +0300 ++++ NVIDIA-Linux-x86_64-430.64/kernel/conftest.sh 2020-04-11 01:28:48.300091052 +0300 +@@ -777,6 +777,46 @@ compile_test() { + compile_check_conftest "$CODE" "NV_FILE_OPERATIONS_HAS_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" ++ ;; ++ ++ ktime_get_raw_ts64) ++ # ++ # Determine if the ktime_get_raw_ts64() function is present. ++ # ++ CODE=" ++ #include ++ int conftest_ktime_get_raw_ts64(void) { ++ struct timespec64 ts = {0}; ++ ++ ktime_get_raw_ts64(&ts64); ++ }" ++ ++ compile_check_conftest "$CODE" "NV_KTIME_GET_RAW_TS64_PRESENT" "" "functions" ++ ;; ++ ++ ktime_get_real_ts64) ++ # ++ # Determine if the ktime_get_real_ts64() function is present. ++ # ++ CODE=" ++ #include ++ int conftest_ktime_get_raw_ts64(void) { ++ struct timespec64 ts = {0}; ++ ++ ktime_get_real_ts64(&ts64); ++ }" ++ ++ compile_check_conftest "$CODE" "NV_KTIME_GET_REAL_TS64_PRESENT" "" "functions" ++ ;; ++ + sg_alloc_table) + # + # sg_alloc_table_from_pages added by commit efc42bc98058 +diff -Nurp NVIDIA-Linux-x86_64-430.64.orig/kernel/nvidia/linux_nvswitch.c NVIDIA-Linux-x86_64-430.64/kernel/nvidia/linux_nvswitch.c +--- NVIDIA-Linux-x86_64-430.64.orig/kernel/nvidia/linux_nvswitch.c 2020-04-11 01:29:29.476036639 +0300 ++++ NVIDIA-Linux-x86_64-430.64/kernel/nvidia/linux_nvswitch.c 2020-04-11 01:28:48.301091099 +0300 +@@ -1581,10 +1581,17 @@ nvswitch_os_get_platform_time + void + ) + { ++#if defined(NV_KTIME_GET_REAL_TS64_PRESENT) ++ struct timespec64 ts64; ++ ++ ktime_get_real_ts64(&ts64); ++ return ((NvU64)(ts64.tv_sec * NSEC_PER_SEC) + ts64.tv_nsec); ++#else + struct timespec ts; + + getnstimeofday(&ts); + return ((NvU64) timespec_to_ns(&ts)); ++#endif + } + + void +diff -Nurp NVIDIA-Linux-x86_64-430.64.orig/kernel/nvidia/nvidia.Kbuild NVIDIA-Linux-x86_64-430.64/kernel/nvidia/nvidia.Kbuild +--- NVIDIA-Linux-x86_64-430.64.orig/kernel/nvidia/nvidia.Kbuild 2020-04-11 01:29:29.476036639 +0300 ++++ NVIDIA-Linux-x86_64-430.64/kernel/nvidia/nvidia.Kbuild 2020-04-11 01:28:48.301091099 +0300 +@@ -149,6 +149,9 @@ NV_CONFTEST_TYPE_COMPILE_TESTS += acpi_o + NV_CONFTEST_TYPE_COMPILE_TESTS += outer_flush_all + NV_CONFTEST_TYPE_COMPILE_TESTS += scatterlist + NV_CONFTEST_TYPE_COMPILE_TESTS += file_operations ++NV_CONFTEST_TYPE_COMPILE_TESTS += proc_ops ++NV_CONFTEST_TYPE_COMPILE_TESTS += ktime_get_raw_ts64 ++NV_CONFTEST_TYPE_COMPILE_TESTS += ktime_get_real_ts64 + NV_CONFTEST_TYPE_COMPILE_TESTS += vm_operations_struct + NV_CONFTEST_TYPE_COMPILE_TESTS += atomic_long_type + NV_CONFTEST_TYPE_COMPILE_TESTS += file_inode +diff -Nurp NVIDIA-Linux-x86_64-430.64.orig/kernel/nvidia/nvlink_linux.c NVIDIA-Linux-x86_64-430.64/kernel/nvidia/nvlink_linux.c +--- NVIDIA-Linux-x86_64-430.64.orig/kernel/nvidia/nvlink_linux.c 2020-04-11 01:29:29.476036639 +0300 ++++ NVIDIA-Linux-x86_64-430.64/kernel/nvidia/nvlink_linux.c 2020-04-11 01:28:48.301091099 +0300 +@@ -510,8 +510,8 @@ void * NVLINK_API_CALL nvlink_memcpy(voi + + static NvBool nv_timer_less_than + ( +- const struct timeval *a, +- const struct timeval *b ++ const struct nv_timeval *a, ++ const struct nv_timeval *b + ) + { + return (a->tv_sec == b->tv_sec) ? (a->tv_usec < b->tv_usec) +@@ -520,9 +520,9 @@ static NvBool nv_timer_less_than + + static void nv_timeradd + ( +- const struct timeval *a, +- const struct timeval *b, +- struct timeval *result ++ const struct nv_timeval *a, ++ const struct nv_timeval *b, ++ struct nv_timeval *result + ) + { + result->tv_sec = a->tv_sec + b->tv_sec; +@@ -536,9 +536,9 @@ static void nv_timeradd + + static void nv_timersub + ( +- const struct timeval *a, +- const struct timeval *b, +- struct timeval *result ++ const struct nv_timeval *a, ++ const struct nv_timeval *b, ++ struct nv_timeval *result + ) + { + result->tv_sec = a->tv_sec - b->tv_sec; +@@ -558,7 +558,7 @@ void NVLINK_API_CALL nvlink_sleep(unsign + unsigned long us; + unsigned long jiffies; + unsigned long mdelay_safe_msec; +- struct timeval tm_end, tm_aux; ++ struct nv_timeval tm_end, tm_aux; + + nv_gettimeofday(&tm_aux); + +diff -Nurp NVIDIA-Linux-x86_64-430.64.orig/kernel/nvidia/nv-procfs.c NVIDIA-Linux-x86_64-430.64/kernel/nvidia/nv-procfs.c +--- NVIDIA-Linux-x86_64-430.64.orig/kernel/nvidia/nv-procfs.c 2020-04-11 01:29:29.476036639 +0300 ++++ NVIDIA-Linux-x86_64-430.64/kernel/nvidia/nv-procfs.c 2020-04-11 01:28:48.301091099 +0300 +@@ -482,6 +482,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, +@@ -490,6 +499,7 @@ static struct file_operations nv_procfs_ + .llseek = seq_lseek, + .release = nv_procfs_close_registry, + }; ++#endif + + #if defined(CONFIG_PM) + static int +@@ -561,6 +571,15 @@ nv_procfs_open_suspend_depth( + return single_open(file, nv_procfs_show_suspend_depth, NULL); + } + ++#if defined(NV_HAVE_PROC_OPS) ++static struct proc_ops nv_procfs_suspend_depth_fops = { ++ .proc_open = nv_procfs_open_suspend_depth, ++ .proc_read = seq_read, ++ .proc_write = nv_procfs_write_suspend_depth, ++ .proc_lseek = seq_lseek, ++ .proc_release = single_release ++}; ++#else + static struct file_operations nv_procfs_suspend_depth_fops = { + .owner = THIS_MODULE, + .open = nv_procfs_open_suspend_depth, +@@ -569,6 +588,7 @@ static struct file_operations nv_procfs_ + .llseek = seq_lseek, + .release = single_release + }; ++#endif + + static int + nv_procfs_show_suspend( +@@ -643,6 +663,15 @@ nv_procfs_open_suspend( + return single_open(file, nv_procfs_show_suspend, NULL); + } + ++#if defined(NV_HAVE_PROC_OPS) ++static struct proc_ops nv_procfs_suspend_fops = { ++ .proc_open = nv_procfs_open_suspend, ++ .proc_read = seq_read, ++ .proc_write = nv_procfs_write_suspend, ++ .proc_lseek = seq_lseek, ++ .proc_release = single_release ++}; ++#else + static struct file_operations nv_procfs_suspend_fops = { + .owner = THIS_MODULE, + .open = nv_procfs_open_suspend, +@@ -652,6 +681,7 @@ static struct file_operations nv_procfs_ + .release = single_release + }; + #endif ++#endif + + /* + * Forwards error to nv_log_error which exposes data to vendor callback +@@ -754,12 +784,20 @@ done: + return status; + } + ++#if defined(NV_HAVE_PROC_OPS) ++static struct proc_ops nv_procfs_exercise_error_forwarding_fops = { ++ .proc_open = nv_procfs_open_exercise_error_forwarding, ++ .proc_write = nv_procfs_write_file, ++ .proc_release = nv_procfs_close_exercise_error_forwarding, ++}; ++#else + static struct file_operations nv_procfs_exercise_error_forwarding_fops = { + .owner = THIS_MODULE, + .open = nv_procfs_open_exercise_error_forwarding, + .write = nv_procfs_write_file, + .release = nv_procfs_close_exercise_error_forwarding, + }; ++#endif + + static int + nv_procfs_read_unbind_lock( +@@ -881,6 +919,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, +@@ -889,6 +936,7 @@ static struct file_operations nv_procfs_ + .llseek = seq_lseek, + .release = nv_procfs_close_unbind_lock, + }; ++#endif + + static const char* + numa_status_describe(nv_numa_status_t state) +@@ -1217,6 +1265,22 @@ done: + return retval; + } + ++#if defined(NV_HAVE_PROC_OPS) ++static const struct proc_ops nv_procfs_numa_status_fops = { ++ .proc_open = nv_procfs_open_numa_status, ++ .proc_read = seq_read, ++ .proc_write = nv_procfs_write_file, ++ .proc_lseek = seq_lseek, ++ .proc_release = nv_procfs_close_numa_status, ++}; ++ ++static const struct proc_ops nv_procfs_offline_pages_fops = { ++ .proc_open = nv_procfs_open_offline_pages, ++ .proc_read = seq_read, ++ .proc_lseek = seq_lseek, ++ .proc_release = nv_procfs_close_offline_pages, ++}; ++#else + static const struct file_operations nv_procfs_numa_status_fops = { + .owner = THIS_MODULE, + .open = nv_procfs_open_numa_status, +@@ -1233,6 +1297,7 @@ static const struct file_operations nv_p + .llseek = seq_lseek, + .release = nv_procfs_close_offline_pages, + }; ++#endif + + static int + nv_procfs_read_text_file( +diff -Nurp NVIDIA-Linux-x86_64-430.64.orig/kernel/nvidia/os-interface.c NVIDIA-Linux-x86_64-430.64/kernel/nvidia/os-interface.c +--- NVIDIA-Linux-x86_64-430.64.orig/kernel/nvidia/os-interface.c 2020-04-11 01:29:29.476036639 +0300 ++++ NVIDIA-Linux-x86_64-430.64/kernel/nvidia/os-interface.c 2020-04-11 01:28:48.301091099 +0300 +@@ -452,7 +452,7 @@ NV_STATUS NV_API_CALL os_get_current_tim + NvU32 *useconds + ) + { +- struct timeval tm; ++ struct nv_timeval tm; + + nv_gettimeofday(&tm); + +@@ -466,9 +466,15 @@ NV_STATUS NV_API_CALL os_get_current_tim + + void NV_API_CALL os_get_current_tick(NvU64 *nseconds) + { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 5, 0) ++ struct timespec64 ts; ++ ++ jiffies_to_timespec64(jiffies, &ts); ++#else + struct timespec ts; + + jiffies_to_timespec(jiffies, &ts); ++#endif + + *nseconds = ((NvU64)ts.tv_sec * NSEC_PER_SEC + (NvU64)ts.tv_nsec); + } +@@ -538,7 +544,7 @@ NV_STATUS NV_API_CALL os_delay_us(NvU32 + unsigned long usec; + + #ifdef NV_CHECK_DELAY_ACCURACY +- struct timeval tm1, tm2; ++ struct nv_timeval tm1, tm2; + + nv_gettimeofday(&tm1); + #endif +@@ -578,9 +584,9 @@ NV_STATUS NV_API_CALL os_delay(NvU32 Mil + 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); +@@ -1925,7 +1931,7 @@ static NV_STATUS NV_API_CALL _os_ipmi_re + { + struct ipmi_recv_msg *rx_msg; + int err_no; +- struct timeval tv; ++ struct nv_timeval tv; + NvU64 start_time; + + nv_gettimeofday(&tv); +diff -Nurp NVIDIA-Linux-x86_64-430.64.orig/kernel/nvidia-modeset/nvidia-modeset-linux.c NVIDIA-Linux-x86_64-430.64/kernel/nvidia-modeset/nvidia-modeset-linux.c +--- NVIDIA-Linux-x86_64-430.64.orig/kernel/nvidia-modeset/nvidia-modeset-linux.c 2020-04-11 01:29:29.477036687 +0300 ++++ NVIDIA-Linux-x86_64-430.64/kernel/nvidia-modeset/nvidia-modeset-linux.c 2020-04-11 01:28:48.302091146 +0300 +@@ -279,7 +279,7 @@ void NVKMS_API_CALL nvkms_usleep(NvU64 u + + NvU64 NVKMS_API_CALL nvkms_get_usec(void) + { +- struct timeval tv; ++ struct nv_timeval tv; + + nv_gettimeofday(&tv); + +diff -Nurp NVIDIA-Linux-x86_64-430.64.orig/kernel/nvidia-uvm/uvm_linux.h NVIDIA-Linux-x86_64-430.64/kernel/nvidia-uvm/uvm_linux.h +--- NVIDIA-Linux-x86_64-430.64.orig/kernel/nvidia-uvm/uvm_linux.h 2020-04-11 01:29:29.477036687 +0300 ++++ NVIDIA-Linux-x86_64-430.64/kernel/nvidia-uvm/uvm_linux.h 2020-04-11 01:28:48.302091146 +0300 +@@ -298,7 +298,16 @@ static inline uint64_t NV_DIV64(uint64_t + } + #endif + +-#if defined(CLOCK_MONOTONIC_RAW) ++#if defined(NV_KTIME_GET_RAW_TS64_PRESENT) ++static inline NvU64 NV_GETTIME(void) ++{ ++ struct timespec64 ts; ++ ++ ktime_get_raw_ts64(&ts); ++ ++ return (ts.tv_sec * 1000000000ULL + ts.tv_nsec); ++} ++#elif defined(CLOCK_MONOTONIC_RAW) + /* Return a nanosecond-precise value */ + static inline NvU64 NV_GETTIME(void) + { +@@ -314,7 +323,7 @@ static inline NvU64 NV_GETTIME(void) + * available non-GPL symbols. */ + static inline NvU64 NV_GETTIME(void) + { +- struct timeval tv = {0}; ++ struct nv_timeval tv = {0}; + + nv_gettimeofday(&tv); + diff --git a/kernel/drivers/module-nvidia-current/pspec.xml b/kernel/drivers/module-nvidia-current/pspec.xml index 01b99208a6..d7dee67b6a 100644 --- a/kernel/drivers/module-nvidia-current/pspec.xml +++ b/kernel/drivers/module-nvidia-current/pspec.xml @@ -11,10 +11,11 @@ NVIDIA NVIDIA drivers for GeForce 6xxx and newer GPUs NVIDIA graphics drivers provide optimized 2D/3D performance. - http://http.download.nvidia.com/XFree86/Linux-x86_64/440.64/NVIDIA-Linux-x86_64-440.64.run + http://http.download.nvidia.com/XFree86/Linux-x86_64/440.82/NVIDIA-Linux-x86_64-440.82.run dkms.conf - mageia/NVIDIA-Linux-x86_64-430.64-kernel-5.5.patch + mageia/NVIDIA-Linux-x86_64-430.64-kernel-5.5.patch + mageia/NVIDIA-Linux-x86_64-430.64-kernel-5.6.patch mageia/NVIDIA-Linux-x86_64-430.64-work-around-mga-bug-25890.patch @@ -164,7 +165,7 @@ /etc/modprobe.d/nvidia-current-dkms.conf - /usr/src/nvidia-440.64 + /usr/src/nvidia-440.82 modprobe.conf @@ -184,30 +185,30 @@ 2020-04-15 - 440.64 - Rebuild. - Mustafa Cinasal Bojara + 440.82 + Version bump. + Mustafa Cinasal muscnsl@gmail.com 2020-04-03 440.64 Rebuild. - Mustafa Cinasal Bojara + Mustafa Cinasal muscnsl@gmail.com 2020-04-03 440.44 Rebuild. - Mustafa Cinasal Bojara + Mustafa Cinasal muscnsl@gmail.com 2020-01-31 440.44 Rebuild. - Mustafa Cinasal Bojara + Mustafa Cinasal muscnsl@gmail.com