nvidia-driver isn't yet Linux 7.0 compatible

Begonnen von kitty-kitty, 2026/04/28, 07:21:23

Vorheriges Thema - Nächstes Thema

kitty-kitty

Linux 7.0 just arrived in the siduction repo :) , but turns out, nvidia-driver (currently version 580.126.18) fails to compile for it.

make.log has these errors:


nvidia/nv-mmap.c: In function 'nv_vma_enter_locked':
nvidia/nv-mmap.c:875:24: error: 'VMA_LOCK_OFFSET' undeclared (first use in this function); did you mean 'VGA_CRTC_OFFSET'?
  875 |     NvU32 tgt_refcnt = VMA_LOCK_OFFSET;
      |                        ^~~~~~~~~~~~~~~
      |                        VGA_CRTC_OFFSET
nvidia/nv-mmap.c:875:24: note: each undeclared identifier is reported only once for each function it appears in
nvidia/nv-mmap.c: In function 'nv_vma_start_write':
nvidia/nv-mmap.c:927:9: error: too many arguments to function '__is_vma_write_locked'; expected 1, have 2
  927 |     if (__is_vma_write_locked(vma, &mm_lock_seq))
      |         ^~~~~~~~~~~~~~~~~~~~~      ~~~~~~~~~~~~
In file included from /usr/src/linux-headers-7.0.2-1-siduction-amd64/arch/x86/include/asm/uaccess.h:12,
                 from /usr/src/linux-headers-7.0.2-1-siduction-amd64/include/linux/uaccess.h:13,
                 from /usr/src/linux-headers-7.0.2-1-siduction-amd64/include/linux/sched/task.h:13,
                 from /usr/src/linux-headers-7.0.2-1-siduction-amd64/include/linux/sched/signal.h:9,
                 from ././common/inc/nv-lock.h:33,
                 from ././common/inc/nv-linux.h:32,
                 from nvidia/nv-mmap.c:27:
/usr/src/linux-headers-7.0.2-1-siduction-amd64/include/linux/mmap_lock.h:282:20: note: declared here
  282 | static inline bool __is_vma_write_locked(struct vm_area_struct *vma)
      |                    ^~~~~~~~~~~~~~~~~~~~~
nvidia/nv-mmap.c:936:42: error: 'VMA_LOCK_OFFSET' undeclared (first use in this function); did you mean 'VGA_CRTC_OFFSET'?
  936 |         detached = refcount_sub_and_test(VMA_LOCK_OFFSET, &vma->vm_refcnt);
      |                                          ^~~~~~~~~~~~~~~
      |                                          VGA_CRTC_OFFSET

Isegrimm666

Today i performed a full-upgrade and get these Error-messages:


──(isegrimm ㉿ C-O-R-A-X)-▷[~]
└─▷$ dofu
Ign:1 https://packages.microsoft.com/repos/code stable InRelease
OK:2 https://deb.debian.org/debian unstable InRelease                                                       
OK:3 https://ftp.gwdg.de/pub/linux/siduction/extra unstable InRelease                                       
OK:4 https://ftp.gwdg.de/pub/linux/siduction/fixes unstable InRelease
OK:1 https://packages.microsoft.com/repos/code stable InRelease
Alle Pakete sind aktuell.                   
Die folgenden Pakete wurden automatisch installiert und werden nicht mehr benötigt:
  libmbedtls21  libmbedx509-7  libnsl2  linux-headers-6.19.12-1-siduction-amd64  linux-image-6.19.12-1-siduction-amd64
Verwenden Sie »apt autoremove«, um sie zu entfernen.

Zusammenfassung:
  Aktualisiere: 0, Installiere: 0, Entferne: 0, Aktualisiere nicht: 0
  4 nicht vollständig installiert oder entfernt.
  Benötigter Platz: 0 B / 432 GB verfügbar

Fortfahren? [J/n]
linux-image-7.0.2-1-siduction-amd64 (7.0-2) wird eingerichtet ...
/etc/kernel/postinst.d/dkms:
The kernel is built without module signing facility, modules won't be signed

Autoinstall of module nvidia-current/580.126.18 for kernel 7.0.2-1-siduction-amd64 (x86_64)
Building module(s).......(bad exit status: 2)
Failed command:
env NV_VERBOSE=1 make -j20 modules KERNEL_UNAME=7.0.2-1-siduction-amd64

Error! Bad return status for module build on kernel: 7.0.2-1-siduction-amd64 (x86_64)
Consult /var/lib/dkms/nvidia-current/580.126.18/build/make.log for more information.

