[packages/xorg-driver-video-nvidia] - up to 570.153.02

baggins baggins at pld-linux.org
Sat Jun 14 13:59:55 CEST 2025


commit 0ad637dd0b6d23aca982d77e9254a2df00bfdc84
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Sat Jun 14 15:11:21 2025 +0200

    - up to 570.153.02

 ...around-nv_vm_flags_-calling-GPL-only-code.patch | 104 +++++++++++++++++++++
 xorg-driver-video-nvidia.spec                      |  17 ++--
 2 files changed, 115 insertions(+), 6 deletions(-)
---
diff --git a/xorg-driver-video-nvidia.spec b/xorg-driver-video-nvidia.spec
index 29fd7b2..b075b38 100644
--- a/xorg-driver-video-nvidia.spec
+++ b/xorg-driver-video-nvidia.spec
@@ -20,26 +20,27 @@ exit 1
 
 %define		no_install_post_check_so 1
 
-%define		rel	2
+%define		rel	1
 %define		pname	xorg-driver-video-nvidia
 Summary:	Linux Drivers for nVidia GeForce/Quadro Chips
 Summary(hu.UTF-8):	Linux meghajtók nVidia GeForce/Quadro chipekhez
 Summary(pl.UTF-8):	Sterowniki do kart graficznych nVidia GeForce/Quadro
 Name:		%{pname}%{?_pld_builder:%{?with_kernel:-kernel}}%{_alt_kernel}
 # when updating version here, keep nvidia-settings.spec in sync as well
-Version:	570.133.07
+Version:	570.153.02
 Release:	%{rel}%{?_pld_builder:%{?with_kernel:@%{_kernel_ver_str}}}
 Epoch:		1
 License:	nVidia Binary
 Group:		X11
 Source0:	https://us.download.nvidia.com/XFree86/Linux-x86_64/%{version}/NVIDIA-Linux-x86_64-%{version}.run
-# Source0-md5:	27c62c49264e1a1da92ebcede9cf76bc
+# Source0-md5:	0981edd4e93370e329c6ba505f159bd5
 Source2:	%{pname}-xinitrc.sh
 Source3:	gl.pc.in
 Source4:	10-nvidia.conf
 Source5:	10-nvidia-modules.conf
 Patch0:		X11-driver-nvidia-desktop.patch
 Patch1:		gcc14.patch
+Patch2:		0003-Workaround-nv_vm_flags_-calling-GPL-only-code.patch
 URL:		https://www.nvidia.com/en-us/drivers/unix/
 BuildRequires:	rpm-build >= 4.6
 BuildRequires:	rpmbuild(macros) >= 1.752
@@ -319,6 +320,9 @@ rm -rf NVIDIA-Linux-x86_64-%{version}
 %setup -qDT -n NVIDIA-Linux-x86_64-%{version}
 %patch -P 0 -p1
 %patch -P 1 -p1
+cd kernel
+%patch -P 2 -p1
+cd ..
 echo 'EXTRA_CFLAGS += -Wno-pointer-arith -Wno-sign-compare -Wno-unused' >> kernel/Makefile.kbuild
 
 %build
@@ -382,8 +386,8 @@ for f in \
 	%{srcdir}/libcuda.so.%{version}			\
 	%{srcdir}/libnvcuvid.so.%{version}		\
 	%{srcdir}/libnvidia-allocator.so.%{version}	\
-	%{srcdir}/libnvidia-egl-xcb.so.1.0.0		\
-	%{srcdir}/libnvidia-egl-xlib.so.1.0.0		\
+	%{srcdir}/libnvidia-egl-xcb.so.1.0.2		\
+	%{srcdir}/libnvidia-egl-xlib.so.1.0.2		\
 	%{srcdir}/libnvidia-eglcore.so.%{version}	\
 	%{srcdir}/libnvidia-encode.so.%{version}	\
 	%{srcdir}/libnvidia-fbc.so.%{version}		\
@@ -401,7 +405,7 @@ for f in \
 	%{srcdir}/libcudadebugger.so.%{version}		\
 	%{srcdir}/libnvidia-api.so.1			\
 	%{srcdir}/libnvidia-egl-gbm.so.1.1.2		\
-	%{srcdir}/libnvidia-egl-wayland.so.1.1.18	\
+	%{srcdir}/libnvidia-egl-wayland.so.1.1.19	\
 	%{srcdir}/libnvidia-cfg.so.%{version}		\
 	%{srcdir}/libnvidia-ngx.so.%{version}		\
 	%{srcdir}/libnvidia-pkcs11-openssl3.so.%{version}	\
@@ -602,6 +606,7 @@ EOF
 %attr(755,root,root) %ghost %{_libdir}/nvidia/libnvidia-vksc-core.so.1
 %attr(755,root,root) %{_libdir}/nvidia/libnvidia-vksc-core.so.*.*
 %attr(755,root,root) %{_libdir}/nvidia/libnvoptix.so.*.*
+%attr(755,root,root) %ghost %{_libdir}/nvidia/libnvoptix.so.1
 # which package should own those?
 %dir %{_datadir}/egl
 %dir %{_datadir}/egl/egl_external_platform.d
