PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : KVM - PCIE/GPU Passthrough mit GTX 860M



tbol.inq
25.11.14, 14:35
Hallo zusammen,

Im Zuge eines Notebook-Neukaufs habe ich, wie gewohnt, ein Linux-System installiert. Da die Kiste nun genügend Power hat, um ein paar Spiele zu zocken und ich wine nicht unbedingt als gute Alternative zu einem richtigen Windows sehe, wollte ich mit virtuellen Maschinen arbeiten. Schwuppdiwupp in KVM eingelesen und versucht eine Windows-Gaming-VM zu erstellen.

Jedoch bringt mich dieses Vorhaben echt zum Verzweifeln. Zunächst habe ich dieses Thema im LinuxMint-Forum (http://www.linuxmintusers.de/index.php?topic=22460.0) angesprochen, dort hat jedoch niemand reagiert. Da mein Post schon eine Weile her ist, sehe ich das nicht als Cross-Posting an. :)

Ist das PCI(e)-/VGA-/GPU-Passthrough mit einer NVIDIA GTX 860M überhaupt möglich, bzw. mit NICHT-Desktop-Grafikkarten im Allgemeinen?


Grüße,
tbol

DrunkenFreak
25.11.14, 14:58
Möglich sollte es sein. Du brauchst aber eine zweite Grafikkarte, die dir den Rest anzeigt. Du übergibts der VM das exklusive Recht auf diese Grafikkarte.

tbol.inq
25.11.14, 17:08
Die zweite bzw. erste Grafikkarte habe ich auch. Ist eine Intel HD 4600.

Hier nochmal der Auszug aus dem LinuxMint-Forum:



Hallo Community,

Habe derzeit Probleme mit dem Durchschleifen einer dedizierten NVIDIA GTX 860M auf meinem Notebook mit KVM/QEMU.

kurze Vorabinfos:
Gigabyte P34G V2 (Notebook)
Intel i7 mit VT-x/VT-d Support
Mainboard mit VT-x/VT-d Support

Auf dem Notebook befinden sich also eine Intel IGP und eine dedizierte NVIDIA-Grafikkarte. Gehalten habe ich mich an die Anleitung aus dem Arch-Forum (http://"https://bbs.archlinux.org/viewtopic.php?id=162768").

Also schnell alle nötigen Infos sammeln:


lspci -nn | grep NVIDIA

01:00.0 3D controller [0302]: NVIDIA Corporation GM107M [GeForce GTX 860M] [10de:1392] (rev a2)



Dann die Grafikkarte "unbinden" und an vfio-pci binden: (mittels Skript)

#!/bin/bash

modprobe vfio-pci

for dev in "$@"; do
vendor=$(cat /sys/bus/pci/devices/$dev/vendor)
device=$(cat /sys/bus/pci/devices/$dev/device)
if [ -e /sys/bus/pci/devices/$dev/driver ]; then
echo $dev > /sys/bus/pci/devices/$dev/driver/unbind
fi
echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id
done

vfio-bind 0000:01:00.0


Ein Test mit:

qemu-system-x86_64 --enable-kvm -M q35 -m 4096 -cpu host -smp 4,sockets=1,cores=4,threads=1 -bios /usr/share/qemu/bios.bin -vga none -device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port =1,chassis=1,id=root.1 -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunctio n=on,x-vga=on

schmeißt folgende Fehlermeldung:

qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunctio n=on,x-vga=on: vfio: Device does not support requested feature x-vga
qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunctio n=on,x-vga=on: vfio: failed to get device 0000:01:00.0
qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunctio n=on,x-vga=on: Device initialization failed.
qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunctio n=on,x-vga=on: Device 'vfio-pci' could not be initialized


Habe ich etwas vergessen? Ich kann mir beim besten Willen nicht vorstellen, dass das Gerät x-vga nicht unterstützt.
Starte ich die VM ohne das x-vga Feature, startet diese zwar, aber dmesg zeigt folgenden Output:

[ 6246.163088] vfio_ecap_init: 0000:01:00.0 hiding ecap 0x1e@0x258
[ 6246.163105] vfio_ecap_init: 0000:01:00.0 hiding ecap 0x19@0x900
[ 6248.396971] vfio-pci 0000:01:00.0: Invalid ROM contents



Und nun?

towo2099
25.11.14, 17:30
Das ist aber Optimus und der Nvidia wird gar keinen Displayout haben, sondern in den Intel-Framebuffer rendern, erge geht da kein VGA Passtrough.

tbol.inq
26.11.14, 00:30
Achso, das wusste ich nicht, Shit!
Gibt es dafür gar keine Lösung?

stefan.becker
26.11.14, 05:54
Installiere Windows Dual Boot. Alles andere ist doch in Krampf.

tbol.inq
26.11.14, 09:41
Hm... OK. Projekt Failed.

tbol.inq
01.12.14, 08:45
Hm... Wie kann ich herausfinden, ob die Ausgabe-Ports (VGA, HDMI) an die GPUs angeschlossen sind?
Ich habe die Hoffnung, dass der HDMI-Port über die NVIDIA-GPU läuft.

Jemand eine Idee?

tbol.inq
15.12.14, 08:16
und oder einfach beide GPUs durchreichen an eine VM?

stefan.becker
15.12.14, 22:31
Oder einfach Dual Boot?

Wenn ich morgens zur Arbeit fahre, dann kletter ich erst durch die Heckklappe meines Golfs, steige an der Beifahrerseite aus und fahre dann mit meinem Astra los. Ist zwar Schwachsinn, aber cool.

DrunkenFreak
16.12.14, 13:31
Astra und Golf cool? Klingt nach 90er... :ugly:

tbol.inq
27.02.15, 14:57
Oder einfach Dual Boot?

Wenn ich morgens zur Arbeit fahre, dann kletter ich erst durch die Heckklappe meines Golfs, steige an der Beifahrerseite aus und fahre dann mit meinem Astra los. Ist zwar Schwachsinn, aber cool.
Hierbei geht es nicht um Coolness und "sieh mal, was ich für einen kranken ****** gebaut habe".


Es ging um die Möglichkeit, meinen Laptop mit den Vorteilen von Virtualisierung sowohl als Bastelrechner (Linux-Distro-Test-Rechner, Virtualisierungsspielplattfrom, Treiber-Entwicklungsmaschine(da kann man schon mal oft booten müssen), ... ), als auch als Gaming-Maschine zu verwenden. Und das am besten ohne auch nur eine Maschine neustarten zu müssen, ohne alle anderen auch ins Nirvana jagen zu müssen. Bedarf und Sinn für solche Spielereien darf sich jeder gerne selber überlegen. Ich habe beides dafür. Tut mir Leid, dass dein Horizont so begrenzt ist.

Iluminat23
27.02.15, 18:56
Hi tbol,

ich bastele gerade an einem ähnlichen Project. Ist zwar keine GamingVM aber ich versuche mich auch am PCI passthrough. Naja gibt aber noch viele Probleme dabei. Die Nvidia Karten sind scheinbar ziemlich zickig beim Passthrough leider gibt es auch noch immer diverse Probleme bei den beteiligten S/W Komponenten. Ohne extrem Aktuellen kernel und höchst aktuellen qemu wird es wahrscheinlich garnichts. Und selbst dann kann es sein, dass du das alles selber kompilieren und patchen musst. Ist leider alles noch nicht so ganz fertig.

Ich würde dir aktuell auch eher zu der dualboot lösung raten. Immer mal wieder schauen was sich getan hat und ob es nicht doch mal klappt ist aber auch nicht verkehrt.

Viele Grüße

iluminat23

stefan.becker
27.02.15, 20:11
Glaube mir, mein Horizont ist nicht begrenzt, nur kenne ich diese Frage. Ich nutze VMWARE seit Version 1.0 (vermutlich als einer der ersten in D, gekauft per Kreditkarte direkt aus den USA).

Schon seit Jahren wird das immer wieder gefragt.

Es macht keinen Sinn. Eine VM frisst immer Performance. Und die wird dir dann beim Gaming fehlen. Grafik ist ja nicht alles, auch an anderen Stellen ist eine VM immer langsamer als native Lösung. Und beim schlechten Sound wirst du bei Spielen das nächste Problem haben.

Wie bereits zweimal gesagt: Nutze Dual Boot für so was. Da geht auch alles problemlos.

tbol.inq
27.03.15, 14:15
Es macht keinen Sinn. Eine VM frisst immer Performance. Und die wird dir dann beim Gaming fehlen. Grafik ist ja nicht alles, auch an anderen Stellen ist eine VM immer langsamer als native Lösung. Und beim schlechten Sound wirst du bei Spielen das nächste Problem haben.


Dass eine VM Performance frisst, dessen bin ich mir im Klaren. Zum Glück ist diese ja reichlich vorhanden ;)
Die Sound-Problematik lässt sich mit NetJACK oder Passthrough des Soundgerätes umgehen.



Wie bereits zweimal gesagt: Nutze Dual Boot für so was. Da geht auch alles problemlos.


Danke für den Hinweis. Ich werde es trotzdem weiter versuchen.



Ich frage mich, wie man wohl das Problem des fehlenden Framebuffers umgehen könnte...

virtueller Framebuffer?
beide GPUs durchreichen?
Gibt es virtuelle Grafikkarten, an die ich den Input der NVidia Karte, der in den Framebuffer des IGP geschribeen wird, senden kann?
Oder wenn ich einfach beide Grafikkarten passthroughe (also IGP + NV)?
Oder eine Kombination aus Kvm-GT/XenGT + PCI Passthrough der NVidia Grafikkarte

linux-freund23
27.03.15, 21:28
Wie bereits zweimal gesagt: Nutze Dual Boot für so was. Da geht auch alles problemlos.
Danke für den Hinweis. Ich werde es trotzdem weiter versuchen.
Nur mal so nebenbei: Finde ich gut so!
Ist doch gut das jemand versucht Mittel und Wege zu finden um auch ohne Dual-Boot mit QEMU/KVM eine gute Gaming-Performance zu erreichen!
Falls eine Möglichkeit gefunden wird hilft das sämtlichen Usern zukünftig weiter und bringt die Community voran im Gegensatz zu Kommentaren wie "Mach doch einfach Dual-Boot und erspar´ Dir und uns diesen Zirkus"!! Ich kann diese Anti-Haltung gegenüber dem Bedürfnis alternative neue Möglichkeiten finden zu wollen einfach nicht verstehen.

stefan.becker
27.03.15, 21:54
Wenn ihr was erreichen wollt, dann dürft ihr nicht nur Fragen stellen.

Selbst ist der Mann. Lesen, probieren, testen.

Vom gegenseitig auf die Schulter klopfen hat niemand was. Anpacken wäre dann eher angesagt. Sprich aktiv in Foren bei KVM/Qemu mitarbeiten, Sachen ausprobieren, Ergebnisse posten, Anleitungen schreiben etc.

Es gibt viele Wege, sich da einzubringen.

Wenn ihr das hinbekommt, großes Lob.

Nur wie gesagt: Vom Fragen stellen alleine kommt da nichts.

Rainer Juhser
27.03.15, 21:54
Ich kann diese Anti-Haltung gegenüber dem Bedürfnis alternative neue Möglichkeiten finden zu wollen einfach nicht verstehen.Diese Haltung ist nur ein gesunder Realitätssinn, sonst nichts. Träum weiter.... ansonsten:
Wenn ihr was erreichen wollt, dann dürft ihr nicht nur Fragen stellen.

Selbst ist der Mann. Lesen, probieren, testen.

Vom gegenseitig auf die Schulter klopfen hat niemand was. Anpacken wäre dann eher angesagt. Sprich aktiv in Foren bei KVM/Qemu mitarbeiten, Sachen ausprobieren, Ergebnisse posten, Anleitungen schreiben etc.

Es gibt viele Wege, sich da einzubringen.

Wenn ihr das hinbekommt, großes Lob.

Nur wie gesagt: Vom Fragen stellen alleine kommt da nichts.

tbol.inq
18.09.15, 15:20
Vielleicht ein Lichtblick...

Wenn KVMGT irgendwann mal Windows-Guests unterstützen sollte, wäre es eventuell möglich, auch die NVIDIA-Karte durchzuschleifen, da sie ja dann wieder in einen Intel-HD-Framebuffer schreiben könnte

stefan.becker
19.09.15, 18:36
Bis dahin wirst du kein Interesse mehr daran haben :)

tbol.inq
21.09.15, 13:36
Ich bin geduldig, danke :)

tbol.inq
29.08.16, 10:20
Es scheint Bewegung zu diesem Thema zu geben:
PCIe Passthrough with Intel GVT + NVIDIA GTX 860M Optimus (https://www.redhat.com/archives/vfio-users/2016-July/msg00047.html)

In der Antwort auf die Frage, die meiner 1 zu 1 gleicht, gab es eine Antwort wird behauptet, dass es funktioniert.

Es ist ein altes Thema, aber vielleicht hat der ein oder andere ja noch Bedarf dafür.

Ich werde das Ganze mal testen und schauen, ob es funktioniert. Wenn ja, lasse ich ein kleines Tutorial dazu ins Forum fließen.
Der Traum eines Linux Gaming Notebooks mit virtualisierter GPU rückt immer näher.


Grüße,
tbol.inq