commit:     eb3a363a3e89750d415ca3e1f9356e6c06e79cd4
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Sun Dec  7 00:02:10 2025 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Sun Dec  7 00:18:28 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=eb3a363a

x11-drivers/nvidia-drivers: fix build with ZONE_DEVICE + kernel 6.18

When marking as 6.18 compatible, I missed this USE=kernel-open build
failure given it only happens when CONFIG_ZONE_DEVICE is enabled and
the kernel I tested did not (option requires memory hotplugging and
hotremove support to be enabled, not enabled by defconfig).

Normally we do not backport kernel fixes, but in this case the only
fixed version is currently the 590.x (unkeyworded) beta and given
6.18 is due to become LTS I'd rather get this fixed now (possible
that new 0/vulkan releases will not include the fix too).

Only 580.x is affected given older branches did not use this function.

Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 ...-kernel-module-source-580.95.05-kernel6.18.patch | 21 +++++++++++++++++++++
 .../nvidia-drivers/nvidia-drivers-580.105.08.ebuild |  1 +
 .../nvidia-drivers/nvidia-drivers-580.94.11.ebuild  |  1 +
 .../nvidia-drivers/nvidia-drivers-580.95.05.ebuild  |  1 +
 4 files changed, 24 insertions(+)

diff --git 
a/x11-drivers/nvidia-drivers/files/nvidia-kernel-module-source-580.95.05-kernel6.18.patch
 
b/x11-drivers/nvidia-drivers/files/nvidia-kernel-module-source-580.95.05-kernel6.18.patch
new file mode 100644
index 000000000000..c0e061b6f4dc
--- /dev/null
+++ 
b/x11-drivers/nvidia-drivers/files/nvidia-kernel-module-source-580.95.05-kernel6.18.patch
@@ -0,0 +1,21 @@
+get_dev_pagemap() is only used with CONFIG_ZONE_DEVICE and
+USE=kernel-open, and in kernel 6.18 takes one argument in less that
+NVIDIA seemingly did not need.
+
+This is a simplified version of 590.44.01's fix which skips the
+conftest.sh changes for easier backporting (at worst the simple version
+check may break if the kernel backports this to older kernels).
+
+[1] https://github.com/NVIDIA/open-gpu-kernel-modules/pull/951
+--- a/kernel-module-source/kernel-open/nvidia-uvm/uvm_va_range_device_p2p.c
++++ b/kernel-module-source/kernel-open/nvidia-uvm/uvm_va_range_device_p2p.c
+@@ -361,5 +361,9 @@
+         if (gpu->parent->cdmm_enabled) {
+             get_page(page);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,18,0)
++            get_dev_pagemap(page_to_pfn(page));
++#else
+             get_dev_pagemap(page_to_pfn(page), NULL);
++#endif
+         }
+ #else

diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-580.105.08.ebuild 
b/x11-drivers/nvidia-drivers/nvidia-drivers-580.105.08.ebuild
index 76bc7af3e50d..624a5b36ea1a 100644
--- a/x11-drivers/nvidia-drivers/nvidia-drivers-580.105.08.ebuild
+++ b/x11-drivers/nvidia-drivers/nvidia-drivers-580.105.08.ebuild
@@ -101,6 +101,7 @@ QA_PREBUILT="lib/firmware/* usr/bin/* usr/lib*"
 PATCHES=(
        "${FILESDIR}"/nvidia-modprobe-390.141-uvm-perms.patch
        "${FILESDIR}"/nvidia-settings-530.30.02-desktop.patch
+       "${FILESDIR}"/nvidia-kernel-module-source-580.95.05-kernel6.18.patch
 )
 
 pkg_setup() {

diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-580.94.11.ebuild 
b/x11-drivers/nvidia-drivers/nvidia-drivers-580.94.11.ebuild
index 9f02b002dfa2..b573563dc2b6 100644
--- a/x11-drivers/nvidia-drivers/nvidia-drivers-580.94.11.ebuild
+++ b/x11-drivers/nvidia-drivers/nvidia-drivers-580.94.11.ebuild
@@ -101,6 +101,7 @@ QA_PREBUILT="lib/firmware/* usr/bin/* usr/lib*"
 PATCHES=(
        "${FILESDIR}"/nvidia-modprobe-390.141-uvm-perms.patch
        "${FILESDIR}"/nvidia-settings-530.30.02-desktop.patch
+       "${FILESDIR}"/nvidia-kernel-module-source-580.95.05-kernel6.18.patch
 )
 
 pkg_setup() {

diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-580.95.05.ebuild 
b/x11-drivers/nvidia-drivers/nvidia-drivers-580.95.05.ebuild
index 9a47157f19c3..b3c27d82b45c 100644
--- a/x11-drivers/nvidia-drivers/nvidia-drivers-580.95.05.ebuild
+++ b/x11-drivers/nvidia-drivers/nvidia-drivers-580.95.05.ebuild
@@ -100,6 +100,7 @@ QA_PREBUILT="lib/firmware/* usr/bin/* usr/lib*"
 PATCHES=(
        "${FILESDIR}"/nvidia-modprobe-390.141-uvm-perms.patch
        "${FILESDIR}"/nvidia-settings-530.30.02-desktop.patch
+       "${FILESDIR}"/nvidia-kernel-module-source-580.95.05-kernel6.18.patch
 )
 
 pkg_setup() {

Reply via email to