JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
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.
Buy now!
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.
Accept
Learn more…