# Erfahrungen zu GPU-passthrough unter Linux Mint mit AMD-CPU und Geforce-GraKa



## Butch1ng3r (1. März 2017)

Hallo liebe PCGH-Community,

also... ich bin 100%tiger Neuling in diesem Forum und hoffe nun hier zu meinem Anliegen Antworten und hoffentlich einen regen Erfahrungsaustausch zu finden.

Bei mir geht es um ein kleines Projekt, dass auf einem neuen System beruht und wo ich plane auf diesem gpu-passthrough auf Linux Mint OS zum laufen zu bekommen.
Vorab... sollte der Fall vorliegen, dass ein vergleichbarer thread schon vorliegen sollte, den ich über die Suchfunktion nicht gefunden habe, dann bitte einfach die entsprechende URL posten.
Achja... bitte keine Posts, die sich nur darauf beziehen, dass Dual-Boot ja viel besser und einfacher wäre.... Der Weg ist mir durchaus bekannt aber mir geht es darum gpu-passthrough zu etablieren.

Das grundlegendste zuerst und zwar die Hardware, die ich für das neue System plane

CPU: AMD Ryzen 1700X
Mainboard: Eines mit B350Chpisatz => Hier wurde noch keine Kauf-Entscheidung getroffen, da ich die ersten Test-Berichte abwarten wollte
GraKa 1 (für Gast-OS auf virtueller Maschine): MSI GTX 980Ti Gaming 6G
GraKa 2 (für Host-OS Linux Mint): MSI Geforce GT710
Arbeitsspeicher: Corsair DIMM 16 GB DDR4-2666 Quad-Kit
Festplatten: 256 GB SSD über M.2 für OS, 2 x 1 TB HDD Festplatten für restliche Daten


Auf diesem System soll Linux Mint 18 als OS laufen und Win10 auf einer VM mit GPU-passthrough zum Spielen... Also zumindest ist dies das Ziel meines Projekts und ich hoffe dies auch zum laufen zu bekommen.

Folgende Anleitungen habe ich raus gesucht, auf denen die Fragen, die zunächst bei mir aufgekommen sind, beruhen
1) HOW-TO make dual-boot obsolete using XEN VGA passthrough - Linux Mint Forums
2) https://forums.linuxmint.com/viewtopic.php?f=231&t=212692
3) GPU Passthrough Guide –


*Frage bzgl. Virtualisierung bei Nutzung einer AMD-CPU*

Hier ist die Frage zunächst ob die neuen Ryzen CPU's auch AMD-V bzw. IOMMU unterstützen? Ich gehe aktuell davon aus... Bin mir aber noch nicht zu 100% sicher...

Zudem wird in Anleitung *2)* beschrieben, dass bei Intel-CPU eine große Varianz in IOMMU-Support zwischen den CPU's und CPU-Generationen vorliegt.
Gilt dies auch für AMD CPU's?
Hat jmd. von euch schon Erfahrungen in Virtualisierung mit AMD-CPU's gemacht?
Besteht im worst-case die Gefahr, dass die neuen Ryzen CPU's eher ungeeignet für Virtualisierung und/oder für ein System mit gpu-passthrough sind?


*gpu-passthrough mit Geforce Grafikkarten*

In *1)* wird beschrieben, dass außer "Multi-OS"-Karten die Geforce Grafikarten von Nvidia für einen passthrough nicht geeignet sind und dass ein sogenannter "soft-mod" benötigt wird . Bei *1)* liegt die Situation vor, dass XEN als VM genutzt wird. In den Anleitung *2)* und *3)* wird KVM als VM genutzt und eine Untauglichkeit von Geforce wird nicht erwÃ¤hnt.
Kann es sein, dass Geforce-Grafikkarten ausschließlich bei Nutzung von XEN nur eingeschränkt nutzbar sind?
Und bei Nutzung von KVM keine zusätzlichen Schwierigkeiten vorliegen?
Hat hier jemand Erfahrungen mit Geforce-Grafikkarten?


Nun gut soweit... Für eure Anregungen und das Teilen eurer Erfahrung bedanke ich mich schonmal vielmals im Voraus 

Vielleicht entsteht hier auch noch eine rege Diskussion, welche vllt. auch Aspekte aufdeckt, die ich aktuell noch garnet sehe und aus der vllt. bestenfalls auch andere profitieren können... würde mich auf jeden Fall freuen


