kein PCI passthrough nach cmos reset mehr möglich

HanzFranz1

Member
May 27, 2022
16
0
6
Hallo zusammen,

kurz zur Einleitung was passiert ist.

Ich habe seit Februar einen proxmox Server der tadellos funktionierte. Hier sind VM´s mit Windows 11, Ubuntu und MacOs Ventura installiert, die die Grafikkarte und ein USB PCI Gerät durchreichen.

Außerdem kann ich durch den Wechsel von SSD´s auch diverse Betriebssysteme native starten. Ein tolles System.


Dieser Proxmox Server mit folgender Hardware, MSI H410M-A PRO (Motherboard) , AMD Radeon RX 580 8 GB (GPU) und 32 GB RAM war plötzlich wie tot und lies sich nicht mehr einschalten. Wie sich nach langem Testen der unterschiedlichen Hardware Teile herausstellte war das Bios Schuld, da nach einem CMOS Reset wieder alles funktionierte.

Ich habe daraufhin die alten Bios Settings wieder eingestellt und konnte auch alle installierten Betriebssysteme (Windows11, Ubuntu, Hackintosh Ventura) wieder native starten. Hierfür verwende ich unterschiedliche SSD´s die ich über einen Wechselrahmen einfach tauschen kann. Es schien also alles bestens.

Auch Proxmox lies sich starten. Nur leider starten alle VM´s auf denen ich ein PCI Gerät durchreiche nicht mehr. Proxmox stürzt nach einigen Minuten ab und startet dann wieder neu.

Ich habe dann zum Testen alle in der VM durchgereichten PCI Geräte in den Hardware Einstellungen der VM entfernt. Durchgereicht wurden ein USB PCI Adapter und die GPU. Danach lässt sich die VM wieder starten. Sobald ich ein PCI Gerät wieder hinzufüge, stürzt Proxmox ab. Dabei ist es egal, welches Gerät ich durchreiche.

Das beschriebene Szenario betrifft alle VM´s die PCI Geräte durchreichen (Windows 11, Ubuntu, MacOs Ventura).

Eigentlich kann der Fehler aus meiner Sicht nur an falschen Bios Einstellungen liegen. Hier habe ich aber auch schon alles versucht. Hardwareseitig hat sich nichts verändert.

Folgende Fehlermeldung kann ich in den Logs finden:

TASK ERROR: start failed: command '/usr/bin/kvm -id 2001 -name 'Ubuntu-GPU,debug-threads=on' -no-shutdown -chardev 'socket,id=qmp,path=/var/run/qemu-server/2001.qmp,server=on,wait=off' -mon 'chardev=qmp,mode=control' -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect=5' -mon 'chardev=qmp-event,mode=control' -pidfile /var/run/qemu-server/2001.pid -daemonize -smbios 'type=1,uuid=e233a241-6555-4975-89d5-bd939243d227' -drive 'if=pflash,unit=0,format=raw,readonly=on,file=/usr/share/pve-edk2-firmware//OVMF_CODE_4M.secboot.fd' -drive 'if=pflash,unit=1,id=drive-efidisk0,format=raw,file=/dev/pve/vm-2001-disk-0,size=540672' -smp '8,sockets=1,cores=8,maxcpus=8' -nodefaults -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' -vga none -nographic -cpu 'kvm64,enforce,kvm=off,+kvm_pv_eoi,+kvm_pv_unhalt,+lahf_lm,+sep' -m 16384 -readconfig /usr/share/qemu-server/pve-q35-4.0.cfg -device 'vmgenid,guid=3447cdf6-3db0-4a65-bbcb-1a54dc5681a3' -device 'usb-tablet,id=tablet,bus=ehci.0,port=1' -device 'vfio-pci,host=0000:01:00.0,id=hostpci0.0,bus=ich9-pcie-port-1,addr=0x0.0,multifunction=on' -device 'vfio-pci,host=0000:01:00.1,id=hostpci0.1,bus=ich9-pcie-port-1,addr=0x0.1' -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' -iscsi 'initiator-name=iqn.1993-08.org.debian:01:de96eeb1823b' -device 'virtio-scsi-pci,id=scsihw0,bus=pci.0,addr=0x5' -drive 'file=/dev/pve/vm-2001-disk-1,if=none,id=drive-scsi0,cache=writeback,format=raw,aio=io_uring,detect-zeroes=on' -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,bootindex=100' -netdev 'type=tap,id=net0,ifname=tap2001i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown,vhost=on' -device 'virtio-net-pci,mac=42:BF:2C:12:7A:4F,netdev=net0,bus=pci.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=1024,bootindex=101' -machine 'type=q35+pve0'' failed: got timeout


