Ich verwende das neueste Proxmox (derzeit 6.3-3, vollständig aktualisiert) und versuche, die integrierte GPU auf meiner Core i7 4770-CPU an eine Windows 10-VM weiterzuleiten. Ich habe iommu bereits auf dem System aktiviert und Grub außerdem angewiesen, das System nicht das Gerät beanspruchen zu lassen, indem ich intel_iommu=on video=efifb:off
die Kerneloptionen von Grub hinzugefügt habe. Ich habe überprüft, ob IOMMU tatsächlich verfügbar ist, indem ich dmesg überprüft habe.
# dmesg | grep -e DMAR -e IOMMU -e AMD-Vi
[ 0.007556] ACPI: DMAR 0x00000000D88C33C8 0000B8 (v01 INTEL HSW 00000001 INTL 00000001)
[ 0.083595] DMAR: IOMMU enabled
[ 0.180445] DMAR: Host address width 39
[ 0.180446] DMAR: DRHD base: 0x000000fed90000 flags: 0x0
[ 0.180449] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap c0000020660462 ecap f0101a
[ 0.180449] DMAR: DRHD base: 0x000000fed91000 flags: 0x1
[ 0.180451] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap d2008020660462 ecap f010da
[ 0.180452] DMAR: RMRR base: 0x000000d8842000 end: 0x000000d884efff
[ 0.180452] DMAR: RMRR base: 0x000000db000000 end: 0x000000df1fffff
[ 0.180454] DMAR-IR: IOAPIC id 8 under DRHD base 0xfed91000 IOMMU 1
[ 0.180454] DMAR-IR: HPET id 0 under DRHD base 0xfed91000
[ 0.180455] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
[ 0.180831] DMAR-IR: Enabled IRQ remapping in x2apic mode
[ 0.874497] DMAR: No ATSR found
[ 0.874527] DMAR: dmar0: Using Queued invalidation
[ 0.874531] DMAR: dmar1: Using Queued invalidation
[ 1.026818] DMAR: Intel(R) Virtualization Technology for Directed I/O
Ich habe außerdem die iGPU (und das zugehörige Audiogerät) zur Blacklist hinzugefügt, um zu verhindern, dass das Host-Betriebssystem darauf Anspruch erhebt:
# cat /etc/modprobe.d/blacklist.conf
blacklist snd_hda_intel
blacklist snd_hda_codec_hdmi
blacklist i915
# cat /etc/modprobe.d/vfio.conf
options vfio-pci ids=8086:0412 disable_vga=1
Schließlich habe ich auf meinem Host eine neue Windows 10-VM mit dem q35-Chipsatz und dem uEFI (OVMF)-BIOS eingerichtet, da dies anscheinend die „kompatibelste“ Möglichkeit ist, Hardware durchzureichen. Ich habe auch einen externen Bildschirm an den HDMI-Anschluss meines Proxmox-Hosts angeschlossen. Ich verstehe, dass dieser Bildschirm beim Hochfahren der VM zum Leben erwachen sollte. Die QEMU-Konfigurationsdatei der VM finden Sie unten:
agent: 1
balloon: 0
bios: ovmf
boot: order=virtio0;ide2;net0
cores: 4
efidisk0: local-1tb-nvme-thinpool:vm-118-disk-1,size=4M
hostpci0: 00:02,pcie=1,x-vga=1
ide2: none,media=cdrom
machine: q35
memory: 4096
name: VFIOtest
net0: virtio=52:D7:02:CA:B6:2E,bridge=vmbr0,firewall=1
numa: 0
ostype: win10
scsihw: virtio-scsi-pci
smbios1: uuid=cd9d41e9-d8c2-465e-94dc-798aa8e517e2
sockets: 1
virtio0: local-1tb-nvme-thinpool:vm-118-disk-0,backup=0,discard=on,size=60G
vmgenid: 2cb8ce5e-5dda-4870-9cf3-774bb025057f
Sobald ich das getan habe, kann ich die VM booten. Sobald ich die VM boote, wechselt der Bildschirm in den Standby-Modus und zeigt an, dass kein Signal vorhanden ist. Ich kann mich dann jedoch per RDP mit dem System verbinden und sehe, dass die Intel HD Graphics 4600 im Gerätemanager sichtbar ist. Also habe ich die neuesten Treiber von der Intel-Website installiert. Leider startet das Gerät nicht und zeigt ein Ausrufezeichen daneben an. Der Gerätestatus zeigt
Windows has stopped this device because it has reported problems. (Code 43)
Leider code 43
bedeutet der Fehler lediglich, dass etwas nicht stimmt, er gibt keine genaue Angabe zur Ursache.
Nur aus Neugier habe ich eine Ubuntu 20.04-VM mit UEFI-BIOS erstellt und meine GPU daran weitergeleitet und es funktioniert perfekt (ich kann den Desktop usw. auf dem Monitor sehen, der an das Motherboard angeschlossen ist).
Ich bin nicht ganz sicher, was ich von diesem Punkt an versuchen soll – jede Hilfestellung zur weiteren Behebung dieses Problems wäre hilfreich.
BEARBEITEN: Ich habe es aufgegeben, nachdem ich eine Weile damit gerungen habe. Es scheint ein Problem innerhalb von Windows 10 zu sein, das dies verursacht. Ich habe eine Ubuntu 20.04 Desktop-VM (mit q35-Chipsatz) eingerichtet und sie über meine iGPU weitergeleitet – funktioniert sofort (ich kann sehen, wie der Ubuntu-Desktop auf dem Monitor erscheint, der über HDMI an das Motherboard angeschlossen ist).