AMD RyZEN + Xen + Linux? (Ziel: VGA-pass-through)

Bigfoot29

Commander
Registriert
Juni 2007
Beiträge
2.361
Hi,

ich wollte fragen, ob es schon jemand geschafft hat, AMDs RyZEN Prozessor mit Xen unter Linux zum Laufen zu bekommen.

Zuletzt getestet: Debian 9 (Kernel 4.9) und Ubuntu 17.04 (Kernel 4.10) jeweils mit den ihnen eigenen Xen-Paketen. Beides führt sowohl mit einer nVidia (1080) als auch einer AMD (7850) Grafikkarte zu einem instant-Reboot, sobald der Linux-Kernel versucht, zu laden (Xen lädt erstmal, Linux versucht es und dann wird der Bildschirm bis zum nächsten Bios-Screen recht dunkel...). Auch ein Deaktivieren des HyperThreadings (braucht aktuell der ESXi, um überhaupt installierbar zu sein) bringt keine Veränderung. Für die Xen-Tests lief das MoBo in der einfachsten Konfiguration. Nicht übertaktet und nur mit der 7850 im PEG. BIOS-Revision: 0905

Relativ problemlos läuft KVM auf beiden Distributionen. Leider gibt es dort aber noch massive Probleme mit den IOMMU-Gruppen. Eine in einer VM zugewiesene GraKa (7850) wird zwar erkannt, führt aber auch ohne ACS-Patch zu einem Freeze der VM (Windows) bzw. die Graka wird nicht erkannt (Linux, sowohl radeon als auch amdgpu). Auf der Host-Seite wurden sämtliche Treiber für die Grafikkarte per stub-Treiber deaktiviert und am Laden gehindert (blacklisted). lspci bestätigt das auch. Der ACS-Patch ist auch nicht notwendig, da die 7850 ihre eigene IOMMU-Gruppe hat, denn: Verwendet wird das ASUS Chrosschair Hero VI, welches mit seinen 3xPCIex16-Ports zumindest mit ein paar Tricks die 7850 im Primären Grafikkarten-Slot erlaubt. (Die 1080 läuft im 3. Port mit x4, Port 2 bleibt leer. Das System bootet zwar erstmal von der 7850, stellt aber später dessen Funktion ab/auf die 1080 um.)

Hat irgend jemand von euch schon Xen unter RyZEN zum Laufen bekommen?
Wenn ja, mit welcher Distribution? Bzw. welchem Kernel? Und welcher Xen-Version?
Oder hat schon jemand KVM mit VGA-Pass-Through mit RyZEN zum Funktionieren überreden können?
Wenn ja, mit welchen Settings?

Danke vorab!

Regards, Bigfoot29

PS:
1) Mir ist klar, dass ne 1080 auf x4 nicht 100% Leistung bringt. Geht erstmal ums Prinzip. Hab noch ne 520, die die Stelle der 1080 übernehmen wird, FALLS die Konfiguration irgendwann mal läuft.
2) ACS möchte ich vermeiden, wenn es geht. Einerseits ist das für INTEL CPUs entwickelt, andererseits sorgt die Aufhebung der IOMMU-Isolierungen für Probleme der Komponenten untereinander. Daher freue ich mich zwar auch über erfolgreich getestete HowTos, die mit ACS arbeiten, primär wäre mir aber eine Lösung OHNE ACS lieber. Auf Ubuntu 17.04 ließ sich im April der "Ubuntu-Kernel" aus den Ubuntu-Quellen mit den Distributionseigenen Settings übrigens nichtmal bauen.
 
Zuletzt bearbeitet: (Ein paar Klarstellungen)
Soweit mir bekannt laufen NV-Karten nicht im PCIe X4 Slots. Darum funzt auf den B350 Boards auch nur Crossfire und kein SLI.
 
AMD-V aktiviert?
Einige Boards deaktivieren das standardmäßig.

Sonst probiers mal mit 4.11 oder 4.12RC.
 
Ich habe VGA-Passthrough mit Debian Stretch 4.10 und KVM momentan laufen. Ich bin der Meinung, dass Ryzen Support erst ab 4.10 implementiert wurde. Da meine 7950 kein EFI unterstuetzt, benutze ich Seabios anstatt OVMF. Falls moeglich, solltest du im Bios einstellen, dass die Grafikkarte im x4 Slot zuerst initialisiert werden soll.
 
