PCIe Passthrough - IOMMU, VT-d and setup done, but no groups

jakeowaty

New Member
Sep 8, 2024
2
0
1
Hello there!

I've probably been banging my head against this for the past few days and I am still stuck at the same problem.

So naturally I want to use PCIe passthrough on my Nvidia GPU on my homelab host. I've enabled VT-d and IOMMU in BIOS (and even reset it by removing CMOS battery to check if that would help, no dice).

Despite following guides to the T, I still get no output for:
Code:
find /sys/kernel/iommu_groups/ -type l

My /etc/default/grub looks like this:
Code:
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
#GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt nofb nomodeset initcall_bl>
GRUB_CMDLINE_LINUX=""

Which then I verify with:

Code:
root@homelab:~# cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-6.8.12-1-pve root=/dev/mapper/pve-root ro quiet intel_iommu=on iommu=pt nofb nomodeset initcall_blacklist=sysfb_init video=vesafbff,efifbff vfio-pci.ids=10de:2182,10de:1aeb disable_vga=1

Code:
root@homelab:~# lsmod | grep iommu
vfio_iommu_type1       45056  0
vfio                   65536  3 vfio_pci_core,vfio_iommu_type1,vfio_pci
iommufd                94208  1 vfio

Code:
root@homelab:~# dmesg |grep -e DMAR -e IOMMU -e AMD-Vi
[    0.060794] DMAR: IOMMU enabled

Only headway I've done is to get the following output when using the command:
Code:
root@homelab:~# for d in /sys/kernel/iommu_groups/*/devices/*; do n=${d#*/iommu_groups/*}; n=${n%%/*}; printf 'IOMMU group %s ' "$n"; lspci -nns "${d##*/}"; done
IOMMU group * 00:00.0 Host bridge [0600]: Intel Corporation 4th Gen Core Processor DRAM Controller [8086:0c00] (rev 06)
00:01.0 PCI bridge [0604]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller [8086:0c01] (rev 06)
00:02.0 Display controller [0380]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller [8086:0412] (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 05)
00:16.0 Communication controller [0780]: Intel Corporation 8 Series/C220 Series Chipset Family MEI Controller #1 [8086:8c3a] (rev 04)
00:1a.0 USB controller [0c03]: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 [8086:8c2d] (rev 05)
00:1b.0 Audio device [0403]: Intel Corporation 8 Series/C220 Series Chipset High Definition Audio Controller [8086:8c20] (rev 05)
00:1c.0 PCI bridge [0604]: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 [8086:8c10] (rev d5)
00:1c.3 PCI bridge [0604]: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #4 [8086:8c16] (rev d5)
00:1d.0 USB controller [0c03]: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 [8086:8c26] (rev 05)
00:1f.0 ISA bridge [0601]: Intel Corporation Z87 Express LPC Controller [8086:8c44] (rev 05)
00:1f.2 SATA controller [0106]: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] [8086:8c02] (rev 05)
00:1f.3 SMBus [0c05]: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller [8086:8c22] (rev 05)
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU116 [GeForce GTX 1660 Ti] [10de:2182] (rev a1)
01:00.1 Audio device [0403]: NVIDIA Corporation TU116 High Definition Audio Controller [10de:1aeb] (rev a1)
01:00.2 USB controller [0c03]: NVIDIA Corporation TU116 USB 3.1 Host Controller [10de:1aec] (rev a1)
01:00.3 Serial bus controller [0c80]: NVIDIA Corporation TU116 USB Type-C UCSI Controller [10de:1aed] (rev a1)
03:00.0 Ethernet controller [0200]: Qualcomm Atheros Killer E220x Gigabit Ethernet Controller [1969:e091] (rev 13

I am starting to think the hardware I'm using might just be not supporting the IOMMU properly, therefore the problem.

Would appreciate anyone helping me with this!
 
Last edited:
intel_iommu=on is no longer needed since it is on by default since kernel version 6.8. video=vesafbff,efifbff has been invalid for a long time and does nothing on Proxmox.

If you don't have IOMMU groups then VT-d is not enabled by the motherboard BIOS or the motherboard or CPU does not support it.
Please double check your BIOS settings. I know you wrote that you did this already but it is still the most common cause of IOMMU not being enabled as people confuse VT-x and VT-d.
What your motherboard and CPU model?. Please double check them against the Intel website for VT-d support.
 
intel_iommu=on is no longer needed since it is on by default since kernel version 6.8. video=vesafbff,efifbff has been invalid for a long time and does nothing on Proxmox.
That's what I get for following old guides, right?

Should I just remove the entire line from the /etc/default/grub? Since it doesn't matter, I'll try if that fixes things.

The machine is an older one - Intel I-7 4770k and MSI Z87-G45 Gaming. As far as I can see the CPU should support IOMMU, but motherboard might not. Although I for sure turned VT to D-mode (and its associated option turns to PEG automatically). I know it's on, since I saved and rebooted I get no video output to BIOS or server unless I take the GPU out.

Thank you so much for responding, I greatly appreciate it!
 

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!