----------



## Mate-Tee (5. März 2017)

Hallo,

ein interessantes Projekt hast du dir da vorgenommen, deshalb habe ich mich auch mal hier angemeldet.

Die Ryzen CPUs sollten grundsätzlich eine IOMMU haben. Die frage ist wohl, ob die jeweiligen Mainboards die IOMMU im Bios/UEFI auch aktivieren lassen. Dazu habe ich mir mal ein paar Anleitungen von Mainboards angesehen. Dabei viel mir das ASRock AB350M Pro4 auf, da ich mich persönlich eher für mATX Boards interessiere und dieses sowohl eine Einstellung zum aktivieren der IOMMU hat, als auch 2 mechanische PCIe 16x Slots.

Ich habe mal ein wenig recherchiert und dabei gefunden, dass das Problem wohl eher nicht eine fehlende IOMMU bei Ryzen ist, sondern die IOMMU Gruppen. Dies ist wohl auch schon bei den neueren Intel Plattformen ein Problem. Am besten ist es, wenn die Grafikkarte, die man an die Virtuelle Maschine durchreichen will, eine eigene IOMMU Gruppe besitzt und somit isoliert ist. Dann kann die Grafikkarte von dem Host System isoliert werden und der VM durchgereicht werden. Wenn sich nun andere Geräte wie z.B. Netzwerk oder USB ebenfalls in dieser IOMMU Gruppe der Grafikkarte befinden, müsste man diese Geräte ebenfalls durchreichen. Dafür gibt es jedoch einen Kernel Patch, der die Grafikkarte irgendwie doch isoliert. Und dadurch komme ich zum nächsten Punkt:

Ryzen benötigt unter Linux wohl einen recht neuen Kernel,  da Anpassungen durch die neue CPU Architektur notwendig sind. Linux Mint basiert ja auf den LTS Versionen von Ubuntu oder auf Debian, daher dürfte der Kernel zu alt sein. Du würdest um das selbst kompilieren wohl nicht herumkommen, insbesondere wenn man den oben angesprochenen Kernel Patch beachtet. Dazu bietet Arch Linux im AUR bereits einen Eintrag: https://aur.archlinux.org/packages/linux-vfio/
Generell bietet sich Arch Linux aufgrund der Aktualität der Pakete an und auch im Arch-Wiki gibt es einen Eintrag: PCI passthrough via OVMF - ArchWiki
Wobei man sicher bei Linux Mint mit PPAs oder selber kompilieren auch eine gewisse Aktualität herstellen kann.

Zu der Hardware fällt mir noch ein, dass Ryzen 24 PCIe 3.0 Lanes bietet. Dafür gehen 16 für die Grafikkarte drauf, 4 für den Chipsatz und 4 für die M.2 SSD. Doch was ist mit der 2. Grafikkarte für das Host Linux? Die benötigt ja auch noch eine Anbindung.

Zu Nvidia Grafikkarten kann ich leider nicht viel sagen, da ich bisher nur AMD Verwendet habe. Auch bei XEN muss ich passen, da mir die Variante mit KVM/QEMU immer irgendwie runder und aktueller erschien. Bisher hatte ich mal ein System mit einem FX-8350 und Board mit dem FX Chipsatz am laufen.


----------



## Hatuja (6. März 2017)

Ich hänge mich hier mal mir dran. Ich hatte mich mit dem Thema vor einiger Zeit auch mal beschäftigt, es dann aber fürs erste verworfen.
Finde es aber weiterhin spannend und habe vor, es beim nächsten Plattformwechsel wieder zum Thema zu machen.

Wie gut AMDs RyZen mit Virtualisierung umgehen kann, wird sich erst noch zeigen müssen. Grundsätzlich werden sie es wohl unterstützen, aber nur die Glaskugel weiß, wie stabil und performant es sein wird. Du musst auf dann auf jeden Fall darauf achten, dass sowohl die CPU als auch der PCH die Techniken unterstützen. Bei Intel zumindest können nur die "großen" CPUs in Zusammenspiel mit einem "großen" PCHs aus den Vollen schöpfen.

