From 76104ded5a9422b8be30d005b8d8aa1eeb7e2d05 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Thu, 4 Feb 2021 23:31:03 +0000 Subject: x11-drivers/nvidia-drivers-legacy : version bump (v390.141) --- sys-kernel/nvidia-drivers-legacy-dkms/Manifest | 2 +- .../nvidia-drivers-legacy-dkms/files/dkms.patch | 28 ++ .../files/kernel-5.10.patch | 145 -------- .../files/kernel-5.8.patch | 96 ------ .../files/kernel-5.9.patch | 364 --------------------- .../nvidia-drivers-legacy-dkms-390.138-conf.patch | 28 -- .../nvidia-drivers-legacy-dkms-390.138.ebuild | 50 --- .../nvidia-drivers-legacy-dkms-390.141.ebuild | 47 +++ 8 files changed, 76 insertions(+), 684 deletions(-) create mode 100644 sys-kernel/nvidia-drivers-legacy-dkms/files/dkms.patch delete mode 100644 sys-kernel/nvidia-drivers-legacy-dkms/files/kernel-5.10.patch delete mode 100644 sys-kernel/nvidia-drivers-legacy-dkms/files/kernel-5.8.patch delete mode 100644 sys-kernel/nvidia-drivers-legacy-dkms/files/kernel-5.9.patch delete mode 100644 sys-kernel/nvidia-drivers-legacy-dkms/files/nvidia-drivers-legacy-dkms-390.138-conf.patch delete mode 100644 sys-kernel/nvidia-drivers-legacy-dkms/nvidia-drivers-legacy-dkms-390.138.ebuild create mode 100644 sys-kernel/nvidia-drivers-legacy-dkms/nvidia-drivers-legacy-dkms-390.141.ebuild (limited to 'sys-kernel/nvidia-drivers-legacy-dkms') diff --git a/sys-kernel/nvidia-drivers-legacy-dkms/Manifest b/sys-kernel/nvidia-drivers-legacy-dkms/Manifest index b3070520..df7b4407 100644 --- a/sys-kernel/nvidia-drivers-legacy-dkms/Manifest +++ b/sys-kernel/nvidia-drivers-legacy-dkms/Manifest @@ -1 +1 @@ -DIST NVIDIA-Linux-x86_64-390.138.run 83780873 BLAKE2B 5e6a9d77dd2b9de17d923198105a9227ffe2adbc1ed7c9dd5ef3cc810358f71ae47ce9615cbe04f36090f052082a2066772505fd763cbfdbce272f0fb7c25dc7 SHA512 2984fb8f5de598fd3031ebd928942ceb09fd26ae9e61b40b2d348e3174e172a932a1b2a5c2e5534f299b883ade323932be4fdcd26d6f7235a17f6f5a04fa792c +DIST NVIDIA-Linux-x86_64-390.141.run 85330901 BLAKE2B 7759d8cf6c9a75607b9a3ecd53cdd6f6a93f2f372d740a5a87d4d3f41a22f3bd953cc7dd6a0dc0e23a829ec86df8d65b9de499a76cfd4266a13b0aa3288aceb5 SHA512 5448d70e6e64a6403e61a004d83c69a442dd8ed0d61da3a31d3e3b7943c06c559a66b0f8d135982868ecbf209a965f60dae1a633367630b4d9287f725bbaa53c diff --git a/sys-kernel/nvidia-drivers-legacy-dkms/files/dkms.patch b/sys-kernel/nvidia-drivers-legacy-dkms/files/dkms.patch new file mode 100644 index 00000000..c91579ff --- /dev/null +++ b/sys-kernel/nvidia-drivers-legacy-dkms/files/dkms.patch @@ -0,0 +1,28 @@ +diff -Nur a/kernel/dkms.conf b/kernel/dkms.conf +--- a/kernel/dkms.conf 2018-03-22 05:39:53.000000000 +0000 ++++ b/kernel/dkms.conf 2018-04-09 16:18:23.177125417 +0100 +@@ -1,12 +1,20 @@ +-PACKAGE_NAME="nvidia" +-PACKAGE_VERSION="__VERSION_STRING" ++PACKAGE_NAME="nvidia-drivers-legacy-dkms" ++PACKAGE_VERSION="390.141" + AUTOINSTALL="yes" + + # By default, DKMS will add KERNELRELEASE to the make command line; however, + # this will cause the kernel module build to infer that it was invoked via + # Kbuild directly instead of DKMS. The dkms(8) manual page recommends quoting + # the 'make' command name to suppress this behavior. +-MAKE[0]="'make' -j__JOBS NV_EXCLUDE_BUILD_MODULES='__EXCLUDE_MODULES' KERNEL_UNAME=${kernelver} modules" ++MAKE[0]="'make' -j`nproc` NV_EXCLUDE_BUILD_MODULES='__EXCLUDE_MODULES' KERNEL_UNAME=${kernelver} modules" + + # The list of kernel modules will be generated by nvidia-installer at runtime. +-__DKMS_MODULES ++BUILT_MODULE_NAME[0]="nvidia" ++DEST_MODULE_LOCATION[0]="/extra/dkms" ++BUILT_MODULE_NAME[1]="nvidia-uvm" ++DEST_MODULE_LOCATION[1]="/extra/dkms" ++BUILT_MODULE_NAME[2]="nvidia-modeset" ++DEST_MODULE_LOCATION[2]="/extra/dkms" ++BUILT_MODULE_NAME[3]="nvidia-drm" ++DEST_MODULE_LOCATION[3]="/extra/dkms" ++ diff --git a/sys-kernel/nvidia-drivers-legacy-dkms/files/kernel-5.10.patch b/sys-kernel/nvidia-drivers-legacy-dkms/files/kernel-5.10.patch deleted file mode 100644 index 7591802a..00000000 --- a/sys-kernel/nvidia-drivers-legacy-dkms/files/kernel-5.10.patch +++ /dev/null @@ -1,145 +0,0 @@ -diff --git a/kernel/common/inc/nv-linux.h b/kernel/common/inc/nv-linux.h -index dd335b5..7eae890 100644 ---- a/kernel/common/inc/nv-linux.h -+++ b/kernel/common/inc/nv-linux.h -@@ -178,6 +178,10 @@ - #include - #endif - -+#if defined(NV_LINUX_DMA_MAP_OPS_H_PRESENT) -+#include -+#endif -+ - #if defined(CONFIG_SWIOTLB) && defined(NVCPU_AARCH64) - #include - #endif - -diff --git a/kernel/conftest.sh b/kernel/conftest.sh -index 9612796..1c1eb30 100755 ---- a/kernel/conftest.sh -+++ b/kernel/conftest.sh -@@ -134,6 +134,7 @@ test_headers() { - FILES="$FILES linux/fence.h" - FILES="$FILES linux/ktime.h" - FILES="$FILES linux/dma-resv.h" -+ FILES="$FILES linux/dma-map-ops.h" - - # Arch specific headers which need testing - FILES_ARCH="asm/book3s/64/hash-64k.h" -@@ -2046,6 +2046,7 @@ - # - CODE=" - #include -+ #include - void conftest_phys_to_dma(void) { - phys_to_dma(); - }" -@@ -2064,6 +2068,9 @@ compile_test() { - # - CODE=" - #include -+#if defined(NV_LINUX_DMA_MAP_OPS_H_PRESENT) -+ #include -+#endif - void conftest_dma_ops(void) { - (void)dma_ops; - }" -@@ -2078,6 +2085,9 @@ compile_test() { - # - CODE=" - #include -+#if defined(NV_LINUX_DMA_MAP_OPS_H_PRESENT) -+ #include -+#endif - void conftest_dma_ops(void) { - (void)swiotlb_dma_ops; - }" -@@ -2088,22 +2098,28 @@ compile_test() { - dma_map_ops) - # - # Determine if the 'struct dma_map_ops' type is present. -- # -+ # - CODE=" - #include -+#if defined(NV_LINUX_DMA_MAP_OPS_H_PRESENT) -+ #include -+#endif - void conftest_dma_map_ops(void) { - struct dma_map_ops ops; - }" - - compile_check_conftest "$CODE" "NV_DMA_MAP_OPS_PRESENT" "" "types" - ;; -- -+ - get_dma_ops) - # - # Determine if the get_dma_ops() function is present. - # - CODE=" - #include -+#if defined(NV_LINUX_DMA_MAP_OPS_H_PRESENT) -+ #include -+#endif - void conftest_get_dma_ops(void) { - get_dma_ops(); - }" -@@ -2117,6 +2133,9 @@ compile_test() { - # - CODE=" - #include -+#if defined(NV_LINUX_DMA_MAP_OPS_H_PRESENT) -+ #include -+#endif - void conftest_noncoherent_swiotlb_dma_ops(void) { - (void)noncoherent_swiotlb_dma_ops; - }" -@@ -2133,6 +2152,9 @@ compile_test() { - # - CODE=" - #include -+#if defined(NV_LINUX_DMA_MAP_OPS_H_PRESENT) -+ #include -+#endif - void conftest_dma_map_resource(void) { - dma_map_resource(); - }" -@@ -3961,6 +3983,9 @@ compile_test() { - # - CODE=" - #include -+#if defined(NV_LINUX_DMA_MAP_OPS_H_PRESENT) -+ #include -+#endif - void conftest_dma_is_direct(void) { - dma_is_direct(); - }" -diff --git a/kernel/nvidia-drm/nvidia-drm-gem-user-memory.c b/kernel/nvidia-drm/nvidia-drm-gem-user-memory.c -index 76dedba..92a5192 100644 ---- a/kernel/nvidia-drm/nvidia-drm-gem-user-memory.c -+++ b/kernel/nvidia-drm/nvidia-drm-gem-user-memory.c -@@ -20,6 +20,7 @@ - * DEALINGS IN THE SOFTWARE. - */ - -+#include - #include "nvidia-drm-conftest.h" - - #if defined(NV_DRM_AVAILABLE) -@@ -47,8 +48,13 @@ static struct sg_table *__nv_drm_gem_user_memory_prime_get_sg_table( - { - struct nv_drm_gem_user_memory *nv_user_memory = to_nv_user_memory(nv_gem); - -- return drm_prime_pages_to_sg(nv_user_memory->pages, -- nv_user_memory->pages_count); -+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 0)) -+ return drm_prime_pages_to_sg(nv_gem->nv_dev->dev, nv_user_memory->pages, -+ nv_user_memory->pages_count); -+#else -+ return drm_prime_pages_to_sg(nv_user_memory->pages, -+ nv_user_memory->pages_count); -+#endif - } - - static void *__nv_drm_gem_user_memory_prime_vmap( diff --git a/sys-kernel/nvidia-drivers-legacy-dkms/files/kernel-5.8.patch b/sys-kernel/nvidia-drivers-legacy-dkms/files/kernel-5.8.patch deleted file mode 100644 index 66d3ef8d..00000000 --- a/sys-kernel/nvidia-drivers-legacy-dkms/files/kernel-5.8.patch +++ /dev/null @@ -1,96 +0,0 @@ -diff --git a/kernel/common/inc/nv-linux.h b/kernel/common/inc/nv-linux.h -index ac5bb95..3d2f0b7 100644 ---- a/kernel/common/inc/nv-linux.h -+++ b/kernel/common/inc/nv-linux.h -@@ -531,7 +531,11 @@ extern int nv_pat_mode; - - static inline void *nv_vmalloc(unsigned long size) - { -+#if defined(NV_VMALLOC_HAS_PGPROT_T_ARG) - void *ptr = __vmalloc(size, GFP_KERNEL, PAGE_KERNEL); -+#else -+ void *ptr = __vmalloc(size, GFP_KERNEL); -+#endif - if (ptr) - NV_MEMDBG_ADD(ptr, size); - return ptr; -diff --git a/kernel/common/inc/nv-mm.h b/kernel/common/inc/nv-mm.h -index 1270bf3..d2d7657 100644 ---- a/kernel/common/inc/nv-mm.h -+++ b/kernel/common/inc/nv-mm.h -@@ -29,6 +29,10 @@ - typedef int vm_fault_t; - #endif - -+#if defined(NV_MM_HAS_MMAP_LOCK) -+#define mmap_sem mmap_lock -+#endif -+ - /* get_user_pages - * - * The 8-argument version of get_user_pages was deprecated by commit -diff --git a/kernel/conftest.sh b/kernel/conftest.sh -index 7da7505..7793dd6 100755 ---- a/kernel/conftest.sh -+++ b/kernel/conftest.sh -@@ -4067,6 +4067,44 @@ compile_test() { - compile_check_conftest "$CODE" "NV_KTIME_GET_REAL_TS64_PRESENT" "" "functions" - ;; - -+ vmalloc_has_pgprot_t_arg) -+ # -+ # Determine if __vmalloc has the 'pgprot' argument. -+ # -+ # The third argument to __vmalloc, page protection -+ # 'pgprot_t prot', was removed by commit 88dca4ca5a93 -+ # (mm: remove the pgprot argument to __vmalloc) -+ # in v5.8-rc1 (2020-06-01). -+ CODE=" -+ #include -+ -+ void conftest_vmalloc_has_pgprot_t_arg(void) { -+ pgprot_t prot; -+ (void)__vmalloc(0, 0, prot); -+ }" -+ -+ compile_check_conftest "$CODE" "NV_VMALLOC_HAS_PGPROT_T_ARG" "" "types" -+ -+ ;; -+ -+ mm_has_mmap_lock) -+ # -+ # Determine if the 'mm_struct' structure has a 'mmap_lock' field. -+ # -+ # Kernel commit da1c55f1b272 ("mmap locking API: rename mmap_sem -+ # to mmap_lock") replaced the field 'mmap_sem' by 'mmap_lock' -+ # in v5.8-rc1 (2020-06-08). -+ CODE=" -+ #include -+ -+ int conftest_mm_has_mmap_lock(void) { -+ return offsetof(struct mm_struct, mmap_lock); -+ }" -+ -+ compile_check_conftest "$CODE" "NV_MM_HAS_MMAP_LOCK" "" "types" -+ -+ ;; -+ - pci_dev_has_skip_bus_pm) - # - # Determine if skip_bus_pm flag is present in struct pci_dev. -diff --git a/kernel/nvidia/nvidia.Kbuild b/kernel/nvidia/nvidia.Kbuild -index 63e369f..656db7b 100644 ---- a/kernel/nvidia/nvidia.Kbuild -+++ b/kernel/nvidia/nvidia.Kbuild -@@ -192,7 +192,9 @@ NV_CONFTEST_TYPE_COMPILE_TESTS += iterate_dir - NV_CONFTEST_TYPE_COMPILE_TESTS += kstrtoull - NV_CONFTEST_TYPE_COMPILE_TESTS += backlight_properties_type - NV_CONFTEST_TYPE_COMPILE_TESTS += proc_ops -+NV_CONFTEST_TYPE_COMPILE_TESTS += vmalloc_has_pgprot_t_arg - NV_CONFTEST_TYPE_COMPILE_TESTS += timeval -+NV_CONFTEST_TYPE_COMPILE_TESTS += mm_has_mmap_lock - NV_CONFTEST_TYPE_COMPILE_TESTS += kmem_cache_has_kobj_remove_work - NV_CONFTEST_TYPE_COMPILE_TESTS += sysfs_slab_unlink - NV_CONFTEST_TYPE_COMPILE_TESTS += pci_dev_has_skip_bus_pm --- -2.25.1 diff --git a/sys-kernel/nvidia-drivers-legacy-dkms/files/kernel-5.9.patch b/sys-kernel/nvidia-drivers-legacy-dkms/files/kernel-5.9.patch deleted file mode 100644 index d01eba7a..00000000 --- a/sys-kernel/nvidia-drivers-legacy-dkms/files/kernel-5.9.patch +++ /dev/null @@ -1,364 +0,0 @@ -diff --git a/kernel/common/inc/nv-linux.h b/kernel/common/inc/nv-linux.h -index ab06dbc..dd335b5 100644 ---- a/kernel/common/inc/nv-linux.h -+++ b/kernel/common/inc/nv-linux.h -@@ -159,7 +159,7 @@ static inline uid_t __kuid_val(kuid_t uid) - } - #endif - --#if defined(NVCPU_X86_64) && !defined(HAVE_COMPAT_IOCTL) -+#if defined(NVCPU_X86_64) && !defined(NV_FILE_OPERATIONS_HAS_COMPAT_IOCTL) - #include /* sys_ioctl() */ - #include /* register_ioctl32_conversion() */ - #endif -diff --git a/kernel/common/inc/nv-mm.h b/kernel/common/inc/nv-mm.h -index d2d7657..a5325fe 100644 ---- a/kernel/common/inc/nv-mm.h -+++ b/kernel/common/inc/nv-mm.h -@@ -144,9 +144,13 @@ typedef int vm_fault_t; - flags |= FOLL_FORCE; - - #if defined(NV_GET_USER_PAGES_REMOTE_HAS_LOCKED_ARG) -- -+ #if defined (NV_GET_USER_PAGES_REMOTE_HAS_TSK_ARG) - return get_user_pages_remote(tsk, mm, start, nr_pages, flags, - pages, vmas, NULL); -+ #else -+ return get_user_pages_remote(mm, start, nr_pages, flags, -+ pages, vmas, NULL); -+ #endif - - #else - -@@ -159,7 +163,7 @@ typedef int vm_fault_t; - #endif - #else - #if defined(NV_GET_USER_PAGES_HAS_WRITE_AND_FORCE_ARGS) -- #define NV_GET_USER_PAGES_REMOTE NV_GET_USER_PAGES -+ #define NV_GET_USER_PAGES_REMOTE get_user_pages - #else - #include - #include -diff --git a/kernel/conftest.sh b/kernel/conftest.sh -index e900963..ef82dee 100755 ---- a/kernel/conftest.sh -+++ b/kernel/conftest.sh -@@ -3043,6 +3043,7 @@ compile_test() { - - if [ -f conftest$$.o ]; then - echo "#undef NV_GET_USER_PAGES_REMOTE_PRESENT" | append_conftest "functions" -+ echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_TSK_ARG" | append_conftest "functions" - echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_WRITE_AND_FORCE_ARGS" | append_conftest "functions" - echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_LOCKED_ARG" | append_conftest "functions" - rm -f conftest$$.o -@@ -3070,14 +3071,20 @@ compile_test() { - rm -f conftest$$.c - - if [ -f conftest$$.o ]; then -+ echo "#define NV_GET_USER_PAGES_REMOTE_HAS_TSK_ARG" | append_conftest "functions" - echo "#define NV_GET_USER_PAGES_REMOTE_HAS_WRITE_AND_FORCE_ARGS" | append_conftest "functions" - echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_LOCKED_ARG" | append_conftest "functions" - rm -f conftest$$.o - return - fi - -+ echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_WRITE_AND_FORCE_ARGS" | append_conftest "functions" -+ -+ # - # conftest #3: check if get_user_pages_remote() has locked argument -- -+ # Return if these arguments are present. Fall through to conftest #4 -+ # if these args are absent. -+ # - echo "$CONFTEST_PREAMBLE - #include - long get_user_pages_remote(struct task_struct *tsk, -@@ -3095,13 +3102,40 @@ compile_test() { - rm -f conftest$$.c - - if [ -f conftest$$.o ]; then -+ echo "#define NV_GET_USER_PAGES_REMOTE_HAS_TSK_ARG" | append_conftest "functions" -+ echo "#define NV_GET_USER_PAGES_REMOTE_HAS_LOCKED_ARG" | append_conftest "functions" -+ rm -f conftest$$.o -+ return -+ fi -+ -+ # -+ # conftest #4: check if get_user_pages_remote() does not take -+ # tsk argument. -+ # -+ echo "$CONFTEST_PREAMBLE -+ #include -+ long get_user_pages_remote(struct mm_struct *mm, -+ unsigned long start, -+ unsigned long nr_pages, -+ unsigned int gup_flags, -+ struct page **pages, -+ struct vm_area_struct **vmas, -+ int *locked) { -+ return 0; -+ }" > conftest$$.c -+ -+ $CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 -+ rm -f conftest$$.c -+ -+ if [ -f conftest$$.o ]; then -+ echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_TSK_ARG" | append_conftest "functions" - echo "#define NV_GET_USER_PAGES_REMOTE_HAS_LOCKED_ARG" | append_conftest "functions" - rm -f conftest$$.o - else -+ -+ echo "#define NV_GET_USER_PAGES_REMOTE_HAS_TSK_ARG" | append_conftest "functions" - echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_LOCKED_ARG" | append_conftest "functions" - fi -- echo "#undef NV_GET_USER_PAGES_REMOTE_HAS_WRITE_AND_FORCE_ARGS" | append_conftest "functions" -- - ;; - - usleep_range) -@@ -4131,6 +4165,115 @@ compile_test() { - compile_check_conftest "$CODE" "NV_PCI_DEV_HAS_SKIP_BUS_PM" "" "types" - ;; - -+ drm_gem_object_put_unlocked) -+ # -+ # Determine if the function drm_gem_object_put_unlocked() is present. -+ # -+ # In v5.9-rc1, commit 2f4dd13d4bb8 ("drm/gem: add -+ # drm_gem_object_put helper") removes drm_gem_object_put_unlocked() -+ # function and replace its definition by transient macro. Commit -+ # ab15d56e27be ("drm: remove transient -+ # drm_gem_object_put_unlocked()") finally removes -+ # drm_gem_object_put_unlocked() macro. -+ # -+ CODE=" -+ #if defined(NV_DRM_DRMP_H_PRESENT) -+ #include -+ #endif -+ -+ #if defined(NV_DRM_DRM_GEM_H_PRESENT) -+ #include -+ #endif -+ void conftest_drm_gem_object_put_unlocked(void) { -+ drm_gem_object_put_unlocked(); -+ }" -+ -+ compile_check_conftest "$CODE" "NV_DRM_GEM_OBJECT_PUT_UNLOCK_PRESENT" "" "functions" -+ ;; -+ -+ drm_display_mode_has_vrefresh) -+ # -+ # Determine if the 'drm_display_mode' structure has a 'vrefresh' -+ # field. -+ # -+ # Removed by commit 0425662fdf05 ("drm: Nuke mode->vrefresh") in -+ # v5.9-rc1. -+ # -+ CODE=" -+ #include -+ -+ int conftest_drm_display_mode_has_vrefresh(void) { -+ return offsetof(struct drm_display_mode, vrefresh); -+ }" -+ -+ compile_check_conftest "$CODE" "NV_DRM_DISPLAY_MODE_HAS_VREFRESH" "types" -+ -+ ;; -+ -+ drm_driver_master_set_has_int_return_type) -+ # -+ # Determine if drm_driver::master_set() returns integer value -+ # -+ # Changed to void by commit 907f53200f98 ("drm: vmwgfx: remove -+ # drm_driver::master_set() return type") in v5.9-rc1. -+ # -+ CODE=" -+ #if defined(NV_DRM_DRMP_H_PRESENT) -+ #include -+ #endif -+ -+ #if defined(NV_DRM_DRM_DRV_H_PRESENT) -+ #include -+ #endif -+ -+ int conftest_drm_driver_master_set_has_int_return_type(struct drm_driver *drv, -+ struct drm_device *dev, struct drm_file *file_priv, bool from_open) { -+ -+ return drv->master_set(dev, file_priv, from_open); -+ }" -+ -+ compile_check_conftest "$CODE" "NV_DRM_DRIVER_SET_MASTER_HAS_INT_RETURN_TYPE" "" "types" -+ ;; -+ -+ drm_driver_has_gem_free_object) -+ # -+ # Determine if the 'drm_driver' structure has a 'gem_free_object' -+ # function pointer. -+ # -+ # drm_driver::gem_free_object is removed by commit 1a9458aeb8eb -+ # ("drm: remove drm_driver::gem_free_object") in v5.9-rc1. -+ # -+ CODE=" -+ #if defined(NV_DRM_DRMP_H_PRESENT) -+ #include -+ #endif -+ -+ #if defined(NV_DRM_DRM_DRV_H_PRESENT) -+ #include -+ #endif -+ -+ int conftest_drm_driver_has_gem_free_object(void) { -+ return offsetof(struct drm_driver, gem_free_object); -+ }" -+ -+ compile_check_conftest "$CODE" "NV_DRM_DRIVER_HAS_GEM_FREE_OBJECT" "" "types" -+ ;; -+ -+ vga_tryget) -+ # -+ # Determine if vga_tryget() is present -+ # -+ # vga_tryget() was removed by commit f369bc3f9096 ("vgaarb: mark -+ # vga_tryget static") in v5.9-rc1 (2020-08-01). -+ # -+ CODE=" -+ #include -+ void conftest_vga_tryget(void) { -+ vga_tryget(); -+ }" -+ -+ compile_check_conftest "$CODE" "NV_VGA_TRYGET_PRESENT" "" "functions" -+ ;; - esac - } - -diff --git a/kernel/nvidia-drm/nvidia-drm-drv.c b/kernel/nvidia-drm/nvidia-drm-drv.c -index 17e377d..85d9798 100644 ---- a/kernel/nvidia-drm/nvidia-drm-drv.c -+++ b/kernel/nvidia-drm/nvidia-drm-drv.c -@@ -466,8 +466,8 @@ static void nv_drm_unload(struct drm_device *dev) - - #if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) - --static int nv_drm_master_set(struct drm_device *dev, -- struct drm_file *file_priv, bool from_open) -+static int __nv_drm_master_set(struct drm_device *dev, -+ struct drm_file *file_priv, bool from_open) - { - struct nv_drm_device *nv_dev = to_nv_device(dev); - -@@ -478,6 +478,22 @@ static int nv_drm_master_set(struct drm_device *dev, - return 0; - } - -+#include -+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 9, 0) -+static int nv_drm_master_set(struct drm_device *dev, -+ struct drm_file *file_priv, bool from_open) -+{ -+ return __nv_drm_master_set(dev, file_priv, from_open); -+} -+#else -+static void nv_drm_master_set(struct drm_device *dev, -+ struct drm_file *file_priv, bool from_open) -+{ -+ WARN_ON(__nv_drm_master_set(dev, file_priv, from_open) != 0); -+} -+#endif -+ -+ - #if defined(NV_DRM_MASTER_DROP_HAS_FROM_RELEASE_ARG) - static - void nv_drm_master_drop(struct drm_device *dev, -@@ -677,7 +693,9 @@ static struct drm_driver nv_drm_driver = { - #endif - DRIVER_GEM | DRIVER_RENDER, - -+#if defined(NV_DRM_DRIVER_HAS_GEM_FREE_OBJECT) - .gem_free_object = nv_drm_gem_free, -+#endif - - .ioctls = nv_drm_ioctls, - .num_ioctls = ARRAY_SIZE(nv_drm_ioctls), -diff --git a/kernel/nvidia-drm/nvidia-drm-gem.h b/kernel/nvidia-drm/nvidia-drm-gem.h -index 5691a7a..18c50ca 100644 ---- a/kernel/nvidia-drm/nvidia-drm-gem.h -+++ b/kernel/nvidia-drm/nvidia-drm-gem.h -@@ -87,7 +87,13 @@ static inline void - nv_drm_gem_object_unreference_unlocked(struct nv_drm_gem_object *nv_gem) - { - #if defined(NV_DRM_GEM_OBJECT_GET_PRESENT) -+ -+#if defined(NV_DRM_GEM_OBJECT_PUT_UNLOCK_PRESENT) - drm_gem_object_put_unlocked(&nv_gem->base); -+#else -+ drm_gem_object_put(&nv_gem->base); -+#endif -+ - #else - drm_gem_object_unreference_unlocked(&nv_gem->base); - #endif -diff --git a/kernel/nvidia-drm/nvidia-drm-utils.c b/kernel/nvidia-drm/nvidia-drm-utils.c -index 8cb2d5e..e30b2b6 100644 ---- a/kernel/nvidia-drm/nvidia-drm-utils.c -+++ b/kernel/nvidia-drm/nvidia-drm-utils.c -@@ -103,7 +103,9 @@ void - nvkms_display_mode_to_drm_mode(const struct NvKmsKapiDisplayMode *displayMode, - struct drm_display_mode *mode) - { -+#if defined(NV_DRM_DISPLAY_MODE_HAS_VREFRESH) - mode->vrefresh = (displayMode->timings.refreshRate + 500) / 1000; /* In Hz */ -+#endif - - mode->clock = (displayMode->timings.pixelClockHz + 500) / 1000; /* In Hz */ - -@@ -189,7 +191,11 @@ bool drm_format_to_nvkms_format(u32 format, - void drm_mode_to_nvkms_display_mode(const struct drm_display_mode *src, - struct NvKmsKapiDisplayMode *dst) - { -+#if defined(NV_DRM_DISPLAY_MODE_HAS_VREFRESH) - dst->timings.refreshRate = src->vrefresh * 1000; -+#else -+ dst->timings.refreshRate = drm_mode_vrefresh(src) * 1000; -+#endif - - dst->timings.pixelClockHz = src->clock * 1000; /* In Hz */ - -diff --git a/kernel/nvidia-uvm/uvm8_tools.c b/kernel/nvidia-uvm/uvm8_tools.c -index 86dbb77..63d0b64 100644 ---- a/kernel/nvidia-uvm/uvm8_tools.c -+++ b/kernel/nvidia-uvm/uvm8_tools.c -@@ -190,7 +190,6 @@ static uvm_tools_event_tracker_t *tools_event_tracker(struct file *filp) - { - long event_tracker = atomic_long_read((atomic_long_t *)&filp->private_data); - -- smp_read_barrier_depends(); - return (uvm_tools_event_tracker_t *)event_tracker; - } - -diff --git a/kernel/nvidia-uvm/uvm8_va_range.h b/kernel/nvidia-uvm/uvm8_va_range.h -index 8cae357..6166cc8 100644 ---- a/kernel/nvidia-uvm/uvm8_va_range.h -+++ b/kernel/nvidia-uvm/uvm8_va_range.h -@@ -717,7 +717,6 @@ static uvm_va_block_t *uvm_va_range_block(uvm_va_range_t *va_range, size_t index - // make sure that any initialization of this block by the creating thread is - // visible to later accesses in this thread, which requires a data - // dependency barrier. -- smp_read_barrier_depends(); - return block; - } - -diff --git a/kernel/nvidia/nv.c b/kernel/nvidia/nv.c -index 15983f6..cfb2375 100644 ---- a/kernel/nvidia/nv.c -+++ b/kernel/nvidia/nv.c -@@ -3872,7 +3872,9 @@ nvidia_probe - - #if defined(CONFIG_VGA_ARB) && !defined(NVCPU_PPC64LE) - #if defined(VGA_DEFAULT_DEVICE) -+#if defined(NV_VGA_TRYGET_PRESENT) - vga_tryget(VGA_DEFAULT_DEVICE, VGA_RSRC_LEGACY_MASK); -+#endif - #endif - vga_set_legacy_decoding(dev, VGA_RSRC_NONE); - #endif diff --git a/sys-kernel/nvidia-drivers-legacy-dkms/files/nvidia-drivers-legacy-dkms-390.138-conf.patch b/sys-kernel/nvidia-drivers-legacy-dkms/files/nvidia-drivers-legacy-dkms-390.138-conf.patch deleted file mode 100644 index 8bd7c1ce..00000000 --- a/sys-kernel/nvidia-drivers-legacy-dkms/files/nvidia-drivers-legacy-dkms-390.138-conf.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff -Nur a/kernel/dkms.conf b/kernel/dkms.conf ---- a/kernel/dkms.conf 2018-03-22 05:39:53.000000000 +0000 -+++ b/kernel/dkms.conf 2018-04-09 16:18:23.177125417 +0100 -@@ -1,12 +1,20 @@ --PACKAGE_NAME="nvidia" --PACKAGE_VERSION="__VERSION_STRING" -+PACKAGE_NAME="nvidia-drivers-legacy-dkms" -+PACKAGE_VERSION="390.138" - AUTOINSTALL="yes" - - # By default, DKMS will add KERNELRELEASE to the make command line; however, - # this will cause the kernel module build to infer that it was invoked via - # Kbuild directly instead of DKMS. The dkms(8) manual page recommends quoting - # the 'make' command name to suppress this behavior. --MAKE[0]="'make' -j__JOBS NV_EXCLUDE_BUILD_MODULES='__EXCLUDE_MODULES' KERNEL_UNAME=${kernelver} modules" -+MAKE[0]="'make' -j`nproc` NV_EXCLUDE_BUILD_MODULES='__EXCLUDE_MODULES' KERNEL_UNAME=${kernelver} modules" - - # The list of kernel modules will be generated by nvidia-installer at runtime. --__DKMS_MODULES -+BUILT_MODULE_NAME[0]="nvidia" -+DEST_MODULE_LOCATION[0]="/extra/dkms" -+BUILT_MODULE_NAME[1]="nvidia-uvm" -+DEST_MODULE_LOCATION[1]="/extra/dkms" -+BUILT_MODULE_NAME[2]="nvidia-modeset" -+DEST_MODULE_LOCATION[2]="/extra/dkms" -+BUILT_MODULE_NAME[3]="nvidia-drm" -+DEST_MODULE_LOCATION[3]="/extra/dkms" -+ diff --git a/sys-kernel/nvidia-drivers-legacy-dkms/nvidia-drivers-legacy-dkms-390.138.ebuild b/sys-kernel/nvidia-drivers-legacy-dkms/nvidia-drivers-legacy-dkms-390.138.ebuild deleted file mode 100644 index a7b858e4..00000000 --- a/sys-kernel/nvidia-drivers-legacy-dkms/nvidia-drivers-legacy-dkms-390.138.ebuild +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright 1999-2016 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id$ - -EAPI=6 - -inherit eutils - -NV_URI="http://us.download.nvidia.com/XFree86/" -AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" - -DESCRIPTION="NVIDIA driver sources for linux" -HOMEPAGE="http://www.nvidia.com/" -SRC_URI="amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run )" - -LICENSE="GPL-2 NVIDIA-r2" -SLOT="0" -KEYWORDS="amd64" -IUSE="" - -DEPEND="sys-kernel/dkms" -RDEPEND="${DEPEND} - !!sys-kernel/nvidia-drivers-dkms" - -PATCHES=( - "${FILESDIR}"/kernel-5.8.patch - "${FILESDIR}"/kernel-5.9.patch - "${FILESDIR}"/kernel-5.10.patch - "${FILESDIR}"/"${P}"-conf.patch -) - -S="${WORKDIR}/${AMD64_NV_PACKAGE}" - -src_unpack() { - sh ${DISTDIR}/${AMD64_NV_PACKAGE}.run --extract-only -} - -src_install() { - dodir usr/src/${P} - insinto usr/src/${P} - doins -r "${S}"/kernel/* -} - -pkg_postinst() { - dkms add ${PN}/${PV} -} - -pkg_prerm() { - dkms remove ${PN}/${PV} --all -} diff --git a/sys-kernel/nvidia-drivers-legacy-dkms/nvidia-drivers-legacy-dkms-390.141.ebuild b/sys-kernel/nvidia-drivers-legacy-dkms/nvidia-drivers-legacy-dkms-390.141.ebuild new file mode 100644 index 00000000..e95877a1 --- /dev/null +++ b/sys-kernel/nvidia-drivers-legacy-dkms/nvidia-drivers-legacy-dkms-390.141.ebuild @@ -0,0 +1,47 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=6 + +inherit eutils + +NV_URI="http://us.download.nvidia.com/XFree86/" +AMD64_NV_PACKAGE="NVIDIA-Linux-x86_64-${PV}" + +DESCRIPTION="NVIDIA driver sources for linux" +HOMEPAGE="http://www.nvidia.com/" +SRC_URI="amd64? ( ${NV_URI}Linux-x86_64/${PV}/${AMD64_NV_PACKAGE}.run )" + +LICENSE="GPL-2 NVIDIA-r2" +SLOT="0" +KEYWORDS="amd64" +IUSE="" + +DEPEND="sys-kernel/dkms" +RDEPEND="${DEPEND} + !!sys-kernel/nvidia-drivers-dkms" + +PATCHES=( + "${FILESDIR}"/dkms.patch +) + +S="${WORKDIR}/${AMD64_NV_PACKAGE}" + +src_unpack() { + sh ${DISTDIR}/${AMD64_NV_PACKAGE}.run --extract-only +} + +src_install() { + dodir usr/src/${P} + insinto usr/src/${P} + doins -r "${S}"/kernel/* +} + +pkg_postinst() { + dkms add ${PN}/${PV} +} + +pkg_prerm() { + dkms remove ${PN}/${PV} --all +} -- cgit v1.2.3