[Help] Intel Integrated graphic passthrough

alexgoaga

Member
Mar 19, 2021
9
0
6
32
Hello,
I have an issue managing the iGPU passthrough feature on my tiny thinkcenter M73 (CPU : Intel(R) Core(TM) i3-4150T CPU , having an Intel® HD Graphics 4400 )

Currently im running

Code:
proxmox-ve: 7.3-1 (running kernel: 5.15.74-1-pve)
pve-manager: 7.3-3 (running version: 7.3-3/c3928077)
pve-kernel-5.15: 7.2-14
pve-kernel-helper: 7.2-14
pve-kernel-5.13: 7.1-9
pve-kernel-5.15.74-1-pve: 5.15.74-1
pve-kernel-5.13.19-6-pve: 5.13.19-15
pve-kernel-5.13.19-2-pve: 5.13.19-4
ceph-fuse: 15.2.15-pve1
corosync: 3.1.7-pve1
criu: 3.15-1+pve-1
glusterfs-client: 9.2-1
ifupdown2: 3.1.0-1+pmx3
ksm-control-daemon: 1.4-1
libjs-extjs: 7.0.0-1
libknet1: 1.24-pve2
libproxmox-acme-perl: 1.4.2
libproxmox-backup-qemu0: 1.3.1-1
libpve-access-control: 7.2-5
libpve-apiclient-perl: 3.2-1
libpve-common-perl: 7.3-1
libpve-guest-common-perl: 4.2-3
libpve-http-server-perl: 4.1-5
libpve-storage-perl: 7.3-1
libspice-server1: 0.14.3-2.1
lvm2: 2.03.11-2.1
lxc-pve: 5.0.0-3
lxcfs: 4.0.12-pve1
novnc-pve: 1.3.0-3
proxmox-backup-client: 2.3.1-1
proxmox-backup-file-restore: 2.3.1-1
proxmox-mini-journalreader: 1.3-1
proxmox-offline-mirror-helper: 0.5.0-1
proxmox-widget-toolkit: 3.5.3
pve-cluster: 7.3-1
pve-container: 4.4-2
pve-docs: 7.3-1
pve-edk2-firmware: 3.20220526-1
pve-firewall: 4.2-7
pve-firmware: 3.5-6
pve-ha-manager: 3.5.1
pve-i18n: 2.8-1
pve-qemu-kvm: 7.1.0-4
pve-xtermjs: 4.16.0-1
qemu-server: 7.3-1
smartmontools: 7.2-pve3
spiceterm: 3.2-2
swtpm: 0.8.0~bpo11+2
vncterm: 1.7-1
zfsutils-linux: 2.1.6-pve1

Currently i've used this
Code:
--SSH into Proxmox--

--Enable IOMMU--

nano /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
    - OR -
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"

update-grub


--Enable VFIO--

nano /etc/modules

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd


--Blacklist Linux Host Drivers--


echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf
echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf
echo "blacklist snd_hda_intel" >> /etc/modprobe.d/blacklist.conf
echo "blacklist snd_hda_codec_hdmi" >> /etc/modprobe.d/blacklist.conf
echo "blacklist i915" >> /etc/modprobe.d/blacklist.conf

update-initramfs -u

--REBOOT Proxmox--

On a forum i've found and extra step do to :

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

Unfortunately after adding the PCI device from the list even if in the command "dmesg | grep -e DMAR -e IOMMU" the meesage is "DMAR: IOMMU enabled" on the web GUI i cannot star the VM due to message "TASK ERROR: cannot prepare PCI pass-through, IOMMU not present" . I've tried a few things found on google but none succeed.

I managed to find another error on my trials that kinda looks like the other one.
Code:
kvm: -device vfio-pci,host=00:02.0,addr=0x02: vfio 0000:00:02.0: no iommu_group found: No such file or directory
TASK ERROR: start failed: QEMU exited with code 1

What can i do / that would be the idea to tackle with this issue ? Im trying to passthrough to a W10 X64 VM

Other info :

Code:
VM config:
qm config 701

agent: 1
balloon: 0
boot: order=scsi0
cores: 2
cpulimit: 2
description: args%3A -device vfio-pci,host=00%3A02.0,addr=0x02%0Avga%3A none
machine: pc-i440fx-7.1
memory: 4096
meta: creation-qemu=7.1.0,ctime=1671793623
name: ThePathVM
net0: e1000=0E:91:65:A2:95:60,bridge=vmbr0,firewall=1
numa: 0
ostype: win10
scsi0: local-lvm:vm-701-disk-0,cache=writeback,size=128G,ssd=1
scsihw: virtio-scsi-pci
smbios1: uuid=78976ea0-1714-438d-9b97-623b7284de3a
sockets: 1
startup: up=60,down=60
tablet: 1
vmgenid: d8425a7e-e7a2-436e-b678-0a56298502f3