Autoinstall on 7.0.2-1-siduction-amd64 failed for module(s) nvidia-current(10).

Error! One or more modules failed to install during autoinstall.
Refer to previous errors for more information.
run-parts: /etc/kernel/postinst.d/dkms exited with return code 1
dpkg: Fehler beim Bearbeiten des Paketes linux-image-7.0.2-1-siduction-amd64 (--configure):
»altes postinst-Betreuerskript des Paketes linux-image-7.0.2-1-siduction-amd64«-Unterprozess mit Exit-Status 1 fehlgeschlagen
dpkg: Abhängigkeitsprobleme verhindern Konfiguration von linux-image-siduction-amd64:
linux-image-siduction-amd64 hängt ab von linux-image-7.0.2-1-siduction-amd64 (= 7.0-2); aber:
  Paket linux-image-7.0.2-1-siduction-amd64 ist noch nicht konfiguriert.

dpkg: Fehler beim Bearbeiten des Paketes linux-image-siduction-amd64 (--configure):
Abhängigkeitsprobleme - verbleibt unkonfiguriert
linux-headers-7.0.2-1-siduction-amd64 (7.0-2) wird eingerichtet ...
/etc/kernel/header_postinst.d/dkms:
The kernel is built without module signing facility, modules won't be signed

Autoinstall of module nvidia-current/580.126.18 for kernel 7.0.2-1-siduction-amd64 (x86_64)
Building module(s).......(bad exit status: 2)
Failed command:
env NV_VERBOSE=1 make -j20 modules KERNEL_UNAME=7.0.2-1-siduction-amd64

Error! Bad return status for module build on kernel: 7.0.2-1-siduction-amd64 (x86_64)
Consult /var/lib/dkms/nvidia-current/580.126.18/build/make.log for more information.

Autoinstall on 7.0.2-1-siduction-amd64 failed for module(s) nvidia-current(10).

Error! One or more modules failed to install during autoinstall.
Refer to previous errors for more information.
run-parts: /etc/kernel/header_postinst.d/dkms exited with return code 1
Failed to process /etc/kernel/header_postinst.d at /var/lib/dpkg/info/linux-headers-7.0.2-1-siduction-amd64.postinst line 11.
dpkg: Fehler beim Bearbeiten des Paketes linux-headers-7.0.2-1-siduction-amd64 (--configure):
»altes postinst-Betreuerskript des Paketes linux-headers-7.0.2-1-siduction-amd64«-Unterprozess mit Exit-Status 1 fehlgeschlagen
dpkg: Abhängigkeitsprobleme verhindern Konfiguration von linux-headers-siduction-amd64:
linux-headers-siduction-amd64 hängt ab von linux-headers-7.0.2-1-siduction-amd64 (= 7.0-2); aber:
  Paket linux-headers-7.0.2-1-siduction-amd64 ist noch nicht konfiguriert.

dpkg: Fehler beim Bearbeiten des Paketes linux-headers-siduction-amd64 (--configure):
Abhängigkeitsprobleme - verbleibt unkonfiguriert
Fehler traten auf beim Bearbeiten von:
linux-image-7.0.2-1-siduction-amd64
linux-image-siduction-amd64
linux-headers-7.0.2-1-siduction-amd64
linux-headers-siduction-amd64
Fehler: Sub-process /usr/bin/dpkg returned an error code (1)



Irgendwie beißt sich der Kernel mit seinen Headers ... und den NVIDIA-Modulen.

michaa7

Und was findest du da

/var/lib/dkms/nvidia-current/580.126.18/build/make.log

an errors oder interessanten Meldungen?
Ok, you can't code, but you still might be able to write a bug report for Debian's sake

Isegrimm666

Hi Michaa7 ...

Ich hab's mal angehängt .... selbst erkennen ich - mit meinen Fähigkeiten - nur, dass er mit "Fehler 2" abgebrochen hat ... aber nicht, was das wirkliche Problem ist.

michaa7

1) Ich hoffe towo kann mit den Fehlern (1 und 2) etwas anfangen und für Abhilfe schaffen. Ich wollte mit meiner Frage nur den Ablauf beschleunigen ..

2) Es wäre weiterhin hilfreich wenn dein Anhang tatsächlich ein Textdokument *.txt wäre ... ist es aber nicht. Ich kann es nur mit Okular öffnen und darin nicht schriftzeichenweise, sondern nur bereichsweise markieren.
Ok, you can't code, but you still might be able to write a bug report for Debian's sake

Isegrimm666

Ich habe das Dokument in 'kate' geöffnet ... funktioniert bei mir einwandfrei ....

