iGPU has no IOMMU Group

Librem v2 updated to the latest.

As can be seen on the screenshot, iGPU(which is 00:02:0) does not belong to any IOMMU group.
I need it in a group to try VM passthrough.
Any idea why or how to fix it?

Librem…Mini v2? Using Pureboot or coreboot? The iGPU is not normally part of an IOMMU group, it’s normally in PT mode. This behavior can be changed via kernel params. cat /proc/cmdline | grep iommu to see what is being set now

Thanks for checking this out Chromebox.
Using pureboot, here’s the result:

sudo cat /proc/cmdline | grep iommu
i915.enable_gvt=1
i915.enable_guc=0
iommu=pt
i915.enable_fbc=0
video=efifb:off,vesafb:off
vfio-pci.ids=8086:9b41
intel_iommu=igfx_off

Now I have iommu=pt in there because the guides I have been reading suggested putting that for passthrough (even though I don’t know what it really does) but I think they are also suggesting that my iGPU has to be in an IOMMU group.

Have you been able to passthrough the iGPU (gvt-d or gvt-g)?

you can’t have both iommu=pt and intel_iommu=igfx_off as the two conflict. I’m guessing what you want is intel_iommu=on. I’ve never tried passing thru the iGPU

just take for consideration fact that passingtrough i915 gpu causes alot of troubles with kexec (see list of threads on kexec mailing lists…)
expect memory corruption and highly unstable graphical environment.

which is why we disable it by default in Pureboot (intel_iommu=igfx_off)

1 Like

Tried almost anything I could find to optimize VM performance yet I still can’t have a snappy desktop experience.
Things I’ve tried included:
Hugepages (1Gib)(Static)
Evdev for mouse and keyboard
CPU Pinning
CPU Isolation
Physical Disk Passthrough
etc.

These things help, but the VM doesn’t feel snappy as it should be. The usual suspect is the graphics/video output.
So I’m trying to passthrough the GPU (I would prefer gvt-d if possible, if not I will settle with gvt-g)

@MrChromebox How can I remove intel_iommu=igfx_off from boot parameters? It’s not in my grub file but I can see it’s activated.

it’s in one of the Heads/Pureboot variables, so you’ll either need to recompile the firmware, or edit the user config and update:

  • boot to Pureboot menu
  • drop to recovery shell
  • edit file /etc/config.user (using vi)
  • add line export CONFIG_BOOT_KERNEL_ADD=""
  • save/exit
  • run config-gui.sh
  • choose option to save current config (persists in firmware)
  • reboot

Can you tell me how to

run config-gui.sh

I tried to find such file using whereis config-gui.sh but got no results.
Thank you.

from the recovery shell, literally just run ‘config-gui.sh’ - it’s in /bin (and so in the default path)

This doesn’t work. On recovery shell I’m running:

root@john-pc:˜# config-gui.sh
command not found

root@john-pc:˜# ./config-gui.sh
command not found

root@john-pc:˜# run config-gui.sh
command not found

I went into /bin and started typing config then tried to see what’s there with autocompletion (TAB) and nothing there.

Note: Using latest byzantine image with latest firmware for Librem v2.

that is not a Pureboot recovery shell. From the Pureboot main menu, select options, then Recovery shell at the bottom.

I also had to add:
CONFIG_BOOT_KERNEL_REMOVE=""