Ubuntu hat mit diversen Mainboards Probleme. Probier mal was aktuelles z.B. Arch ab Kernel 4.10.
 
Vielen Dank für eure Meldungen!

Der Reihe nach...
1)
Soweit mir bekannt laufen NV-Karten nicht im PCIe X4 Slots.
-> Wenn ich exklusiv nur die 1080 in den dritten Slot (elektronisch x4 angebunden) stecke und sonst nix, bootet das Board davon problemlos. SLI kann und wird aber tatsächlich nicht gehen, da x4 nicht ausreicht, um die Synchronisierung über PCIe + "Regelbetrieb" hinzubekommen. Getestet sowohl freien als auch proprietären nV-Treibern. Anders als die 7850, die im X4-Slot (mit den quelloffenen Treibern) einen recht ekeligen Kernel-Panic erzeugt. (Aber auf einem verkorksten Arch-Test-Stick bis zur Kommandozeile durchlief. Möglicherweise werden da der Radeon/AMDGPU-Treiber nicht geladen sondern nur ein FrameBuffer-Device.)

2)
Man kann seine NVidia Karte auch auf einem b350 in den unteren Slot stecken, da läuft die halt nur langsamer.
-> Confirmed. Bei ner 1080 sind das zwar echt Perlen vor die Säue, aber es geht. (Die 520 funktionierte testhalber aber nur einmalig auch.)

3)
-> Ja. Im UEFI/Bios aktiviert. (KVM funktioniert ja. Und das kann keine Para-Virtualisierung, soweit mir bekannt ist. Da muss AMD-V laufen.)
4)
Sonst probiers mal mit 4.11 oder 4.12RC.
-> Das wären die nächsten Schritte. Allerdings brauch ich für Ubuntu nix kompilieren, wenn nichtmal der "Haus-Kernel" mit "Haus-Settings" trotz Ubuntu-eigener Anleitung sauber durchkompiliert. Hier bin ich noch in der Analyse.

5)
Da meine 7950 kein EFI unterstuetzt, benutze ich Seabios anstatt OVMF
-> DAS könnte tatsächlich ein Auslöser sein. Da angeblich OVMF deutlich besser geeignet sein soll als Seabios, was das Pass-Trough angeht, habe ich es mit klassischem Bios noch gar nicht probiert. (Wobei ich glaube, dass die 7950 zwar schneller, aber - afaik - älter ist.) Ich werde testen/berichten.
6)
Ich habe VGA-Passthrough mit Debian Stretch 4.10 und KVM momentan laufen
-> Vor 3 Wochen waren wir bei Stretch aber noch bei 4.9, kann das sein? Darf ich nach mehr Infos fragen, wie Du Dein System anfgesetzt hast? (Gern auch per PM. Ich kondensiere hier am Ende die Dinge zusammen, die zur Lösung des Problems beigetragen haben/hätten.)

7)
Probier mal was aktuelles z.B. Arch ab Kernel 4.10.
-> Ubuntu läuft mit 17.04 und ebenfalls 4.10 an sich recht stabil. Echte Probleme gibts tatsächlich lediglich bei der Virtualisierung.

Regards, Bigfoot29

