Welcome, Guest. Please login or register.
Did you miss your activation email?

Author Topic: [EN] Nvidia and Virtualbox Driver patches for upcoming Linux kernel 6.15  (Read 127 times)

Offline Teriarch

  • User
  • Posts: 116
Upcoming linux kernel 6.15 unfortunately chokes on both virtualbox-dkms and nvidia-kernel-dkms.
Meanwhile I took the liberty to remedy the misfortunate behavior by patching the corresponding
deb files. The following procedure is non-destructive and can be reversed in case you feel
uncomfortable with the result. Hence I suggest you keep the original files in case something
goes wrong. They will also be replaced if Oracle or Nvidia decide to update their drivers
in the future.

I also suggest you execute the following code line by line to catch errors as soon as they occur.
The corresponding patch files virtualbox-dkms_7.1.8-dfsg-3_amd64.patch and
nvidia-kernel-dkms_550.163.01-0~siduction.1_amd64.patch are also included.

Maybe the siduction maintainers are willing to apply the patches and provide
updated deb files in their repository in order to save the common user from the
tedious work of doing it all by themselves.

The patches are rather obvious except for those Nvidia patches that provide
a workaround of methods breaking Nvidia license agreements. Those patches are
taken from Eric Naim, see:

<https://gitlab.archlinux.org/archlinux/packaging/packages/nvidia-utils/-/blob/main/0003-Workaround-nv_vm_flags_-calling-GPL-only-code.patch?ref_type=heads>

who deserves all the credit.

You may want to apply the patches prior to the official 6.15 kernel release in order to
prevent errors during the kernel install. For the impatient among us

$ sudo apt-get -s install linux-image-6.15.1-1-siduction-amd64 linux-headers-6.15.1-1-siduction-amd64

will do the trick.

Enjoy!

Instructions:
Code: [Select]
$ cd /tmp

# get and extract virtualbox-dkms (check for correct version after download!)
$ apt-get download virtualbox-dkms
$ mkdir a
$ dpkg-deb -x virtualbox-dkms_7.1.8-dfsg-3_amd64.deb a
$ dpkg-deb --control virtualbox-dkms_7.1.8-dfsg-3_amd64.deb a/DEBIAN

# patch it
$ cd a
$ patch -p1 < virtualbox-dkms_7.1.8-dfsg-3_amd64.patch

# repack
$ cd /tmp
$ dpkg-deb --root-owner-group -b a virtualbox-dkms_7.1.8-dfsg-3b_amd64.deb

# cleanup and install
$ rm -rf a
$ sudo dpkg -i virtualbox-dkms_7.1.8-dfsg-3b_amd64.deb

# correct modprobe conf bug of virtualbox-dkms
$ sudo mv /etc/modprobe.d/virtualbox-dkms.conf/virtualbox-dkms.modprobe.conf /etc/modprobe.d
$ sudo rmdir /etc/modprobe.d/virtualbox-dkms.conf

# repeat process for nvidia-kernel-dkms if needs be
$ sudo apt-get install nvidia-kernel-dkms (if not already done so)
$ apt-get download nvidia-kernel-dkms
$ mkdir a
$ dpkg-deb -x nvidia-kernel-dkms_550.163.01-0~siduction.1_amd64.deb b
$ dpkg-deb --control nvidia-kernel-dkms_550.163.01-0~siduction.1_amd64.deb b/DEBIAN
$ cd a
$ patch -p1 < /mnt/nvidia-kernel-dkms_550.163.01-0~siduction.1_amd64.patch
$ cd /tmp
$ dpkg-deb --root-owner-group -b a nvidia-kernel-dkms_550.163.01-0~siduction.1b_amd64.deb
$ rm -rf a
$ sudo dpkg -i nvidia-kernel-dkms_550.163.01-0~siduction.1b_amd64.deb

# blacklist open source driver nouveau if not already done so
$ sudo bash -c 'echo blacklist nouveau > /etc/modprobe.d/blacklist-nouveau.conf'

