Bumblebee: Nvidia has fallen off the bus

Hinweis: In dem Thema Bumblebee: Nvidia has fallen off the bus gibt es 14 Antworten auf 2 Seiten. Der letzte Beitrag () befindet sich auf der letzten Seite.
  • Guten Tag,


    (nicht zum ersten Mal) habe ich gewisse Schwierigkeiten bei der Verwendung von bumblebee unter Leap 15.0 auf einem Lenovo E470 20H2-S00700 (i7 7500U mit integrierter Intel HD Graphics 620 sowie einer separaten GTX 940MX). Ich habe das Bumblebee-Repository eingebunden, die Pakete bbswitch, bumblebee, nvidia-bumblebee, dkms, primus installiert, systemctl enable bumblebeed und systemctl enable dkms mkinitrd ausgeführt. Nach dem Reboot kriege ich in dmesg lauter Einträge mit:


    Code
    NVRM: The NVIDIA GPU 0000:01:00.0
                   NVRM: (PCI ID: 10de:134d) installed in this system has
                   NVRM: fallen off the bus and is not responding to commands.
    [    2.292635] nvidia: probe of 0000:01:00.0 failed with error -1
    [    2.292647] NVRM: The NVIDIA probe routine failed for 1 device(s).
    [    2.292647] NVRM: None of the NVIDIA graphics adapters were initialized!

    Folglich läuft auch optirun nicht. Das Kompilieren mittels dkms läuft laut /var/lib/dkms/nvidia/410.73/4.12.14-lp150.12.28-default/x86_64/log/make.log jedoch ohne Probleme durch. Ich habe hier einen Workaround gefunden (als su ausgeführt), mit dem ich für die Dauer einer Session die GPU mittels optirun verwenden kann:



    Code
    systemctl stop bumblebeed
    rmmod nvidia
    rmmod bbswitch
    echo 1 > /sys/bus/pci/devices/0000:01:00.0/remove
    echo 1 > /sys/bus/pci/devices/0000:00:02.0/rescan
    modprobe bbswitch
    systemctl start bumblebeed

    Das muss ich aber nach jedem Reboot erneut ausführen. Was das aber macht, verstehe ich nicht so richtig, und gibt es vielleicht die Möglichkeit, auf diesen Extraschritt zu verzichten, sodass optirun von Anfang an funktioniert?


    Noch ein paar Infos, die hoffentlich hilfreich sind:
    Nachdem ich den Workaround ausgeführt habe, erscheinen u.a. folgende Meldungen in dmesg: dmesg_nach_workaround.txt Gerade das Version mismatch irritiert mich sehr, woher kommt das?


    Falls noch weitere Infos gebraucht werden, gebe ich sie gerne an.

  • Zunächst ab ich wie im Bugreport beschrieben eine Neuinstallation versucht, die aber nichts geändert hat.
    Mithilfe des Befehls im vorletzten Beitrag for nvm in /lib/modules/*/updates/nvidia*.ko; do echo $nvm \:; strings $nvm | grep -E \^version=; done habe ich aber herausgefunden, dass von meinen ersten Bumblebee-Anläufen noch veralteter Krempel in besagtem Ordner übrig geblieben war, der bei der Paketdeinstallation nicht gelöscht wurde. Bei mir waren die Dateien nvidia-modeset.ko und nvidia-uvm.ko überflüssig (am alten Zeitstempel erkannt). Nach Löschen und mkinitrd ist der Version mismatch nun behoben.
    Am Rest hat sich aber nichts geändert: Beim Booten fälllt nvidia immer noch vom Bus, und ich muss den Workaround als root ausführen, bevor ich die GPU nutzen kann.

  • Du wirst nicht umhinkommen, das Installationschaos vollständig zu beseitigen.
    Da dürfte noch einiges im Argen liegen.
    Mag sein, dass du -ausnahmsweise- mit einer sauberen Neuinstallation schneller wärst.


    Nach dem üblichen bereinigen der Repoliste und dem dann nötigen zypper dup ...., solltest du alle Kernelmodule, die damit in Zusammenhang stehen, prüfen. lsmod und modinfo sind deine Freunde.


    Einfaches Löschen der initrd ist nicht einmal die halbe Miete.

  • Meine Reinigungsschritte: systemctl disable dkms bumblebeed aufgerufen, alle Pakete aus dem X11:bumblebee-Repository gelöscht, dieses Repo deaktiviert, verwaiste und unbenötigte Pakete deinstalliert (über Yast), zypper dup hatte danach nichts mehr zu tun. Mittels find / -iname *nvidia* Bruchstücke gesucht und alle leeren Ordner, kaputte Links und Dateien, die zu keinem Paket gehören, gelöscht. Dann in /etc/modprobe.d/50-blacklist.conf "blacklist nouveau" eingefügt, damit es nicht geladen wird. depmod -a und mkinitrd aufgerufen und neu gestartet.
    Hiernach ist folgender Zustand: lsmod | egrep "nou|nv|bum|bbs" gibt gar nichts aus, Dateien mit nvidia im Namen sind nur folgende:

    Jetzt müsste das System also bereinigt sein.


    Also wieder das Bumblebee-Repo aktiviert, die Pakete bumblebee, bbswitch, primus-32bit, nvidia-bumblebee, nvidia-bumblebee-32bit installiert, systemctl enable bumblebeed dkms und mkinitrd aufgerufen, rebootet.


    Die Situation ist die gleiche: Beim Booten fällt die GPU vom Bus. Hier der vollständige Output von dmesg nach dem Ausführen des oben genannten Workarounds, nach dem optirun wieder läuft:dmesg_nach_workaround.txt
    Und noch ein paar Fehlermeldungen aus Xorg.8.log:

    Code
    egrep "EE|WW" /var/log/Xorg.8.log
            (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
    [   287.079] (WW) The directory "/usr/share/fonts/misc/sgi" does not exist.
    [   287.080] (EE) /dev/dri/card0: failed to set DRM interface version 1.4: Permission denied
    [   287.782] (WW) NVIDIA(0): Unable to get display device for DPI computation.
    [   287.810] (WW) NVIDIA(0): Option "NoLogo" is not used
    [   287.974] (WW) <default pointer>: No Device specified, looking for one...
    [   288.373] (EE) kbd: <default keyboard>: failed to set us as foreground pgrp (Inappropriate ioctl for device)
    [   288.432] (EE) /dev/dri/card0: failed to set DRM interface version 1.4: Permission denied
  • Wie begründest du deine Annahme, dass mit egrep "nou|nv|bum|bbs" alle beteiligen Module gefunden werden?
    Ist das so?


    Ich denke, eher nicht.


    Probier mal lsmod | grep nvi

  • egrep "nou|nv|bum|bbs" zeigt alle Zeilen an, die eine dieser vier Buchstabenfolgen beinhalten (wortwörtlich "nou" oder "nv" oder "bum" oder "bbs"), also mehr als grep nvi. Alles, was "nvi" beinhaltet, muss auch "nv" beinhalten, daher verstehe ich deinen Einwand zugegeben nicht.
    Im Idle-Zustand ist das einzige geladene Modul "bbswitch". Läuft optirun glxspheres im Hintergrund, kommen folgende Einträge hinzu:

    Code
    lsmod | egrep "nou|nv|bum|bbs"
    nvidia_uvm            884736  0
    nvidia_drm             49152  3
    nvidia_modeset       1044480  3 nvidia_drm
    nvidia              16617472  156 nvidia_modeset,nvidia_uvm
    bbswitch               16384  0
    drm_kms_helper        200704  2 i915,nvidia_drm
    ipmi_msghandler        49152  2 nvidia,ipmi_devintf
    drm                   438272  13 i915,nvidia_drm,drm_kms_helper
  • Langsam wird es.
    Und welche Versionen (samt den Versionen der dann davon abhängigen Kernel-Module) hat denn jetzt z.B. das Modul drm?
    Du wirst ALLE prüfen müssen. Erst dann kannst du dir sicher sein, dass du dein Chaos bereinigt hast.


    Ich finde es aber sehr gut, dass du dir das antust.
    Da lernst du was.


    Natürlich musst du auch in deinem Bootverzeichnis die Versionen der Module checken, wenn es Differenzen gibt...
    (Oder alles gleich neu basteln lassen)

  • @Berichtigung: Die relevanten Modulversionen müsste ich ja sowohl mit modinfo nvidia… als auch for nvm in /lib/modules/*/updates/nvidia*.ko; do echo $nvm \:; strings $nvm | grep -E \^version=; done kriegen, richtig? Jedenfalls haben nvidia, nvidia-modeset und nvidia-drm die Versionen 410.78, während für nvidia-uvm keine Version angezeigt wird.
    Die Versionen der anderen Module sind ja recht egal, oder? "drm" hat beispielsweise keine, bbswitch ist 0.8, ipmi_messagehandler ist 39.2… Jedenfalls trägt jedes Modul die gleiche Kernelversion im Dateipfad (aktuell 4.12.14-lp150.12.28-default).
    Oder muss ich noch was anderes überprüfen?


    @Sauerland: Diese Anleitungen kenne ich – nachdem ich die erste pflichtbewusst Zeile für Zeile abgearbeitet habe, kam das Installationschaos zustande. Da sind auch fiese Fehler in der Anleitung, beispielsweise soll man an einer Stelle das Nvidia-Repository einbinden und den Nvidia-Treiber installieren. Wenn man dann im nächsten Schritt nvidia-bumblebee installiert, wird ein Paketkonflikt gemeldet und der Nvidia-Treiber wieder deinstalliert. Du hattest weiter oben einen Bugreport verlinkt, in dem in einem der Beiträge empfohlen wurde, auf die meisten Schritte dieser Anleitung zu verzichten und nur die Punkte "Install Bumblebee" und "Tumbleweed" zu befolgen. Das habe ich jetzt auch gemacht, mit der kleinen Abweichung, dass ich das Leap15- statt Tumbleweed-Repo eingebunden habe.
    In der "alten" Anleitung steht noch, man soll das Paket-Schema devel-kernel installieren – explizit das Schema war bei mir nicht installiert, aber alle darin verknüpften Pakete, sodass nur das 58B "große" Pattern-Paket installiert wurde.
    Ansonsten habe ich alles wie in den Anleitungen beschrieben bereits gemacht.