Iommu GPU Passthrough mit doppelten ID's

#1

Hallo!

Nachdem ich nun bis jetzt alle meine Probleme mit Manjaro lösen konnte, kommt das nächste.

Und zwar habe ich nun 3 GPU's im System. 2x 1080ti's (identisches Model usw) und 1x AMD Karte.

Die AMD Karte nutze ich nun für Manjaro, und die anderen zwei sind untätig.

Ich will nun eine davon per Passthrough einer VM zu verfügung stellen.

Leider ist das Archwiki unvollständig: https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF

Bzw veraltet. Oder falsch. Oder was auch immer. Weil ich nun durch einige offizielle "topaktuelle" Quellen erfahren habe das der Kernel höher als 4.18.16 vfio-pci drin hat. Paar Seiten weiter, heißt es nun wieder das vfio-pci nicht mehr drin ist. Was denn nun?

Außerdem fehlen einige Infos. mkinitcpio. Außerdem lautet es auch mkinitcpio -p linux50 und nicht mkinitcpio -p linux. Aber auch das konnte gelöst werden.

Dann selbst wenn es klappen sollte: Welche Pakete müssen nun installiert werden? Etliche Quellen nennen z.B qemu-kvm qemu-utils seabios ovmf hugepages cpu-checker. Kein einziges Paket existiert. Nicht mal in AUR.

http://turlucode.com/qemu-kvm-on-arch-linux-guide/ ist z.B auch wieder ganz anders.

https://www.linuxsecrets.com/archlinux-wiki/wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF.html ist schon besser, jedoch auch anscheinend veraltet.

https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF#Using_identical_guest_and_host_GPUs Funktioniert leider nicht (oder nicht mehr?) Beim starten von Manjaro kommt immer eine Fehlermeldung mit "permission denied" oder "line 3 find not found".

Ich bin absolut ratlos... Jetzt habe ich wieder ein anderen Guide gefunden, der sagt man soll kernel-vfio bauen. Das tut AUR grade, kernel-vfio 5.05. Aber weiter weiß ich dann auch nicht.

Die Videos von Wendel von level1 sind leider auch out of date. Somit die von LTT ebenso.

Ich habe nun schon so viel Geld und Zeit investiert, bitte helft mir! Möchte wirklich nicht zurück nach Windows.

#2

Hallo tomekk228,

Nun ja, um Qemu erstmal zum Laufen zu bringen, solltest Du dich an diese Anleitung halten, da werden die Pakete aufgeführt:
https://wiki.manjaro.org/index.php?title=Virt-manager
also

sudo pacman -S virt-manager qemu vde2 ebtables dnsmasq bridge-utils openbsd-netcat
sudo systemctl enable libvirtd.service
sudo systemctl start libvirtd.service

den Rest überlasse ich jemand anderem...

viele Grüße gosia

#3

Danke!

muss ich nur noch das mit iommu bzw den zwei identischen GPU's irgendwie lösen...

#4

Hallo tomekk228
gestern war es spät und vor lauter Buchstaben habe ich das überlesen:

zu "veraltet": "last edited on 6 May 2019"
das möchte ich also mal, trotz aller Unkenntnis meinerseits, ausschliessen.
"falsch": Naja, sowas soll ja vorkommen, aber eher selten.
Interessanter ist der Punkt "unvollständig". Wieso, weshalb, warum? Was bringt dich zu dieser Annahme, bzw. was fehlt dir denn in diesem Artikel?
Wäre ja für Ratgebende wichtig zu wissen, damit sie das nötige ergänzen können.

viele Grüße gosia

#5

Hallo gosia, ja da fehlt z.B der Punkt bzgl der benötigten Pakete. Oder die Information welchen Kernel ich nun brauche (da es unter archlinux.org X verschiedene Informationen gibt (alle aus 2018)).

Oder das man nachdem man Bootoptionen geändert hat etc, man mkinitcpio -p $derkernelname auszuführen hat.

