[packages/xorg-driver-video-nvidia-legacy-390xx] - fix inter-dependencies between kernel patches
baggins
baggins at pld-linux.org
Sun Jun 15 02:32:11 CEST 2025
commit 5c03de03f85bac5cd0ad88724caeb28d19b233c8
Author: Jan Rękorajski <baggins at pld-linux.org>
Date: Sun Jun 15 02:40:53 2025 +0200
- fix inter-dependencies between kernel patches
kernel-6.12.patch | 2 +-
kernel-6.15-uvm.patch => kernel-6.15-x8664.patch | 13 ---
kernel-6.15.patch | 98 ++++----------------
kernel-6.3-uvm.patch | 11 +--
kernel-6.3.patch | 112 ++++++++++++++++-------
xorg-driver-video-nvidia-legacy-390xx.spec | 2 +-
6 files changed, 102 insertions(+), 136 deletions(-)
---
diff --git a/xorg-driver-video-nvidia-legacy-390xx.spec b/xorg-driver-video-nvidia-legacy-390xx.spec
index 3975cc2..8b5138f 100644
--- a/xorg-driver-video-nvidia-legacy-390xx.spec
+++ b/xorg-driver-video-nvidia-legacy-390xx.spec
@@ -67,7 +67,7 @@ Patch14: kernel-6.13.patch
Patch15: kernel-6.14.patch
Patch16: gcc15.patch
Patch17: kernel-6.15.patch
-Patch18: kernel-6.15-uvm.patch
+Patch18: kernel-6.15-x8664.patch
Patch19: kernel-6.15-x86.patch
URL: https://www.nvidia.com/en-us/drivers/unix/
BuildRequires: rpm-build >= 4.6
diff --git a/kernel-6.12.patch b/kernel-6.12.patch
index 9660b88..c0f854b 100644
--- a/kernel-6.12.patch
+++ b/kernel-6.12.patch
@@ -3,7 +3,7 @@ diff -ur NVIDIA-Linux-x86_64-390.157-no-compat32.orig/kernel/conftest.sh NVIDIA-
+++ NVIDIA-Linux-x86_64-390.157-no-compat32/kernel/conftest.sh 2024-12-05 23:36:51.609889959 +0100
@@ -4559,6 +4559,29 @@
- compile_check_conftest "$CODE" "NV_ACPI_VIDEO_BACKLIGHT_USE_NATIVE" "" "functions"
+ compile_check_conftest "$CODE" "NV_VM_AREA_STRUCT_HAS_CONST_VM_FLAGS" "" "types"
;;
+
+ drm_output_poll_changed)
diff --git a/kernel-6.15-uvm.patch b/kernel-6.15-x8664.patch
similarity index 73%
rename from kernel-6.15-uvm.patch
rename to kernel-6.15-x8664.patch
index 6d6963b..6b23470 100644
--- a/kernel-6.15-uvm.patch
+++ b/kernel-6.15-x8664.patch
@@ -40,16 +40,3 @@ index baa6986..7324345 100644
endif
-diff --git a/kernel/nvidia-uvm/uvm8.c b/kernel/nvidia-uvm/uvm8.c
-index 49e1047..4e84bbd 100644
---- a/kernel/nvidia-uvm/uvm8.c
-+++ b/kernel/nvidia-uvm/uvm8.c
-@@ -658,7 +658,7 @@ static int uvm_mmap(struct file *filp, struct vm_area_struct *vma)
- // Using VM_DONTCOPY would be nice, but madvise(MADV_DOFORK) can reset that
- // so we have to handle vm_open on fork anyway. We could disable MADV_DOFORK
- // with VM_IO, but that causes other mapping issues.
-- vm_flags_set(vma, VM_MIXEDMAP | VM_DONTEXPAND);
-+ nv_vm_flags_set(vma, VM_MIXEDMAP | VM_DONTEXPAND);
-
- vma->vm_ops = &uvm_vm_ops_managed;
-
diff --git a/kernel-6.15.patch b/kernel-6.15.patch
index 7e7ebec..cca9cd9 100644
--- a/kernel-6.15.patch
+++ b/kernel-6.15.patch
@@ -10,12 +10,10 @@ index acd396d..1e955a4 100644
#include "conftest.h"
#if !defined(NV_VM_FAULT_T_IS_PRESENT)
-@@ -323,4 +323,30 @@ static inline struct rw_semaphore *nv_mmap_get_lock(struct mm_struct *mm)
- #endif
- }
+@@ -323,20 +323,36 @@ static inline struct rw_semaphore *nv_mmap_get_lock(struct mm_struct *mm)
-+static inline void nv_vm_flags_set(struct vm_area_struct *vma, vm_flags_t flags)
-+{
+ static inline void nv_vm_flags_set(struct vm_area_struct *vma, vm_flags_t flags)
+ {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 15, 0)
+ // Rel. commit "mm: uninline the main body of vma_start_write()" (Suren Baghdasaryan, 13 Feb 2025)
+ // Since Linux 6.15, vm_flags_set and vm_flags_clear call a GPL-only symbol
@@ -25,48 +23,30 @@ index acd396d..1e955a4 100644
+ // doesn't lock the VMA, but rather just asserts it is already write-locked.
+ vm_flags_reset(vma, vma->vm_flags | flags);
+#else
-+ vm_flags_set(vma, flags);
+ #if defined(NV_VM_AREA_STRUCT_HAS_CONST_VM_FLAGS)
+ vm_flags_set(vma, flags);
+ #else
+ vma->vm_flags |= flags;
+ #endif
+#endif
-+}
-+
-+static inline void nv_vm_flags_clear(struct vm_area_struct *vma, vm_flags_t flags)
-+{
+ }
+
+ static inline void nv_vm_flags_clear(struct vm_area_struct *vma, vm_flags_t flags)
+ {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 15, 0)
+ // Rel. commit "mm: uninline the main body of vma_start_write()" (Suren Baghdasaryan, 13 Feb 2025)
+ // See above
+ vm_flags_reset(vma, vma->vm_flags & ~flags);
+#else
-+ vm_flags_clear(vma, flags);
-+#endif
-+}
-+
- #endif // __NV_MM_H__
-diff --git a/kernel/common/inc/nv-timer.h b/kernel/common/inc/nv-timer.h
-index 18df6ea..396e121 100644
---- a/kernel/common/inc/nv-timer.h
-+++ b/kernel/common/inc/nv-timer.h
-@@ -25,6 +25,7 @@
-
- #include <linux/timer.h>
- #include <linux/kernel.h> // For container_of
-+#include <linux/version.h>
-
- #include "conftest.h"
-
-@@ -63,4 +64,13 @@ static inline void nv_timer_setup(struct nv_timer *nv_timer,
+ #if defined(NV_VM_AREA_STRUCT_HAS_CONST_VM_FLAGS)
+ vm_flags_clear(vma, flags);
+ #else
+ vma->vm_flags &= ~flags;
#endif
++#endif
}
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 2, 0)
-+// Rel. commit "treewide: Switch/rename to timer_delete[_sync]()" (Thomas Gleixner, 5 Apr 2025)
-+// This provides a shim for ancient kernels before timer_delete_sync was introduced
-+static inline int timer_delete_sync(struct timer_list *timer)
-+{
-+ return del_timer_sync(timer);
-+}
-+#endif
-+
- #endif // __NV_TIMER_H__
+ #endif // __NV_MM_H__
diff --git a/kernel/nvidia-drm/nvidia-drm-connector.c b/kernel/nvidia-drm/nvidia-drm-connector.c
index 0e9e976..5c62490 100644
--- a/kernel/nvidia-drm/nvidia-drm-connector.c
@@ -158,48 +138,6 @@ index 59c69a0..157689a 100644
#if defined(MODULE_LICENSE)
MODULE_LICENSE("NVIDIA");
#endif
-diff --git a/kernel/nvidia/nv-mmap.c b/kernel/nvidia/nv-mmap.c
-index da891ff..526391a 100644
---- a/kernel/nvidia/nv-mmap.c
-+++ b/kernel/nvidia/nv-mmap.c
-@@ -447,7 +447,7 @@ int nvidia_mmap_helper(
- addr = mmap_start;
-
- // Needed for the linux kernel for mapping compound pages
-- vm_flags_set(vma, VM_MIXEDMAP);
-+ nv_vm_flags_set(vma, VM_MIXEDMAP);
-
- for (j = 0; j < pages; j++)
- {
-@@ -471,7 +471,7 @@ int nvidia_mmap_helper(
- }
- }
-
-- vm_flags_set(vma, VM_IO);
-+ nv_vm_flags_set(vma, VM_IO);
- }
- else
- {
-@@ -533,15 +533,15 @@ int nvidia_mmap_helper(
-
- NV_PRINT_AT(NV_DBG_MEMINFO, at);
-
-- vm_flags_set(vma, VM_IO | VM_LOCKED | VM_RESERVED);
-- vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
-+ nv_vm_flags_set(vma, VM_IO | VM_LOCKED | VM_RESERVED);
-+ nv_vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
- }
-
- if ((prot & NV_PROTECT_WRITEABLE) == 0)
- {
- vma->vm_page_prot = NV_PGPROT_READ_ONLY(vma->vm_page_prot);
-- vm_flags_clear(vma, VM_WRITE);
-- vm_flags_clear(vma, VM_MAYWRITE);
-+ nv_vm_flags_clear(vma, VM_WRITE);
-+ nv_vm_flags_clear(vma, VM_MAYWRITE);
- }
-
- vma->vm_ops = &nv_vm_ops;
diff --git a/kernel/nvidia/nv.c b/kernel/nvidia/nv.c
index 4fa9c23..cf9ebbf 100644
--- a/kernel/nvidia/nv.c
diff --git a/kernel-6.3-uvm.patch b/kernel-6.3-uvm.patch
index 6967124..7156c9a 100644
--- a/kernel-6.3-uvm.patch
+++ b/kernel-6.3-uvm.patch
@@ -1,13 +1,12 @@
-diff --git a/kernel/nvidia-uvm/uvm8.c b/kernel/nvidia-uvm/uvm8.c
-index 11cb373..49e1047 100644
---- a/kernel/nvidia-uvm/uvm8.c
-+++ b/kernel/nvidia-uvm/uvm8.c
-@@ -658,7 +658,7 @@ static int uvm_mmap(struct file *filp, struct vm_area_struct *vma)
+diff --color -ur NVIDIA-Linux-x86_64-390.157-no-compat32.orig/kernel/nvidia-uvm/uvm8.c NVIDIA-Linux-x86_64-390.157-no-compat32/kernel/nvidia-uvm/uvm8.c
+--- NVIDIA-Linux-x86_64-390.157-no-compat32.orig/kernel/nvidia-uvm/uvm8.c 2022-10-12 11:30:28.000000000 +0200
++++ NVIDIA-Linux-x86_64-390.157-no-compat32/kernel/nvidia-uvm/uvm8.c 2023-05-27 21:31:28.027398157 +0200
+@@ -658,7 +658,7 @@
// Using VM_DONTCOPY would be nice, but madvise(MADV_DOFORK) can reset that
// so we have to handle vm_open on fork anyway. We could disable MADV_DOFORK
// with VM_IO, but that causes other mapping issues.
- vma->vm_flags |= VM_MIXEDMAP | VM_DONTEXPAND;
-+ vm_flags_set(vma, VM_MIXEDMAP | VM_DONTEXPAND);
++ nv_vm_flags_set(vma, VM_MIXEDMAP | VM_DONTEXPAND | VM_DONTCOPY);
vma->vm_ops = &uvm_vm_ops_managed;
diff --git a/kernel-6.3.patch b/kernel-6.3.patch
index 57f0893..2a6892b 100644
--- a/kernel-6.3.patch
+++ b/kernel-6.3.patch
@@ -1,67 +1,98 @@
-diff --git a/kernel/common/inc/nv-linux.h b/kernel/common/inc/nv-linux.h
-index 2c4cb7b..f68fcf2 100644
---- a/kernel/common/inc/nv-linux.h
-+++ b/kernel/common/inc/nv-linux.h
-@@ -1996,4 +1996,17 @@ static inline NvU64 nv_expand_nvlink_addr(NvU64 addr47)
- #include <linux/backlight.h>
+diff --color -ur NVIDIA-Linux-x86_64-390.157-no-compat32.orig/kernel/common/inc/nv-mm.h NVIDIA-Linux-x86_64-390.157-no-compat32/kernel/common/inc/nv-mm.h
+--- NVIDIA-Linux-x86_64-390.157-no-compat32.orig/kernel/common/inc/nv-mm.h 2022-10-12 11:30:26.000000000 +0200
++++ NVIDIA-Linux-x86_64-390.157-no-compat32/kernel/common/inc/nv-mm.h 2023-05-27 21:34:28.310317019 +0200
+@@ -282,4 +282,22 @@
#endif
+ }
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 3, 0)
-+// Rel. commit "mm: introduce vma->vm_flags wrapper functions" (Suren Baghdasaryan, 26 Jan 2023)
-+static inline void vm_flags_set(struct vm_area_struct *vma, vm_flags_t flags)
++static inline void nv_vm_flags_set(struct vm_area_struct *vma, vm_flags_t flags)
+{
++#if defined(NV_VM_AREA_STRUCT_HAS_CONST_VM_FLAGS)
++ vm_flags_set(vma, flags);
++#else
+ vma->vm_flags |= flags;
++#endif
+}
+
-+static inline void vm_flags_clear(struct vm_area_struct *vma, vm_flags_t flags)
++static inline void nv_vm_flags_clear(struct vm_area_struct *vma, vm_flags_t flags)
+{
++#if defined(NV_VM_AREA_STRUCT_HAS_CONST_VM_FLAGS)
++ vm_flags_clear(vma, flags);
++#else
+ vma->vm_flags &= ~flags;
-+}
+#endif
++}
+
- #endif /* _NV_LINUX_H_ */
-diff --git a/kernel/nvidia-drm/nvidia-drm-fb.c b/kernel/nvidia-drm/nvidia-drm-fb.c
-index 725164a..c35e0ee 100644
---- a/kernel/nvidia-drm/nvidia-drm-fb.c
-+++ b/kernel/nvidia-drm/nvidia-drm-fb.c
-@@ -29,6 +29,7 @@
- #include "nvidia-drm-fb.h"
- #include "nvidia-drm-utils.h"
- #include "nvidia-drm-gem.h"
-+#include "nvidia-drm-helper.h"
+ #endif // __NV_MM_H__
+diff --color -ur NVIDIA-Linux-x86_64-390.157-no-compat32.orig/kernel/conftest.sh NVIDIA-Linux-x86_64-390.157-no-compat32/kernel/conftest.sh
+--- NVIDIA-Linux-x86_64-390.157-no-compat32.orig/kernel/conftest.sh 2022-10-11 18:00:50.000000000 +0200
++++ NVIDIA-Linux-x86_64-390.157-no-compat32/kernel/conftest.sh 2023-05-27 21:33:14.502405255 +0200
+@@ -4646,6 +4646,25 @@
- #include <drm/drm_crtc_helper.h>
+ compile_check_conftest "$CODE" "NV_ACPI_VIDEO_BACKLIGHT_USE_NATIVE" "" "functions"
+ ;;
++
++ vm_area_struct_has_const_vm_flags)
++ #
++ # Determine if the 'vm_area_struct' structure has
++ # const 'vm_flags'.
++ #
++ # A union of '__vm_flags' and 'const vm_flags' was added
++ # by commit bc292ab00f6c ("mm: introduce vma->vm_flags
++ # wrapper functions") in mm-stable branch (2023-02-09)
++ # of the akpm/mm maintainer tree.
++ #
++ CODE="
++ #include <linux/mm_types.h>
++ int conftest_vm_area_struct_has_const_vm_flags(void) {
++ return offsetof(struct vm_area_struct, __vm_flags);
++ }"
++
++ compile_check_conftest "$CODE" "NV_VM_AREA_STRUCT_HAS_CONST_VM_FLAGS" "" "types"
++ ;;
+ esac
+ }
+
+diff --color -ur NVIDIA-Linux-x86_64-390.157-no-compat32.orig/kernel/nvidia/nvidia.Kbuild NVIDIA-Linux-x86_64-390.157-no-compat32/kernel/nvidia/nvidia.Kbuild
+--- NVIDIA-Linux-x86_64-390.157-no-compat32.orig/kernel/nvidia/nvidia.Kbuild 2022-10-12 11:29:57.000000000 +0200
++++ NVIDIA-Linux-x86_64-390.157-no-compat32/kernel/nvidia/nvidia.Kbuild 2023-05-27 21:33:16.565772516 +0200
+@@ -168,6 +168,7 @@
+ NV_CONFTEST_FUNCTION_COMPILE_TESTS += unsafe_follow_pfn
+ NV_CONFTEST_FUNCTION_COMPILE_TESTS += acpi_bus_get_device
+ NV_CONFTEST_FUNCTION_COMPILE_TESTS += acpi_video_backlight_use_native
++NV_CONFTEST_FUNCTION_COMPILE_TESTS += vm_area_struct_has_const_vm_flags
-diff --git a/kernel/nvidia/nv-mmap.c b/kernel/nvidia/nv-mmap.c
-index 0b0a6f2..da891ff 100644
---- a/kernel/nvidia/nv-mmap.c
-+++ b/kernel/nvidia/nv-mmap.c
-@@ -447,7 +447,7 @@ int nvidia_mmap_helper(
+ NV_CONFTEST_SYMBOL_COMPILE_TESTS += is_export_symbol_gpl_of_node_to_nid
+ NV_CONFTEST_SYMBOL_COMPILE_TESTS += is_export_symbol_present_swiotlb_map_sg_attrs
+diff --color -ur NVIDIA-Linux-x86_64-390.157-no-compat32.orig/kernel/nvidia/nv-mmap.c NVIDIA-Linux-x86_64-390.157-no-compat32/kernel/nvidia/nv-mmap.c
+--- NVIDIA-Linux-x86_64-390.157-no-compat32.orig/kernel/nvidia/nv-mmap.c 2022-10-12 11:30:26.000000000 +0200
++++ NVIDIA-Linux-x86_64-390.157-no-compat32/kernel/nvidia/nv-mmap.c 2023-05-27 21:33:09.022315399 +0200
+@@ -447,7 +447,7 @@
addr = mmap_start;
// Needed for the linux kernel for mapping compound pages
- vma->vm_flags |= VM_MIXEDMAP;
-+ vm_flags_set(vma, VM_MIXEDMAP);
++ nv_vm_flags_set(vma, VM_MIXEDMAP | VM_PFNMAP | VM_DONTEXPAND);
for (j = 0; j < pages; j++)
{
-@@ -471,7 +471,7 @@ int nvidia_mmap_helper(
+@@ -471,7 +471,7 @@
}
}
- vma->vm_flags |= VM_IO;
-+ vm_flags_set(vma, VM_IO);
++ nv_vm_flags_set(vma, VM_IO | VM_PFNMAP | VM_DONTEXPAND);
}
else
{
-@@ -533,15 +533,15 @@ int nvidia_mmap_helper(
+@@ -533,15 +533,15 @@
NV_PRINT_AT(NV_DBG_MEMINFO, at);
- vma->vm_flags |= (VM_IO | VM_LOCKED | VM_RESERVED);
- vma->vm_flags |= (VM_DONTEXPAND | VM_DONTDUMP);
-+ vm_flags_set(vma, VM_IO | VM_LOCKED | VM_RESERVED);
-+ vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
++ nv_vm_flags_set(vma, VM_IO | VM_LOCKED | VM_RESERVED);
++ nv_vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
}
if ((prot & NV_PROTECT_WRITEABLE) == 0)
@@ -69,8 +100,19 @@ index 0b0a6f2..da891ff 100644
vma->vm_page_prot = NV_PGPROT_READ_ONLY(vma->vm_page_prot);
- vma->vm_flags &= ~VM_WRITE;
- vma->vm_flags &= ~VM_MAYWRITE;
-+ vm_flags_clear(vma, VM_WRITE);
-+ vm_flags_clear(vma, VM_MAYWRITE);
++ nv_vm_flags_clear(vma, VM_WRITE);
++ nv_vm_flags_clear(vma, VM_MAYWRITE);
}
vma->vm_ops = &nv_vm_ops;
+diff --color -ur NVIDIA-Linux-x86_64-390.157-no-compat32.orig/kernel/nvidia-drm/nvidia-drm-fb.c NVIDIA-Linux-x86_64-390.157-no-compat32/kernel/nvidia-drm/nvidia-drm-fb.c
+--- NVIDIA-Linux-x86_64-390.157-no-compat32.orig/kernel/nvidia-drm/nvidia-drm-fb.c 2022-10-12 11:30:31.000000000 +0200
++++ NVIDIA-Linux-x86_64-390.157-no-compat32/kernel/nvidia-drm/nvidia-drm-fb.c 2023-05-27 21:29:24.045671732 +0200
+@@ -29,6 +29,7 @@
+ #include "nvidia-drm-fb.h"
+ #include "nvidia-drm-utils.h"
+ #include "nvidia-drm-gem.h"
++#include "nvidia-drm-helper.h"
+
+ #include <drm/drm_crtc_helper.h>
+
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/xorg-driver-video-nvidia-legacy-390xx.git/commitdiff/5c03de03f85bac5cd0ad88724caeb28d19b233c8
More information about the pld-cvs-commit
mailing list