summaryrefslogtreecommitdiff
path: root/sys-kernel/nvidia-drivers-legacy-dkms
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2021-02-04 23:31:03 +0000
committerV3n3RiX <venerix@redcorelinux.org>2021-02-04 23:31:03 +0000
commit76104ded5a9422b8be30d005b8d8aa1eeb7e2d05 (patch)
tree183743211fe699a448bbc9cc96ee890bce977eae /sys-kernel/nvidia-drivers-legacy-dkms
parent36a257bcfeb81ee489ddb43fcbbe531ce73c11ec (diff)
x11-drivers/nvidia-drivers-legacy : version bump (v390.141)
Diffstat (limited to 'sys-kernel/nvidia-drivers-legacy-dkms')
-rw-r--r--sys-kernel/nvidia-drivers-legacy-dkms/Manifest2
-rw-r--r--sys-kernel/nvidia-drivers-legacy-dkms/files/dkms.patch (renamed from sys-kernel/nvidia-drivers-legacy-dkms/files/nvidia-drivers-legacy-dkms-390.138-conf.patch)2
-rw-r--r--sys-kernel/nvidia-drivers-legacy-dkms/files/kernel-5.10.patch145
-rw-r--r--sys-kernel/nvidia-drivers-legacy-dkms/files/kernel-5.8.patch96
-rw-r--r--sys-kernel/nvidia-drivers-legacy-dkms/files/kernel-5.9.patch364
-rw-r--r--sys-kernel/nvidia-drivers-legacy-dkms/nvidia-drivers-legacy-dkms-390.141.ebuild (renamed from sys-kernel/nvidia-drivers-legacy-dkms/nvidia-drivers-legacy-dkms-390.138.ebuild)5
6 files changed, 3 insertions, 611 deletions
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/nvidia-drivers-legacy-dkms-390.138-conf.patch b/sys-kernel/nvidia-drivers-legacy-dkms/files/dkms.patch
index 8bd7c1ce..c91579ff 100644
--- a/sys-kernel/nvidia-drivers-legacy-dkms/files/nvidia-drivers-legacy-dkms-390.138-conf.patch
+++ b/sys-kernel/nvidia-drivers-legacy-dkms/files/dkms.patch
@@ -5,7 +5,7 @@ diff -Nur a/kernel/dkms.conf b/kernel/dkms.conf
-PACKAGE_NAME="nvidia"
-PACKAGE_VERSION="__VERSION_STRING"
+PACKAGE_NAME="nvidia-drivers-legacy-dkms"
-+PACKAGE_VERSION="390.138"
++PACKAGE_VERSION="390.141"
AUTOINSTALL="yes"
# By default, DKMS will add KERNELRELEASE to the make command line; however,
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 <linux/dma-mapping.h>
- #endif
-
-+#if defined(NV_LINUX_DMA_MAP_OPS_H_PRESENT)
-+#include <linux/dma-map-ops.h>
-+#endif
-+
- #if defined(CONFIG_SWIOTLB) && defined(NVCPU_AARCH64)
- #include <linux/swiotlb.h>
- #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 <linux/dma-mapping.h>
-+ #include <linux/dma-map-ops.h>
- void conftest_phys_to_dma(void) {
- phys_to_dma();
- }"
-@@ -2064,6 +2068,9 @@ compile_test() {
- #
- CODE="
- #include <linux/dma-mapping.h>
-+#if defined(NV_LINUX_DMA_MAP_OPS_H_PRESENT)
-+ #include <linux/dma-map-ops.h>
-+#endif
- void conftest_dma_ops(void) {
- (void)dma_ops;
- }"
-@@ -2078,6 +2085,9 @@ compile_test() {
- #
- CODE="
- #include <linux/dma-mapping.h>
-+#if defined(NV_LINUX_DMA_MAP_OPS_H_PRESENT)
-+ #include <linux/dma-map-ops.h>
-+#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 <linux/dma-mapping.h>
-+#if defined(NV_LINUX_DMA_MAP_OPS_H_PRESENT)
-+ #include <linux/dma-map-ops.h>
-+#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 <linux/dma-mapping.h>
-+#if defined(NV_LINUX_DMA_MAP_OPS_H_PRESENT)
-+ #include <linux/dma-map-ops.h>
-+#endif
- void conftest_get_dma_ops(void) {
- get_dma_ops();
- }"
-@@ -2117,6 +2133,9 @@ compile_test() {
- #
- CODE="
- #include <linux/dma-mapping.h>
-+#if defined(NV_LINUX_DMA_MAP_OPS_H_PRESENT)
-+ #include <linux/dma-map-ops.h>
-+#endif
- void conftest_noncoherent_swiotlb_dma_ops(void) {
- (void)noncoherent_swiotlb_dma_ops;
- }"
-@@ -2133,6 +2152,9 @@ compile_test() {
- #
- CODE="
- #include <linux/dma-mapping.h>
-+#if defined(NV_LINUX_DMA_MAP_OPS_H_PRESENT)
-+ #include <linux/dma-map-ops.h>
-+#endif
- void conftest_dma_map_resource(void) {
- dma_map_resource();
- }"
-@@ -3961,6 +3983,9 @@ compile_test() {
- #
- CODE="
- #include <linux/dma-mapping.h>
-+#if defined(NV_LINUX_DMA_MAP_OPS_H_PRESENT)
-+ #include <linux/dma-map-ops.h>
-+#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 <linux/version.h>
- #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 <linux/vmalloc.h>
-+
-+ 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 <linux/mm_types.h>
-+
-+ 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 <linux/syscalls.h> /* sys_ioctl() */
- #include <linux/ioctl32.h> /* 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 <linux/mm.h>
- #include <linux/sched.h>
-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 <linux/mm.h>
- 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 <linux/mm.h>
-+ 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 <drm/drmP.h>
-+ #endif
-+
-+ #if defined(NV_DRM_DRM_GEM_H_PRESENT)
-+ #include <drm/drm_gem.h>
-+ #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 <drm/drm_modes.h>
-+
-+ 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 <drm/drmP.h>
-+ #endif
-+
-+ #if defined(NV_DRM_DRM_DRV_H_PRESENT)
-+ #include <drm/drm_drv.h>
-+ #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 <drm/drmP.h>
-+ #endif
-+
-+ #if defined(NV_DRM_DRM_DRV_H_PRESENT)
-+ #include <drm/drm_drv.h>
-+ #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 <linux/vgaarb.h>
-+ 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 <linux/version.h>
-+#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/nvidia-drivers-legacy-dkms-390.138.ebuild b/sys-kernel/nvidia-drivers-legacy-dkms/nvidia-drivers-legacy-dkms-390.141.ebuild
index a7b858e4..e95877a1 100644
--- 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.141.ebuild
@@ -23,10 +23,7 @@ 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
+ "${FILESDIR}"/dkms.patch
)
S="${WORKDIR}/${AMD64_NV_PACKAGE}"