edlin

edlin@Devil26: file make.txt
make.txt: Unicode text, UTF-8 text, with very long lines (3748)


Außer mit Edlin sollte sich das mit jedem schnöden Texteditor öffnen lassen, egal ob kate, kwrite, nano oder vim.

Edlin
,,Ein kluger Mann macht nicht alle Fehler selber. Er lässt auch anderen eine Chance."

Winston Churchill

Teriarch

Das folgende Vorgehen sollte das Problem korrigieren:

Zunächst einmal die Überreste der nicht erfolgreichen Installation entfernen:
$ sudo apt-get remove nvidia-kernel-dkms

Anschließen ins /tmp Verzeichnis wechseln und die Treiber herunterladen:
$ cd /tmp; apt-get download nvidia-kernel-dkms=580.126.18-1tux1

Die Treiber entpacken, aber nicht konfigurieren:
$ sudo dpkg --unpack nvidia-kernel-dkms_580.126.18-1tux1_amd64.deb

Den folgenden patch mit Namen "patch" ins /tmp Verzeichnis bringen.


diff -Nurp aaa/nvidia-current-580.126.18/common/inc/nv-mm.h bbb/nvidia-current-580.126.18/common/inc/nv-mm.h
--- aaa/nvidia-current-580.126.18/common/inc/nv-mm.h    2026-02-11 19:58:40.000000000 +0100
+++ bbb/nvidia-current-580.126.18/common/inc/nv-mm.h    2026-04-28 14:50:07.230337075 +0200
@@ -220,6 +220,16 @@ static inline void nv_vma_flags_clear_wo
     ACCESS_PRIVATE(vma, __vm_flags) &= ~flags;
#endif
}
+
+static inline int nv_is_vma_write_locked(struct vm_area_struct *vma, unsigned int *mm_lock_seq)
+{
+#if defined(NV_IS_VMA_WRITE_LOCKED_HAS_MM_LOCK_SEQ_ARG)
+    return __is_vma_write_locked(vma, mm_lock_seq);
+#else
+    *mm_lock_seq = __vma_raw_mm_seqnum(vma);
+    return __is_vma_write_locked(vma);
+#endif
+}
#endif // !NV_CAN_CALL_VMA_START_WRITE

static inline void nv_vm_flags_set(struct vm_area_struct *vma, vm_flags_t flags)
diff -Nurp aaa/nvidia-current-580.126.18/nvidia/nv-mmap.c bbb/nvidia-current-580.126.18/nvidia/nv-mmap.c
--- aaa/nvidia-current-580.126.18/nvidia/nv-mmap.c      2026-02-11 19:59:10.000000000 +0100
+++ bbb/nvidia-current-580.126.18/nvidia/nv-mmap.c      2026-04-28 14:49:58.502750563 +0200
@@ -870,15 +870,22 @@ void NV_API_CALL nv_set_safe_to_mmap_loc
}

