$ git diff --patch-with-stat --summary 5ce44b0d23213926ffba61592c06ce1502190249..d9ada49c16340f7a958093b79a6886576eccee07
.abf.yml | 10 +--
.onedev-buildspec.yml | 4 +
99-nvidia.conf | 3 -
README.md | 6 +-
nvidia-kernel-6.10.patch | 66 ----------------
nvidia-kernel-6.12.patch | 42 ++++++++++
nvidia-kernel-6.13.patch | 51 ++++++++++++
nvidia-kernel-6.14.patch | 42 ++++++++++
nvidia-kernel-6.15.patch | 64 +++++++++++++++
nvidia-persistenced.conf | 3 +-
nvidia.spec | 201 +++++++++++++++++++++++++++++++++++++++--------
11 files changed, 379 insertions(+), 113 deletions(-)
create mode 100644 .onedev-buildspec.yml
delete mode 100644 99-nvidia.conf
delete mode 100644 nvidia-kernel-6.10.patch
create mode 100644 nvidia-kernel-6.12.patch
create mode 100644 nvidia-kernel-6.13.patch
create mode 100644 nvidia-kernel-6.14.patch
create mode 100644 nvidia-kernel-6.15.patch
diff --git a/.abf.yml b/.abf.yml
index 4ce4077..e972a3d 100644
--- a/.abf.yml
+++ b/.abf.yml
@@ -1,6 +1,6 @@
sources:
- NVIDIA-Linux-aarch64-555.58.02.run: 88e186ccbbcfb5df1abab11b3c1cd47ccbc37574
- NVIDIA-Linux-x86_64-555.58.02.run: 13cdcf1194a7544f4460e94fb2efcea90e6f848a
- nvidia-modprobe-555.58.02.tar.gz: 987c571ac72a00a686bdb201a68ea610775a0afc
- nvidia-persistenced-555.58.02.tar.gz: 3577f2480a12a7b61c5ec806ac34c54e38e9fa05
- nvidia-settings-555.58.02.tar.gz: f9e90bc07c189d00c8a17e90126aacf3ee4f9c41
+ NVIDIA-Linux-aarch64-610.43.02.run: 3931f31a66465c94eaa918b17d86f5267469e783
+ NVIDIA-Linux-x86_64-610.43.02.run: b0d412913a284555d36ef2443bad3b6405b3b870
+ nvidia-modprobe-610.43.02.tar.bz2: f1b2b01aa94e69101ef626b6b8a41753197eeacf
+ nvidia-persistenced-610.43.02.tar.bz2: 49bbbd7dc94e4bf7bb337a91707ed95599265cbb
+ nvidia-settings-610.43.02.tar.bz2: 0562401fb8ca88256a4ac3de637f920beaa90686
diff --git a/.onedev-buildspec.yml b/.onedev-buildspec.yml
new file mode 100644
index 0000000..b95f83a
--- /dev/null
+++ b/.onedev-buildspec.yml
@@ -0,0 +1,4 @@
+version: 40
+imports:
+- projectPath: OpenMandriva/Packages
+ revision: mirroring
diff --git a/99-nvidia.conf b/99-nvidia.conf
deleted file mode 100644
index a4af5e3..0000000
--- a/99-nvidia.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-# Omit the nvidia driver from the ramdisk, to avoid needing to regenerate
-# the ramdisk on updates.
-omit_drivers+=" nvidia nvidia-drm nvidia-modeset nvidia-uvm nvidia-peermem "
diff --git a/README.md b/README.md
index 0d94269..6bed5bf 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,5 @@
# nvidia
-This repository contains the NVIDIA Proprietary and Open drivers. The driver versions used in the release channels are as follows:
-
-* Rock = NVIDIA Production branch
-* Rolling = NVIDIA New Feature branch
-* Cooker = NVIDIA Beta branch
+This repository contains the NVIDIA Proprietary and Open drivers.
The following packages are built in ABF from this repository:
diff --git a/nvidia-kernel-6.10.patch b/nvidia-kernel-6.10.patch
deleted file mode 100644
index acbbce8..0000000
--- a/nvidia-kernel-6.10.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-diff -up NVIDIA-Linux-x86_64-550.78/kernel-open/nvidia/os-mlock.c.omv~ NVIDIA-Linux-x86_64-550.78/kernel-open/nvidia/os-mlock.c
---- NVIDIA-Linux-x86_64-550.78/kernel-open/nvidia/os-mlock.c.omv~ 2024-05-31 04:07:05.148392927 +0200
-+++ NVIDIA-Linux-x86_64-550.78/kernel-open/nvidia/os-mlock.c 2024-05-31 04:09:46.722091133 +0200
-@@ -36,11 +36,29 @@ static inline int nv_follow_pfn(struct v
- unsigned long address,
- unsigned long *pfn)
- {
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0)
- #if defined(NV_UNSAFE_FOLLOW_PFN_PRESENT)
- return unsafe_follow_pfn(vma, address, pfn);
- #else
- return follow_pfn(vma, address, pfn);
- #endif
-+#else
-+ int status = 0;
-+ spinlock_t *ptl;
-+ pte_t *ptep;
-+
-+ if (!(vma->vm_flags & (VM_IO | VM_PFNMAP)))
-+ return status;
-+
-+ status = follow_pte(vma, address, &ptep, &ptl);
-+ if (status)
-+ return status;
-+ *pfn = pte_pfn(ptep_get(ptep));
-+
-+ // The lock is acquired inside follow_pte()
-+ pte_unmap_unlock(ptep, ptl);
-+ return 0;
-+#endif
- }
-
- /*!
-diff -up NVIDIA-Linux-x86_64-550.78/kernel/nvidia/os-mlock.c.omv~ NVIDIA-Linux-x86_64-550.78/kernel/nvidia/os-mlock.c
---- NVIDIA-Linux-x86_64-550.78/kernel/nvidia/os-mlock.c.omv~ 2024-05-31 04:06:10.151818007 +0200
-+++ NVIDIA-Linux-x86_64-550.78/kernel/nvidia/os-mlock.c 2024-05-31 04:09:29.137905735 +0200
-@@ -36,11 +36,29 @@ static inline int nv_follow_pfn(struct v
- unsigned long address,
- unsigned long *pfn)
- {
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0)
- #if defined(NV_UNSAFE_FOLLOW_PFN_PRESENT)
- return unsafe_follow_pfn(vma, address, pfn);
- #else
- return follow_pfn(vma, address, pfn);
- #endif
-+#else
-+ int status = 0;
-+ spinlock_t *ptl;
-+ pte_t *ptep;
-+
-+ if (!(vma->vm_flags & (VM_IO | VM_PFNMAP)))
-+ return status;
-+
-+ status = follow_pte(vma, address, &ptep, &ptl);
-+ if (status)
-+ return status;
-+ *pfn = pte_pfn(ptep_get(ptep));
-+
-+ // The lock is acquired inside follow_pte()
-+ pte_unmap_unlock(ptep, ptl);
-+ return 0;
-+#endif
- }
-
- /*!
diff --git a/nvidia-kernel-6.12.patch b/nvidia-kernel-6.12.patch
new file mode 100644
index 0000000..c3ce5fc
--- /dev/null
+++ b/nvidia-kernel-6.12.patch
@@ -0,0 +1,42 @@
+diff -up NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm-drv.c.omv~ NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm-drv.c
+--- NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm-drv.c.omv~ 2024-11-03 16:21:32.492157190 +0100
++++ NVIDIA-Linux-x86_64-560.35.03/kernel/nvidia-drm/nvidia-drm-drv.c 2024-11-03 16:22:35.512905656 +0100
+@@ -75,6 +75,7 @@
+
+ #include <linux/pci.h>
+ #include <linux/workqueue.h>
++#include <linux/version.h>
+
+ /*
+ * Commit fcd70cd36b9b ("drm: Split out drm_probe_helper.h")
+@@ -204,7 +205,9 @@ static const struct drm_mode_config_func
+ .atomic_check = nv_drm_atomic_check,
+ .atomic_commit = nv_drm_atomic_commit,
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6,12,0)
+ .output_poll_changed = nv_drm_output_poll_changed,
++#endif
+ };
+
+ static void nv_drm_event_callback(const struct NvKmsKapiEvent *event)
+diff -up NVIDIA-Linux-x86_64-560.35.03/kernel-open/nvidia-drm/nvidia-drm-drv.c.omv~ NVIDIA-Linux-x86_64-560.35.03/kernel-open/nvidia-drm/nvidia-drm-drv.c
+--- NVIDIA-Linux-x86_64-560.35.03/kernel-open/nvidia-drm/nvidia-drm-drv.c.omv~ 2024-11-03 19:31:31.749694675 +0100
++++ NVIDIA-Linux-x86_64-560.35.03/kernel-open/nvidia-drm/nvidia-drm-drv.c 2024-11-03 19:31:57.879981252 +0100
+@@ -75,6 +75,7 @@
+
+ #include <linux/pci.h>
+ #include <linux/workqueue.h>
++#include <linux/version.h>
+
+ /*
+ * Commit fcd70cd36b9b ("drm: Split out drm_probe_helper.h")
+@@ -204,7 +205,9 @@ static const struct drm_mode_config_func
+ .atomic_check = nv_drm_atomic_check,
+ .atomic_commit = nv_drm_atomic_commit,
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 12, 0)
+ .output_poll_changed = nv_drm_output_poll_changed,
++#endif
+ };
+
+ static void nv_drm_event_callback(const struct NvKmsKapiEvent *event)
diff --git a/nvidia-kernel-6.13.patch b/nvidia-kernel-6.13.patch
new file mode 100644
index 0000000..a32a9aa
--- /dev/null
+++ b/nvidia-kernel-6.13.patch
@@ -0,0 +1,51 @@
+diff -up NVIDIA-Linux-x86_64-560.35.03/kernel-open/nvidia/internal_crypt_lib.h.omv~ NVIDIA-Linux-x86_64-560.35.03/kernel-open/nvidia/internal_crypt_lib.h
+--- NVIDIA-Linux-x86_64-560.35.03/kernel-open/nvidia/internal_crypt_lib.h.omv~ 2024-12-03 17:03:29.670620008 +0100
++++ NVIDIA-Linux-x86_64-560.35.03/kernel-open/nvidia/internal_crypt_lib.h 2024-12-03 17:04:31.401380067 +0100
+@@ -36,6 +36,7 @@
+ #include <linux/limits.h>
+ #include <linux/random.h>
+ #include <linux/string.h>
++#include <linux/version.h>
+
+ // Check if ECDH/ECDSA are there, on some platforms they might not be...
+ #ifndef AUTOCONF_INCLUDED
+@@ -64,7 +65,7 @@
+ * old or even just user disabled. If we should use LKCA, include headers, else
+ * define stubs to return errors.
+ */
+-#if defined(NV_CRYPTO_PRESENT) && defined (NV_CONFIG_CRYPTO_PRESENT)
++#if defined(NV_CRYPTO_PRESENT) && defined (NV_CONFIG_CRYPTO_PRESENT) && LINUX_VERSION_CODE < KERNEL_VERSION(6, 13, 0) /* 6.13 drops crypto_akcipher_verify */
+ #define USE_LKCA 1
+ #endif
+
+diff -up NVIDIA-Linux-x86_64-565.77/kernel-open/nvidia/nv.c.omv~ NVIDIA-Linux-x86_64-565.77/kernel-open/nvidia/nv.c
+--- NVIDIA-Linux-x86_64-565.77/kernel-open/nvidia/nv.c.omv~ 2024-12-24 04:54:27.460258101 +0100
++++ NVIDIA-Linux-x86_64-565.77/kernel-open/nvidia/nv.c 2024-12-24 04:54:43.680389194 +0100
+@@ -127,7 +127,10 @@ MODULE_ALIAS_CHARDEV_MAJOR(NV_MAJOR_DEVI
+ * DMA_BUF namespace is added by commit id 16b0314aa746
+ * ("dma-buf: move dma-buf symbols into the DMA_BUF module namespace") in 5.16
+ */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 13, 0)
+-MODULE_IMPORT_NS(DMA_BUF);
++#else
++MODULE_IMPORT_NS("DMA_BUF");
++#endif
+ #endif // defined(MODULE_IMPORT_NS)
+
+ const NvBool nv_is_rm_firmware_supported_os = NV_TRUE;
+diff -up NVIDIA-Linux-x86_64-565.77/kernel-open/nvidia/nv-dmabuf.c.omv~ NVIDIA-Linux-x86_64-565.77/kernel-open/nvidia/nv-dmabuf.c
+--- NVIDIA-Linux-x86_64-565.77/kernel-open/nvidia/nv-dmabuf.c.omv~ 2024-12-24 15:58:52.309422060 +0100
++++ NVIDIA-Linux-x86_64-565.77/kernel-open/nvidia/nv-dmabuf.c 2024-12-24 15:59:04.829688547 +0100
+@@ -23,6 +23,12 @@
+ #include <linux/dma-buf.h>
+ #include "nv-dmabuf.h"
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 13, 0)
++MODULE_IMPORT_NS(DMA_BUF);
++#else
++MODULE_IMPORT_NS("DMA_BUF");
++#endif
++
+ #if defined(CONFIG_DMA_SHARED_BUFFER)
+
+ typedef struct nv_dma_buf_mem_handle
diff --git a/nvidia-kernel-6.14.patch b/nvidia-kernel-6.14.patch
new file mode 100644
index 0000000..65cc93c
--- /dev/null
+++ b/nvidia-kernel-6.14.patch
@@ -0,0 +1,42 @@
+diff -up NVIDIA-Linux-x86_64-570.86.16/kernel-open/nvidia-drm/nvidia-drm-drv.c.1~ NVIDIA-Linux-x86_64-570.86.16/kernel-open/nvidia-drm/nvidia-drm-drv.c
+--- NVIDIA-Linux-x86_64-570.86.16/kernel-open/nvidia-drm/nvidia-drm-drv.c.1~ 2025-01-24 21:52:46.000000000 +0100
++++ NVIDIA-Linux-x86_64-570.86.16/kernel-open/nvidia-drm/nvidia-drm-drv.c 2025-02-16 21:36:18.528110661 +0100
+@@ -88,6 +88,7 @@
+
+ #include <linux/pci.h>
+ #include <linux/workqueue.h>
++#include <linux/version.h>
+
+ /*
+ * Commit fcd70cd36b9b ("drm: Split out drm_probe_helper.h")
+@@ -1915,7 +1916,9 @@ static struct drm_driver nv_drm_driver =
+ .name = "nvidia-drm",
+
+ .desc = "NVIDIA DRM driver",
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 14, 0)
+ .date = "20160202",
++#endif
+
+ #if defined(NV_DRM_DRIVER_HAS_DEVICE_LIST)
+ .device_list = LIST_HEAD_INIT(nv_drm_driver.device_list),
+diff -up NVIDIA-Linux-x86_64-570.86.16/kernel/nvidia-drm/nvidia-drm-drv.c.1~ NVIDIA-Linux-x86_64-570.86.16/kernel/nvidia-drm/nvidia-drm-drv.c
+--- NVIDIA-Linux-x86_64-570.86.16/kernel/nvidia-drm/nvidia-drm-drv.c.1~ 2025-01-24 21:50:25.000000000 +0100
++++ NVIDIA-Linux-x86_64-570.86.16/kernel/nvidia-drm/nvidia-drm-drv.c 2025-02-16 21:36:37.160162439 +0100
+@@ -88,6 +88,7 @@
+
+ #include <linux/pci.h>
+ #include <linux/workqueue.h>
++#include <linux/version.h>
+
+ /*
+ * Commit fcd70cd36b9b ("drm: Split out drm_probe_helper.h")
+@@ -1915,7 +1916,9 @@ static struct drm_driver nv_drm_driver =
+ .name = "nvidia-drm",
+
+ .desc = "NVIDIA DRM driver",
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 14, 0)
+ .date = "20160202",
++#endif
+
+ #if defined(NV_DRM_DRIVER_HAS_DEVICE_LIST)
+ .device_list = LIST_HEAD_INIT(nv_drm_driver.device_list),
diff --git a/nvidia-kernel-6.15.patch b/nvidia-kernel-6.15.patch
new file mode 100644
index 0000000..0551f9c
--- /dev/null
+++ b/nvidia-kernel-6.15.patch
@@ -0,0 +1,64 @@
+diff -up NVIDIA-Linux-x86_64-570.133.07/kernel-open/nvidia-uvm/uvm_ats_sva.c.omv~ NVIDIA-Linux-x86_64-570.133.07/kernel-open/nvidia-uvm/uvm_ats_sva.c
+--- NVIDIA-Linux-x86_64-570.133.07/kernel-open/nvidia-uvm/uvm_ats_sva.c.omv~ 2025-04-10 21:29:52.662261750 +0200
++++ NVIDIA-Linux-x86_64-570.133.07/kernel-open/nvidia-uvm/uvm_ats_sva.c 2025-04-10 21:29:59.848213036 +0200
+@@ -139,7 +139,11 @@ static NvU32 smmu_vcmdq_read32(void __io
+
+ static void smmu_vcmdq_write64(void __iomem *smmu_cmdqv_base, int reg, NvU64 val)
+ {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 15, 0) || defined(__aarch64__)
+ iowrite64(val, SMMU_VCMDQ_BASE_ADDR(smmu_cmdqv_base, VCMDQ) + reg);
++#else
++ __iowrite64_hi_lo(val, SMMU_VCMDQ_BASE_ADDR(smmu_cmdqv_base, VCMDQ) + reg);
++#endif
+ }
+
+ // Fix for Bug 4130089: [GH180][r535] WAR for kernel not issuing SMMU
+diff -up NVIDIA-Linux-x86_64-570.133.07/kernel-open/nvidia/nv-nano-timer.c.omv~ NVIDIA-Linux-x86_64-570.133.07/kernel-open/nvidia/nv-nano-timer.c
+--- NVIDIA-Linux-x86_64-570.133.07/kernel-open/nvidia/nv-nano-timer.c.omv~ 2025-04-10 21:28:09.121821292 +0200
++++ NVIDIA-Linux-x86_64-570.133.07/kernel-open/nvidia/nv-nano-timer.c 2025-04-10 21:28:56.102722088 +0200
+@@ -154,9 +154,13 @@ void NV_API_CALL nv_create_nano_timer(
+ nv_nstimer->nv_nano_timer_callback = nvidia_nano_timer_callback;
+
+ #if NV_NANO_TIMER_USE_HRTIMER
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 15, 0)
+ hrtimer_init(&nv_nstimer->hr_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
+ nv_nstimer->hr_timer.function = nv_nano_timer_callback_typed_data;
+ #else
++ hrtimer_setup(&nv_nstimer->hr_timer, nv_nano_timer_callback_typed_data, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
++#endif
++#else
+ #if defined(NV_TIMER_SETUP_PRESENT)
+ timer_setup(&nv_nstimer->jiffy_timer, nv_jiffy_timer_callback_typed_data, 0);
+ #else
+diff -up NVIDIA-Linux-x86_64-570.133.07/kernel/nvidia-uvm/uvm_ats_sva.c.omv~ NVIDIA-Linux-x86_64-570.133.07/kernel/nvidia-uvm/uvm_ats_sva.c
+--- NVIDIA-Linux-x86_64-570.133.07/kernel/nvidia-uvm/uvm_ats_sva.c.omv~ 2025-04-10 21:30:03.033144162 +0200
++++ NVIDIA-Linux-x86_64-570.133.07/kernel/nvidia-uvm/uvm_ats_sva.c 2025-04-10 21:30:16.572892835 +0200
+@@ -139,7 +139,11 @@ static NvU32 smmu_vcmdq_read32(void __io
+
+ static void smmu_vcmdq_write64(void __iomem *smmu_cmdqv_base, int reg, NvU64 val)
+ {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 15, 0)
+ iowrite64(val, SMMU_VCMDQ_BASE_ADDR(smmu_cmdqv_base, VCMDQ) + reg);
++#else
++ __iowrite64_hi_lo(val, SMMU_VCMDQ_BASE_ADDR(smmu_cmdqv_base, VCMDQ) + reg);
++#endif
+ }
+
+ // Fix for Bug 4130089: [GH180][r535] WAR for kernel not issuing SMMU
+diff -up NVIDIA-Linux-x86_64-570.133.07/kernel/nvidia/nv-nano-timer.c.omv~ NVIDIA-Linux-x86_64-570.133.07/kernel/nvidia/nv-nano-timer.c
+--- NVIDIA-Linux-x86_64-570.133.07/kernel/nvidia/nv-nano-timer.c.omv~ 2025-04-10 21:29:00.500685449 +0200
++++ NVIDIA-Linux-x86_64-570.133.07/kernel/nvidia/nv-nano-timer.c 2025-04-10 21:29:31.808890670 +0200
+@@ -150,9 +150,13 @@ void NV_API_CALL nv_create_nano_timer(
+ nv_nstimer->nv_nano_timer_callback = nvidia_nano_timer_callback;
+
+ #if NV_NANO_TIMER_USE_HRTIMER
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 15, 0)
+ hrtimer_init(&nv_nstimer->hr_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
+ nv_nstimer->hr_timer.function = nv_nano_timer_callback_typed_data;
+ #else
++ hrtimer_setup(&nv_nstimer->hr_timer, nv_nano_timer_callback_typed_data, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
++#endif
++#else
+ #if defined(NV_TIMER_SETUP_PRESENT)
+ timer_setup(&nv_nstimer->jiffy_timer, nv_jiffy_timer_callback_typed_data, 0);
+ #else
diff --git a/nvidia-persistenced.conf b/nvidia-persistenced.conf
index fd180ca..db35a7f 100644
--- a/nvidia-persistenced.conf
+++ b/nvidia-persistenced.conf
@@ -1 +1,2 @@
-u nvidia-persistenced /usr/bin/nvidia-persistenced "NVIDIA persistent software state" /var/run/nvidia-persistenced /sbin/nologin
+g nvidia-persistenced - -
+u nvidia-persistenced - "NVIDIA persistent software state" /var/run/nvidia-persistenced /sbin/nologin
diff --git a/nvidia.spec b/nvidia.spec
index 1aa623a..eeb20ee 100644
--- a/nvidia.spec
+++ b/nvidia.spec
@@ -6,14 +6,16 @@
%global open_dkms_name nvidia-open
%global dkms_name nvidia
-%global kernels desktop server rc-desktop rc-server desktop-gcc server-gcc rc-desktop-gcc rc-server-gcc
+%global kernels desktop server desktop-gcc server-gcc rc-desktop rc-server rc-desktop-gcc rc-server-gcc
+# When there is an RC kernel, add rc-desktop rc-server rc-desktop-gcc rc-server-gcc
+
# Sometimes RC kernels restrict previously exported symbols to EXPORT_SYMBOL_GPL
# When that happens, the closed kernel modules frequently won't compile anymore,
# but we can still build the open versions
-%global rc_openonly 0
+%global rc_openonly 1
Name: nvidia
-Version: 555.58.02
+Version: 610.43.02
# Sometimes helpers (persistenced, modprobe) don't change and aren't
# retagged. When possible, helpers_version should be set to %{version}.
%define helpers_version %{version}
@@ -24,14 +26,14 @@ Version: 555.58.02
%else
%define ver %{version}
%endif
-Release: 3
+Release: 1
ExclusiveArch: %{x86_64} %{aarch64}
Summary: Binary-only driver for NVIDIA graphics chips
-Url: http://www.nvidia.com/object/unix.html
-Source0: http://us.download.nvidia.com/XFree86/Linux-x86_64/%{version}/NVIDIA-Linux-x86_64-%{version}.run
-Source1: https://us.download.nvidia.com/XFree86/aarch64/%{ver}/NVIDIA-Linux-aarch64-%{ver}.run
+Url: https://www.nvidia.com/object/unix.html
+Source0: https://us.download.nvidia.com/XFree86/Linux-x86_64/%{version}/NVIDIA-Linux-x86_64-%{version}.run
+Source1: https://us.download.nvidia.com/XFree86/aarch64/%{aarch64version}/NVIDIA-Linux-aarch64-%{aarch64version}.run
Source2: modpackage.template
-Source3: https://gitweb.frugalware.org/frugalware-current/raw/master/source/x11-extra/%{name}/xorg-nvidia.conf
+Source3: xorg-nvidia.conf
%global kernel_source_dir %{_builddir}/%{name}-%{version}/linux-%{kversion}
%global nvidia_driver_dir %{_builddir}/%{name}-%{version}/NVIDIA-Linux-%{_arch}-%{ver}
@@ -48,7 +50,6 @@ Patch1: %{name}-settings-desktop.patch
#Patch3: %%{name}-settings-libXNVCtrl.patch
Patch4: %{name}-settings-lib-permissions.patch
-#Patch10: nvidia-kernel-6.10.patch
Group: Hardware
License: distributable
@@ -75,15 +76,18 @@ BuildRequires: pkgconfig(dri)
BuildRequires: egl-devel
BuildRequires: pkgconfig(gtk+-2.0) > 2.4
BuildRequires: pkgconfig(gtk+-3.0)
+BuildRequires: cmake(VulkanHeaders)
# Even if we aren't building for the desktop kernel,
# this package is needed to determine %%{kversion}
BuildRequires: kernel-desktop-devel
+Requires: (%{name}-wayland = %{EVRD} if %{mklibname wayland-egl})
+Requires: (%{name}-x11 = %{EVRD} if xlibre-xorg)
Requires: %{name}-kmod-common = %{version}
Requires: %{name}-modprobe = %{EVRD}
-Suggests: %{name}-settings = %{EVRD}
+Recommends: %{name}-settings = %{EVRD}
%(for i in %{kernels}; do
- echo "Requires: (%{name}-kmod-$i if kernel-$i)"
+ echo "Requires: ((%{name}-kmod-$i or %{name}-kmod-open-$i) if kernel-$i)"
done)
%ifarch %{x86_64}
@@ -91,9 +95,13 @@ Requires: %{name}-32bit = %{version}
%endif
Requires: libglvnd-egl
-Requires: egl-wayland
+Requires: egl-gbm
Requires: vulkan-loader
+%ifarch %{x86_64}
+Recommends: (%{name}-wine = %{EVRD} if (wine or proton or proton-experimental or proton-bleeding-edge))
+%endif
+
%(for i in %{kernels};
do
echo BuildRequires: kernel-$i-devel
@@ -129,11 +137,38 @@ installation.
This package should only be used as a last resort.
+%package wine
+Summary: DLL files allowing Windows applications running in Wine/Proton to use the nvidia driver
+Group: Hardware
+Requires: %{name} = %{EVRD}
+
+%description wine
+DLL files allowing Windows applications running in Wine/Proton to use the nvidia driver
+
+%package wayland
+Summary: Wayland support for the binary nvidia driver
+Requires: %{name} = %{EVRD}
+Requires: egl-wayland
+
+%description wayland
+Wayland support for the binary nvidia driver
+
+%package x11
+Summary: X11 support for the binary nvidia driver
+Requires: %{name} = %{EVRD}
+Requires: egl-x11
+
+%description x11
+X11 support for the binary nvidia driver
+
%ifarch %{x86_64}
%package 32bit
Summary: Binary-only 32-bit driver for nvidia graphics chips
Requires: %{name} = %{version}
+Requires: (%{name}-32bit-wayland = %{EVRD} if %{mklib32name wayland-egl})
+Requires: (%{name}-32bit-x11 = %{EVRD} if %{mklib32name GLX 0})
+Requires: %{mklibname nvidia-egl-gbm}
Provides: libGLdispatch0 >= 1.4.0-1
Provides: libGL1 >= 1.4.0-1
@@ -155,6 +190,22 @@ Alternatively, use the Nouveau driver that comes with the default
installation.
This package should only be used as a last resort.
+
+%package 32bit-wayland
+Summary: Wayland support for the binary nvidia driver (32-bit)
+Requires: %{name}-32bit = %{EVRD}
+Requires: %{mklib32name nvidia-egl-wayland}
+
+%description 32bit-wayland
+Wayland support for the binary nvidia driver (32-bit)
+
+%package 32bit-x11
+Summary: X11 support for the binary nvidia driver (32-bit)
+Requires: %{name} = %{EVRD}
+Requires: %{mklib32name nvidia-egl-x11}
+
+%description 32bit-x11
+X11 support for the binary nvidia driver (32-bit)
%endif
# =======================================================================================#
@@ -164,7 +215,7 @@ This package should only be used as a last resort.
%package dkms-kmod
License: NVIDIA License
Summary: NVIDIA display driver kernel module. **This is an unsupported proprietary driver. Use with caution!
-URL: http://www.nvidia.com/object/unix.html
+URL: https://www.nvidia.com/object/unix.html
Source4: dkms-%{dkms_name}.conf
@@ -232,17 +283,21 @@ NVIDIA header files for precompiled streams
%package kmod-common
Summary: Common file for NVIDIA's proprietary driver kernel modules
License: NVIDIA License
-URL: http://www.nvidia.com/object/unix.html
+URL: https://www.nvidia.com/object/unix.html
BuildArch: noarch
Source5: 60-nvidia.rules
-Source6: 99-nvidia.conf
Provides: %{name}-kmod-common = %{version}
Requires: %{name}-kmod = %{version}
Requires: %{name} = %{version}
+# Make sure depmod and dracut are run after all relevant modules are installed
+%(for i in %{kernels}; do
+ echo "Requires(post): (%{name}-kmod-$i if kernel-$i)"
+done)
+
Obsoletes: cuda-nvidia-kmod-common <= %{version}
%description kmod-common
@@ -258,7 +313,9 @@ package variants.
Summary: A daemon to maintain persistent software state in the NVIDIA driver
License: GPLv2+
URL: https://github.com/NVIDIA/nvidia-persistenced
-Source7: https://github.com/NVIDIA/nvidia-persistenced/archive/refs/tags/%{helpers_version}.tar.gz#/%{name}-persistenced-%{helpers_version}.tar.gz
+# During 575.64.03 update, was not available in GH, so pick on from nvidia http in tar.bz2
+#Source7: https://github.com/NVIDIA/nvidia-persistenced/archive/refs/tags/%{helpers_version}.tar.gz#/%{name}-persistenced-%{helpers_version}.tar.gz
+Source7: https://download.nvidia.com/XFree86/nvidia-persistenced/nvidia-persistenced-%{version}.tar.bz2
Source8: nvidia-persistenced.service
Source9: nvidia-persistenced.conf
@@ -279,7 +336,9 @@ startup time of new clients in this scenario.
Summary: NVIDIA kernel module loader
License: GPLv2+
URL: https://github.com/NVIDIA/nvidia-modprobe
-Source10: https://github.com/NVIDIA/nvidia-modprobe/archive/refs/tags/%{helpers_version}.tar.gz#/%{name}-modprobe-%{helpers_version}.tar.gz
+# During 575.64.03 update, was not available in GH, so pick on from nvidia http in tar.bz2
+#Source10: https://github.com/NVIDIA/nvidia-modprobe/archive/refs/tags/%{helpers_version}.tar.gz#/%{name}-modprobe-%{helpers_version}.tar.gz
+Source10: https://download.nvidia.com/XFree86/nvidia-modprobe/nvidia-modprobe-%{version}.tar.bz2
Requires: %{name} = %{version}
@@ -295,7 +354,9 @@ present.
%package settings
Summary: Configure the NVIDIA graphics driver
License: GPLv2+
-Source11: https://github.com/NVIDIA/nvidia-settings/archive/refs/tags/%{helpers_version}.tar.gz#/%{name}-settings-%{helpers_version}.tar.gz
+# During 575.64.03 update, was not available in GH, so pick on from nvidia http in tar.bz2
+#Source11: https://github.com/NVIDIA/nvidia-settings/archive/refs/tags/%{helpers_version}.tar.gz#/%{name}-settings-%{helpers_version}.tar.gz
+Source11: https://download.nvidia.com/XFree86/nvidia-settings/nvidia-settings-%{version}.tar.bz2
Source12: %{name}-settings-load.desktop
Source13: %{name}-settings.appdata.xml
@@ -343,7 +404,11 @@ sh %{S:1} --extract-only
%endif
cd %{nvidia_driver_dir}
-%autopatch -m 5 -p1
+%autopatch -m 5 -M 9 -p1
+
+# Port to 6.15
+sed -i -e 's,EXTRA_CFLAGS,ccflags-y,g' kernel/Kbuild kernel-open/Kbuild
+sed -i -e 's,\<del_timer_sync\>,timer_delete_sync,g' kernel/*/*.{c,h} kernel-open/*/*.{c,h}
# dkms kmod - closed and open
cp -f %{S:4} %{nvidia_driver_dir}/kernel/dkms.conf
@@ -414,9 +479,9 @@ for i in %{kernels}; do
if ! echo $i |grep -q ^rc; then
%endif
if echo $i |grep -q gcc; then
- %{make_build} SYSSRC=${KERNEL_SOURCES} SYSOUT=${KERNEL_OUTPUT} CC=gcc CXX=g++
+ %{make_build} SYSSRC=${KERNEL_SOURCES} SYSOUT=${KERNEL_OUTPUT} src=$(pwd) CC=gcc CXX=g++
else
- %{make_build} SYSSRC=${KERNEL_SOURCES} SYSOUT=${KERNEL_OUTPUT} IGNORE_CC_MISMATCH=1
+ %{make_build} SYSSRC=${KERNEL_SOURCES} SYSOUT=${KERNEL_OUTPUT} src=$(pwd) IGNORE_CC_MISMATCH=1
fi
mkdir -p %{_builddir}/%{name}-%{version}/modules-$i
@@ -443,9 +508,9 @@ for i in %{kernels}; do
# Compile kernel modules
#
if echo $i |grep -q gcc; then
- %{make_build} SYSSRC=${KERNEL_SOURCES} SYSOUT=${KERNEL_OUTPUT} CC=gcc CXX=g++
+ %{make_build} SYSSRC=${KERNEL_SOURCES} SYSOUT=${KERNEL_OUTPUT} src=$(pwd) CC=gcc CXX=g++
else
- %{make_build} SYSSRC=${KERNEL_SOURCES} SYSOUT=${KERNEL_OUTPUT} IGNORE_CC_MISMATCH=1
+ %{make_build} SYSSRC=${KERNEL_SOURCES} SYSOUT=${KERNEL_OUTPUT} src=$(pwd) IGNORE_CC_MISMATCH=1
fi
mkdir -p %{_builddir}/%{name}-%{version}/modules-open-$i
@@ -503,14 +568,18 @@ cd %{nvidia_driver_dir}
inst() {
install -m 644 -D $(basename $1) %{buildroot}"$1"
+ rm -f $(basename $1)
if [ -e "32/$(basename $1)" ]; then
install -m 644 -D "32/$(basename $1)" %{buildroot}$(echo $1 |sed -e 's,%_lib,lib,')
+ rm -f 32/$(basename $1)
fi
}
instx() {
install -m 755 -D $(basename $1) %{buildroot}"$1"
+ rm -f $(basename $1)
if [ -e "32/$(basename $1)" ]; then
install -m 755 -D "32/$(basename $1)" %{buildroot}$(echo $1 |sed -e 's,%_lib,lib,')
+ rm -f 32/$(basename $1)
fi
}
sl() {
@@ -565,6 +634,10 @@ instx %{_libdir}/libnvcuvid.so.%{version}
sl nvcuvid 1
instx %{_libdir}/libnvidia-ml.so.%{version}
sl nvidia-ml 1
+
+mkdir -p %{buildroot}%{_mandir}/man1/
+install -p -m 0644 %{_builddir}/%{name}-%{version}/NVIDIA-Linux-%{_arch}-%{version}/nvidia-cuda-mps-control*.gz %{buildroot}%{_mandir}/man1/
+
# CUDA?
instx %{_libdir}/libnvidia-ptxjitcompiler.so.%{version}
sl nvidia-ptxjitcompiler 1
@@ -594,6 +667,7 @@ instx %{_libdir}/libnvidia-api.so.1
instx %{_libdir}/libnvidia-ngx.so.%{version}
instx %{_libdir}/libnvidia-nvvm.so.%{version}
+instx %{_libdir}/libnvidia-nvvm70.so.4
sl nvidia-nvvm 4
instx %{_libdir}/libnvidia-opticalflow.so.%{version}
%ifarch %{x86_64}
@@ -604,6 +678,20 @@ instx %{_libdir}/libnvidia-pkcs11-openssl3.so.%{version}
instx %{_libdir}/libnvidia-rtcore.so.%{version}
instx %{_libdir}/libnvoptix.so.%{version}
+instx %{_libdir}/libnvidia-tileiras.so.%{version}
+instx %{_libdir}/libnvidia-sandboxutils.so.%{version}
+%ifarch %{x86_64}
+instx %{_libdir}/libnvidia-vksc-core.so.%{version}
+%endif
+
+# GBM
+mkdir -p %{buildroot}%{_libdir}/gbm
+ln -s ../libnvidia-allocator.so.%{version} %{buildroot}%{_libdir}/gbm/nvidia-drm_gbm.so
+%ifarch %{x86_64}
+mkdir -p %{buildroot}%{_prefix}/lib/gbm
+ln -s ../libnvidia-allocator.so.%{version} %{buildroot}%{_prefix}/lib/gbm/nvidia-drm_gbm.so
+%endif
+
# Firmware
mkdir -p %{buildroot}%{_prefix}/lib/firmware/nvidia
cp -a firmware %{buildroot}%{_prefix}/lib/firmware/nvidia/%{version}
@@ -621,6 +709,11 @@ done
instx %{_bindir}/nvidia-bug-report.sh
instx %{_bindir}/nvidia-smi
inst %{_mandir}/man1/nvidia-smi.1
+instx %{_bindir}/nvidia-debugdump
+instx %{_bindir}/nvidia-cuda-mps-control
+instx %{_bindir}/nvidia-cuda-mps-server
+instx %{_bindir}/nvidia-ngx-updater
+instx %{_bindir}/nvidia-powerd
# glvk
instx %{_libdir}/libnvidia-glvkspirv.so.%{version}
@@ -641,6 +734,12 @@ cp %{nvidia_driver_dir}/NVIDIA_Changelog %{buildroot}%{_docdir}/%{name}
cp %{nvidia_driver_dir}/README.txt %{buildroot}%{_docdir}/%{name}
cp -r %{nvidia_driver_dir}/html %{buildroot}%{_docdir}/%{name}
+%ifarch %{x86_64}
+# wine
+mkdir -p %{buildroot}%{_prefix}/lib/wine/x86_64-windows
+mv *.dll %{buildroot}%{_prefix}/lib/wine/x86_64-windows/
+%endif
+
# Kernel modules
for i in %{kernels}; do
%if %{rc_openonly}
@@ -674,9 +773,6 @@ mkdir -p %{buildroot}%{_sysconfdir}/dracut.conf.d/
mkdir -p %{buildroot}%{_unitdir}
mkdir -p %{buildroot}%{_presetdir}
-# Avoid Nvidia modules getting in the initrd:
-install -p -m 0644 %{S:6} %{buildroot}%{_sysconfdir}/dracut.conf.d/
-
# UDev rules:
# https://github.com/NVIDIA/nvidia-modprobe/blob/master/modprobe-utils/nvidia-modprobe-utils.h#L33-L46
# https://github.com/negativo17/nvidia-driver/issues/27
@@ -696,6 +792,11 @@ mkdir -p %{buildroot}%{_sharedstatedir}/nvidia-persistenced
install -p -m 644 -D %{S:8} %{buildroot}%{_unitdir}/nvidia-persistenced.service
install -p -m 644 -D %{S:9} %{buildroot}%{_prefix}/lib/sysusers.d/nvidia-persistenced.conf
+install -p -m 0644 %{_builddir}/%{name}-%{version}/NVIDIA-Linux-%{_arch}-%{version}/systemd/system/*.service %{buildroot}%{_unitdir}/
+install -p -m 0755 %{_builddir}/%{name}-%{version}/NVIDIA-Linux-%{_arch}-%{version}/systemd/nvidia-sleep.sh %{buildroot}%{_bindir}/
+install -p -m 0755 -D %{_builddir}/%{name}-%{version}/NVIDIA-Linux-%{_arch}-%{version}/systemd/system-sleep/nvidia %{buildroot}%{_systemd_util_dir}/system-sleep/nvidia
+install -p -m 0644 -D %{_builddir}/%{name}-%{version}/NVIDIA-Linux-%{_arch}-%{version}/nvidia-dbus.conf %{buildroot}%{_datadir}/dbus-1/system.d/nvidia-dbus.conf
+
# modprobe
cd %{_builddir}/%{name}-%{version}/nvidia-modprobe-%{helpers_version}
%make_install \
@@ -737,15 +838,12 @@ install -p -m 644 %{S:12} %{buildroot}%{_sysconfdir}/xdg/autostart/
mkdir -p %{buildroot}%{_metainfodir}/
install -p -m 0644 %{S:13} %{buildroot}%{_metainfodir}/
-# Remove bundled wayland client
-rm -vf %{buildroot}/%{_libdir}/libnvidia-wayland-client.so*
-
%check
desktop-file-validate %{buildroot}/%{_datadir}/applications/%{name}-settings.desktop
desktop-file-validate %{buildroot}%{_sysconfdir}/xdg/autostart/%{name}-settings-load.desktop
appstream-util validate-relax --nonet %{buildroot}/%{_metainfodir}/%{name}-settings.appdata.xml
-%post kmod-common
+%posttrans kmod-common
if ! grep -q nvidia-drm.modeset %{_sysconfdir}/default/grub; then
sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT=['\''"]/&nouveau.modeset=0 nvidia-drm.modeset=1 nvidia-drm.fbdev=1 /' %{_sysconfdir}/default/grub
fi
@@ -762,7 +860,6 @@ fi
%{_sbindir}/update-grub2
%files kmod-common
-%{_sysconfdir}/dracut.conf.d/99-nvidia.conf
%{_udevrulesdir}/60-nvidia.rules
%{_prefix}/lib/firmware/nvidia/%{version}
@@ -791,10 +888,10 @@ dkms remove -m %{open_dkms_name} -v %{version} -q --all || :
%{_docdir}/%{name}/NVIDIA_Changelog
%{_docdir}/%{name}/README.txt
%{_docdir}/%{name}/html
-%{_libdir}/xorg/modules/drivers/nvidia_drv.so
%{_datadir}/vulkan/icd.d/nvidia_icd.json
%{_libdir}/libnvidia-glcore.so*
%{_datadir}/glvnd/egl_vendor.d/10_nvidia.json
+%{_datadir}/dbus-1/system.d/nvidia-dbus.conf
%{_libdir}/xorg/modules/nvidia/extensions/libglxserver_nvidia.so*
%{_libdir}/libGLX_nvidia.so*
%{_libdir}/libEGL_nvidia.so*
@@ -807,12 +904,18 @@ dkms remove -m %{open_dkms_name} -v %{version} -q --all || :
%{_libdir}/libnvidia-api.so*
%{_libdir}/libnvidia-ngx.so*
%{_libdir}/libnvidia-nvvm.so*
+%{_libdir}/libnvidia-nvvm70.so*
%{_libdir}/libnvidia-opticalflow.so*
%ifarch %{x86_64}
%{_libdir}/libnvidia-pkcs11-openssl3.so*
%{_libdir}/libnvidia-pkcs11.so*
%endif
%{_libdir}/libnvidia-rtcore.so*
+%{_libdir}/libnvidia-tileiras.so*
+%{_libdir}/libnvidia-sandboxutils.so.*
+%ifarch %{x86_64}
+%{_libdir}/libnvidia-vksc-core.so.*
+%endif
%{_libdir}/libnvoptix.so*
%{_libdir}/libcuda.so*
%{_libdir}/libcudadebugger.so*
@@ -829,11 +932,31 @@ dkms remove -m %{open_dkms_name} -v %{version} -q --all || :
%{_libdir}/vdpau/libvdpau_nvidia.so*
%{_bindir}/nvidia-bug-report.sh
%{_bindir}/nvidia-smi
+%{_bindir}/nvidia-cuda-mps-control
+%{_bindir}/nvidia-cuda-mps-server
+%{_bindir}/nvidia-debugdump
+%{_bindir}/nvidia-ngx-updater
%{_mandir}/man1/nvidia-smi.1*
+%{_mandir}/man1/nvidia-cuda-mps-control.1.*
%{_libdir}/libnvidia-glvkspirv.so*
%{_datadir}/nvidia/nvidia-application-profiles-%{version}-rc
%{_datadir}/nvidia/nvidia-application-profiles-%{version}-key-documentation
+%{_systemd_util_dir}/system-sleep/nvidia
+%{_unitdir}/nvidia-hibernate.service
+%{_unitdir}/nvidia-powerd.service
+%{_unitdir}/nvidia-resume.service
+%{_unitdir}/nvidia-suspend.service
+%{_unitdir}/nvidia-suspend-then-hibernate.service
+%{_bindir}/nvidia-powerd
+%{_bindir}/nvidia-sleep.sh
+%{_libdir}/gbm/nvidia-drm_gbm.so
+
+%files wayland
+%{_libdir}/libnvidia-wayland-client.so.*
+
+%files x11
%{_datadir}/X11/xorg.conf.d/20-nvidia.conf
+%{_libdir}/xorg/modules/drivers/nvidia_drv.so
%ifarch %{x86_64}
%files 32bit
@@ -854,10 +977,16 @@ dkms remove -m %{open_dkms_name} -v %{version} -q --all || :
%{_prefix}/lib/libnvidia-encode.so*
%{_prefix}/lib/libnvidia-fbc.so*
%{_prefix}/lib/vdpau/libvdpau_nvidia.so*
-%{_prefix}/lib/libnvidia-glvkspirv.so*
%{_prefix}/lib/libnvidia-allocator.so*
%{_prefix}/lib/libnvidia-nvvm.so*
%{_prefix}/lib/libnvidia-opticalflow.so*
+%{_prefix}/lib/libnvidia-tileiras.so*
+%{_prefix}/lib/libnvidia-glvkspirv.so.*
+%{_prefix}/lib/gbm/nvidia-drm_gbm.so
+
+%files 32bit-wayland
+
+%files 32bit-x11
%endif
%files dkms-kmod
@@ -871,6 +1000,7 @@ dkms remove -m %{open_dkms_name} -v %{version} -q --all || :
%{_usrsrc}/%{open_dkms_name}-%{version}/conftest.sh
%{_usrsrc}/%{open_dkms_name}-%{version}/dkms.conf
%{_usrsrc}/%{open_dkms_name}-%{version}/*.mk
+%{_usrsrc}/%{open_dkms_name}-%{version}/pahole.sh
%files kmod-open-source
%{_usrsrc}/%{open_dkms_name}-%{version}/src
@@ -903,6 +1033,11 @@ dkms remove -m %{open_dkms_name} -v %{version} -q --all || :
%{_mandir}/man1/%{name}-settings.*
%{_sysconfdir}/xdg/autostart/%{name}-settings-load.desktop
+%ifarch %{x86_64}
+%files wine
+%{_prefix}/lib/wine/*/*.dll
+%endif
+
# upstream not building a so
# %%files libXNVCtrl