Kann es sein, dass sich durch das CMOS Reset die ID´s der PCI Geräte geändert hat oder habt ihr sonst noch eine Idee? Ich bin mit meinem Latein am Ende.


Grüße aus Hannover
 
es scheint so das durch den Cmos Reset die Geräte nun in einer anderen iommu Gruppe sind und sobald du deine Geräte durchreichst daurch eines der anderen Geräte auf dem Mainboard dem PVE nicht mehr zur Verfügung steht und daher abschmiert dann
 
Danke für den Tipp. Hast du eine Idee wo ich das sehen bzw. vergleichen kann und wie ich den Fehler dann behebe?
 
IOMMU-Gruppen auflisten mit:
Bash:
for d in /sys/kernel/iommu_groups/*/devices/*; do n=${d#*/iommu_groups/*}; n=${n%%/*}; printf 'IOMMU group %s ' "$n"; lspci -nns "${d##*/}"; done
 
Durchgreicht hatte ich immer den Fresco USB Controller (group 8) und die AMD Garfikkarte (group 1).
Seht ihr hier Konflikte? Leider habe ich die Auflistung der iommu gruppen vor dem Absturz nicht mehr.
Habe ich eine Möglichkeit Geräte anderen Gruppen zuzuordnen oder eigene Gruppen zu erstellen?


So sehen jetzt iommu groups aus:

IOMMU group 0 00:00.0 Host bridge [0600]: Intel Corporation 10th Gen Core Processor Host Bridge/DRAM Registers [8086:9b63] (rev 03)


IOMMU group 1 00:01.0 PCI bridge [0604]: Intel Corporation 6th-10th Gen Core Processor PCIe Controller (x16) [8086:1901] (rev 03)


IOMMU group 1 01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] [1002:67df] (rev e7)


IOMMU group 1 01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] [1002:aaf0]


IOMMU group 2 00:02.0 VGA compatible controller [0300]: Intel Corporation CometLake-S GT2 [UHD Graphics 630] [8086:9bc8] (rev 03)


IOMMU group 3 00:08.0 System peripheral [0880]: Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th/8th Gen Core Processor Gaussian Mixture Model [8086:1911]


IOMMU group 4 00:14.0 USB controller [0c03]: Intel Corporation Comet Lake PCH-V USB Controller [8086:a3af]


IOMMU group 4 00:14.2 Signal processing controller [1180]: Intel Corporation Comet Lake PCH-V Thermal Subsystem [8086:a3b1]


IOMMU group 5 00:16.0 Communication controller [0780]: Intel Corporation Device [8086:a3ba]


IOMMU group 6 00:17.0 SATA controller [0106]: Intel Corporation 400 Series Chipset Family SATA AHCI Controller [8086:a382]


IOMMU group 7 00:1c.0 PCI bridge [0604]: Intel Corporation Device [8086:a394] (rev f0)


IOMMU group 7 02:00.0 Non-Volatile memory controller [0108]: Silicon Motion, Inc. SM2263EN/SM2263XT SSD Controller [126f:2263] (rev 03)


IOMMU group 8 00:1d.0 PCI bridge [0604]: Intel Corporation Device [8086:a398] (rev f0)


IOMMU group 8 00:1d.2 PCI bridge [0604]: Intel Corporation Device [8086:a39a] (rev f0)


IOMMU group 8 00:1d.3 PCI bridge [0604]: Intel Corporation Device [8086:a39b] (rev f0)