Außerdem solltest du, wie Mate-Tee schon anmerkte, auf die PCIe Lanes achten. Ich weiß nicht wie viele der B350 zu Verfügung stellt, aber die zweite GPU sollte "eigenständig" angebunden sein.  Ein 8/8 sharing mit der "Host-GPU" könnte zu Problemen beim durchreichen führen.


----------



## Die_Himbeere (7. März 2017)

Ich hänge mich ebenfalls mal hier mit dran.

Bin schon eine Weile auf der Suche nach der passenden Hardware dafür. Meine aktuelle Plattform (bzw CPU+MoBo) supported leider keine IOMMU und nun steht ein Wechsel an.

Nun stellt sich die Frage: auf eine ältere Plattform, möglicherweise Gebraucht, zu setzen, somit eventuell Abstriche zu machen oder ein Ryzen Unterbau, der sehr Anwendungsstark ist und verglichen zu meiner HW auch in Spielen das etwa gleiche bringt.

Im Netz war ich bisher noch nicht erfolgreich ein funktionierendes GPU Passthrough System- auf Ryzen Basis - , geschweige denn einen Versuch dazu, zu finden. Falls da jemand Infos hat oder findet -> immer her damit


----------



## Shutterfly (8. März 2017)

Moin moin,

ich habe nun keine Zeit all das durchzulesen aber ich denke, dass Wissen könnte interessant sein: Derzeit scheinen bei vielen Boards die IOMMU-Groups noch nicht sauber zu sein, d.h. man muss sich selbst einen Kernel mit ACS Patch bauen, siehe hierzu:

Allgemeiner Ryzen Laberthread

Grundsätzlich gehe ich von folgendem aus: Ryzen wird kein Problem mit AMD-Vi haben. AMD war hier schon immer Vorreiter und hatte in den Consumer CPUs dieses Feature schon lange bevor Intel es angeboten hat. Problem werden die Boards sein, welche AMD-Vi sauber unterstützen müssen. Das scheint im Moment nur bedingt zu funktionieren, s.o.

Wenn das Board dies aber unterstützt, dann sollte es keine Probleme mit AMD-CPU und VM inkl. Passthrough geben. Ich empfehle dir hier jedoch ein aktuelles OS samt aktuellem Kernel um das Maximum an Leistung raus zu holen. Arch-Linux ist dein Freund, hehe 

Zum Thema nvidia: nvidia möchte nicht, dass man Consumer GPUs in VMs nutzt. Dafür soll man die teuren Quadros kaufen. Wenn man eine nvidia GPU an eine Windows VM durchreicht, dann begrüßt einen der tolle Error 43 und die Treiber werden nicht akzeptiert. Dieses Problem kann man beheben indem man den Hypervisor vor dem Gast versteckt, dann klappt dies auch mit nvidia GPUs problemlos. Nutze selbst eine Windows VM mit GTX 970 (siehe Signatur), jedoch halt auf Intel-CPU.

So, hab nun nicht mehr Zeit. Hoffe wenigstens etwas geholfen zu haben.

Wenn ich Zeit finde, schaue ich mir den Thread die Tage mal in Ruhe an.


----------



## blazethelight (26. September 2017)

Hallo zusammen. 

Super Thread. 
Ich klinke mich hier auch gerne bei Zeit ein. 


Ich würde gerne eure Beratung haben für folgende Wunschsituation für eine Lab / LAN Game / WS :