#if !NV_CAN_CALL_VMA_START_WRITE
+
+#if defined(VM_REFCNT_EXCLUDE_READERS_FLAG)
+#define NV_VMA_LOCK_OFFSET VM_REFCNT_EXCLUDE_READERS_FLAG
+#else
+#define NV_VMA_LOCK_OFFSET VMA_LOCK_OFFSET
+#endif
+
static NvBool nv_vma_enter_locked(struct vm_area_struct *vma, NvBool detaching)
{
-    NvU32 tgt_refcnt = VMA_LOCK_OFFSET;
+    NvU32 tgt_refcnt = NV_VMA_LOCK_OFFSET;
     NvBool interrupted = NV_FALSE;
     if (!detaching)
     {
         tgt_refcnt++;
     }
-    if (!refcount_add_not_zero(VMA_LOCK_OFFSET, &vma->vm_refcnt))
+    if (!refcount_add_not_zero(NV_VMA_LOCK_OFFSET, &vma->vm_refcnt))
     {
         return NV_FALSE;
     }
@@ -908,7 +915,7 @@ static NvBool nv_vma_enter_locked(struct
     if (interrupted)
     {
         // Clean up on error: release refcount and dep_map
-        refcount_sub_and_test(VMA_LOCK_OFFSET, &vma->vm_refcnt);
+        refcount_sub_and_test(NV_VMA_LOCK_OFFSET, &vma->vm_refcnt);
         rwsem_release(&vma->vmlock_dep_map, _RET_IP_);
         return NV_FALSE;
     }
@@ -924,7 +931,7 @@ void nv_vma_start_write(struct vm_area_s
{
     NvU32 mm_lock_seq;
     NvBool locked;
-    if (__is_vma_write_locked(vma, &mm_lock_seq))
+    if (nv_is_vma_write_locked(vma, &mm_lock_seq))
         return;

     locked = nv_vma_enter_locked(vma, NV_FALSE);
@@ -933,7 +940,7 @@ void nv_vma_start_write(struct vm_area_s
     if (locked)
     {
         NvBool detached;
-        detached = refcount_sub_and_test(VMA_LOCK_OFFSET, &vma->vm_refcnt);
+        detached = refcount_sub_and_test(NV_VMA_LOCK_OFFSET, &vma->vm_refcnt);
         rwsem_release(&vma->vmlock_dep_map, _RET_IP_);
         WARN_ON_ONCE(detached);
     }


Danach zu /usr/src wechseln und den patch einspielen:

$ cd /usr/src; sudo patch -p1 < /tmp/patch

Jetzt die Treiber konfigurieren:

$ sudo dpkg --configure nvidia-kernel-dkms

Vielleicht kann towo ja den patch für eine aktualisierte Version
von nvidia-kernel-dkms_580.126.18-1tux1_amd64.deb verwenden.

HTH

michaa7

Ich weiß nicht ob der 470 Treiber den patch benötigt, ober er dort funktioniert und ob der 470 mit dem 7-er Kernel vielleicht noch andere Probleme hat. Aber wäre nett wenn towo den patch auch für den 470 bereitstellen würde, dann könnte ich testen ob es noch andere Probleme gibt.

(zur txt-Datei): bei mir öffnet sich direkt aus dem Browser heraus (vivaldi) aus irgendeinem Grund okular obwohl sonst aus dem Dateisystem heraus sich, wie konfiguriert, immer geany öffnet. Ich wollte die Datei nicht herunterladen und speichern. Sorry, Fehler liegt wohl auf meiner Seite, nicht beim poster.)
Ok, you can't code, but you still might be able to write a bug report for Debian's sake

towo

Oder aber

deb https://packages.siduction.org/debian unstable-nvidia main contrib non-free non-free-firmware

in die Sourcen nehmen und gucken, on 580.142 mit Kernel 7.0.x will.
Ich gehe nicht zum Karneval, ich verleihe nur manchmal mein Gesicht.

michaa7

Hi towo, kann ich auf nen fix für 470 hoffen?
Ok, you can't code, but you still might be able to write a bug report for Debian's sake

towo

Das weiss ich nicht und ich verspüre nicht wirklich viel Lust an dem alten Kram ständig rumpatchen zu müssen.
Ich gehe nicht zum Karneval, ich verleihe nur manchmal mein Gesicht.

charlyheinz

Hallo
Habe gerade ein upgrade sauber durchgeführt. (Nvidia 2070)
Zitat
uname -r
7.0.2-1-siduction-amd64
Zitat
apt policy nvidia-driver
nvidia-driver:
  Installiert:           580.142-1tux1
  Installationskandidat: 580.142-1tux1
  Versionstabelle:
*** 580.142-1tux1 500
        500 https://packages.siduction.org/fixes unstable-nvidia/non-free amd64 Packages 

Danke Towo

Teriarch

@michaa7

Lade zunächst die aktuellen Tesla Debian Treiber herunter:
$ cd /tmp; apt-get download nvidia-tesla-470-kernel-dkms

Wieder entpacken, aber nicht konfigurieren:
$ sudo dpkg --unpack nvidia-tesla-470-kernel-dkms_470.256.02-9_amd64.deb

Folgenden patch unter dem Namen "use-tesla-mm.patch" ins /tmp Verzeichnis
kopieren und zu den Debian patches hinzufügen:

--- aaa/nvidia-drm/nvidia-dma-fence-helper.h    2024-05-02 16:49:58.000000000 +0200
+++ bbb/nvidia-drm/nvidia-dma-fence-helper.h    2026-04-28 16:36:24.448688067 +0200
@@ -93,7 +93,8 @@ static inline int nv_dma_fence_signal(nv
#if defined(NV_LINUX_FENCE_H_PRESENT)
     return fence_signal(fence);
#else
-    return dma_fence_signal(fence);
+    dma_fence_signal(fence);
+    return 0;
#endif
}

--- aaa/nvidia/nv-mmap.c        2026-04-28 17:32:39.018436213 +0200
+++ bbb/nvidia/nv-mmap.c        2026-04-28 16:37:09.514796016 +0200
@@ -800,15 +800,22 @@ void NV_API_CALL nv_set_safe_to_mmap_loc
}

#if !NV_CAN_CALL_VMA_START_WRITE
+
+#if defined(VM_REFCNT_EXCLUDE_READERS_FLAG)
+#define NV_VMA_LOCK_OFFSET VM_REFCNT_EXCLUDE_READERS_FLAG
+#else
+#define NV_VMA_LOCK_OFFSET VMA_LOCK_OFFSET
+#endif
+
static NvBool nv_vma_enter_locked(struct vm_area_struct *vma, NvBool detaching)
{
-    NvU32 tgt_refcnt = VMA_LOCK_OFFSET;
+    NvU32 tgt_refcnt = NV_VMA_LOCK_OFFSET;
     NvBool interrupted = NV_FALSE;
     if (!detaching)
     {
         tgt_refcnt++;
     }
-    if (!refcount_add_not_zero(VMA_LOCK_OFFSET, &vma->vm_refcnt))
+    if (!refcount_add_not_zero(NV_VMA_LOCK_OFFSET, &vma->vm_refcnt))
     {
         return NV_FALSE;
     }
@@ -838,7 +845,7 @@ static NvBool nv_vma_enter_locked(struct
     if (interrupted)
     {
         // Clean up on error: release refcount and dep_map
-        refcount_sub_and_test(VMA_LOCK_OFFSET, &vma->vm_refcnt);
+        refcount_sub_and_test(NV_VMA_LOCK_OFFSET, &vma->vm_refcnt);
         rwsem_release(&vma->vmlock_dep_map, _RET_IP_);
         return NV_FALSE;
     }
@@ -854,7 +861,7 @@ void nv_vma_start_write(struct vm_area_s
{
     NvU32 mm_lock_seq;
     NvBool locked;
-    if (__is_vma_write_locked(vma, &mm_lock_seq))
+    if (nv_is_vma_write_locked(vma, &mm_lock_seq))
         return;

     locked = nv_vma_enter_locked(vma, NV_FALSE);
@@ -863,7 +870,7 @@ void nv_vma_start_write(struct vm_area_s
     if (locked)
     {
         NvBool detached;
-        detached = refcount_sub_and_test(VMA_LOCK_OFFSET, &vma->vm_refcnt);
+        detached = refcount_sub_and_test(NV_VMA_LOCK_OFFSET, &vma->vm_refcnt);
         rwsem_release(&vma->vmlock_dep_map, _RET_IP_);
         WARN_ON_ONCE(detached);
     }
--- aaa/common/inc/nv-mm.h      2026-04-28 17:32:39.025054285 +0200
+++ bbb/common/inc/nv-mm.h      2026-04-28 16:37:51.725102562 +0200
@@ -276,6 +276,16 @@ static inline void nv_vma_flags_clear_wo
     ACCESS_PRIVATE(vma, __vm_flags) &= ~flags;
#endif
}
+
+static inline int nv_is_vma_write_locked(struct vm_area_struct *vma, unsigned int *mm_lock_seq)
+{
+#if defined(NV_IS_VMA_WRITE_LOCKED_HAS_MM_LOCK_SEQ_ARG)
+    return __is_vma_write_locked(vma, mm_lock_seq);
+#else
+    *mm_lock_seq = __vma_raw_mm_seqnum(vma);
+    return __is_vma_write_locked(vma);
+#endif
+}
#endif // !NV_CAN_CALL_VMA_START_WRITE

#include <linux/version.h>


$ sudo cp /tmp/use-tesla-mm.patch /usr/src/nvidia-tesla-470-470.256.02/patches
Schließlich die Treiber konfigurieren:
$ sudo dpkg --configure nvidia-tesla-470-kernel-dkms

HTH

Isegrimm666

Zitat von: towo in 2026/04/28, 15:28:25
Oder aber

deb https://packages.siduction.org/debian unstable-nvidia main contrib non-free non-free-firmware

in die Sourcen nehmen und gucken, on 580.142 mit Kernel 7.0.x will.

Moin towo ...

Wenn ich das mache erhalte ich folgende Meldung:

deb https://packages.siduction.org/debian unstable-nvidia main contrib non-free non-free-firmware

Vorgehen:
1. ich habe in etc/apt/sources.d eine neue source erstellt: nvidia.sources

2. Die source dann wie folgt hinzugefügt:
----------
Types: deb
URIs: https://packages.siduction.org/debian
Suites: unstable-nvidia
Components: main  contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
-----

3. doas apt update

... und dann kam die Fehlermeldung.

Wo liegt mein Fehler?