[GUIDE] Intel Intergrated graphic Passthrough

luxflow

Member
Nov 20, 2016
6
7
8
32
This is not officialy supported method by proxmox

[What is IGD Passthrough]
same as GPU PCIe passthrough except GPU is intel intergrated graphic device

[Why]
No need to extra pcie card for vga passthrough, and power efficient

[How]
requirement
0. broadwell or newer process for UPT mode or above sandy bridge for Legacy mode
1. first you need to know how does gpu passthrough works, you don't need to follow step
just read this wiki page and understand
2. kernel above 4.6
guide is here or you can install by yourself
3.

Code:
vim /etc/default/grub
# add following to GRUB_CMDLINE_LINUX_DEFAULT
intel_iommu=on video=efifb:off

update-grub

vim /etc/modprobe.d/blacklist.conf
blacklist snd_hda_intel
blacklist snd_hda_codec_hdmi
blacklist i915

vim /etc/modprobe.d/vfio.conf
options vfio-pci ids=<YOUR INTEL IGD ID>

echo "options kvm ignore_msrs=1" > /etc/modprobe.d/kvm.conf

update-initramfs -u

vim /etc/pve/qemu-server/<YOUR VM ID>.conf
# if your processor > broadewell then, (upt mode)
args: -device vfio-pci,host=00:02.0,addr=0x18,x-vga=on,x-igd-opregion=on

# if your processor >= sandy then, (legacy mode)
machine:pc-i440fx-2.2
args: -device vfio-pci,host=00:02.0,addr=0x02
vga: none
 
Last edited:
Thanks for guide.

I want to IGD Passthrough with haswell(E3-1225 v3).
but I'm noob.
I don't know UPT mode and Legacy mode.

please teach me passthrough with legacy mode.
 
Sorry for late answer
I changed guide, check out [How] section

Unfortunately I sold haswell cpu, so I cannot test.
When I'm trying legacy mode for skylake, IGD passthrough works but screen is splited 3 way
I succeed with legacy mode with haswell cpu in ubuntu
I'm not sure this is due to skylake, proxmox, or maybe I setup incorrectly
 
Last edited:
Hi, I'm thinking about using the IGP for a MacOS VM.

If I passthrough the IGP is it still available for system CLI as long as the VM is no started?
 
Hello

I was wondering if someone could help me troubleshoot IGD passthrough using UPT Mode. I was able to successfully get IGD passthrough working using Legacy Mode by following the guide above. However, when I try to follow the UPT Mode instructions, I do not get anything displayed on my external monitor. My understanding is that in UPT Mode, the external monitor is supposed to become a secondary monitor and I am assuming that the VNC console should be the primary? Which I would then mirror to the external monitor? However, when I display the VNC console, all I see is the message "Guest has not initialized the display (yet)."

I have looked through the logs and haven't seen anything particularly striking.

Here is my basic configuration:
Proxmox 5.0
Windows 10 Guest
Kaby Lake i3-7100 CPU
There is no graphics card in the machine.

Please let me know if there is other configuration information or log files that could help identify the issue.

Thanks in advance,
Ed
 
Hallo,
I have nch of the instructions the setup successfully. It works, but now I have created a process "kworker 1/1" of the 100% CPU load. Many settings I have tried out of the web, no success, does anyone have an idea?
My system, I wanted to use the onboard intel graphics:
CPU: Intel i5-2500 3.30GHz
Mainboard: Z68 pro3 Gen3 last Bios

