VFIO/IOMMU - No output on iGPU when passing through dGPU

Hi,
My rig consists of a GTX 1070 and an i7-8700.
I'm trying to use my iGPU with Manjaro and pass through the 1070 to a windows 10 VM.

I have done the following:

  • Added intel_iommu=on to my grub settings
  • Added the IDs of my GPU into /etc/modprobe.d/vfio.conf (options vfio-pci ids=ID1,ID2,etc)
  • Added the following modules in mkinitcpio.conf in this order: nouveau vfio_pci vfio vfio_iommu_type1 vfio_virqfd (modconf is also included in the hooks section)

I have also made sure to rebuild my grub settings and initramfs
However when I reboot after rebuilding initramfs, I get no output on my iGPU.
VT-x AND VT-d are both enabled in my BIOS, and there is no way of configuring/toggling my iGPU as it's automatic.

I also tried blacklisting nouveau and Nvidia but no difference.
The IOMMU group ONLY consists of my 1070 (and audio) as well as the intel PCI/PCIe bridge.

I have no idea what I'm doing wrong, am I missing something and is there a way around this?

Hi,
Welcome in Manjaro forums! :slight_smile:

I'm not experienced with Intel, but I have had a journey with an AMD APU and iommu redirection in the past. Currently I'm using a two AMD card setup with a Ryzen 2700. I think at first you need to know what fails, and provide some more details to enable us to help you. Please post the output of the following command on the running systems (VT disabled in the BIOS):

inxi -Fxzc0

Same way you can see it here: Manjaro HW survey topic

After you boot into the (VT enabled) system (make sure you are waited enough for the DE to come up) please try to switch to the second terminal with CTRL+ALT+F2
If you see the terminal login, please login, and save the last boot log into a file with:

journalctl -b >~/lastboot.log

This will be lather long, but you can see the errors in there. This will come handy later. :slight_smile:

Please also export:

dmesg | grep -i -e DMAR -e IOMMU >~/iommu.log
lspci -vnnk >~/lspci.log

Please attach the lastboot.log lspci.log contents as well as the 'inxi -Fxzc0' output. And search for errors in the boot.log and post that as well.

In the meantime, you can also check the related ArchWiki pages: ArchWiki Intel Graphics and ArchWiki PCI passthrough via OVMF

Br
dib

Hi dib!
Thanks for the reply.

I had to reinstall Manjaro since I wasn't able to get anything to show (despite the monitors being on and indicating that there is output)

But here are the logs from a fresh install I done:

inxi log: https://pastebin.com/raw/kUuY64nT
iommu.log: https://pastebin.com/raw/2LLgy2R2
lastboot.log: https://pastebin.com/raw/w49hdzar
lspci.log: h
ttps://pastebin.com/raw/WBTPQzFe

As I see from the logs, both of the cards are usable after the fresh install.

lspci references

00:02.0 Display controller [0380]: Intel Corporation UHD Graphics 630 (Desktop) [8086:3e92]
DeviceName: Onboard - Video
Subsystem: Dell UHD Graphics 630 (Desktop) [1028:0859]
Flags: bus master, fast devsel, latency 0, IRQ 147
Memory at 2ffe000000 (64-bit, non-prefetchable) [size=16M]
Memory at 90000000 (64-bit, prefetchable) [size=256M]
I/O ports at f000 [size=64]
Capabilities:
Kernel driver in use: i915
Kernel modules: i915

01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP104 [GeForce GTX 1070] [10de:1b81] (rev a1) (prog-if 00 [VGA controller])
Subsystem: Dell GP104 [GeForce GTX 1070] [1028:3301]
Flags: bus master, fast devsel, latency 0, IRQ 148
Memory at eb000000 (32-bit, non-prefetchable) [size=16M]
Memory at a0000000 (64-bit, prefetchable) [size=256M]
Memory at b0000000 (64-bit, prefetchable) [size=32M]
I/O ports at e000 [size=128]
Expansion ROM at 000c0000 [disabled] [size=128K]
Capabilities:
Kernel driver in use: nouveau
Kernel modules: nouveau

So the HW/SW side seems to work fine. :slight_smile:
The problem may rise because of the VT or IOMMU capabilities of the mobo/BIOS. :frowning_face:
I'm not sure how much do you know about the linux init, so apologies if I "over instruct" you in any way! :smiley:
I can see you are using Plasma as a main DE. The basics are: you should be able to boot just fine if you either remove the intel_iommu=on from the grub command line at the boot time (press the SHIFT key at boot, choose the desired boot entry and press "e" to edit it and remove the iommu setting after this press the F10 to boot), or if you disable the VT and IOMMU in the BIOS. If it still fails, you can also boot to CLI, to fix/remove things with one of the available editors also. You need to attach this to the vmlinux line to boot into CLI: systemd.unit=multi-user.target and press the F10 to boot with the temporary setting.
After successfully booting with the temporary disabled VT and IOMMU you can look back into the last failed boot in the journalctl and save it with journalctl --boot=-1 >~/failedboot.log

In my experience if you are using the X11 and not wayland a simple xorg config can help the init to choose the card that will be the primary using a config file like: /etc/X11/xorg.conf.d/20-vga.conf
with similar contents:

    Section "Device"
    Identifier     "Device0"
    Driver         "radeon"
    VendorName     "Vendor Corporation"
    BoardName      "Weak"
    BusID          "PCI:5:0:0"
    EndSection

In your case it should be modified as:

    Driver         "i915"

and if we can believe the logs:

    BusID          "PCI:0:02:0"

But as I said I don't know Intel, just AMD.
If I failed to clearly explain something, please ask!

1 Like

You are a saint!

You have no idea how frustrated I've been this week, I've been trying to sett up a Linux VM with GPU pass through, I got the GPU pass through routines set in my bones by now, after redoing everything 1000000 times.

What was frustrating me was that the Windows VM worked just fine, but when I got to linux it just never gave me a picture.

I could see that it saw the GPU, installed the driver, everything seemed to be working except no image through the GPU, I saw the image on Qemu but not through my HDMI.

I've gone through 3 different types of Distro all over a simple xorg config... I mean I'm glad I made the switch to Linux but sometimes it could just suck my A** Hole :slight_smile:

THANK YOU!
Now I can move on to the next step in my project.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.

Forum kindly sponsored by