IOMMU group 8 04:00.0 Network controller [0280]: Broadcom Inc. and subsidiaries BCM4360 802.11ac Wireless Network Adapter [14e4:43a0] (rev 03)


IOMMU group 8 05:00.0 USB controller [0c03]: Fresco Logic FL1100 USB 3.0 Host Controller [1b73:1100] (rev 10)


IOMMU group 9 00:1f.0 ISA bridge [0601]: Intel Corporation Device [8086:a3da]


IOMMU group 9 00:1f.2 Memory controller [0580]: Intel Corporation Memory controller [8086:a3a1]


IOMMU group 9 00:1f.3 Audio device [0403]: Intel Corporation Device [8086:a3f0]


IOMMU group 9 00:1f.4 SMBus [0c05]: Intel Corporation Comet Lake PCH-V SMBus Host Controller [8086:a3a3]


IOMMU group 9 00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection (12) I219-V [8086:0d55]

Durchgreicht hatte ich immer den Fresco USB Controller (group 8) und die AMD Garfikkarte (group 1).
 
Wird ACS-Override verwendet? Wie ist die Ausgabe von: cat /proc/cmdline?
 
Wie oben geschrieben habe ich an den Proxmox Einstellungen bisher nichts geändert. Eventuell habe ich im Bios aber etwas übersehen. Von ACS finde ich aber nichts im Bios.

Die Ausgabe von cat /proc/cmdline:

BOOT_IMAGE=/boot/vmlinuz-5.15.85-1-pve root=/dev/mapper/pve-root ro quiet intel_iommu=on
 
Das sind die Einträge in /etc/default/grub

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
GRUB_CMDLINE_LINUX=""
 
Also verwende ich, wenn ich das richtig nachgelesen habe, kein ACS-Override.
Ich vermute einen Punkt im Bios zu übersehen. Hier mal meine Settings als Grafiken:

SR-IOV Support habe ich auch schon mal mit Enabled ausporbiert. Das brachte aber auch keine Veränderung bei den iommu gruppen

MSI_SnapShot_01.jpgMSI_SnapShot_02.jpgMSI_SnapShot_03.jpgMSI_SnapShot_04.jpgMSI_SnapShot_05.jpgMSI_SnapShot_07.jpg
 
Jetzt habe ich alle Bios Settings getstet. Leider ohne Erfolg.
Was auffält ist, dass sich auch keine Snapshots der VM´s zurückspielen lassen. Auch dann stürzt Proxmox ab.

Wenn ich mir die IOMMU Gruppen anschaue fällt ja folgendes auf.

IOMMU group 1 00:01.0 PCI bridge [0604]: Intel Corporation 6th-10th Gen Core Processor PCIe Controller (x16) [8086:1901] (rev 03)
IOMMU group 1 01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] [1002:67df] (rev e7)
IOMMU group 1 01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] [1002:aaf0]

Die PCI bridge hat die gleiche Gruppe wie die Grafikkarte. Kann das überhaupt funktionieren? Und die große Frage bleibt. Warum hat es mal tadellos funktioniert?

Die Bios Version ist die gleiche. Habe jetzt auch nochmal ein CMOS Reset durchgeführt um zu sehen ob sich dann die IOMMU Gruppen ändern. Das ist aber nicht der Fall.

Hat jemand noch eine Idee? Gibt es erweitere Logs in denen man was finden könnte?
 
Kurzes Update.
Der Fehler lag am installierten Ram. Hier waren 2x 16GB verbaut. Einer der beiden Riegel hatte sich aus welchen Gründen auch immer gelöst. Damit standen dann natürlich nur noch 16GB zur Verfügung. Das mir das nicht früher aufgefallen ist, frage ich mich selber!o_O

Proxmox stürzte ab, wenn eine VM mit 16GB gestartet wurde. Bei VMs mit 8GB funktionierte das System.
Was mich aber schon wundert ist die Tatsache, das Proxmox auch dann abstürtze wenn man von den 16Gb Ram VMs einen Snapshot oder ein Backup erstellen oder zurückspielen wollte. Das funktinierte erst, nachdem ich die durchgereichten PCI Geräte unter Harware entfernt hatte.
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!