proxmox-ve: 5.1-25 (running kernel: 4.13.4-1-pve)
pve-manager: 5.1-36 (running version: 5.1-36/131401db)
pve-kernel-4.10.1-2-pve: 4.10.1-2
pve-kernel-4.13.4-1-pve: 4.13.4-25
pve-kernel-4.10.17-4-pve: 4.10.17-24
pve-kernel-4.10.17-2-pve: 4.10.17-20
pve-kernel-4.10.15-1-pve: 4.10.15-15
pve-kernel-4.10.8-1-pve: 4.10.8-7
pve-kernel-4.10.17-3-pve: 4.10.17-23
pve-kernel-4.10.11-1-pve: 4.10.11-9
pve-kernel-4.10.17-1-pve: 4.10.17-18
libpve-http-server-perl: 2.0-6
lvm2: 2.02.168-pve6
corosync: 2.4.2-pve3
libqb0: 1.0.1-1
pve-cluster: 5.0-15
qemu-server: 5.0-17
pve-firmware: 2.0-3
libpve-common-perl: 5.0-20
libpve-guest-common-perl: 2.0-13
libpve-access-control: 5.0-7
libpve-storage-perl: 5.0-16
pve-libspice-server1: 0.12.8-3
vncterm: 1.5-2
pve-docs: 5.1-12
pve-qemu-kvm: 2.9.1-2
pve-container: 2.0-17
pve-firewall: 3.0-3
pve-ha-manager: 2.0-3
ksm-control-daemon: 1.2-2
glusterfs-client: 3.8.8-1
lxc-pve: 2.1.0-2
lxcfs: 2.0.7-pve4
criu: 2.11.1-1~bpo90
novnc-pve: 0.6-4
smartmontools: 6.5+svn4324-1
zfsutils-linux: 0.7.2-pve1~bpo90

Thank you
 
Just wanted to confirm that the instructions from post #1 worked for me to passthrough my HD 530 IGD (from a Skylake Core i5-6500 on an Asus H110S2 board) to a Win 7 as well as a Win 10 VM, using legacy mode assignment.

I ran into an issue, though, that the Intel IGD driver would throw a "Code 43" error inside the VMs, when RAM assigned to the VM was south of 7GB. Even without a single program running, the VMs reported more than 5G of RAM being used. Some googling later, I found out that the issue is known. Due to some bug in the Intel driver, which is supposed to be fixed at some point in time (just not yet...), some IGDs cause this
problem. A workaround is available in qemu, by adding the parameter "x-igd-gms=1" to the according IGD device line.

So, if you are affected by the IGD requiring more than 4GB of RAM alone, your proxmox conf file should contain the following lines for legacy IGD passthrough:

Code:
# if your processor >= sandy then, (legacy mode)
machine:pc-i440fx-2.2
args: -device vfio-pci,host=00:02.0,addr=0x02,x-igd-gms=1
vga: none
 
Hello !

I successfully pass-trough HD 630 IGD from my i5-7400 CPU - Gigabyte z270-n WiFi board :)

Thanks a lot for the instructions :cool:

Heading now to pass-through audio o_O
 
Hi All,

Has anyone successfully got this working with Proxmox 5.3? I'd like to try to passthrough a Gemini Lake iGP (for hardware transcoding with Plex) to an Ubuntu VM so keen to see if anyone has got this working successfully without upgrading kernels etc?

Thanks!
 
Hi All,

Has anyone successfully got this working with Proxmox 5.3? I'd like to try to passthrough a Gemini Lake iGP (for hardware transcoding with Plex) to an Ubuntu VM so keen to see if anyone has got this working successfully without upgrading kernels etc?

Thanks!
我搞好了,bios里把核显的显存调到最大。配置是这样的
Code:
agent: 0
bios: ovmf
boot: c
bootdisk: sata0
cores: 2
hostpci0: 00:02.0,x-vga=1
memory: 1024
name: libreelec
net0: virtio=6E:F5:AF:05:A4:40,bridge=vmbr0
numa: 0
ostype: l26
sata0: local-lvm:vm-101-disk-1,size=552M
sata1: local-lvm:vm-101-disk-0,size=2G
scsihw: virtio-scsi-pci
smbios1: uuid=ced70a7e-ecad-4564-9400-0d8961db6056
sockets: 1
usb0: host=04d9:1603
usb1: host=046d:c247
vmgenid: 31aaf457-cbe6-4e8b-b351-e5090bee67be
machine: pc-q35-2.11

关键是最后这条配置
Code:
machine: pc-q35-2.11
 
@xingsiyue

我5.3/hd630用你的配置,启动提示这个错误:

-device vfio-pci,host=00:02.0,id=hostpci0,bus=pci.0,addr=0x10,x-vga=on: vfio error: 0000:00:02.0: failed getting region info for VGA region index 8: Invalid argument
device does not support requested feature x-vga
 
Hello Everyone,

I too can confirm that the above tutorial works. I have successfully managed to passthrough my Integrated GPU (Intel Core i5-4460 with Intel HD graphics 4600) to a Windows10 host. The only problem is that I cannot do the same with the integrated sound card through HDMI.

