commit:     f49d65283ab9607c81ce93c73c33c61ada30cc99
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Tue Feb 17 15:54:18 2026 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Tue Feb 17 16:02:05 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f49d6528

x11-drivers/nvidia-drivers: fix build with kernel 6.19.x for 580+590

...when USE=kernel-open and CONFIG_HMM_MIRROR are set.

Closes: https://bugs.gentoo.org/970010
Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 ...ernel-module-source-580.126.09-kernel6.19.patch | 18 ++++
 ...kernel-module-source-590.48.01-kernel6.19.patch | 99 ++++++++++++++++++++++
 .../nvidia-drivers-580.126.09-r1.ebuild            |  3 +-
 .../nvidia-drivers-580.126.09.ebuild               |  3 +-
 .../nvidia-drivers-590.48.01-r1.ebuild             |  9 +-
 5 files changed, 123 insertions(+), 9 deletions(-)

diff --git 
a/x11-drivers/nvidia-drivers/files/nvidia-kernel-module-source-580.126.09-kernel6.19.patch
 
b/x11-drivers/nvidia-drivers/files/nvidia-kernel-module-source-580.126.09-kernel6.19.patch
new file mode 100644
index 000000000000..bab13eac3280
--- /dev/null
+++ 
b/x11-drivers/nvidia-drivers/files/nvidia-kernel-module-source-580.126.09-kernel6.19.patch
@@ -0,0 +1,18 @@
+https://bugs.gentoo.org/970010
+--- a/kernel-module-source/kernel-open/nvidia-uvm/uvm_hmm.c
++++ b/kernel-module-source/kernel-open/nvidia-uvm/uvm_hmm.c
+@@ -22,4 +22,5 @@
+ 
*******************************************************************************/
+ 
++#include <linux/version.h>
+ #include "uvm_hmm.h"
+ 
+@@ -79,5 +80,7 @@
+ // function will need to be revisited
+ //
+-#if defined(NV_ZONE_DEVICE_PAGE_INIT_HAS_ORDER_ARG)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 19, 0)
++#define ZONE_DEVICE_PAGE_INIT(page)   zone_device_page_init(page, 
page_pgmap(page), 0);
++#elif defined(NV_ZONE_DEVICE_PAGE_INIT_HAS_ORDER_ARG)
+ #define ZONE_DEVICE_PAGE_INIT(page)   zone_device_page_init(page, 0)
+ #else

diff --git 
a/x11-drivers/nvidia-drivers/files/nvidia-kernel-module-source-590.48.01-kernel6.19.patch
 
b/x11-drivers/nvidia-drivers/files/nvidia-kernel-module-source-590.48.01-kernel6.19.patch
new file mode 100644
index 000000000000..0b48d877323c
--- /dev/null
+++ 
b/x11-drivers/nvidia-drivers/files/nvidia-kernel-module-source-590.48.01-kernel6.19.patch
@@ -0,0 +1,99 @@
+https://bugs.gentoo.org/970010
+--- a/kernel-module-source/kernel-open/nvidia-uvm/uvm_hmm.c
++++ b/kernel-module-source/kernel-open/nvidia-uvm/uvm_hmm.c
+@@ -57,4 +57,5 @@
+ #include <linux/memremap.h>
+ #include <linux/wait.h>
++#include <linux/version.h>
+ 
+ #include "uvm_common.h"
+@@ -2141,5 +2142,9 @@
+         UVM_ASSERT(!page_count(dpage));
+         UVM_ASSERT(!dpage->zone_device_data);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 19, 0)
++        zone_device_page_init(dpage, page_pgmap(dpage), 0);
++#else
+         zone_device_page_init(dpage);
++#endif
+         dpage->zone_device_data = gpu_chunk;
+         atomic64_inc(&va_block->hmm.va_space->hmm.allocated_page_count);
+--- a/kernel-module-source/kernel-open/nvidia-uvm/uvm_pmm_gpu.c
++++ b/kernel-module-source/kernel-open/nvidia-uvm/uvm_pmm_gpu.c
+@@ -178,4 +178,6 @@
+ #include "uvm_linux.h"
+ 
++#include <linux/version.h>
++
+ #if defined(CONFIG_PCI_P2PDMA) && defined(NV_STRUCT_PAGE_HAS_ZONE_DEVICE_DATA)
+ #include <linux/pci-p2pdma.h>
+@@ -3000,6 +3002,12 @@
+ }
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 19, 0)
++static void devmem_folio_free(struct folio *folio)
++{
++    struct page *page = &folio->page;
++#else
+ static void devmem_page_free(struct page *page)
+ {
++#endif
+     uvm_gpu_chunk_t *chunk = uvm_pmm_devmem_page_to_chunk(page);
+     uvm_gpu_t *gpu = uvm_gpu_chunk_get_gpu(chunk);
+@@ -3061,5 +3069,9 @@
+ static const struct dev_pagemap_ops uvm_pmm_devmem_ops =
+ {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 19, 0)
++    .folio_free = devmem_folio_free,
++#else
+     .page_free = devmem_page_free,
++#endif
+     .migrate_to_ram = devmem_fault_entry,
+ };
+@@ -3149,6 +3161,12 @@
+ }
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 19, 0)
++static void device_p2p_folio_free(struct folio *folio)
++{
++    struct page *page = &folio->page;
++#else
+ static void device_p2p_page_free(struct page *page)
+ {
++#endif
+     uvm_device_p2p_mem_t *p2p_mem = page->zone_device_data;
+ 
+@@ -3159,12 +3177,24 @@
+ 
+ #if UVM_CDMM_PAGES_SUPPORTED()
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 19, 0)
++static void device_coherent_folio_free(struct folio *folio)
++{
++    device_p2p_folio_free(folio);
++}
++#else
+ static void device_coherent_page_free(struct page *page)
+ {
+     device_p2p_page_free(page);
+ }
++#endif
+ 
+ static const struct dev_pagemap_ops uvm_device_coherent_pgmap_ops =
+ {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 19, 0)
++    .folio_free = device_coherent_folio_free,
++#else
+     .page_free = device_coherent_page_free,
++#endif
+ };
+ 
+@@ -3303,5 +3333,9 @@
+ static const struct dev_pagemap_ops uvm_device_p2p_pgmap_ops =
+ {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 19, 0)
++    .folio_free = device_p2p_folio_free,
++#else
+     .page_free = device_p2p_page_free,
++#endif
+ };
+ 

diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-580.126.09-r1.ebuild 
b/x11-drivers/nvidia-drivers/nvidia-drivers-580.126.09-r1.ebuild
index 3eda0eabc3f5..475001d60a86 100644
--- a/x11-drivers/nvidia-drivers/nvidia-drivers-580.126.09-r1.ebuild
+++ b/x11-drivers/nvidia-drivers/nvidia-drivers-580.126.09-r1.ebuild
@@ -7,7 +7,7 @@ MODULES_OPTIONAL_IUSE=+modules
 inherit desktop dot-a eapi9-pipestatus eapi9-ver flag-o-matic linux-mod-r1
 inherit readme.gentoo-r1 systemd toolchain-funcs unpacker user-info
 
-MODULES_KERNEL_MAX=6.18
+MODULES_KERNEL_MAX=6.19
 NV_URI="https://download.nvidia.com/XFree86/";
 
 DESCRIPTION="NVIDIA Accelerated Graphics Driver"
@@ -99,6 +99,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-${PV}-kernel6.19.patch
 )
 
 pkg_setup() {

diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-580.126.09.ebuild 
b/x11-drivers/nvidia-drivers/nvidia-drivers-580.126.09.ebuild
index d79aa3219282..d4e71fe8b01d 100644
--- a/x11-drivers/nvidia-drivers/nvidia-drivers-580.126.09.ebuild
+++ b/x11-drivers/nvidia-drivers/nvidia-drivers-580.126.09.ebuild
@@ -7,7 +7,7 @@ MODULES_OPTIONAL_IUSE=+modules
 inherit desktop dot-a eapi9-pipestatus flag-o-matic linux-mod-r1
 inherit readme.gentoo-r1 systemd toolchain-funcs unpacker user-info
 
-MODULES_KERNEL_MAX=6.18
+MODULES_KERNEL_MAX=6.19
 NV_URI="https://download.nvidia.com/XFree86/";
 
 DESCRIPTION="NVIDIA Accelerated Graphics Driver"
@@ -96,6 +96,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-${PV}-kernel6.19.patch
 )
 
 pkg_setup() {

diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-590.48.01-r1.ebuild 
b/x11-drivers/nvidia-drivers/nvidia-drivers-590.48.01-r1.ebuild
index 12d11204868b..2671c6b84b54 100644
--- a/x11-drivers/nvidia-drivers/nvidia-drivers-590.48.01-r1.ebuild
+++ b/x11-drivers/nvidia-drivers/nvidia-drivers-590.48.01-r1.ebuild
@@ -7,13 +7,7 @@ MODULES_OPTIONAL_IUSE=+modules
 inherit desktop dot-a eapi9-pipestatus eapi9-ver flag-o-matic linux-mod-r1
 inherit readme.gentoo-r1 systemd toolchain-funcs unpacker user-info
 
-# note: *can* build with 6.19 but it depends on the kernel configs, notably
-# (at least) CONFIG_HMM_MIRROR needs to *not* be set -- recommend to stick to
-# <=6.18.x until the next version nonetheless as NVIDIA is aware and has a fix
-# pending (we do not intend to patch this downstream)
-# https://github.com/NVIDIA/open-gpu-kernel-modules/issues/1021
-# https://github.com/NVIDIA/open-gpu-kernel-modules/pull/1015
-MODULES_KERNEL_MAX=6.18
+MODULES_KERNEL_MAX=6.19
 NV_URI="https://download.nvidia.com/XFree86/";
 
 DESCRIPTION="NVIDIA Accelerated Graphics Driver"
@@ -109,6 +103,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-${PV}-kernel6.19.patch
 )
 
 pkg_setup() {

Reply via email to