Black Screen on Windows 11 VM After Intel iGPU Passthrough (MiniSforum MS-01)

arunkumarns96

New Member
Oct 14, 2025
1
0
1
Hi everyone


I’m setting up GPU passthrough on my MiniSforum MS-01 running Proxmox VE, and while the passthrough seems partially successful, I’m stuck with a black screen output on my monitor. I’d love some insights from the community.




⚙️ Setup Overview​


  • Host: MiniSforum MS-01
  • CPU: Intel Alder Lake-P (with integrated Intel UHD Graphics)
  • Hypervisor: Proxmox VE
  • Guest OS: Windows 11
  • Goal: PCIe passthrough of the iGPU to the Windows 11 VM for direct HDMI/DisplayPort output



✅ What’s Working​


  • Passthrough initializes — the Windows 11 VM boots successfully.
  • The iGPU shows up in Device Manager inside the VM.

⚠️ What’s Not Working​


  • External display stays black (no signal).
  • In Device Manager, Intel UHD Graphics shows a yellow triangle (Error 43).

VM Configuration​


/etc/pve/qemu-server/100.conf


bios: ovmf
boot: order=ide0;net0
cores: 2
cpu: host,hidden=1,flags=+pcid
efidisk0: local-lvm:vm-100-disk-0,efitype=4m,pre-enrolled-keys=1,size=4M
hostpci0: 0000:00:02,pcie=1,x-vga=1
ide0: local-lvm:vm-100-disk-1,size=250G
machine: q35
memory: 10240
meta: creation-qemu=9.2.0,ctime=1751543459
name: Windows-11
net0: virtio=BC:24:11:78:EC:46,bridge=vmbr0,firewall=1
numa: 0
ostype: win11
scsihw: virtio-scsi-pci
smbios1: uuid=939d069a-e5f8-41a7-a333-1d0036ee8695
sockets: 1
tpmstate0: local-lvm:vm-100-disk-2,size=4M,version=v2.0




Grub Configuration​


/etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt video=efifb:off video=vesafb:off video=simplefb:off kvm.ignore_msrs=1"



Kernel Modules​


/etc/modules

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd




lspci Output​



00:02.0 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c)




BIOS Settings​


  • Primary Display: IGFX
  • Integrated Graphics: Enabled
  • VT-d: Enabled



Inside the Windows 11 VM​


  • Intel UHD Graphics shows in Device Manager with ⚠️ Error 43.
  • Display connected to HDMI/DP shows black screen (no output).
  • Tried both manual and automatic driver installations — driver installs, but issue persists.



What I’ve Tried​


  • Verified IOMMU and VFIO modules load correctly.
  • Disabled framebuffer devices (efifb, vesafb, simplefb).
  • Enabled cpu: host,hidden=1 to hide virtualization from the guest.
  • Updated Proxmox to the latest kernel.
  • Tested both HDMI and DisplayPort outputs.



Looking for Help / Suggestions​


  1. Any special flags or parameters needed for Intel Alder Lake iGPU passthrough?
    (e.g. multifunction=on, x-igd-opregion=on, kvm=off?)
  2. Does anyone have a working configuration for Intel iGPU passthrough to Windows 11?
  3. Is there a reliable workaround for Error 43 in this scenario?
  4. Any BIOS tweaks specific to MiniSforum MS-01 that might help?



Any insights, working configs, or troubleshooting ideas would be greatly appreciated


Thanks in advance!
— Arun Kumar
 

Attachments

  • Graphics.png
    Graphics.png
    156.3 KB · Views: 2
  1. Any special flags or parameters needed for Intel Alder Lake iGPU passthrough?
    (e.g. multifunction=on, x-igd-opregion=on, kvm=off?)

You need to make settings that match the computer you are using.

pve8
Code:
qm set 629 -args '-set device.hostpci0.addr=02.0 -set device.hostpci0.x-igd-gms=0x0 -set device.hostpci0.x-igd-opregion=on'

pve9
Code:
qm set 629 -args '-set device.hostpci0.bus=pcie.0 -set device.hostpci0.addr=0x02.0 -set device.hostpci0.x-igd-gms=0x0 -set device.hostpci0.x-igd-opregion=on'

  1. Does anyone have a working configuration for Intel iGPU passthrough to Windows 11?

pve8
https://forum.proxmox.com/threads/u...stopped-working-on-windows.169296/post-788880

pve9
https://forum.proxmox.com/threads/u...stopped-working-on-windows.169296/post-803806

  1. Is there a reliable workaround for Error 43 in this scenario?

I have a configuration that is working on my N100.
We can't provide something that works out of the box in your environment.

  1. Any BIOS tweaks specific to MiniSforum MS-01 that might help?

Settings such as VT-d are required

