INTEL ALDER LAKE I5-12500 / UHD 770 passthrough - the dreaded code 43 error

https://forum.proxmox.com/threads/a...rated-graphics-passthrough.105983/post-464915

我想你可能被搞砸了。阅读这些线程,似乎可能存在一些驱动程序支持问题。(虽然我不是 100%,因为链接的文章主要是在谈论 NUC,它使用具有不同图形的移动处理器。)

但是我找不到一个报告成功通过 Alder Lake iGPU 传递到 Windows 的人的实例。
有没有成功的方法将 Intel i5-12500 核显直接连接到 Windows?我无法直接将 12500 igpu 连接到 Windows
 
I got a 13900T with integrated UHD 770 and using kernel 6.2.16. Tried everything to make full igpu passthrough to my win11 vm work. But no luck. Always receive the message "Guest has not initialized the Display (yet)" when starting the vm. After the vm started the code 43 error is present. Once I deactivate and activate the UHD device in device manager the error is gone, but there won't be any display on the monitor. I used the latest gfx driver 101.4953 from Intel.
Using Ubuntu full igpu passthrough with UHD 770 is working perfectly with the same kernel and module blacklist settings. I guess it must be a driver issue by intel in windows. Giving up now and buying a T400 for passthrough...
 
Last edited:
On 13900K\14900K (and probably whole 12\13\14 line) complete full passthrough (including HDMI) to W10\W11 works in legacy mode with ROMs from https://github.com/gangqizai/igd

IGPU must be set as primary output in BIOS or you will get OpRegion error

Some config's ids\addresses might need adjustment for your case


args: -set device.hostpci0.addr=02.0 -set device.hostpci0.x-igd-gms=0x2 -set device.hostpci0.x-igd-opregion=on -debugcon file:/root/igd_debug.log -global isa-debugcon.iobase=0x402
hostpci0: 0000:00:02.0,legacy-igd=1,romfile=gen12_igd.rom
hostpci1: 0000:00:1f.3,romfile=gen12_gop.rom
machine: pc-i440fx-8.1


Modprobe:
blacklist i915
blacklist snd_hda_intel
options vfio-pci ids=8086:a780,8086:7a50
options vfio_iommu_type1 allow_unsafe_interrupts=1

Kernel:
intel_iommu=on iommu=pt vfio_iommu_type1.allow_unsafe_interrupts=1 pcie_acs_override=downstream,multifunction
 
Last edited:
  • Like
Reactions: myself379
On 13900K\14900K (and probably whole 12\13\14 line) complete full passthrough (including HDMI) to W10\W11 works in legacy mode with ROMs from https://github.com/gangqizai/igd

IGPU must be set as primary output in BIOS or you will get OpRegion error

Some config's ids\addresses might need adjustment for your case


args: -set device.hostpci0.addr=02.0 -set device.hostpci0.x-igd-gms=0x2 -set device.hostpci0.x-igd-opregion=on -debugcon file:/root/igd_debug.log -global isa-debugcon.iobase=0x402
hostpci0: 0000:00:02.0,legacy-igd=1,romfile=gen12_igd.rom
hostpci1: 0000:00:1f.3,romfile=gen12_gop.rom
machine: pc-i440fx-8.1


Modprobe:
blacklist i915
blacklist snd_hda_intel
options vfio-pci ids=8086:a780,8086:7a50
options vfio_iommu_type1 allow_unsafe_interrupts=1

Kernel:
intel_iommu=on iommu=pt vfio_iommu_type1.allow_unsafe_interrupts=1 pcie_acs_override=downstream,multifunction
Do you possibly happen to know how to make the legacy IGD mode work with Q35-8.1 instead of i440fx-8.1 like it says is possible in the GitHub page? I can't seem to find anything yet.
 
On 13900K\14900K (and probably whole 12\13\14 line) complete full passthrough (including HDMI) to W10\W11 works in legacy mode with ROMs from https://github.com/gangqizai/igd

IGPU must be set as primary output in BIOS or you will get OpRegion error