lspci -v command returns :
Code:
00:02.0 VGA compatible controller: Intel Corporation 4th Generation Core Processor Family Integrated Graphics Controller (rev 06) (prog-if 00 [VGA controller])
        DeviceName:  Onboard IGD
        Subsystem: Lenovo 4th Generation Core Processor Family Integrated Graphics Controller
        Flags: bus master, fast devsel, latency 0, IRQ 11
        Memory at f7800000 (64-bit, non-prefetchable) [size=4M]
        Memory at e0000000 (64-bit, prefetchable) [size=256M]
        I/O ports at f000 [size=64]
        Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]
        Capabilities: [90] MSI: Enable- Count=1/1 Maskable- 64bit-
        Capabilities: [d0] Power Management version 2
        Capabilities: [a4] PCI Advanced Features
        Kernel modules: i915



Thank you for your time,
Alex
 
Last edited:
Unfortunately after adding the PCI device from the list even if in the command "dmesg | grep -e DMAR -e IOMMU" the meesage is "DMAR: IOMMU enabled" on the web GUI i cannot star the VM due to message "TASK ERROR: cannot prepare PCI pass-through, IOMMU not present" . I've tried a few things found on google but none succeed.
What is the output of cat /proc/cmdline? Is intel_iommu=on missing?
Otherwise, what is the output of for d in /sys/kernel/iommu_groups/*/devices/*; do n=${d#*/iommu_groups/*}; n=${n%%/*}; printf 'IOMMU group %s ' "$n"; lspci -nns "${d##*/}"; done ? If there is only one group (numbered *) then VT-d is not enabled in the BIOS or intel_iommu=on is missing.
 
  • Like
Reactions: alexgoaga
What is the output of cat /proc/cmdline? Is intel_iommu=on missing?
Otherwise, what is the output of for d in /sys/kernel/iommu_groups/*/devices/*; do n=${d#*/iommu_groups/*}; n=${n%%/*}; printf 'IOMMU group %s ' "$n"; lspci -nns "${d##*/}"; done ? If there is only one group (numbered *) then VT-d is not enabled in the BIOS or intel_iommu=on is missing.

the output of the cat /proc/cmdline


Code:
BOOT_IMAGE=/boot/vmlinuz-5.15.74-1-pve root=/dev/mapper/pve-root ro quiet intel_iommu=on video=efifb:off



and the output for tthat super command :


Code:
IOMMU group * 00:00.0 Host bridge [0600]: Intel Corporation 4th Gen Core Processor DRAM Controller [8086:0c00] (rev 06)
00:02.0 VGA compatible controller [0300]: Intel Corporation 4th Generation Core Processor Family Integrated Graphics Controller [8086:041e] (rev 06)
00:03.0 Audio device [0403]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller [8086:0c0c] (rev 06)
00:14.0 USB controller [0c03]: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI [8086:8c31] (rev 04)
00:16.0 Communication controller [0780]: Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 [8086:8c3a] (rev 04)
00:19.0 Ethernet controller [0200]: Intel Corporation Ethernet Connection I217-V [8086:153b] (rev 04)
00:1a.0 USB controller [0c03]: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 [8086:8c2d] (rev 04)
00:1b.0 Audio device [0403]: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller [8086:8c20] (rev 04)
00:1c.0 PCI bridge [0604]: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 [8086:8c10] (rev d4)
00:1c.3 PCI bridge [0604]: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #4 [8086:8c16] (rev d4)
00:1d.0 USB controller [0c03]: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 [8086:8c26] (rev 04)
00:1f.0 ISA bridge [0601]: Intel Corporation H81 Express LPC Controller [8086:8c5c] (rev 04)
00:1f.2 SATA controller [0106]: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] [8086:8c02] (rev 04)
00:1f.3 SMBus [0c05]: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller [8086:8c22] (rev 04)
02:00.0 Network controller [0280]: Intel Corporation Wireless 7260 [8086:08b2] (rev 73)


I am almost certain sure that i've activated VT-d in bios but in 1:30h hours i will be back home from work and re-confirm if something was gone rogue
 
Last edited:
the output of the cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-5.15.74-1-pve root=/dev/mapper/pve-root ro quiet intel_iommu=on video=efifb:off
It should be enabled in Proxmox, if it is enabled in the motherboard BIOS. Note that video=efifb:off does nothing since kernel 5.15.
and the output for tthat super command :
IOMMU group * ...
I am almost certain sure that i've activated VT-d in bios but in 1:30h hours i will be back home from work and re-confirm if something was gone rogue
Since intel_iommu=on is present, VT-d is most likely not fully enabled in BIOS. Make sure VT-x is also enabled. I don't know your motherboard so I can't lookup the manual to help find the sometimes hard to find settings.
 
  • Like
Reactions: alexgoaga
So there are some missing features in my bios and out on lenovo forums this info :
Code:
I took a look at the BIOS of a M73 SFF with an i5-4570.   It has a BIOS setting for VT-x, and when that it enabled, another setting for VT-d.   The SFF and Tower use a different BIOS than the Tiny, which appears not to support VT.

Seems to me that i hit another brick in the wall
 
Hi,
i'm in you identical situation with my lenovo x220 :
- Intel ® Core ™ i5-2520M
- Intel HD graphics 3000

Did you resolved?