[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