Some config's ids\addresses might need adjustment for your case


args: -set device.hostpci0.addr=02.0 -set device.hostpci0.x-igd-gms=0x2 -set device.hostpci0.x-igd-opregion=on -debugcon file:/root/igd_debug.log -global isa-debugcon.iobase=0x402
hostpci0: 0000:00:02.0,legacy-igd=1,romfile=gen12_igd.rom
hostpci1: 0000:00:1f.3,romfile=gen12_gop.rom
machine: pc-i440fx-8.1


Modprobe:
blacklist i915
blacklist snd_hda_intel
options vfio-pci ids=8086:a780,8086:7a50
options vfio_iommu_type1 allow_unsafe_interrupts=1

Kernel:
intel_iommu=on iommu=pt vfio_iommu_type1.allow_unsafe_interrupts=1 pcie_acs_override=downstream,multifunction
This works for me!

My specs are
proxmox-ve: 8.2.0 (running kernel: 6.8.12-2-pve)
Thinkcentre i7-7700T
Intel Graphics HD 630
 
This works for me!

My specs are
proxmox-ve: 8.2.0 (running kernel: 6.8.12-2-pve)
Thinkcentre i7-7700T
Intel Graphics HD 630

I'm posting more details of my Windows 11 VM configurations for future reference. The Thinkcentre m910q I got only have 3 DisplayPort, luckily this romfile works in outputing video feed through a DisplayPort-HDMI converter and successfully display output feed to my monitor/TV.

I get the gen12_igd.rom from https://github.com/gangqizai/igd

I suspect the working reason is the flag x-igd-opregion=on in args. The romfile path is a hack. The initial directory is at /usr/share/kvm, so this triple ../ is to jump up directory 3 times and get it to the / directory and navigate to the place where romfile is located, feel free to place your files in /usr/share/kvm if it works for you. The reason I put it in /var/lib/vz/dump is because I thought here is the standard location for customized romfiles as I don't like to mixed user settings with Proxmox defaults.

For my case, I did not use gen12_gop.rom as it cause Proxmox to freezes when I startup the VM, instead I opt for pcie_acs_override to pass through the audio from host. My audio is 00:1f.3 Luckily for my case, it works.

both video and audio output feed works through DisplayPort-HDMI converter.

Code:
agent: 1
args: -set device.hostpci0.addr=02.0 -set device.hostpci0.x-igd-gms=0x2 -set device.hostpci0.x-igd-opregion=on
bios: ovmf
boot: order=scsi0;ide0;ide2;net0
cores: 8
cpu: host
efidisk0: local-lvm:vm-xxx-disk-0,efitype=4m,pre-enrolled-keys=1,size=4M
hostpci0: 0000:00:02,romfile=../../../var/lib/vz/dump/gen12_igd.rom
hostpci1: 0000:00:1f.3
ide0: none,media=cdrom
ide2: none,media=cdrom
machine: pc-i440fx-9.0
memory: 8192
meta: creation-qemu=9.0.2,ctime=xxxxxxxxxx
name: windows-11
net0: virtio=xx:xx:xx:xx:xx:xx,bridge=vmbr0,firewall=1
numa: 0
ostype: win11
scsi0: local-lvm:vm-xxx-disk-1,iothread=1,size=128G
scsihw: virtio-scsi-single
smbios1: uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
sockets: 1
tpmstate0: local-lvm:vm-xxx-disk-2,size=4M,version=v2.0
usb0: host=046d:c534,usb3=1
usb1: host=0781:5583,usb3=1
vga: none

Code:
# /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction video=efifb:off video=simplefb:off"

Reference:

derekseaman passthrough is vgpu-vt-d sharing, its a good refernce. However, its not what I'm looking for as by sharing the vgpu lost the capability for video output feed.

upsangel blog give me the initial idea of having romfile to "feed" into OVMF such that it known how to "communicate" with the passthrough hardware.
 
Last edited:
  • Like
Reactions: itsmehenning

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!