Code:
hostpci0: 0000:00:02,pcie=1,x-vga=1

bios must be specified

romfile=xxxx.rom

Code:
vfio_virqfd

No need to configure

Code:
video=efifb:off video=vesafb:off video=simplefb:off

Should not be used in current kernels
*This was the setting before 5.15.64-1, but you should only specify what you need to avoid issues.

Code:
initcall_blacklist=sysfb_init

5.15.64-1-pve and later use this
*If I were to add it, I would use a setting like this, but I don't think this setting is necessarily necessary for igpu passthrough.
 
Last edited:
You need to make settings that match the computer you are using.

pve8
Code:
qm set 629 -args '-set device.hostpci0.addr=02.0 -set device.hostpci0.x-igd-gms=0x0 -set device.hostpci0.x-igd-opregion=on'

pve9
Code:
qm set 629 -args '-set device.hostpci0.bus=pcie.0 -set device.hostpci0.addr=0x02.0 -set device.hostpci0.x-igd-gms=0x0 -set device.hostpci0.x-igd-opregion=on'



pve8
https://forum.proxmox.com/threads/u...stopped-working-on-windows.169296/post-788880

pve9
https://forum.proxmox.com/threads/u...stopped-working-on-windows.169296/post-803806



I have a configuration that is working on my N100.
We can't provide something that works out of the box in your environment.



Settings such as VT-d are required

Code:
hostpci0: 0000:00:02,pcie=1,x-vga=1

bios must be specified

romfile=xxxx.rom

Code:
vfio_virqfd

No need to configure

Code:
video=efifb:off video=vesafb:off video=simplefb:off

Should not be used in current kernels
*This was the setting before 5.15.64-1, but you should only specify what you need to avoid issues.

Code:
initcall_blacklist=sysfb_init

5.15.64-1-pve and later use this
*If I were to add it, I would use a setting like this, but I don't think this setting is necessarily necessary for igpu passthrough.
o cool...I can make it working with Q35 using part of your modification.

But may I know what is the following for? I didn't put in the hookscript but seems still working. (I am not using HDMI output, is it the reason why?)

Code:
nano /var/lib/vz/snippets/intel_igpu_reset.sh

---
#!/bin/bash
phase="$2"
echo "Phase is $phase"
if [ "$phase" == "pre-start" ]; then
    # Unbind gpu from i915
    echo "0000:00:02.0" > /sys/bus/pci/drivers/i915/unbind 2>/dev/null
    sleep 5
elif [ "$phase" == "post-stop" ]; then
    # Unbind gpu from vfio-pci
    sleep 5
    echo "0000:00:02.0" > /sys/bus/pci/drivers/vfio-pci/unbind 2>/dev/null
    sleep 2
    # Bind i915
    echo "0000:00:02.0" > /sys/bus/pci/drivers/i915/bind 2>/dev/null
    sleep 2
fi
---

chmod +x /var/lib/vz/snippets/intel_igpu_reset.sh
qm set 629 -hookscript local:snippets/intel_igpu_reset.sh

Also, if the following modification inside Windows guest doing the same thing as hookscript? I also didnt add this but still works?

Code:
pnputil /disable-device /class Display /bus PCI /connected && pnputil /enable-device /class Display /bus PCI /connected
 
Last edited:
But may I know what is the following for? I didn't put in the hookscript but seems still working. (I am not using HDMI output, is it the reason why?)

If you're using blacklisting or early binding, you don't need hook scripts.
*I prefer to display the console while the VM is stopped (using the standard driver instead of vfio-pci), so I simply configured it that way.

Also, if the following modification inside Windows guest doing the same thing as hookscript? I also didnt add this but still works?

If the screen appears distorted, you may need to disable and re-enable the device in Windows (using pnputil). However, if there are no display issues, this setting is unnecessary.
*In my setup, block noise appeared on the HDMI output, but it disappeared after disabling and then re-enabling the device in Windows.

As long as it's working, any settings are fine.

*Rather, I was saved by you telling me it works with the patched VBIOS.
 
Last edited:
If you're using blacklisting or early binding, you don't need hook scripts.
*I prefer to display the console while the VM is stopped (using the standard driver instead of vfio-pci), so I simply configured it that way.



If the screen appears distorted, you may need to disable and re-enable the device in Windows (using pnputil). However, if there are no display issues, this setting is unnecessary.
*In my setup, block noise appeared on the HDMI output, but it disappeared after disabling and then re-enabling the device in Windows.

As long as it's working, any settings are fine.

*Rather, I was saved by you telling me it works with the patched VBIOS.
Thanks, very clear explained....appreciated.

And yes, not sure how Windows taking up the devices. Linux indeed no need using VBIOS at all
 
  • Like
Reactions: uzumo