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:
$ 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:
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:
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