Bumblebee: Nvidia has fallen off the bus

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

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.
  • Bumblebee: Nvidia has fallen off the bus

    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:

    Quellcode

    1. NVRM: The NVIDIA GPU 0000:01:00.0
    2. NVRM: (PCI ID: 10de:134d) installed in this system has
    3. NVRM: fallen off the bus and is not responding to commands.
    4. [ 2.292635] nvidia: probe of 0000:01:00.0 failed with error -1
    5. [ 2.292647] NVRM: The NVIDIA probe routine failed for 1 device(s).
    6. [ 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:


    Quellcode

    1. systemctl stop bumblebeed
    2. rmmod nvidia
    3. rmmod bbswitch
    4. echo 1 > /sys/bus/pci/devices/0000:01:00.0/remove
    5. echo 1 > /sys/bus/pci/devices/0000:00:02.0/rescan
    6. modprobe bbswitch
    7. 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?

    Quellcode

    1. [ 717.042311] ACPI Warning: \_SB.PCI0.RP01.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20170303/nsarguments-95)
    2. [ 717.062400] nvidia 0000:01:00.0: Refused to change power state, currently in D0
    3. [ 717.074589] nvidia 0000:01:00.0: Refused to change power state, currently in D3
    4. [ 717.074973] NVRM: This is a 64-bit BAR mapped above 4GB by the system
    5. NVRM: BIOS or the Linux kernel, but the PCI bridge
    6. NVRM: immediately upstream of this GPU does not define
    7. NVRM: a matching prefetchable memory window.
    8. [ 717.074974] NVRM: This may be due to a known Linux kernel bug. Please
    9. NVRM: see the README section on 64-bit BARs for additional
    10. NVRM: information.
    11. [ 717.074981] nvidia: probe of 0000:01:00.0 failed with error -1
    12. [ 717.075007] NVRM: The NVIDIA probe routine failed for 1 device(s).
    13. [ 717.075008] NVRM: None of the NVIDIA graphics adapters were initialized!
    14. [ 727.503452] nvidia-modeset: Version mismatch: nvidia.ko(410.73) nvidia-modeset.ko(390.87)
    Alles anzeigen

    Brainfuck-Quellcode

    1. zypper lr -u
    2. Repository priorities in effect: (See 'zypper lr -P' for details)
    3. 95 (raised priority) : 1 repository
    4. 99 (default priority) : 6 repositories
    5. # | Alias | Name | Enabled | GPG Check | Refresh | URI
    6. --+-------------------------+-----------------------------------+---------+-----------+---------+------------------------------------------------------------------------------
    7. 1 | openSUSE-Leap-15.0-1 | openSUSE-Leap-15.0-1 | Yes | (r ) Yes | Yes | http://download.opensuse.org/distribution/leap/15.0/repo/oss/
    8. 2 | openSUSE_Leap_15.0 | Bumblebee | Yes | (r ) Yes | Yes | https://download.opensuse.org/repositories/X11:/Bumblebee/openSUSE_Leap_15.0/
    9. 3 | opensuse-guide.org-repo | Libdvdcss Repository | Yes | (r ) Yes | Yes | http://opensuse-guide.org/repo/openSUSE_Leap_15.0/
    10. 4 | packman.inode.at-suse | Packman Repository | Yes | (r ) Yes | Yes | http://packman.inode.at/suse/openSUSE_Leap_15.0/
    11. 5 | repo-non-oss | openSUSE-Leap-15.0-Non-Oss | Yes | (r ) Yes | Yes | http://download.opensuse.org/distribution/leap/15.0/repo/non-oss/
    12. 6 | repo-update | openSUSE-Leap-15.0-Update | Yes | (r ) Yes | Yes | http://download.opensuse.org/update/leap/15.0/oss/
    13. 7 | repo-update-non-oss | openSUSE-Leap-15.0-Update-Non-Oss | Yes | (r ) Yes | Yes | http://download.opensuse.org/update/leap/15.0/non-oss
    Alles anzeigen

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

    Für den Inhalt des Beitrages 127653 haftet ausdrücklich der jeweilige Autor: Eldrad Ulthran

  • Eldrad Ulthran schrieb:

    nvidia-modeset: Version mismatch: nvidia.ko(410.73) nvidia-modeset.ko(390.87)
    Sagt doch viel oder?

    Bug 1114251 – NVIDIA driver components have different versions
    Links in dieser Signatur bitte zum Lesen anklicken!

    Code-Tags <<<Klick mich
    zypper <<<Klick mich
    Netzwerkprobleme <<<Klick mich

    Für den Inhalt des Beitrages 127655 haftet ausdrücklich der jeweilige Autor: Sauerland

  • 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.

    Für den Inhalt des Beitrages 127665 haftet ausdrücklich der jeweilige Autor: Eldrad Ulthran

  • 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.
    Sokrates sagte, dass er nichts wisse.
    Ich bin viel, viel klüger als Sokrates.
    Ich weiß ganz genau, dass ich gar nichts weiß.

    Für den Inhalt des Beitrages 127675 haftet ausdrücklich der jeweilige Autor: Berichtigung

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

    Quellcode

    1. find / -iname *nvidia*
    2. find: ‘./run/user/1000/gvfs’: Permission denied
    3. ./usr/share/licenses/kernel-firmware/LICENCE.nvidia
    4. ./usr/share/cmake/Modules/Platform/Darwin-NVIDIA-CUDA.cmake
    5. ./usr/share/cmake/Modules/Platform/Windows-NVIDIA-CUDA.cmake
    6. ./usr/share/cmake/Modules/Compiler/NVIDIA-CUDA.cmake
    7. ./usr/share/cmake/Modules/Compiler/NVIDIA-DetermineCompiler.cmake
    8. ./usr/lib/nvidia
    9. ./usr/include/boost/compute/functional/detail/nvidia_ballot.hpp
    10. ./usr/include/boost/compute/functional/detail/nvidia_popcount.hpp
    11. ./usr/include/boost/compute/detail/nvidia_compute_capability.hpp
    12. ./etc/apparmor.d/abstractions/nvidia
    13. ./lib/firmware/LICENCE.nvidia
    14. ./lib/firmware/nvidia
    15. ./lib/modules/4.12.14-lp150.11-default/kernel/drivers/net/ethernet/nvidia
    16. ./lib/modules/4.12.14-lp150.12.28-default/kernel/drivers/net/ethernet/nvidia
    Alles anzeigen
    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:

    Quellcode

    1. egrep "EE|WW" /var/log/Xorg.8.log
    2. (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
    3. [ 287.079] (WW) The directory "/usr/share/fonts/misc/sgi" does not exist.
    4. [ 287.080] (EE) /dev/dri/card0: failed to set DRM interface version 1.4: Permission denied
    5. [ 287.782] (WW) NVIDIA(0): Unable to get display device for DPI computation.
    6. [ 287.810] (WW) NVIDIA(0): Option "NoLogo" is not used
    7. [ 287.974] (WW) <default pointer>: No Device specified, looking for one...
    8. [ 288.373] (EE) kbd: <default keyboard>: failed to set us as foreground pgrp (Inappropriate ioctl for device)
    9. [ 288.432] (EE) /dev/dri/card0: failed to set DRM interface version 1.4: Permission denied

    Für den Inhalt des Beitrages 127685 haftet ausdrücklich der jeweilige Autor: Eldrad Ulthran

  • 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
    Sokrates sagte, dass er nichts wisse.
    Ich bin viel, viel klüger als Sokrates.
    Ich weiß ganz genau, dass ich gar nichts weiß.

    Für den Inhalt des Beitrages 127689 haftet ausdrücklich der jeweilige Autor: Berichtigung

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

    Quellcode

    1. lsmod | egrep "nou|nv|bum|bbs"
    2. nvidia_uvm 884736 0
    3. nvidia_drm 49152 3
    4. nvidia_modeset 1044480 3 nvidia_drm
    5. nvidia 16617472 156 nvidia_modeset,nvidia_uvm
    6. bbswitch 16384 0
    7. drm_kms_helper 200704 2 i915,nvidia_drm
    8. ipmi_msghandler 49152 2 nvidia,ipmi_devintf
    9. drm 438272 13 i915,nvidia_drm,drm_kms_helper

    Für den Inhalt des Beitrages 127703 haftet ausdrücklich der jeweilige Autor: Eldrad Ulthran

  • 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)
    Sokrates sagte, dass er nichts wisse.
    Ich bin viel, viel klüger als Sokrates.
    Ich weiß ganz genau, dass ich gar nichts weiß.

    Für den Inhalt des Beitrages 127705 haftet ausdrücklich der jeweilige Autor: Berichtigung

  • @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.

    Für den Inhalt des Beitrages 127715 haftet ausdrücklich der jeweilige Autor: Eldrad Ulthran