My GPU has a different ID from sound device :
lspci
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06)
00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)

I tried to pass both on VM's cfg as follows :

args: -device 'vfio-pci,host=00:02.0,x-igd-gms=1' -device 'vfio-pci,host=00:03.0,x-igd-gms=1'

but no sound appears. Can you please assist?

Thank you in advance
 
Hello Everyone,

I too can confirm that the above tutorial works. I have successfully managed to passthrough my Integrated GPU (Intel Core i5-4460 with Intel HD graphics 4600) to a Windows10 host. The only problem is that I cannot do the same with the integrated sound card through HDMI.

My GPU has a different ID from sound device :
lspci
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06)
00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)

I tried to pass both on VM's cfg as follows :

args: -device 'vfio-pci,host=00:02.0,x-igd-gms=1' -device 'vfio-pci,host=00:03.0,x-igd-gms=1'

but no sound appears. Can you please assist?

Thank you in advance


Hi,did your machine work?
 
Hi,did your machine work?
Hi,
Unfortunately i couldn't manage to get the HDMI sound work. I still use the motherboard sound controller but is cracking when i there is much I/O. I plan to start testing again in the coming weeks. I will post my results if i succeed.
 
我搞好了,bios里把核显的显存调到最大。配置是这样的
Code:
agent: 0
bios: ovmf
boot: c
bootdisk: sata0
cores: 2
hostpci0: 00:02.0,x-vga=1
memory: 1024
name: libreelec
net0: virtio=6E:F5:AF:05:A4:40,bridge=vmbr0
numa: 0
ostype: l26
sata0: local-lvm:vm-101-disk-1,size=552M
sata1: local-lvm:vm-101-disk-0,size=2G
scsihw: virtio-scsi-pci
smbios1: uuid=ced70a7e-ecad-4564-9400-0d8961db6056
sockets: 1
usb0: host=04d9:1603
usb1: host=046d:c247
vmgenid: 31aaf457-cbe6-4e8b-b351-e5090bee67be
machine: pc-q35-2.11

关键是最后这条配置
Code:
machine: pc-q35-2.11
老哥6啊,特地注册账号来请教下,你装的是win10吗,最后这条配置有啥讲究
 
Hello Everyone,

I too can confirm that the above tutorial works. I have successfully managed to passthrough my Integrated GPU (Intel Core i5-4460 with Intel HD graphics 4600) to a Windows10 host. The only problem is that I cannot do the same with the integrated sound card through HDMI.

My GPU has a different ID from sound device :
lspci
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06)
00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)

I tried to pass both on VM's cfg as follows :

args: -device 'vfio-pci,host=00:02.0,x-igd-gms=1' -device 'vfio-pci,host=00:03.0,x-igd-gms=1'

but no sound appears. Can you please assist?

Thank you in advance

Hi bro, would you please share your
"/etc/pve/qemu-server/<YOUR VM ID>.conf"?My CPU is i5 4690k, i guess it's as same as i5 4460 but i can't passthrough integrated GPU. many thanks.
 
Just to record my situation. Finally i get the Intel integrated graphics passthru and output to a monitor (a TV) through HDMI but still don't get HDMI audio work.

I don't use the UEFI to install Win10 (the latest 1903 version works, i also tried 1703 but failed, i guess due to the integrated graphics driver, i don't know just guess), just use the default SeaBIOS, i don't know why, but it works.

PVE 5.4-3
CPU: i5 4690k
Motherboard: Colorful B85K-HD V22

/etc/default/grub
Code:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off"
root@pve:~# update-grub

/etc/modprobe.d/blacklist.conf
Code:
# blacklist nvidiafb
blacklist snd_hda_intel
blacklist snd_hda_codec_hdmi
blacklist i915

root@pve:~# lspci
Code:
00:00.0 Host bridge: Intel Corporation 4th Gen Core Processor DRAM Controller (rev 06)
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06)
00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)
00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05)
00:16.0 Communication controller: Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 (rev 04)
00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 05)
00:1b.0 Audio device: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller (rev 05)
00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 (rev d5)
00:1c.2 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #3 (rev d5)
00:1c.4 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #5 (rev d5)
00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 05)
00:1f.0 ISA bridge: Intel Corporation B85 Express LPC Controller (rev 05)
00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 05)
00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 05)
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06)
03:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
03:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)