Nachtrag:
Es ist nicht möglich, im BIOS die Bootreihenfolge für Grafikkarten anzugeben. Eine Anfrage bei Asus diesbezüglich führte da zu der Aussage, dass der 3. PCIe16-Steckplatz nicht für Grafikkarten vorgesehen ist und man die Anfrage damit mehr oder weniger als erledigt ansehen würde. (Das Splitting auf 1 und 3 ist aber nötig, da 1 und 2 zusammen sinnvollerweise (SLI) eine IOMMU-Gruppe bilden. Ansonsten muss doch wieder der ACS-Patch her, den ich ums Verrecken vermeiden möchte.
 
Zuletzt bearbeitet:
Ich kann dir nur diesen Guide wärmstens ans Herz legen.
http://vfio.blogspot.de/2015/05/vfio-gpu-how-to-series-part-1-hardware.html

Arbeite das durch, dann dürfte es gehen ...

und schau mal was dein kernel bezüglich iommu ausgibt.

Code:
dmesg | grep iommu

kommt da sehr wenig, solltest du folgenden kernel flag setzen:


Code:
amd_iommu=on

außerdem poste bitte:
Code:
 find /sys/kernel/iommu_groups/ -type l
 
Zuletzt bearbeitet:
Hi! Danke. Nach diesem Blog hab ich das System aufgesetzt. Ich poste heute abend von daheim aus, wenn ich Zugriff auf meine Bastel-Maschine habe.

Regards, Bigfoot29
 
dmesg | grep iommu
Code:
[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-4.10.0-19-generic root=UUID=ABCD ro rootflags=subvol=@ quiet splash iommu_amd vt.handoff=7
[    0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-4.10.0-19-generic root=UUID=ABCD ro rootflags=subvol=@ quiet splash iommu_amd vt.handoff=7
[    0.984350] iommu: Adding device 0000:00:01.0 to group 0
[    0.984362] iommu: Adding device 0000:00:01.3 to group 0
[    0.984436] iommu: Adding device 0000:00:02.0 to group 1
[    0.984514] iommu: Adding device 0000:00:03.0 to group 2
[    0.984527] iommu: Adding device 0000:00:03.1 to group 2
[    0.984602] iommu: Adding device 0000:00:04.0 to group 3
[    0.984683] iommu: Adding device 0000:00:07.0 to group 4
[    0.984695] iommu: Adding device 0000:00:07.1 to group 4
[    0.984774] iommu: Adding device 0000:00:08.0 to group 5
[    0.984787] iommu: Adding device 0000:00:08.1 to group 5
[    0.984863] iommu: Adding device 0000:00:14.0 to group 6
[    0.984875] iommu: Adding device 0000:00:14.3 to group 6
[    0.984964] iommu: Adding device 0000:00:18.0 to group 7
[    0.984976] iommu: Adding device 0000:00:18.1 to group 7
[    0.984989] iommu: Adding device 0000:00:18.2 to group 7
[    0.985000] iommu: Adding device 0000:00:18.3 to group 7
[    0.985010] iommu: Adding device 0000:00:18.4 to group 7
[    0.985022] iommu: Adding device 0000:00:18.5 to group 7
[    0.985032] iommu: Adding device 0000:00:18.6 to group 7
[    0.985043] iommu: Adding device 0000:00:18.7 to group 7
[    0.985074] iommu: Adding device 0000:03:00.0 to group 0
[    0.985096] iommu: Adding device 0000:03:00.1 to group 0
[    0.985105] iommu: Adding device 0000:03:00.2 to group 0
[    0.985117] iommu: Adding device 0000:1d:00.0 to group 0
[    0.985128] iommu: Adding device 0000:1d:02.0 to group 0
[    0.985138] iommu: Adding device 0000:1d:03.0 to group 0
[    0.985149] iommu: Adding device 0000:1d:04.0 to group 0
[    0.985165] iommu: Adding device 0000:21:00.0 to group 0
[    0.985181] iommu: Adding device 0000:23:00.0 to group 0
[    0.985199] iommu: Adding device 0000:25:00.0 to group 0
[    0.985210] iommu: Adding device 0000:25:00.1 to group 0
[    0.985229] iommu: Adding device 0000:26:00.0 to group 2
[    0.985240] iommu: Adding device 0000:26:00.1 to group 2
[    0.985250] iommu: Adding device 0000:27:00.0 to group 4
[    0.985258] iommu: Adding device 0000:27:00.2 to group 4
[    0.985267] iommu: Adding device 0000:27:00.3 to group 4
[    0.985276] iommu: Adding device 0000:28:00.0 to group 5
[    0.985284] iommu: Adding device 0000:28:00.2 to group 5
[    0.985292] iommu: Adding device 0000:28:00.3 to group 5
[    0.986794] perf: amd_iommu: Detected. (0 banks, 0 counters/bank)

find /sys/kernel/iommu_groups/ -type l
bzw. um es besser lesbar zu haben:
#!/bin/bash
shopt -s nullglob
for d in /sys/kernel/iommu_groups/*/devices/*; do
n=${d#*/iommu_groups/*}; n=${n%%/*}
printf 'IOMMU Group %s ' "$n"
lspci -nns "${d##*/}"
done;

Code:
/root/pcie_test.sh: 2: /root/pcie_test.sh: shopt: not found
IOMMU Group 0 00:01.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:1452]
IOMMU Group 0 00:01.3 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Device [1022:1453]
IOMMU Group 0 03:00.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Device [1022:43b9] (rev 02)
IOMMU Group 0 03:00.1 SATA controller [0106]: Advanced Micro Devices, Inc. [AMD] Device [1022:43b5] (rev 02)
IOMMU Group 0 03:00.2 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Device [1022:43b0] (rev 02)
IOMMU Group 0 1d:00.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Device [1022:43b4] (rev 02)
IOMMU Group 0 1d:02.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Device [1022:43b4] (rev 02)
IOMMU Group 0 1d:03.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Device [1022:43b4] (rev 02)
IOMMU Group 0 1d:04.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Device [1022:43b4] (rev 02)
IOMMU Group 0 21:00.0 USB controller [0c03]: ASMedia Technology Inc. Device [1b21:1343]
IOMMU Group 0 23:00.0 Ethernet controller [0200]: Intel Corporation I211 Gigabit Network Connection [8086:1539] (rev 03)
IOMMU Group 0 25:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP104 [GeForce GTX 1080] [10de:1b80] (rev a1)
IOMMU Group 0 25:00.1 Audio device [0403]: NVIDIA Corporation GP104 High Definition Audio Controller [10de:10f0] (rev a1)
IOMMU Group 1 00:02.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:1452]
IOMMU Group 2 00:03.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:1452]
IOMMU Group 2 00:03.1 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Device [1022:1453]
IOMMU Group 2 26:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Pitcairn PRO [Radeon HD 7850 / R7 265 / R9 270 1024SP] [1002:6819]
IOMMU Group 2 26:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series] [1002:aab0]
IOMMU Group 3 00:04.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:1452]
IOMMU Group 4 00:07.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:1452]
IOMMU Group 4 00:07.1 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Device [1022:1454]
IOMMU Group 4 27:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Device [1022:145a]
IOMMU Group 4 27:00.2 Encryption controller [1080]: Advanced Micro Devices, Inc. [AMD] Device [1022:1456]
IOMMU Group 4 27:00.3 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Device [1022:145c]
IOMMU Group 5 00:08.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:1452]
IOMMU Group 5 00:08.1 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Device [1022:1454]
IOMMU Group 5 28:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Device [1022:1455]
IOMMU Group 5 28:00.2 SATA controller [0106]: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] [1022:7901] (rev 51)
IOMMU Group 5 28:00.3 Audio device [0403]: Advanced Micro Devices, Inc. [AMD] Device [1022:1457]
IOMMU Group 6 00:14.0 SMBus [0c05]: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller [1022:790b] (rev 59)
IOMMU Group 6 00:14.3 ISA bridge [0601]: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge [1022:790e] (rev 51)
IOMMU Group 7 00:18.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:1460]
IOMMU Group 7 00:18.1 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:1461]
IOMMU Group 7 00:18.2 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:1462]
IOMMU Group 7 00:18.3 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:1463]
IOMMU Group 7 00:18.4 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:1464]
IOMMU Group 7 00:18.5 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:1465]
IOMMU Group 7 00:18.6 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:1466]
IOMMU Group 7 00:18.7 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Device [1022:1467]

