fix: nvidia-driver-590 and NVIDIA 590 kmods (#12334) (#12336)

(cherry picked from commit 5792dda4f0)

Co-authored-by: Gilver <roachy@fyralabs.com>
This commit is contained in:
Raboneko
2026-05-15 21:53:57 -05:00
committed by GitHub
parent ec99b98fd3
commit 4dfd10f7a8
6 changed files with 26 additions and 123 deletions
@@ -1,42 +0,0 @@
From 60d1ddc17835226ec67ed1bc1c28524e3bb6e151 Mon Sep 17 00:00:00 2001
From: Peter Jung <admin@ptr1337.dev>
Date: Sun, 20 Apr 2025 18:13:22 +0200
Subject: [PATCH 1/8] Enable atomic kernel modesetting by default
This is required for proper functionality under Wayland. fbdev has been default enabled since 570 so that
hunk can be removed from this patch.
Signed-off-by: Peter Jung <admin@ptr1337.dev>
---
nvidia-drm/nvidia-drm-linux.c | 2 +-
nvidia-drm/nvidia-drm-os-interface.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git an/nvidia-drm/nvidia-drm-linux.c b/nvidia-drm/nvidia-drm-linux.c
index 3cb1815d..209cb469 100644
--- a/nvidia-drm/nvidia-drm-linux.c
+++ b/nvidia-drm/nvidia-drm-linux.c
@@ -31,7 +31,7 @@
MODULE_PARM_DESC(
modeset,
- "Enable atomic kernel modesetting (1 = enable, 0 = disable (default))");
+ "Enable atomic kernel modesetting (1 = enable (default), 0 = disable)");
module_param_named(modeset, nv_drm_modeset_module_param, bool, 0400);
#if defined(NV_DRM_FBDEV_AVAILABLE)
diff --git a/nvidia-drm/nvidia-drm-os-interface.c b/nvidia-drm/nvidia-drm-os-interface.c
index 7617476d..f22afd77 100644
--- a/nvidia-drm/nvidia-drm-os-interface.c
+++ b/nvidia-drm/nvidia-drm-os-interface.c
@@ -41,7 +41,7 @@
#include <drm/drmP.h>
#endif
-bool nv_drm_modeset_module_param = false;
+bool nv_drm_modeset_module_param = true;
bool nv_drm_fbdev_module_param = true;
void *nv_drm_calloc(size_t nmemb, size_t size)
--
2.49.0.391.g4bbb303af6
@@ -7,14 +7,13 @@
Name: dkms-%{modulename}
Version: 580.159.03
Release: 1%{?dist}
Release: 2%{?dist}
Summary: NVIDIA display driver kernel module
Epoch: 3
License: NVIDIA License
URL: https://www.nvidia.com/object/unix.html
Source0: https://download.nvidia.com/XFree86/Linux-%{_arch}/%{version}/NVIDIA-Linux-%{_arch}-%{version}.run
Source1: dkms-nvidia.conf
Patch0: 0001-Enable-atomic-kernel-modesetting-by-default.patch
BuildRequires: sed
Requires: %{modulename}-kmod-common = %{?epoch:%{epoch}:}%{version}
Requires: dkms
@@ -31,13 +30,10 @@ Packager: Terra Packaging Team <terra@fyralabs.com>
This package provides the proprietary NVIDIA kernel driver modules.
%prep
sh %{SOURCE0} -x --target dkms-nvidia-%{version}-%{_arch}
%setup -T -D -n dkms-nvidia-%{version}-%{_arch}
pushd kernel-open
%autopatch -p1
popd
sh %{SOURCE0} -x --target %{name}-%{version}-%{_arch}
%setup -T -D -n %{name}-%{version}-%{_arch}/kernel
rm -f dkms.conf
cp -f %{SOURCE1} dkms.conf
sed -i -e 's/__VERSION_STRING/%{version}/g' dkms.conf
@@ -46,8 +42,7 @@ sed -i -e 's/__VERSION_STRING/%{version}/g' dkms.conf
%install
mkdir -p %{buildroot}%{_usrsrc}/%{modulename}-%{version}/
cp -fr * %{buildroot}%{_usrsrc}/%{modulename}-%{version}/
rm -f %{buildroot}%{_usrsrc}/%{modulename}-%{version}/*/dkms.conf
cp -fr * -t %{buildroot}%{_usrsrc}/%{modulename}-%{version}
%post
dkms add -m %{modulename} -v %{version} -q --rpm_safe_upgrade || :
@@ -1,8 +0,0 @@
Section "OutputClass"
Identifier "nvidia"
MatchDriver "nvidia-drm"
Driver "nvidia"
Option "AllowEmptyInitialConfiguration"
Option "SLI" "Auto"
Option "BaseMosaic" "on"
EndSection
@@ -12,7 +12,7 @@
Name: %{real_name}-580xx
Version: 580.159.03
Release: 3%{?dist}
Release: 4%{?dist}
Summary: NVIDIA's proprietary display driver for NVIDIA graphic cards
Epoch: 3
License: NVIDIA License
@@ -20,9 +20,8 @@ URL: http://www.nvidia.com/object/unix.html
%dnl Source0: %{name}-%{version}-i386.tar.xz
%dnl Source1: %{name}-%{version}-x86_64.tar.xz
%dnl Source2: %{name}-%{version}-aarch64.tar.xz
Source8: 70-%{real_name}.preset
Source9: 70-%{real_name}-cuda.preset
Source10: 10-nvidia.conf
Source8: 70-nvidia-driver.preset
Source9: 70-nvidia-driver-cuda.preset
Source13: alternate-install-present
Source40: com.nvidia.driver.metainfo.xml
Source41: parse-supported-gpus.py
@@ -244,6 +243,9 @@ rm -f libnvidia-pkcs11.so.%{version}
%endif
%endif
mv libGLX_nvidia.so.%{version} libGLX_nvidia.so.0
ln -sf libGLX_nvidia.so.0 libGLX_nvidia.so.%{version}
# Create symlinks for shared objects
ldconfig -vn .
@@ -285,11 +287,9 @@ ln -sf ../libnvidia-allocator.so.%{version} %{buildroot}%{_libdir}/gbm/nvidia-dr
%endif
%ifarch x86_64
# NGX Proton/Wine library
mkdir -p %{buildroot}%{_libdir}/nvidia/wine/
cp -a *.dll %{buildroot}%{_libdir}/nvidia/wine/
%endif
%ifarch x86_64 aarch64
@@ -306,7 +306,7 @@ install -p -m 0755 -D nvidia.icd %{buildroot}%{_sysconfdir}/OpenCL/vendors/nvidi
# Binaries
mkdir -p %{buildroot}%{_bindir}
install -p -m 0755 nvidia-{debugdump,smi,cuda-mps-control,cuda-mps-server,bug-report.sh,ngx-updater,powerd} %{buildroot}%{_bindir}
install -p -m 0755 nvidia-{debugdump,smi,cuda-mps-control,cuda-mps-server,ngx-updater,powerd} %{buildroot}%{_bindir}
# Man pages
mkdir -p %{buildroot}%{_mandir}/man1/
@@ -314,7 +314,7 @@ install -p -m 0644 nvidia-{smi,cuda-mps-control}*.gz %{buildroot}%{_mandir}/man1
%if 0%{?fedora} || 0%{?rhel} < 10
# X stuff
install -p -m 0644 -D %{SOURCE10} %{buildroot}%{_sysconfdir}/X11/xorg.conf.d/10-nvidia.conf
install -p -m 0644 -D nvidia-drm-outputclass.conf %{buildroot}%{_sysconfdir}/X11/xorg.conf.d/10-nvidia.conf
install -p -m 0755 -D nvidia_drv.so %{buildroot}%{_libdir}/xorg/modules/drivers/nvidia_drv.so
install -p -m 0755 -D libglxserver_nvidia.so.%{version} %{buildroot}%{_libdir}/xorg/modules/extensions/libglxserver_nvidia.so
%endif
@@ -358,8 +358,8 @@ install -p -m 0644 -D sandboxutils-filelist.json %{buildroot}%{_datadir}/nvidia/
# dnf4 only for the moment: https://github.com/rpm-software-management/dnf5/issues/1815
%if 0%{?fedora} < 42 || 0%{?rhel}
mkdir -p %{buildroot}%{_sysconfdir}/dnf/plugins/needs-restarting.d
echo %{real_name} > %{buildroot}%{_sysconfdir}/dnf/plugins/needs-restarting.d/%{real_name}.conf
echo %{real_name}-cuda > %{buildroot}%{_sysconfdir}/dnf/plugins/needs-restarting.d/%{real_name}-cuda.conf
echo %{name} > %{buildroot}%{_sysconfdir}/dnf/plugins/needs-restarting.d/%{name}.conf
echo %{name}-cuda > %{buildroot}%{_sysconfdir}/dnf/plugins/needs-restarting.d/%{name}-cuda.conf
%endif
%check
@@ -369,6 +369,7 @@ appstream-util validate --nonet %{buildroot}%{_metainfodir}/com.nvidia.driver.me
%endif
%ifarch x86_64 aarch64
%post
@@ -400,7 +401,6 @@ appstream-util validate --nonet %{buildroot}%{_metainfodir}/com.nvidia.driver.me
%license LICENSE
%doc NVIDIA_Changelog README.txt html supported-gpus/supported-gpus.json
%dir %{_sysconfdir}/nvidia
%{_bindir}/nvidia-bug-report.sh
%{_bindir}/nvidia-ngx-updater
%ifarch x86_64
%{_bindir}/nvidia-pcc
@@ -1,42 +0,0 @@
From 60d1ddc17835226ec67ed1bc1c28524e3bb6e151 Mon Sep 17 00:00:00 2001
From: Peter Jung <admin@ptr1337.dev>
Date: Sun, 20 Apr 2025 18:13:22 +0200
Subject: [PATCH 1/8] Enable atomic kernel modesetting by default
This is required for proper functionality under Wayland. fbdev has been default enabled since 570 so that
hunk can be removed from this patch.
Signed-off-by: Peter Jung <admin@ptr1337.dev>
---
nvidia-drm/nvidia-drm-linux.c | 2 +-
nvidia-drm/nvidia-drm-os-interface.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git an/nvidia-drm/nvidia-drm-linux.c b/nvidia-drm/nvidia-drm-linux.c
index 3cb1815d..209cb469 100644
--- a/nvidia-drm/nvidia-drm-linux.c
+++ b/nvidia-drm/nvidia-drm-linux.c
@@ -31,7 +31,7 @@
MODULE_PARM_DESC(
modeset,
- "Enable atomic kernel modesetting (1 = enable, 0 = disable (default))");
+ "Enable atomic kernel modesetting (1 = enable (default), 0 = disable)");
module_param_named(modeset, nv_drm_modeset_module_param, bool, 0400);
#if defined(NV_DRM_FBDEV_AVAILABLE)
diff --git a/nvidia-drm/nvidia-drm-os-interface.c b/nvidia-drm/nvidia-drm-os-interface.c
index 7617476d..f22afd77 100644
--- a/nvidia-drm/nvidia-drm-os-interface.c
+++ b/nvidia-drm/nvidia-drm-os-interface.c
@@ -41,7 +41,7 @@
#include <drm/drmP.h>
#endif
-bool nv_drm_modeset_module_param = false;
+bool nv_drm_modeset_module_param = true;
bool nv_drm_fbdev_module_param = true;
void *nv_drm_calloc(size_t nmemb, size_t size)
--
2.49.0.391.g4bbb303af6
@@ -6,17 +6,16 @@
Name: %{modulename}-kmod
Version: 580.159.03
Release: 1%{?dist}
Release: 2%{?dist}
Summary: NVIDIA display driver kernel module
Epoch: 3
License: NVIDIA License
URL: http://www.nvidia.com/object/unix.html
Source0: http://download.nvidia.com/XFree86/Linux-%{_arch}/%{version}/NVIDIA-Linux-%{_arch}-%{version}.run
Patch0: 0001-Enable-atomic-kernel-modesetting-by-default.patch
BuildRequires: kmodtool
Requires: nvidia-580xx-kmod-common = %{?epoch:%{epoch}:}%{version}
Requires: akmods
Provides: akmod-nvidia-580 = %{evr}
Provides: akmod-nvidia-580 = %{?epoch:%{epoch}:}%{version}-%{release}
Provides: nvidia-580-kmod = %{?epoch:%{epoch}:}%{version}
Conflicts: dkms-nvidia-580xx
Conflicts: nvidia-kmod
@@ -33,16 +32,17 @@ The NVidia %{version} display driver kernel module for kernel %{kversion}.
# Error out if there was something wrong with kmodtool:
%{?kmodtool_check}
# Print kmodtool output for debugging purposes:
kmodtool --target %{_target_cpu} --repo terrapkg.com --kmodname %{modulename} %{?buildforkernels:--%{buildforkernels}} %{?kernels:--for-kernels "%{?kernels}"} 2>/dev/null
kmodtool --target %{_target_cpu} --repo terrapkg.com --kmodname %{name} %{?buildforkernels:--%{buildforkernels}} %{?kernels:--for-kernels "%{?kernels}"} 2>/dev/null
sh %{SOURCE0} -x --target %{real_name}-%{version}-%{_arch}
%setup -T -D -n %{real_name}-%{version}-%{_arch}
sh %{SOURCE0} -x --target %{name}-%{version}-%{_arch}
pushd kernel-open
%autopatch -p1
popd
%ifarch x86_64
%setup -T -D -n %{name}-%{version}-%{_arch}/kernel
%elifarch aarch64
%setup -T -D -n %{name}-%{version}-%{_arch}/kernel
%endif
rm -f */dkms.conf
rm -f dkms.conf
for kernel_version in %{?kernel_versions}; do
mkdir _kmod_build_${kernel_version%%___*}