Klar, ist dort verlinkt. Aber auch wieder dieser verlinkter Artikel ist unglaublich lang. Und viel zu detailiert erklärt für das Vorhaben des ersten Artikels. Ich als "neuling altgebackener" (Linux für Desktop vor 12 Jahren aufgegeben, da "Zocken" damals noch interessanter war, auf diverse Server bis heute Debian u. CentOS), war damit überfordert. Weil ich schlußendlich gar nicht wusste was der ursprüngliche Artikel von mir wollte! Man könnte einfach "mkinitpcio -p $derkernelname" erwähnen, und direkt dabei erklären wie man den aktuellen Namen überhaupt rausfindet. Weil mkinitcpio -p linux gar nicht funktioniert (fällt unter Rubrik "veraltet"). Denn als ich das machen wollte, bekam ich die Fehlermeldung das "linux" nicht existiert. Und erst wieder nach ner halben Stunde googeln kam ich dahinter wo ich nachgucken kann, wie es richtig heißen soll. Und voila, unter /etc/mkinitcpio.d/linux fand ich dann zwei Dateien. linux419.preset u. linux50.preset. Und da musste man dann den aktuellsten auswählen bzw den der grade läuft. Das heißt die Info die im Artikel steht ist leider veraltet (ggf war es irgendwann mal so).

Dan bin ich irgendwann an den Punkt gestoßen wo ich alles rausgefunden und durch hatte, und freute mich, und nichts funktionierte. Dann nach stundenlanger googlerei fand ich heraus das es daran liegt das ich mindestens 2 GPU's (oder andere Hardware) im System verbaut habe die die selbe ID teilen. "Gefühlt gelesen" bin ich einer von 5 Personen im ganzem Internet die dieses Problem haben.

Daraufhin war mir klar, was mir "Note: You cannot specify which device to isolate using vendor-device ID pairs if the host GPU and the guest GPU share the same pair (i.e : if both are the same model). If this is your case, read #Using identical guest and host GPUs instead." sagen wollte. Also bin ich den Weg eingeschlagen. Der leider auch nicht mehr funktioniert. Daraufhin wieder gegoogelt, und ein Artikel auf level1 Forum gefunden, woraufhin ich wenigstens soweit kam dass das Skript nicht mit nem Fehler abbrach. Geholfen hat es trotzdem nicht.

Nach fast 20 Stunden Bemühungen und immer wieder Manjaro neu aufspielen (Auf einer nvme das Boot installations medium, andere nvme das Ziel. Gott segne das dies nur Sekunden dauert!), habe ich schlußendlich die Geduld verloren und habe hier den Thread erstellt und hoffe das mir einer helfen kann.

#6

Und noch was: Beim manuellem bau des Kernels kommt folgender Fehler:

Could not import extension kerneldoc (exception: cannot import name 'AutodocReporter' from 'sphinx.ext.autodoc' (/usr/lib/python3.7/site-packages/sphinx/ext/autodoc/init.py))

Ist auch unter https://aur.tuna.tsinghua.edu.cn/packages/linux-mainline-headers/ zu finden.

#7

Hallo tomekk228,

welche benötigten Pakete meinst Du denn?

Naja, "veraltet" würde ich das nicht nennen, weil ja nicht bekannt sein kann, welchen Kernel Du dir backen möchtest. Insofern steht dort immer "e.g.", also z.B..
"ungünstig" kann ich schon eher akzeptieren, war früher wohl mal besser gelöst durch einen Symlink von linux.preset auf die eigentliche Datei, also z.B. linux.preset -> linux419.preset
Allerdings ist dein Vorhaben auch ziemlich hartes Brot, für einen

da ist es kaum möglich, von Null her alles zu erklären, da wäre die von dir beklagte Länge der Artikel noch länger und würde fast Buchformat annehmen.
Apropos Länge: Du würdest Dir auch einen Gefallen tun und deine Anfragen etwas knapper und knackiger formulieren, sprich schneller auf den Punkt kommen.

Wieso das? Nur weil GPU Passthrough noch nicht funktioniert, musst Du doch Manjaro nicht neu aufsetzen. Oder was verstehe ich falsch?
Apropos "falsch verstehen" (nur so am Rande):
nvme = "Non Volatile Memory Express"?

viele Grüße gosia

#8

Ich schrieb extra "neuling altgebackener" :slight_smile:

Weil vor 12 Jahren (kann man sogar googeln, da selber nick :smiley:) nutzte ich überall nur Arch Linux. Und war richtig aktiv was Doku & co anging. Nur, wie es so ist: Irgendwann findet man eine Frau, und dann noch die Arbeit... Um dein Rat zu befolgen auf dem Punkt zu kommen: Das meiste habe ich wieder vergessen, kommt aber wieder!