root@pve:~# lspci -n -s 00:02
Code:
00:02.0 0300: 8086:0412 (rev 06)

/etc/modprobe.d/vfio.conf
Code:
options vfio-pci ids=8086:0412

/etc/modprobe.d/kvm.conf
Code:
options kvm ignore_msrs=1

root@pve:~# update-initramfs -u
root@pve:~# reboot


/etc/pve/qemu-server/<YOUR VM ID>.conf
Code:
args: -device 'vfio-pci,host=00:02.0,addr=0x02,x-igd-gms=1'
bootdisk: sata0
cores: 4
hostpci0: 00:1b.0
ide2: local:iso/Windows10_1903.iso,media=cdrom
memory: 8196
name: Win10
net0: e1000=02:95:FE:77:B7:47,bridge=vmbr0,firewall=1
numa: 0
ostype: win10
sata0: local-lvm:vm-106-disk-0,size=30G
scsihw: virtio-scsi-pci
smbios1: uuid=be2bec92-23cd-4637-ac16-9d6d3523642d
sockets: 1
usb0: host=3-2,usb3=1
usb1: host=3-3,usb3=1
usb2: host=3-7
usb3: host=3-8
usb4: host=3-10
vga: none
vmgenid: f99e2477-44fd-422a-a8f7-346438dbce9b
 
Last edited:
  • Like
Reactions: lucad
So I tried following this guide to get my "Intel Core i5-9600K" on-chip GPU to passthrough to my Ubuntu 18.04 VM. After making the changes, rebooting the Proxmox host and starting the VM again the VM doesn't boot anymore.

It shows as running in Proxmox without any errors but there is no video, no serial console, no network. Nothing.

I have no clue where to look. Any ideas?


Code:
root@proxmox:~# cat /etc/pve/qemu-server/100.conf
args: -device 'vfio-pci,host=00:02.0,addr=0x02,x-igd-gms=1'
bootdisk: scsi0
cores: 2
ide2: none,media=cdrom
memory: 6144
name: server
net0: virtio=92:DA:4E:7C:D3:8F,bridge=vmbr0,firewall=1
numa: 0
onboot: 1
ostype: l26
scsi0: NVME500:vm-100-disk-0,size=100G
scsihw: virtio-scsi-pci
serial0: socket
smbios1: uuid=a7438abe-6cff-4eed-9680-1ee51a2233f3
sockets: 2
vga: none
vmgenid: eca31629-9f93-4d2d-b2c9-3fa5e1a0e3f8


The GPU now shows as vfio=pci driver, before the changes this was the Intel i965 driver.

Code:
root@proxmox:~# lspci -v
00:02.0 VGA compatible controller: Intel Corporation Device 3e98 (rev 02) (prog-if 00 [VGA controller])
    Subsystem: Gigabyte Technology Co., Ltd Device d000
    Flags: fast devsel, IRQ 16
    Memory at 50000000 (64-bit, non-prefetchable) [size=16M]
    Memory at 40000000 (64-bit, prefetchable) [size=256M]
    I/O ports at 4000 [size=64]
    [virtual] Expansion ROM at 000c0000 [disabled] [size=128K]
    Capabilities: [40] Vendor Specific Information: Len=0c <?>
    Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
    Capabilities: [ac] MSI: Enable- Count=1/1 Maskable- 64bit-
    Capabilities: [d0] Power Management version 2
    Capabilities: [100] Process Address Space ID (PASID)
    Capabilities: [200] Address Translation Service (ATS)
    Capabilities: [300] Page Request Interface (PRI)
    Kernel driver in use: vfio-pci
    Kernel modules: i915

Code:
root@proxmox:~# lspci -n -s 00:02
00:02.0 0300: 8086:3e98 (rev 02)
 
Okay, so it looks like I made it work. Removed the whole "args: -device 'vfio-pci,host=00:02.0,addr=0x02,x-igd-gms=1'" line from the VM config. Added "hostpci0: 00:02.0,pcie=1,rombar=0,x-vga=1"

Rebooted into BIOS, enabled UEFI boot for storage and PCI-E. Rebooted and it suddenly worked.
 

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!