- GPUs Im Formfaktor Single Slot (Ausbeute X16 Lanes) und Wakü kompatibel (Referenzlayout) am besten Effizient (bereits ca. 300 Watt ohne GPUs) 
- GPU Passthrough für alle Hypervisor (KVM, Xen, Hyper-V, ESXi etc.) inkl. Treibersupport (Bei Nvidia z.B. P4000, Nvidia S7100 WC ein muss? Für mehr als zwei dedicated GPU Passthrough sind Nvidia Tesla ein muss? )
- Gute Bare Metal Performance (Gaming, Mining, CAD (CUDA ist kein muss) und keine Instabilität wegen Treibern. 
- Viele 240 GB SSDs mit wenig iops vs 2x große SSDs in Raid 0 hohe iops? 
- Unraid & Synergy nötig?

Bereits vorhandene HW :sysProfile: ID: 157161 - blazethelight

Danke euch für eure Hilfe. 







Gesendet von meinem SM-G930F mit Tapatalk


----------



## Tekkla (4. Oktober 2017)

Dieses Thema treibt auch mich um. Mit Dualboot bin ich nicht zu frieden und bei Windows Host und Linux Guest reicht mir die Perfomance des Gastes nicht. Ich würde auch liebend gerne als Host Linux haben wollen und fürs Zocken die Graka einfach an den Guest binden. Ich habe aber noch eine Verständnisfrage.

Beim Monitor kann ich ja einfach die Bildquelle ändern und dann die Ausgabe des Guests sehen. Aber wie läuft das mit den Eingabegeräten? Wenn ich das richtig verstehe, dann hat der Guest oder der Host Zugriff auf die Tastatur bzw Maus, richtig?


----------



## emperator (5. Oktober 2017)

Synergy löst das Maus/Tastatur Problem, alternativ auch ein KVM-Switch oder zb. bestimmte Logitech Mäuse/Tastaturen (Multi-Device) die mehrere Unify-Empfänger unterstützen.


----------



## GertPfert (15. Dezember 2017)

Hallo zusammen,

ich hänge mich mal hier mit ran, da ich mein GPU Passthrough bereits seit Anfang 2016 im Einsatz habe und daher auch den einen oder anderen Fallstrick kenne.

Bei mir ist folgendes im Einsatz:

i7 6700k
Graka Host: iGPU -> also die des Prozessors
Graka Guest: zuerst R9 390x, mittlerweile GTX 1070 ti

Host OS: Antergos -> Derivat von Arch Linux, also mit Rolling Release
Guest OS: Windows 10

Um überhaupt etwas an den Start zu bekommen hat mir extrem der folgende Forenbeitrag geholfen. Hier hat der Kollege wirklich ein spitzen Schritt-für-Schritt Anleitung für Arch und Derivate wie auch für Debian und Derivate geschrieben.

How to setup a gaming virtual machine with GPU passthrough (QEMU, KVM, libvirt, and VFIO) | Se7enSins Gaming Community

Von meiner Seite habe ich mich sehr an diese Anleitung gehalten aber noch etwas angepasst. Unter anderem habe ich den emulierten Sound herausgeworfen und nutzen mittlerweile lediglich den Sound der Graka. 

Des weiteren habe ich mir, eine USB 3.0 PCI-Express Erweiterungskarte gekauft und diese per PCI Passthrough an die VM weitergeben. Mithilfe eines einfachen USB Switches für 10 € kann ich nun per Knopfdruck meine Eingabegeräte zwischen Host und Guest switchen. Außerdem habe ich noch eine zusätzliche LAN Karte für 8 € gekauft um diese direkt dediziert für den Guest laufen zu lassen. Das habe ich aus Gründen der Netzwerk Performance gemacht.

---------------------------

Fallstrick Nvidia Graka (Code 43):

Ein "Bug" verhindert, dass ihr eurer Nvidia Graka ohne etwas zu tricksen in der VM laufen zu lassen. Mit einem kleinen Workaround kann ich nun ganz gut arbeiten.

So sieht meine XML standardmäßig aus, erhalte so aber immer den Code 43 im Geräte Manager von Windows nach der Installation des Graka Treibers.

  <features>
  ...
  <hyperv>
  <relaxed state="on" />
  <vapic state="on" />
  <spinlocks state="on" retries="8191" />
  <vendor_id state='on' value='whatever'/>
  </hyperv>
  <kvm>
  <hidden state='on'/>
  </kvm>
  ...
  </features>

Anscheinend prüft aber der Treiber nur bei der Installation,  ob die Karte in einer VM läuft. Wenn ich also eine neue Treiber Version installiere, kürze ich den oben genannten Teil folgendermaßen, starte damit die VM und installiere den Treiber.

  <features>
  ...
  <hyperv>
  <vendor_id state='on' value='whatever'/>
  </hyperv>
  <kvm>
  <hidden state='on'/>
  </kvm>
  ...
  </features>

Sobald der Treiber installiert ist und auch kein "Code 43" angezeigt wird, starte ich die VM mit den Standardwerten neu und alles läuft, wie es soll. Ihr könnt natürlich  die entsprechenden Einträge auch dauerhaft raus lassen, allerdings soll sich das dann negativ auf die Performance der VM auswirken.

Wenn ihr noch Fragen habt, versuche ich diese gerne zu beantworten.

MfG
GertPfert


----------