Aber egal, wie ich den virt-manager auch einstelle (26.00.0 und 26.00.1 werden als PCI-Geräte durchgeroutet), es funktioniert einfach nicht. Liefere ich beide beim Booten schon der Xubuntu 17.04-Instanz mit, passiert nach initialisierung des RND nix mehr. Lasse ich sie weg, bootet die Installation durch.
Code:
root@BLA:/root# lsmod |grep fb
fb_sys_fops            16384  1 drm_kms_helper
root@BLA:/root# lsmod |grep amd
edac_mce_amd           28672  0
kvm_amd              2179072  4
kvm                   593920  1 kvm_amd
gpio_amdpt             16384  0
gpio_generic           16384  1 gpio_amdpt
root@BLA:/root# lsmod |grep radeon
root@BLA:/root#
root@BLA:/root#lspci -v
[...]
26:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Pitcairn PRO [Radeon HD 7850 / R7 265 / R9 270 1024SP] (prog-if 00 [VGA controller])
	Subsystem: PC Partner Limited / Sapphire Technology Pitcairn PRO [Radeon HD 7850 / R7 265 / R9 270 1024SP]
	Flags: fast devsel, IRQ 246
	Memory at e0000000 (64-bit, prefetchable) [size=256M]
	Memory at f7a00000 (64-bit, non-prefetchable) [size=256K]
	I/O ports at e000 [size=256]
	Expansion ROM at 000c0000 [disabled] [size=128K]
	Capabilities: [48] Vendor Specific Information: Len=08 <?>
	Capabilities: [50] Power Management version 3
	Capabilities: [58] Express Legacy Endpoint, MSI 00
	Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+
	Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
	Capabilities: [150] Advanced Error Reporting
	Capabilities: [270] #19
	Capabilities: [2b0] Address Translation Service (ATS)
	Capabilities: [2c0] #13
	Capabilities: [2d0] #1b
	Kernel driver in use: vfio-pci
	Kernel modules: radeon, amdgpu

26:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series]
	Subsystem: PC Partner Limited / Sapphire Technology Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series]
	Flags: fast devsel, IRQ 247
	Memory at f7a60000 (64-bit, non-prefetchable) [disabled] [size=16K]
	Capabilities: [48] Vendor Specific Information: Len=08 <?>
	Capabilities: [50] Power Management version 3
	Capabilities: [58] Express Legacy Endpoint, MSI 00
	Capabilities: [a0] MSI: Enable- Count=1/1 Maskable- 64bit+
	Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
	Capabilities: [150] Advanced Error Reporting
	Kernel driver in use: vfio-pci
	Kernel modules: snd_hda_intel
[...]


root@BLA:/root# cat /etc/modprobe.d/avfio.conf 
blacklist nouveau
blacklist amdgpu
blacklist radeon
options vfio-pci disable_vga=1
options vfio-pci ids=1002:6819,1002:aab0

Alles schön mit einem
Code:
root@BLA:/root#  update-initramfs -u
abgeschlossen und neu gestartet. Die VMs mögen mich trotzdem nicht mit der Graka... nach der Installation von Xubuntu 17.04 beispielsweise bleibt der Bildschirm der VM schlicht komplett schwarz (BIOS-Mode), war aber auch mit der UEFI-Variante nicht besser. Nur bin ich mir grad nicht sicher, ob die 7850 überhaupt schon UEFI kann.

Regards, Bigfoot29
 
Zuletzt bearbeitet:
:o Das wäre als Lösung ja fast ZU einfach... :D
Teste ich heute abend!

Regards, Bigfoot29
Ergänzung ()

So, dann update ich mal... das brachte exakt Null Änderungen. Weder im DMESG noch in den letztlichen Resultaten (jetzt crasht der Kernel in der VM). Auch unter Windows (mit UEFI) passiert nix neues (alle 4 zugeordneten Kerne sind in Dauerlast, der Bildschirm bleibt nach der "Loading Windows"-Meldung schwarz.

Regards, Bigfoot29
 
ich werde mal am Wochenende auf meinem Ubuntu das auch nochmal einrichten und testen.
 
Das hätte echt was. :) Hattest Du denn die Möglichkeit, am Wochenende mal nachzuschauen?

Regards, Bigfoot29
 
hallo,
den Kernel habe ich gebaut, da ich eine intel Onboard Graka habe. Testen werde ich es später ...

magst Du auf pastebin bitte einmal ein komplettes dmesg hochladen?
 
Werde ich. Ich schicke es Dir dann per PN.

Danke vorab...

Regards, Bigfoot29
 
Hallo, sorry bei mir geht es im Augenblick drunter und drüber ...
aber ich habe etwas interessantes gefunden ...
https://www.computerbase.de/2017-05/amd-agesa-1006-firmware-update-ryzen-ram/
halte mal Ausschau, ob es für Dein Mainboard ein Biosupdate mit der neuesten Agesa Firmware gibt.

Ich denke wir sollten warten, bis es dieses Firmwareupdate für Dein Board gibt und es wäre schön, wenn Du dann dich hier in dem Thread wieder meldest.
 
Zuletzt bearbeitet:
Hallo Y. Ich seh es ähnlich (und auch bei mir ist derzeit viel los). Ich werde aktuell warten. Das Update kam zumindest bisher immer relativ schnell. (Aktuell (Stand gestern) ist man bei Asus noch bei 1.0.0.4a (1.0.0.6 ist released).

Danke trotzdem erstmal für Deine Hilfe. ich poste in ein paar Tagen/Wochen noch einmal. :)

Regards, Bigfoot29
 
Zurück
Oben