Ich setze deswegen Manjaro immer wieder neu, weil dies schneller und einfacher geht als die Fehler die ich mache, rückgängig zu machen.

Und zu den benötigten Packete, meinte ich die, die du mir genannt hast bzgl virt-manager & co.

Edit: Das verstehe ich z.B jetzt auch nicht: Gestern funktionierte noch Bridge Networking unter virt-manager. Nun, nachdem ich Manjaro neu installiert habe, geht es aufeinmal nicht mehr. Obwohl es kein einzigen unterschied zu gestern gibt (außer das ich spotify gestern noch installiert hatte). Echt anstrengend!

#9

Hallo tomekk228,

neugierig wie ich bin, habe ich das gemacht. Scheint kein Forum gegeben zu haben, in dem Du nicht drin warst :wink:

Da entweder die durchaus entbehrliche kerneldoc weglassen oder einen Patch anwenden:
https://bugs.archlinux.org/task/62332
fürs weglassen dort der Kommentar von Andrej Podzimek und für den Patch der von shmilee

Sag ich doch, ständig neu installieren bringt nur Ärger, das ist eine Methode a la Windows :wink:
Aber sieh mal gründlich in den Einstellungen nach, manchmal verrutschen da die Einstellungen, ohne daß man drauf achtet. Ist mir schon mal bei den Grafikeinstellungen passiert.
Ansonsten mach für das Thema einen neuen Thread auf, wird sonst zu unübersichtlich hier.

viele Grüße gosia

#10

War ein Problem des Pakets bridge-utils. Dieser hat beim Installieren diesmal irgendwie versäumt bzw nicht geschafft eine bridge zu erstellen. Hab dann selbst ein Interface namens "bruecke0" erstellt.

Ich denke bzgl meines Iommu GPU Problem poste ich besser irgendwo, wo das Forum international und größer ist. Hier werde ich kaum jemanden antreffen der mein Problem ebenfalls hatte oder ne Lösung kennt :slight_smile:

#11

Hallo tomekk228,

dort bist Du ja eigentlich schon, Du musst nur ein paar Verzeichnisse höher rutschen :wink:
https://forum.manjaro.org/

viele Grüße gosia

#12

Hab ich gepostet (so gut ich kann). Zeitgleich auch im level1techs Forum. Nach 5 Tagen trotzdem keine Antwort. Mein Problem schien wohl selten zu sein.

Naja, ich habe es nun gelöst... und das so einfach, da ärgere ich mich jetzt über die verschwendete Zeit.

Bin inzwischen auch nach Arch gewandert, weil ich dachte das die etwas aktuelleren Pakete vielleicht den unterschied machen oder bzw das die Archwiki Einträge auf Archlinux zugeschnitten ist.

War aber auch kein Unterschied. Gab es die selbe Probleme.

Nachdem ich dann wieder einmal Archlinux neu aufgesetzt habe um alle möglichen Änderungen rückgängig zu machen, bin ich zufällig auf die Lösung gestoßen, die ich nicht mal verstehe warum die funktioniert.

Und zwar: alle nvidiatreiber blacklisten! Die Freien, die von nvidia, die alten, usw.

Und voila, es funktioniert. Es nicht mal nötig iommu per Kernelflag zu aktivieren. Man muss nichts konfigurieren oder ähnliches. Einfach Linux installieren, alle nicht benötigten Treiber blacklisten. Die nötigen GPU's per virt-manager gui durchreichen und fertig.

Das einzige was ich noch rausfinden muss, wieso Windows 7 oder Windows 8.1 unter kvm/libvirtd super schnell läuft, und Windows 10 1903/1809 braucht alleine um zu starten 15 Minuten. Installation von Windows 10 1903/1809 dauerte knapp 2 Stunden. Läuft total stotternd.

#13

Hallo tomek228,
so lösen sich manche scheinbar komplizierten Probleme, wenn man nur unkompliziert denkt :wink:
Blöd nur, daß ich da nicht auch draufgekommen bin, aber beim nächsten mal...
Zu Windows kann ich nix sagen.

viele Grüße gosia