virtualbox-dkms_7.1.8-dfsg-3_amd64.patch:
Code: [Select]
diff --new-file -r -U 0 a/DEBIAN/control b/DEBIAN/control
--- a/DEBIAN/control    2025-05-17 09:27:02.000000000 +0200
+++ b/DEBIAN/control    2025-06-06 15:55:05.949048899 +0200
@@ -3 +3 @@
-Version: 7.1.8-dfsg-3
+Version: 7.1.8-dfsg-3b
diff --new-file -r -U 0 a/DEBIAN/md5sums b/DEBIAN/md5sums
--- a/DEBIAN/md5sums    2025-05-17 09:27:02.000000000 +0200
+++ b/DEBIAN/md5sums    2025-06-06 15:55:05.969047655 +0200
@@ -195 +195 @@
-2d8b169ed18aabd70de02f42a999fe28  usr/src/virtualbox-7.1.8/r0drv/linux/timer-r0drv-linux.c
+ed44d74165dfe6019a26d751ec6ff76e  usr/src/virtualbox-7.1.8/r0drv/linux/timer-r0drv-linux.c
@@ -203 +203 @@
-efe679706ac38d0209caf3df312fa584  usr/src/virtualbox-7.1.8/vboxdrv/Makefile-footer.gmk
+7a4dfa8af14e1981e586e52a8ae201c6  usr/src/virtualbox-7.1.8/vboxdrv/Makefile-footer.gmk
@@ -222 +222 @@
-efe679706ac38d0209caf3df312fa584  usr/src/virtualbox-7.1.8/vboxnetadp/Makefile-footer.gmk
+7a4dfa8af14e1981e586e52a8ae201c6  usr/src/virtualbox-7.1.8/vboxnetadp/Makefile-footer.gmk
@@ -231 +231 @@
-efe679706ac38d0209caf3df312fa584  usr/src/virtualbox-7.1.8/vboxnetflt/Makefile-footer.gmk
+7a4dfa8af14e1981e586e52a8ae201c6  usr/src/virtualbox-7.1.8/vboxnetflt/Makefile-footer.gmk
diff --new-file -r -U 0 a/usr/src/virtualbox-7.1.8/r0drv/linux/timer-r0drv-linux.c b/usr/src/virtualbox-7.1.8/r0drv/linux/timer-r0drv-linux.c
--- a/usr/src/virtualbox-7.1.8/r0drv/linux/timer-r0drv-linux.c  2025-04-14 19:59:15.000000000 +0200
+++ b/usr/src/virtualbox-7.1.8/r0drv/linux/timer-r0drv-linux.c  2025-06-06 15:54:47.088252030 +0200
@@ -425 +425 @@
-        del_timer(&pSubTimer->u.Std.LnxTimer);
+        timer_delete(&pSubTimer->u.Std.LnxTimer);
@@ -473 +473 @@
-            del_timer_sync(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer);
+            timer_delete_sync(&pTimer->aSubTimers[iCpu].u.Std.LnxTimer);
@@ -1628,0 +1629 @@
+/*         
@@ -1630,0 +1632,3 @@
+*/
+            hrtimer_setup(&pTimer->aSubTimers[iCpu].u.Hr.LnxTimer, rtTimerLinuxHrCallback, CLOCK_MONOTONIC, HRTIMER_MODE_ABS);
+
diff --new-file -r -U 0 a/usr/src/virtualbox-7.1.8/vboxdrv/Makefile-footer.gmk b/usr/src/virtualbox-7.1.8/vboxdrv/Makefile-footer.gmk
--- a/usr/src/virtualbox-7.1.8/vboxdrv/Makefile-footer.gmk      2025-04-14 19:58:30.000000000 +0200
+++ b/usr/src/virtualbox-7.1.8/vboxdrv/Makefile-footer.gmk      2025-06-06 15:54:47.088592011 +0200
@@ -117,0 +118 @@
+ccflags-y = $(EXTRA_CFLAGS)
diff --new-file -r -U 0 a/usr/src/virtualbox-7.1.8/vboxnetadp/Makefile-footer.gmk b/usr/src/virtualbox-7.1.8/vboxnetadp/Makefile-footer.gmk
--- a/usr/src/virtualbox-7.1.8/vboxnetadp/Makefile-footer.gmk   2025-04-14 19:58:30.000000000 +0200
+++ b/usr/src/virtualbox-7.1.8/vboxnetadp/Makefile-footer.gmk   2025-06-06 15:54:47.088772988 +0200
@@ -117,0 +118 @@
+ccflags-y = $(EXTRA_CFLAGS)
diff --new-file -r -U 0 a/usr/src/virtualbox-7.1.8/vboxnetflt/Makefile-footer.gmk b/usr/src/virtualbox-7.1.8/vboxnetflt/Makefile-footer.gmk
--- a/usr/src/virtualbox-7.1.8/vboxnetflt/Makefile-footer.gmk   2025-04-14 19:58:30.000000000 +0200
+++ b/usr/src/virtualbox-7.1.8/vboxnetflt/Makefile-footer.gmk   2025-06-06 15:54:47.088927788 +0200
@@ -117,0 +118 @@
+ccflags-y = $(EXTRA_CFLAGS)

