JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
Hello all. I just started tinkering with proxmox, and am trying to pass the integrated graphics to an Ubuntu VM.
I can't quite get it to work, so I'd like some help troubleshooting what's wrong.
This is running on a Minisforum TH50 (cpu: i5-11320h ).
Essentially, I've tried every method I can for enabling the IOMMU, but adding a pci device to a VM through the management interface gives me the "No IOMMU detected, please activate it.See Documentation for further information" message.
I should note that my BIOS does not have a IOMMU or VT-d option, but Minisforum has said for other products that this feature is forced on and hidden in the BIOS. I've sent support an email asking if that is true for the TH50 as well, but I figured I'd still post this here in case I missed something else.
This is my kernel command line:
GRUB_CMDLINE_LINUX_DEFAULT="quiet vfio-pci.ids=8086:9a49 intel_iommu=on "
I haven't changed any other line in /etc/default/grub
I'm pretty sure I can get rid of the vfio-pci.ids=8086:9a49 part of the kernel command line, since it doesn't seem to apply that driver anyway (as below)
The output of lspci -nnkv -s 00:02 :
00:02.0 VGA compatible controller [0300]: Intel Corporation TigerLake GT2 [Iris Xe Graphics] [8086:9a49] (rev 03) (prog-if 00 [VGA controller])
        Subsystem: Device [1e50:800d]
        Flags: bus master, fast devsel, latency 0, IRQ 255
        Memory at 607d000000 (64-bit, non-prefetchable) [size=16M]
        Memory at 4000000000 (64-bit, prefetchable) [size=256M]
        I/O ports at 3000 [size=64]
        Expansion ROM at 000c0000 [virtual] [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)
        Capabilities: [320] Single Root I/O Virtualization (SR-IOV)
        Kernel modules: i915
