# Manjaro PCI Passtrough Probleme



## joessli (14. Juli 2019)

N'Abend zusammen.
Ich hoffe, jemand kann mir einen Rat geben, bin mit meinem Latein langsam am Ende.

*Mein System:*
AMD Ryzen 2700X
Mainboard: ASUS Prime X470 PRO
RAM: 32 GB 
Host SSD 512GB Samsung 256pro
Guest SSD 512 GB M.2
Host Graka im 1. PCIE Slot: GT730
Guest Graka im 2. PCIE Slot: GTX1070

*Zum Problem:*
Habe mir via diese Anleitung: PCI passthrough via OVMF - ArchWiki und per Virtual Machine Manager ein Win10 aufgesetzt.

Wenn ich nun im Virt Manager die GTX1070 durchreiche, habe ich nur ein schwarzes Bild. Die Lüfter drehen auch nicht. Die Graka und der Bildschirm sind i.o. , da ich noch ein Dual Boot besitze und im Win dort alles geht.
Im UEFI habe ich SVN und IOMMU aktiviert.
Habe nun alle möglichen Foren und Tutorials abgeklappert 




Gemäss *dmesg | grep -i vfio* sieht alles soweit gut aus

[    1.612096] VFIO - User Level meta-driver version: 0.3
[    1.615715] vfio-pci 0000:0a:00.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=none
[    1.630073] vfio_pci: add [10de:1b81[ffffffff:ffffffff]] class 0x000000/00000000
[    1.646760] vfio_pci: add [10de:10f0[ffffffff:ffffffff]] class 0x000000/00000000
[   11.313980] vfio-pci 0000:0a:00.0: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=none


Meine *vfio.conf* sieht folgendermassen aus:
options vfio-pci ids=10de:1b81,10de:10f0
options vfio-pci disable_vga=1

wobei 10de:1b81 meine GTX1070 ist.

$ *lspci -nnk -d 10de:1b81*
0a:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP104 [GeForce GTX 1070] [10de:1b81] (rev a1)
	Subsystem: ASUSTeK Computer Inc. GP104 [GeForce GTX 1070] [1043:8599]
	Kernel driver in use: vfio-pci
	Kernel modules: nouveau, nvidia_drm, nvidia



Die */etc/mkinitcpio.conf*
# vim:set ft=sh
# MODULES
# The following modules are loaded before any boot hooks are
# run.  Advanced users may wish to specify all system modules
# in this array.  For instance:
#     MODULES=(piix ide_disk reiserfs)
MODULES="vfio_pci vfio vfio_iommu_type1 vfio_virqfd"


# BINARIES
# This setting includes any additional binaries a given user may
# wish into the CPIO image.  This is run last, so it may be used to
# override the actual binaries included by a given hook
# BINARIES are dependency parsed, so you may safely ignore libraries
BINARIES=()


# FILES
# This setting is similar to BINARIES above, however, files are added
# as-is and are not parsed in any way.  This is useful for config files.
FILES=""


# HOOKS
# This is the most important setting in this file.  The HOOKS control the
# modules and scripts added to the image, and what happens at boot time.
# Order is important, and it is recommended that you do not change the
# order in which HOOKS are added.  Run 'mkinitcpio -H <hook name>' for
# help on a given hook.
# 'base' is _required_ unless you know precisely what you are doing.
# 'udev' is _required_ in order to automatically load modules
# 'filesystems' is _required_ unless you specify your fs modules in MODULES
# Examples:
##   This setup specifies all modules in the MODULES setting above.
##   No raid, lvm2, or encrypted root is needed.
#    HOOKS=(base)
#
##   This setup will autodetect all modules for your system and should
##   work as a sane default
#    HOOKS=(base udev autodetect block filesystems)
#
##   This setup will generate a 'full' image which supports most systems.
##   No autodetection is done.
#    HOOKS=(base udev block filesystems)
#
##   This setup assembles a pata mdadm array with an encrypted root FS.
##   Note: See 'mkinitcpio -H mdadm' for more information on raid devices.
#    HOOKS=(base udev block mdadm encrypt filesystems)
#
##   This setup loads an lvm2 volume group on a usb device.
#    HOOKS=(base udev block lvm2 filesystems)
#
##   NOTE: If you have /usr on a separate partition, you MUST include the
#    usr, fsck and shutdown hooks.
HOOKS="base udev autodetect modconf block keyboard keymap filesystems"


# COMPRESSION
# Use this to compress the initramfs image. By default, gzip compression
# is used. Use 'cat' to create an uncompressed image.
#COMPRESSION="gzip"
#COMPRESSION="bzip2"
#COMPRESSION="lzma"
#COMPRESSION="xz"
#COMPRESSION="lzop"
#COMPRESSION="lz4"


# COMPRESSION_OPTIONS
# Additional options for the compressor
#COMPRESSION_OPTIONS=()



Vielen Dank 
Gruss joessli


----------



## lunaticx (15. Juli 2019)

Bootet dein Windows in der virtuellen Umgebung komplett durch?
Das heißt du hast zwar kein Bild, kannst die Maschine aber anpingen?

Hast du mal geprüft ob die Grafikkarten in verschiednen IOMMU-Gruppen sind?

Der Libvirt-Eintrag der auf das UEFI-Bios für die virtuelle Maschine zeigt stimmt? Das heißt der Pfad ist richtig?


----------



## joessli (15. Juli 2019)

Ja Windows bootet. Es hat sogar einmal geklappt, jedoch nur auf den zweiten pci slot. Beim tauschen der grakas hab ich dann leider mein Mainboard geschrottet [emoji12]
Mit dem neuen klappts nun nicht mehr.
Die grakas sind in unterschiedlichen Iommu Gruppen. 
Der libvirt Eintrag ist auch korrekt auf die UEFI Firmware. 
Mit nem lokalen Spice Anzeige bootet die VM auch tadellos 