diff --git a/0003-Workaround-nv_vm_flags_-calling-GPL-only-code.patch b/0003-Workaround-nv_vm_flags_-calling-GPL-only-code.patch
new file mode 100644
index 0000000..dbf4a47
--- /dev/null
+++ b/0003-Workaround-nv_vm_flags_-calling-GPL-only-code.patch
@@ -0,0 +1,104 @@
+From 3b4e78d1107a4da33a805b161ade8f718454bd2d Mon Sep 17 00:00:00 2001
+From: Eric Naim <dnaim at cachyos.org>
+Date: Tue, 20 May 2025 00:11:56 +0800
+Subject: [PATCH] Workaround nv_vm_flags_* calling GPL-only code
+
+Since 6.15, the main body of vma_start_write() was uninlined and has
+been made GPL-only code. This means that the closed modules can no
+longer use vma_start_write() and functions calling it. Fortunately for
+us, an NVIDIA driver hacker that tries to maintain the legacy drivers
+for newer kernels claims that all VMAs that the driver uses are all
+either initially mapped or already locked, this means that using
+vm_flags_reset is sufficient to replace vm_flags_* helpers.
+
+Signed-off-by: Eric Naim <dnaim at cachyos.org>
+---
+ kernel-open/nvidia-drm/nvidia-drm-gem-user-memory.c | 7 +++++++
+ kernel-open/nvidia-drm/nvidia-drm-gem.c             | 7 +++++++
+ kernel-open/nvidia-uvm/uvm.c                        | 7 +++++++
+ kernel-open/nvidia/nv-mmap.c                        | 7 +++++++
+ 4 files changed, 28 insertions(+)
+
+diff --git a/nvidia-drm/nvidia-drm-gem-user-memory.c b/nvidia-drm/nvidia-drm-gem-user-memory.c
+index 91d56ebb5..6e07bb023 100644
+--- a/nvidia-drm/nvidia-drm-gem-user-memory.c
++++ b/nvidia-drm/nvidia-drm-gem-user-memory.c
+@@ -44,6 +44,13 @@
+ #include <vm/vm_pageout.h>
+ #endif
+ 
++#include <linux/version.h>
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 15, 0)
++#define nv_vm_flags_set(v, f) vm_flags_reset((v), (v)->vm_flags | (f))
++#define nv_vm_flags_clear(v, f) vm_flags_reset((v), (v)->vm_flags & ~(f))
++#endif
++
+ static inline
+ void __nv_drm_gem_user_memory_free(struct nv_drm_gem_object *nv_gem)
+ {
+diff --git a/nvidia-drm/nvidia-drm-gem.c b/nvidia-drm/nvidia-drm-gem.c
+index 5ac597823..8dff0abe6 100644
+--- a/nvidia-drm/nvidia-drm-gem.c
++++ b/nvidia-drm/nvidia-drm-gem.c
+@@ -51,6 +51,13 @@
+ 
+ #include "nv-mm.h"
+ 
++#include <linux/version.h>
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 15, 0)
++#define nv_vm_flags_set(v, f) vm_flags_reset((v), (v)->vm_flags | (f))
++#define nv_vm_flags_clear(v, f) vm_flags_reset((v), (v)->vm_flags & ~(f))
++#endif
++
+ void nv_drm_gem_free(struct drm_gem_object *gem)
+ {
+     struct nv_drm_gem_object *nv_gem = to_nv_gem_object(gem);
+diff --git a/nvidia-uvm/uvm.c b/nvidia-uvm/uvm.c
+index a9c182f82..bfec14dc0 100644
+--- a/nvidia-uvm/uvm.c
++++ b/nvidia-uvm/uvm.c
+@@ -21,6 +21,8 @@
+ 
+ *******************************************************************************/
+ 
++#include <linux/version.h>
++
+ #include "uvm_api.h"
+ #include "uvm_global.h"
+ #include "uvm_gpu_replayable_faults.h"
+@@ -40,6 +42,11 @@
+ 
+ #define NVIDIA_UVM_DEVICE_NAME          "nvidia-uvm"
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 15, 0)
++#define nv_vm_flags_set(v, f) vm_flags_reset((v), (v)->vm_flags | (f))
++#define nv_vm_flags_clear(v, f) vm_flags_reset((v), (v)->vm_flags & ~(f))
++#endif
++
+ static dev_t g_uvm_base_dev;
+ static struct cdev g_uvm_cdev;
+ static const struct file_operations uvm_fops;
+diff --git a/nvidia/nv-mmap.c b/nvidia/nv-mmap.c
+index 33c7d2982..813264c8f 100644
+--- a/nvidia/nv-mmap.c
++++ b/nvidia/nv-mmap.c
+@@ -23,10 +23,17 @@
+ 
+ #define  __NO_VERSION__
+ 
++#include <linux/version.h>
++
+ #include "os-interface.h"
+ #include "nv-linux.h"
+ #include "nv_speculation_barrier.h"
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 15, 0)
++#define nv_vm_flags_set(v, f) vm_flags_reset((v), (v)->vm_flags | (f))
++#define nv_vm_flags_clear(v, f) vm_flags_reset((v), (v)->vm_flags & ~(f))
++#endif
++
+ /*
+  * The 'struct vm_operations' open() callback is called by the Linux
+  * kernel when the parent VMA is split or copied, close() when the
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/xorg-driver-video-nvidia.git/commitdiff/0ad637dd0b6d23aca982d77e9254a2df00bfdc84



More information about the pld-cvs-commit mailing list