and the output of dmesg | grep -i iommu :
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-5.15.30-2-pve root=/dev/mapper/pve-root ro quiet vfio-pci.ids=8086:9a49 intel_iommu=on
[    0.040428] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.15.30-2-pve root=/dev/mapper/pve-root ro quiet vfio-pci.ids=8086:9a49 intel_iommu=on
[    0.040467] DMAR: IOMMU enabled
[    0.685431] pci 0000:00:02.0: DMAR: Skip IOMMU disabling for graphics
[    0.723207] iommu: Default domain type: Translated
[    0.723207] iommu: DMA domain TLB invalidation policy: lazy mode
The "Skip IOMMU disabling for graphics" seems important, but I don't know what it means.
I also installed kvm-ok , which gives this result:
for d in /sys/kernel/iommu_groups/*/devices/*; do n=${d#*/iommu_groups/*}; n=${n%%/*}; printf 'IOMMU group %s ' "$n"; lspci -nns "${d##*/}"; done
(Thanks to avw for the command!)
IOMMU group * 00:00.0 Host bridge [0600]: Intel Corporation 11th Gen Core Processor Host Bridge/DRAM Registers [8086:9a14] (rev 02)
00:02.0 VGA compatible controller [0300]: Intel Corporation TigerLake GT2 [Iris Xe Graphics] [8086:9a49] (rev 03)
00:06.0 PCI bridge [0604]: Intel Corporation 11th Gen Core Processor PCIe Controller [8086:9a09] (rev 02)
00:07.0 PCI bridge [0604]: Intel Corporation Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #0 [8086:9a23] (rev 02)
00:07.1 PCI bridge [0604]: Intel Corporation Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #1 [8086:9a25] (rev 02)
00:07.2 PCI bridge [0604]: Intel Corporation Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #2 [8086:9a27] (rev 02)
00:07.3 PCI bridge [0604]: Intel Corporation Tiger Lake-LP Thunderbolt 4 PCI Express Root Port #3 [8086:9a29] (rev 02)
00:0d.0 USB controller [0c03]: Intel Corporation Tiger Lake-LP Thunderbolt 4 USB Controller [8086:9a13] (rev 02)
00:0d.2 USB controller [0c03]: Intel Corporation Tiger Lake-LP Thunderbolt 4 NHI #0 [8086:9a1b] (rev 02)
00:0d.3 USB controller [0c03]: Intel Corporation Tiger Lake-LP Thunderbolt 4 NHI #1 [8086:9a1d] (rev 02)
00:14.0 USB controller [0c03]: Intel Corporation Tiger Lake-LP USB 3.2 Gen 2x1 xHCI Host Controller [8086:a0ed] (rev 30)
00:14.2 RAM memory [0500]: Intel Corporation Tiger Lake-LP Shared SRAM [8086:a0ef] (rev 30)
00:15.0 Serial bus controller [0c80]: Intel Corporation Tiger Lake-LP Serial IO I2C Controller #0 [8086:a0e8] (rev 30)
00:15.1 Serial bus controller [0c80]: Intel Corporation Tiger Lake-LP Serial IO I2C Controller #1 [8086:a0e9] (rev 30)
00:15.2 Serial bus controller [0c80]: Intel Corporation Tiger Lake-LP Serial IO I2C Controller #2 [8086:a0ea] (rev 30)
00:15.3 Serial bus controller [0c80]: Intel Corporation Tiger Lake-LP Serial IO I2C Controller #3 [8086:a0eb] (rev 30)
00:16.0 Communication controller [0780]: Intel Corporation Tiger Lake-LP Management Engine Interface [8086:a0e0] (rev 30)
00:17.0 SATA controller [0106]: Intel Corporation Device [8086:a0d3] (rev 30)
00:19.0 Serial bus controller [0c80]: Intel Corporation Tiger Lake-LP Serial IO I2C Controller #4 [8086:a0c5] (rev 30)
00:19.1 Serial bus controller [0c80]: Intel Corporation Tiger Lake-LP Serial IO I2C Controller #5 [8086:a0c6] (rev 30)
00:1c.0 PCI bridge [0604]: Intel Corporation Device [8086:a0b8] (rev 30)
00:1c.4 PCI bridge [0604]: Intel Corporation Device [8086:a0bc] (rev 30)
00:1c.5 PCI bridge [0604]: Intel Corporation Tigerlake PCH-LP PCI Express Root Port #6 [8086:a0bd] (rev 30)
00:1d.0 PCI bridge [0604]: Intel Corporation Tiger Lake-LP PCI Express Root Port #9 [8086:a0b0] (rev 30)
00:1e.0 Communication controller [0780]: Intel Corporation Tiger Lake-LP Serial IO UART Controller #0 [8086:a0a8] (rev 30)
00:1e.3 Serial bus controller [0c80]: Intel Corporation Tiger Lake-LP Serial IO SPI Controller #1 [8086:a0ab] (rev 30)
00:1f.0 ISA bridge [0601]: Intel Corporation Tiger Lake-LP LPC Controller [8086:a082] (rev 30)
00:1f.3 Multimedia audio controller [0401]: Intel Corporation Tiger Lake-LP Smart Sound Technology Audio Controller [8086:a0c8] (rev 30)
00:1f.4 SMBus [0c05]: Intel Corporation Tiger Lake-LP SMBus Controller [8086:a0a3] (rev 30)
00:1f.5 Serial bus controller [0c80]: Intel Corporation Tiger Lake-LP SPI Controller [8086:a0a4] (rev 30)
01:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd Device [144d:a809]
af:00.0 Ethernet controller [0200]: Intel Corporation Ethernet Controller I225-V [8086:15f3] (rev 03)
b0:00.0 Ethernet controller [0200]: Intel Corporation Ethernet Controller I225-V [8086:15f3] (rev 03)
b1:00.0 Network controller [0280]: MEDIATEK Corp. Device [14c3:0608
IOMMU is not enabled (because it is all in one group *). Check with cat /proc/cmdline whether intel_iommu=on is actually there. If that's the case then it's a motherboard/BIOS issue. If it is not there, then maybe you are booting in UEFI mode with ZFS or you did not run update-grub ?
EDIT: Turns out that DMAR: IOMMU enabled already (and only!) signals that the setting is active. I didn't know that before.
intel_iommu=on is in that file, so it looks like the Minisforum TH50 just does not have IOMMU support.
Thanks.
IOMMU is not enabled (because it is all in one group *). Check with cat /proc/cmdline whether intel_iommu=on is actually there. If that's the case then it's a motherboard/BIOS issue. If it is not there, then maybe you are booting in UEFI mode with ZFS or you did not run update-grub ?
EDIT: Turns out that DMAR: IOMMU enabled already (and only!) signals that the setting is active. I didn't know that before. What do you mean by "maybe you are booting in UEFI mode with ZFS" ?
I am booting Proxmox with UEFI and ZFS (for boot drive). Could this be why I am having trouble getting IOMMU groups activated?
Machine is a Dell Precision Rack 7910 with Intel Virtualization turned on in BIOS
... but Proxmox is saying "No IOMMU detected" and /sys/kernel/iommu_groups is empty.
$ cat /proc/cmdline
initrd=\EFI\proxmox\5.15.64-1-pve\initrd.img-5.15.64-1-pve root=ZFS=rpool/ROOT/pve-1 boot=zfs
Any help appreciated I am booting Proxmox with UEFI and ZFS (for boot drive). Could this be why I am having trouble getting IOMMU groups activated? Yes because then you need to put kernel parameters in /etc/kernel/cmdline and not /etc/default/grub, because your system using systemd-boot instead of GRUB.
Machine is a Dell Precision Rack 7910 with Intel Virtualization turned on in BIOS
... but Proxmox is saying "No IOMMU detected" and /sys/kernel/iommu_groups is empty. This is because kernel parameters are in the wrong configuration file.
$ cat /proc/cmdline
initrd=\EFI\proxmox\5.15.64-1-pve\initrd.img-5.15.64-1-pve root=ZFS=rpool/ROOT/pve-1 boot=zfs As you can see intel_iommu=on is missing and that line looks nothing like your GRUB_CMDLINE_LINUX_DEFAULT="quiet vfio-pci.ids=8086:9a49 intel_iommu=on " .
Thanks... this thread allowed me to (finally) track down this problem.
For future readers:
.. because I am using a mirror zfs as my boot drive, the update-grub command will throw some errors
.. instead of editing /etc/default/grub with "GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
.. you need to add "intel_iommu=on" to the end of existing line on /etc/kernel/cmdline (all on one line)
.. then run "proxmox-boot-tool refresh"
.. reboot & I have my IOMMU groups :)
Thanks... this thread allowed me to (finally) track down this problem.
For future readers:
.. because I am using a mirror zfs as my boot drive, the update-grub command will throw some errors
.. instead of editing /etc/default/grub with "GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
.. you need to add "intel_iommu=on" to the end of existing line on /etc/kernel/cmdline (all on one line)
.. then run "proxmox-boot-tool refresh"
.. reboot & I have my IOMMU groups :) This↓ helped so much thanks!!!
"instead of editing /etc/default/grub with "GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
.. you need to add "intel_iommu=on" to the end of existing line on /etc/kernel/cmdline (all on one line)" 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! 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 your own in 60 seconds.