I am running the latest Proxmox (6.3-3 at this time, fully updated) and attempting to passthrough the onboard GPU on my Core i7 4770 CPU to a Windows 10 VM. I have already enabled iommu on the system and also told grub to not let the system claim the device by adding intel_iommu=on video=efifb:off
to the grub kernel options. I've verified IOMMU is actually available by checking dmesg
# 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
I've also added the iGPU (and associated audio device) to blacklist to prevent the host OS from claiming it:
# 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
Finally, I setup a new Windows 10 VM on my host along with the q35 chipset and uEFI (OVMF) BIOS as this is apparently the most "compatible" way to pass through hardware. I've also got an external screen plugged into the HDMI port of my Proxmox host. I understand when the VM boots up, I should see this screen come to life. The qemu config file of the VM is below:
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
Once I've done that I can boot the VM. As soon as I boot the VM, the screen goes to standby indicating no signal. I can however then RDP into the system and I see that the Intel HD Graphics 4600 is visible in device manager. So I installed the latest drivers from the Intel website. Unfortunately, the device will not start and shows an exclamation mark next to it. The Device Status shows
Windows has stopped this device because it has reported problems. (Code 43)
Unfortunately, the code 43
error just means something is wrong, it isn't very specific on what is causing this.
Not too sure what to try from this point on - any assistance on where to continue fixing this would be useful.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…