nvidia-kernel-dkms_550.163.01-0~siduction.1_amd64.patch:
Code: [Select]
diff --new-file -r -U 0 a/DEBIAN/control b/DEBIAN/control
--- a/DEBIAN/control    2025-04-25 10:50:20.000000000 +0200
+++ b/DEBIAN/control    2025-06-06 00:06:07.379245871 +0200
@@ -3 +3 @@
-Version: 550.163.01-0~siduction.1
+Version: 550.163.01-0~siduction.1b
diff --new-file -r -U 0 a/DEBIAN/md5sums b/DEBIAN/md5sums
--- a/DEBIAN/md5sums    2025-04-25 10:50:20.000000000 +0200
+++ b/DEBIAN/md5sums    2025-06-06 00:06:07.499238405 +0200
@@ -10 +10 @@
-0484103c26a0b09052cd67591c8aa805  usr/src/nvidia-current-550.163.01/Kbuild
+d365c6dea6e56f8828c1e671e018d98e  usr/src/nvidia-current-550.163.01/Kbuild
@@ -92 +92 @@
-4f387da65098825ec53013d00a9464b6  usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-gem-user-memory.c
+696fa58109b3c0b14c8e16d20781e451  usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-gem-user-memory.c
@@ -94 +94 @@
-b51a0b595dbfb85c8e125835ba443442  usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-gem.c
+ffcb9ccb9a5fcdddbe11468987376dab  usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-gem.c
@@ -102 +102 @@
-f003e35a01d21b53ce296ca149c625b6  usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-os-interface.c
+cda41f20758e4bf8344a16be6ef0b415  usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-os-interface.c
@@ -113 +113 @@
-863916c3ea240ec8ab44ec5078b49c38  usr/src/nvidia-current-550.163.01/nvidia-modeset/nvidia-modeset-linux.c
+1b1fb0739a224e514cbaa9dda2625b5e  usr/src/nvidia-current-550.163.01/nvidia-modeset/nvidia-modeset-linux.c
@@ -163 +163 @@
-48e8ed5462ec79cd3e56da2a6f8d312c  usr/src/nvidia-current-550.163.01/nvidia-uvm/uvm.c
+48c1f992525474b380bddc6b05b8bcdb  usr/src/nvidia-current-550.163.01/nvidia-uvm/uvm.c
@@ -403 +403 @@
-33325cc8972f6767365237c0b0cf9f51  usr/src/nvidia-current-550.163.01/nvidia/nv-mmap.c
+4c6d97108146d67ff2c6fd2e5b8d9261  usr/src/nvidia-current-550.163.01/nvidia/nv-mmap.c
@@ -406 +406 @@
-fb3f916e49fea0dcfdf040175141b254  usr/src/nvidia-current-550.163.01/nvidia/nv-nano-timer.c
+4eae9c22f25c0ae83e5323d22669bf99  usr/src/nvidia-current-550.163.01/nvidia/nv-nano-timer.c
@@ -423 +423 @@
-8d9f3c4c37fa248d5efb5e6123380278  usr/src/nvidia-current-550.163.01/nvidia/nv.c
+e83c5396208e1fbd19e1710047964b07  usr/src/nvidia-current-550.163.01/nvidia/nv.c
diff --new-file -r -U 0 a/usr/src/nvidia-current-550.163.01/Kbuild b/usr/src/nvidia-current-550.163.01/Kbuild
--- a/usr/src/nvidia-current-550.163.01/Kbuild  2025-04-25 10:50:20.000000000 +0200
+++ b/usr/src/nvidia-current-550.163.01/Kbuild  2025-06-05 23:56:02.685249605 +0200
@@ -154,0 +155,2 @@
+ccflags-y = $(EXTRA_CFLAGS)
+
diff --new-file -r -U 0 a/usr/src/nvidia-current-550.163.01/nvidia/nv.c b/usr/src/nvidia-current-550.163.01/nvidia/nv.c
--- a/usr/src/nvidia-current-550.163.01/nvidia/nv.c     2025-04-25 10:50:20.000000000 +0200
+++ b/usr/src/nvidia-current-550.163.01/nvidia/nv.c     2025-06-05 23:58:36.959759513 +0200
@@ -4104 +4104 @@
-    del_timer_sync(&nvl->rc_timer.kernel_timer);
+    timer_delete_sync(&nvl->rc_timer.kernel_timer);
@@ -4148 +4148 @@
-        del_timer_sync(&nvl->snapshot_timer.kernel_timer);
+        timer_delete_sync(&nvl->snapshot_timer.kernel_timer);
diff --new-file -r -U 0 a/usr/src/nvidia-current-550.163.01/nvidia/nv-mmap.c b/usr/src/nvidia-current-550.163.01/nvidia/nv-mmap.c
--- a/usr/src/nvidia-current-550.163.01/nvidia/nv-mmap.c        2025-04-08 15:05:18.000000000 +0200
+++ b/usr/src/nvidia-current-550.163.01/nvidia/nv-mmap.c        2025-06-05 23:47:43.446647840 +0200
@@ -25,0 +26,2 @@
+#include <linux/version.h>
+
@@ -28,0 +31,5 @@
+
+#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
diff --new-file -r -U 0 a/usr/src/nvidia-current-550.163.01/nvidia/nv-nano-timer.c b/usr/src/nvidia-current-550.163.01/nvidia/nv-nano-timer.c
--- a/usr/src/nvidia-current-550.163.01/nvidia/nv-nano-timer.c  2025-04-08 15:05:18.000000000 +0200
+++ b/usr/src/nvidia-current-550.163.01/nvidia/nv-nano-timer.c  2025-06-05 23:59:53.288520357 +0200
@@ -212 +212 @@
-    del_timer_sync(&nv_nstimer->jiffy_timer);
+    timer_delete_sync(&nv_nstimer->jiffy_timer);
diff --new-file -r -U 0 a/usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-gem.c b/usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-gem.c
--- a/usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-gem.c     2025-04-08 14:08:07.000000000 +0200
+++ b/usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-gem.c     2025-06-05 23:41:12.598964922 +0200
@@ -53,0 +54,7 @@
+#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
+
diff --new-file -r -U 0 a/usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-gem-user-memory.c b/usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-gem-user-memory.c
--- a/usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-gem-user-memory.c 2025-04-08 14:08:07.000000000 +0200
+++ b/usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-gem-user-memory.c 2025-06-05 23:39:12.133459822 +0200
@@ -42,0 +43,7 @@
+#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
+
diff --new-file -r -U 0 a/usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-os-interface.c b/usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-os-interface.c
--- a/usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-os-interface.c    2025-04-08 14:08:06.000000000 +0200
+++ b/usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-os-interface.c    2025-06-06 00:01:56.457857231 +0200
@@ -235 +235 @@
-    if (del_timer_sync(&timer->kernel_timer)) {
+    if (timer_delete_sync(&timer->kernel_timer)) {
diff --new-file -r -U 0 a/usr/src/nvidia-current-550.163.01/nvidia-modeset/nvidia-modeset-linux.c b/usr/src/nvidia-current-550.163.01/nvidia-modeset/nvidia-modeset-linux.c
--- a/usr/src/nvidia-current-550.163.01/nvidia-modeset/nvidia-modeset-linux.c   2025-04-08 14:09:38.000000000 +0200
+++ b/usr/src/nvidia-current-550.163.01/nvidia-modeset/nvidia-modeset-linux.c   2025-06-06 00:05:24.661903575 +0200
@@ -687 +687 @@
-        del_timer_sync(&timer->kernel_timer);
+       timer_delete_sync(&timer->kernel_timer);
@@ -1802 +1802 @@
-            if (del_timer_sync(&timer->kernel_timer) == 1) {
+           if (timer_delete_sync(&timer->kernel_timer) == 1) {
diff --new-file -r -U 0 a/usr/src/nvidia-current-550.163.01/nvidia-uvm/uvm.c b/usr/src/nvidia-current-550.163.01/nvidia-uvm/uvm.c
--- a/usr/src/nvidia-current-550.163.01/nvidia-uvm/uvm.c        2025-04-08 15:05:04.000000000 +0200
+++ b/usr/src/nvidia-current-550.163.01/nvidia-uvm/uvm.c        2025-06-05 23:44:18.123422278 +0200
@@ -23,0 +24,2 @@
+#include <linux/version.h>
+
@@ -41,0 +44,5 @@
+
+#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

Offline Teriarch

  • User
  • Posts: 116
one down, one to go, nvidia-kernel-dkms_550.163.01-1~siduction.1_amd64.patch under way ...

Offline Teriarch

  • User
  • Posts: 116
And here we go: Replace 550.163.01-0 everywhere by 550.163.01-1
in the Nvidia instructions from above.

nvidia-kernel-dkms_550.163.01-1_amd64.deb.patch:
Code: [Select]
diff --new-file -r -U 0 a/DEBIAN/control b/DEBIAN/control
--- a/DEBIAN/control    2025-06-11 22:29:12.000000000 +0200
+++ b/DEBIAN/control    2025-06-12 13:05:29.417510458 +0200
@@ -3 +3 @@
-Version: 550.163.01-1
+Version: 550.163.01-1b
diff --new-file -r -U 0 a/DEBIAN/md5sums b/DEBIAN/md5sums
--- a/DEBIAN/md5sums    2025-06-11 22:29:12.000000000 +0200
+++ b/DEBIAN/md5sums    2025-06-12 13:05:30.040513370 +0200
@@ -92 +92 @@
-4f387da65098825ec53013d00a9464b6  usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-gem-user-memory.c
+696fa58109b3c0b14c8e16d20781e451  usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-gem-user-memory.c
@@ -94 +94 @@
-b51a0b595dbfb85c8e125835ba443442  usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-gem.c
+ffcb9ccb9a5fcdddbe11468987376dab  usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-gem.c
@@ -163 +163 @@
-48e8ed5462ec79cd3e56da2a6f8d312c  usr/src/nvidia-current-550.163.01/nvidia-uvm/uvm.c
+48c1f992525474b380bddc6b05b8bcdb  usr/src/nvidia-current-550.163.01/nvidia-uvm/uvm.c
@@ -403 +403 @@
-33325cc8972f6767365237c0b0cf9f51  usr/src/nvidia-current-550.163.01/nvidia/nv-mmap.c
+4c6d97108146d67ff2c6fd2e5b8d9261  usr/src/nvidia-current-550.163.01/nvidia/nv-mmap.c
diff --new-file -r -U 0 a/usr/src/nvidia-current-550.163.01/nvidia/nv-mmap.c b/usr/src/nvidia-current-550.163.01/nvidia/nv-mmap.c
--- a/usr/src/nvidia-current-550.163.01/nvidia/nv-mmap.c        2025-04-08 15:05:18.000000000 +0200
+++ b/usr/src/nvidia-current-550.163.01/nvidia/nv-mmap.c        2025-06-12 13:05:08.046411738 +0200
@@ -25,0 +26,2 @@
+#include <linux/version.h>
+
@@ -28,0 +31,5 @@
+
+#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
diff --new-file -r -U 0 a/usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-gem.c b/usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-gem.c
--- a/usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-gem.c     2025-04-08 14:08:07.000000000 +0200
+++ b/usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-gem.c     2025-06-12 13:05:08.048655817 +0200
@@ -53,0 +54,7 @@
+#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
+
diff --new-file -r -U 0 a/usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-gem-user-memory.c b/usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-gem-user-memory.c
--- a/usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-gem-user-memory.c 2025-04-08 14:08:07.000000000 +0200
+++ b/usr/src/nvidia-current-550.163.01/nvidia-drm/nvidia-drm-gem-user-memory.c 2025-06-12 13:05:08.049535860 +0200
@@ -42,0 +43,7 @@
+#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
+
diff --new-file -r -U 0 a/usr/src/nvidia-current-550.163.01/nvidia-uvm/uvm.c b/usr/src/nvidia-current-550.163.01/nvidia-uvm/uvm.c
--- a/usr/src/nvidia-current-550.163.01/nvidia-uvm/uvm.c        2025-04-08 15:05:04.000000000 +0200
+++ b/usr/src/nvidia-current-550.163.01/nvidia-uvm/uvm.c        2025-06-12 13:05:08.050778014 +0200
@@ -23,0 +24,2 @@
+#include <linux/version.h>
+
@@ -41,0 +44,5 @@
+
+#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