Gesendet von meinem ONEPLUS A6013 mit Tapatalk


----------



## DOcean (15. Juli 2019)

Wo hängt welcher Monitor dran?

An beiden Garaka muss ein Monitor hängen (bzw ein Eingang eines Monitors).


Starte mal ohne die NV Treiber , dann geht deine "kleine" Graka zwar nur im Host Modus aber Versuch ist es wert...


----------



## joessli (15. Juli 2019)

An der gt730 hängt ein 15 Zoll per vga und an der 1070 der 27 Zoll per Display Port.
Du meinst, den Treiber in der grub.cfg auszuschliessen? Bin gerade auf Arbeit, werde es am Abend testen. Aber eig lädt er ja den vfio treiber

Gesendet von meinem ONEPLUS A6013 mit Tapatalk


----------



## lunaticx (15. Juli 2019)

hast du die beiden PCI-Devices (Graka + HDMI-Sound) der virtuellen Maschine zugeordnet / eingehängt?

Wann hat es denn einmal geklappt? Mit dem alten oder dem neuen Board?
Gleiches Board nachgekauft oder ein anderes?


----------



## joessli (15. Juli 2019)

Jep graka plus sound hab ich im virt Manager zugeteilt.
Es war dasselbe Mainboard. Mit dem alten hab ich es zum laufen gebracht, jedoch nur auf den zweiten pci slot. Deswegen ist die 1070 dort gesteckt 

Gesendet von meinem ONEPLUS A6013 mit Tapatalk


----------



## joessli (15. Juli 2019)

Also, habe nun den nvidia Treiber komplett entfernt, jedoch funktioniert Passtrough immer noch nicht.. 

Gesendet von meinem ONEPLUS A6013 mit Tapatalk


----------



## Arkintosz (15. Juli 2019)

Es bestätigt das, was ich bisher über PCIe-Passthrough mit NV-Karten gehört habe, aber leider kann ich nicht viel mehr dazu beitragen. Ich habe das bisher mit AMD-Karten gemacht (testweise) und da ging es letztlich erstaunlich einfach.

Du könntest höchstens noch versuchen, statt OMVF das SeaBios zu verwenden. Dazu müsste es genügen, den Befehl _qemu-system-x86_64_ ohne die OMVF-Parameter auszuführen.


----------



## lunaticx (16. Juli 2019)

Arkintosz schrieb:


> Es bestätigt das, was ich bisher über PCIe-Passthrough mit NV-Karten gehört habe, aber leider kann ich nicht viel mehr dazu beitragen.



Und was hast du gehört?

@joessli
Hast du zwischendrin ein Update gemacht oder ähnliches?
Hast du nochmals das initramfs neu erzeugt?

Problem an der Sache ist, das ganze PCI-Passthrough-Geraffel hatte ich auch mal am laufen ... und ein ähnliches (vll auch gleiches) Problem.
Allerdings fällt mir nicht mehr die Lösung ein 

Edit:

Hast du mal die folgenden Punkte im Guide durchgearbeitet:



> PCI passthrough via OVMF - ArchWiki





> PCI passthrough via OVMF - ArchWiki


----------



## joessli (16. Juli 2019)

@joessli
Hast du zwischendrin ein Update gemacht oder ähnliches?
Hast du nochmals das initramfs neu erzeugt?

Problem an der Sache ist, das ganze PCI-Passthrough-Geraffel hatte ich auch mal am laufen ... und ein ähnliches (vll auch gleiches) Problem.
Allerdings fällt mir nicht mehr die Lösung ein 

Edit:

Hast du mal die folgenden Punkte im Guide durchgearbeitet:[/QUOTE]


Die initramfs hab ich bereits mehrmals neu generiert.
Diese Punkte hab ich noch nicht probiert, jedoch denke ich nicht, dass es an der UEFI Datei liegt, da die VM ja bootet.

Edit: Was wichtiges habe ich vergessen zu erwähnen, als ich das neue Mainboard installiert habe, hat Passtrough zuerst funktioniert. Habe dann wegen evtl Upgrade auf die neuen Ryzen CPUs das UEFI aktualisiert und danach ging Passtrough nicht mehr. Jedoch kann ich kein Downgrade machen.
Iommu, SVN ist aktiv. Hab auch testeshalber Single Root i/o aktiviert 

Gesendet von meinem ONEPLUS A6013 mit Tapatalk


----------



## lunaticx (16. Juli 2019)

joessli schrieb:


> Edit: Was wichtiges habe ich vergessen zu erwähnen, als ich das neue Mainboard installiert habe, hat Passtrough zuerst funktioniert. Habe dann wegen evtl Upgrade auf die neuen Ryzen CPUs das UEFI aktualisiert und danach ging Passtrough nicht mehr. Jedoch kann ich kein Downgrade machen.
> Iommu, SVN ist aktiv. Hab auch testeshalber Single Root i/o aktiviert
> 
> Gesendet von meinem ONEPLUS A6013 mit Tapatalk



Könnte das Bios-Upgrade gewesen sein.

Zumindest MSI hat PCI-Passthrough nach einem Bios-Upgrade gebrickt.

MSI X370 BIOS update breaks GPU passthrough : VFIO

Keine Ahnung ob das auch für dein Asus-Board gilt.


----------



## joessli (16. Juli 2019)

Das wäre gut möglich, weisst du, wie man ein Downgrade machen kann? 

Gesendet von meinem ONEPLUS A6013 mit Tapatalk


----------



## lunaticx (17. Juli 2019)

Keine Ahnung, müsste aber generell möglich sein.

Evtl auf der Herstellerseite oder Handbuch nachschaun.


----------

