In this guide, we’ll go through the steps to successfully pass through an Intel iGPU to a Windows 11 VM running on Proxmox 8.2.2 on a Dell Optiplex 3050. This setup uses an Intel Core i7-6700T and allows full utilization of the iGPU in the virtual machine.
Prerequisites:
- Proxmox 8.2.2 installed.
- Dell Optiplex 3050 with an Intel i7-6700T.
- Proxmox configured with UEFI boot mode and hardware virtualization enabled in the BIOS.
Step 1: Configure GRUB for IOMMU and PCIe ACS Override
To begin, you’ll need to enable IOMMU and configure the ACS override in your GRUB settings. This is essential for passing through PCI devices like the iGPU.
Edit the GRUB file:
nano /etc/default/grub
Add the following to the GRUB_CMDLINE_LINUX_DEFAULT
line:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt video=efifb:off pcie_acs_override=downstream,multifunction"
Save the file and update GRUB:
update-grub
reboot
Step 2: Configure VFIO for the iGPU
To configure iGPU passthrough, you need to identify the PCI ID of your iGPU and bind it to vfio-pci
.
Get the PCI ID:
Run this command to list all PCI devices:
lspci -nn
Look for your Intel iGPU, something like:
00:02.0 VGA compatible controller [8086:1912] (rev 06)
The ID is 8086:1912
(vendor).
Configure VFIO:
Edit /etc/modprobe.d/vfio.conf
and add:
options vfio-pci ids=8086:1912 disable_vga=1
options vfio-pci disable_idle_d3=1
Save and reboot.
Step 3: Blacklist the i915
Driver
Since the iGPU is now being passed to the VM, we need to ensure it isn’t used by the host by blacklisting the i915
driver.
Edit the blacklist file:
nano /etc/modprobe.d/blacklist.conf
Add the following line:
blacklist i915
Step 4: Configure the Windows 11 VM
Now, we will configure the Windows 11 VM to use the iGPU.
Edit the VM’s configuration file (replace 101
with your VM ID):
nano /etc/pve/qemu-server/101.conf
Add the following line for iGPU passthrough:
args: -device vfio-pci,host=00:02.0,x-igd-opregion=on
Your final VM configuration should look something like this:
args: -device vfio-pci,host=00:02.0,x-igd-opregion=on
balloon: 0
bios: ovmf
boot: order=scsi0;ide0;ide2;net0
cores: 8
cpu: host,hidden=1,flags=+pcid
efidisk0: local-lvm:vm-101-disk-0,efitype=4m,pre-enrolled-keys=1,size=4M
ide0: SSD500:iso/virtio-win-0.1.262.iso,media=cdrom,size=708140K
ide2: none,media=cdrom
machine: pc-q35-8.1
memory: 8192
scsi0: local-lvm:vm-101-disk-1,iothread=1,size=80G
smbios1: uuid=f503eb2e-687b-4e5c-8aef-f959aa02081d
sockets: 1
tpmstate0: local-lvm:vm-101-disk-3,size=4M,version=v2.0
Step 5: BIOS Settings
Before rebooting the system, ensure you have the correct BIOS settings configured on your Optiplex 3050.
- Enable Virtualization:
- Ensure both Intel VT-d and Intel VT-x are enabled.
- Disable iGPU Multi-Monitor:
- If available, disable the multi-monitor support for the iGPU to avoid conflicts.
Hardware Details:
- CPU: Intel Core i7-6700T @ 2.80 GHz
- Memory: 16 GB, 8 GB allocated to the VM
- Host System: Dell Optiplex 3050
- Proxmox Version: 8.2.2 (Kernel: 6.8.4-2-pve)