External Monitors not detected after isolating dGPU

Hello, fresh skin in Linux world.

I am running latest Manjaro Cinammon on Lenovo P52 Workstation. My goal is dGPU passthrough with KVM/QEMU. According to Archlinux wiki (cannot include links) this laptop has its display ports directly hardwired to Nvidia chip. The problem is that after isolating dGPU, external monitor is not detected anymore (logical). My question would be if it is possible to have other outcome?

lspci | grep -E 'VGA|3D’

00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 630 (Mobile)
01:00.0 VGA compatible controller: NVIDIA Corporation GP107GLM [Quadro P2000 Mobile] (rev a1)

Welcome to the forum!

Please read the thread below and update your post accordingly:

Logically: NO. :slight_smile:

… since intel has no hardware connection it is not possible.

But possible would would be using nvidia as a sink of intel as main with pure open source drivers, but then you have to use nouveau, which is not preferred for passthrough.

well, not the end of the world… Thanks for the answer anyway.

I have another problem with the monitor… I have been baffling with this for the past few days, since i am completely new to Linux, i am getting really upset. I am pretty sure i managed to succesfully isolate my Nvidia card, append the vfio drivers to it, but when i start the VM, the external monitor just stays in the power saving mode. I have tried all the display ports i have, playing with the configurations, but nothing seem to work.

I have created conf files to blacklist nvidia and nouvearu drivers in modprobe.d

EDIT: It is because of ROM. Is there a way to dump ROM without changing PCIe slots or installing Windows on host?

sudo tail -f /var/log/libvirt/qemu/win10.log

-audiodev id=audio1,driver=none \
-device vfio-pci,host=0000:01:00.0,id=hostdev0,bus=pci.4,addr=0x0 \
-device virtio-balloon-pci,id=balloon0,bus=pci.5,addr=0x0 \
-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
-msg timestamp=on
2021-06-27T20:36:42.563634Z qemu-system-x86_64: vfio-pci: Cannot read device rom at 0000:01:00.0
Device option ROM contents are probably invalid (check dmesg).
Skip option ROM probe with rombar=0, or load from file with romfile=
2021-06-27T20:39:58.528932Z qemu-system-x86_64: terminating on signal 15 from pid 442 (/usr/bin/libvirtd)
2021-06-27 20:39:59.930+0000: shutting down, reason=destroyed

Tell me if you want to see full IOMMU group list (i thought it is not neccesary). I want to pass Nvidia card in Group 1, tried isolating bridge too, no luck.

IOMMU Group 0:
	00:00.0 Host bridge [0600]: Intel Corporation 8th Gen Core Processor Host Bridge/DRAM Registers [8086:3ec4] (rev 07)
IOMMU Group 1:
	00:01.0 PCI bridge [0604]: Intel Corporation 6th-9th Gen Core Processor PCIe Controller (x16) [8086:1901] (rev 07)
	01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP107GLM [Quadro P2000 Mobile] [10de:1cba] (rev a1)
IOMMU Group 2:
	00:02.0 VGA compatible controller [0300]: Intel Corporation UHD Graphics 630 (Mobile) [8086:3e9b]
IOMMU Group 3:
	00:04.0 Signal processing controller [1180]: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor Thermal Subsystem [8086:1903] (rev 07)
IOMMU Group 4:
	00:08.0 System peripheral [0880]: Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th/8th Gen Core Processor Gaussian Mixture Model [8086:1911]

mkinitcpio.conf MODULES and HOOKS

MODULES="vfio_pci vfio vfio_iommu_type1 vfio_virqfd"
HOOKS="base udev autodetect modconf block keyboard keymap resume filesystems fsck"

GRUB parameters

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt apparmor=1 security=apparmor udev.log_priority=3"

output of lspci -vnn (i can post full list if needed)

00:02.0 VGA compatible controller [0300]: Intel Corporation UHD Graphics 630 (Mobile) [8086:3e9b] (prog-if 00 [VGA controller])
	Subsystem: Lenovo Device [17aa:225f]
	Flags: bus master, fast devsel, latency 0, IRQ 163, IOMMU group 2
	Memory at 604a000000 (64-bit, non-prefetchable) [size=16M]
	Memory at 4000000000 (64-bit, prefetchable) [size=512M]
	I/O ports at 3000 [size=64]
	Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]
	Capabilities: <access denied>
	Kernel driver in use: i915
	Kernel modules: i915
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP107GLM [Quadro P2000 Mobile] [10de:1cba] (rev a1) (prog-if 00 [VGA controller])
	Flags: fast devsel, IRQ 16, IOMMU group 1
	Memory at a3000000 (32-bit, non-prefetchable) [size=16M]
	Memory at 60000000 (64-bit, prefetchable) [size=256M]
	Memory at 70000000 (64-bit, prefetchable) [size=32M]
	I/O ports at 2000 [size=128]
	Expansion ROM at a4080000 [disabled] [size=512K]
	Capabilities: <access denied>
	Kernel driver in use: vfio-pci
	Kernel modules: nouveau, nvidia_drm, nvidia

/etc/modprobe.d/vfio.conf

options vfio-pci ids=10de:1cba
options vfio-pci disable_vga=1

dmesg | grep -i vfio

[    0.875237] VFIO - User Level meta-driver version: 0.3
[    0.878451] vfio-pci 0000:01:00.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=none
[    0.892437] vfio_pci: add [10de:1cba[ffffffff:ffffffff]] class 0x000000/00000000
[    2.317696] vfio-pci 0000:01:00.0: vgaarb: changed VGA decodes: olddecodes=none,decodes=none:owns=none
[   69.735645] vfio-pci 0000:01:00.0: enabling device (0002 -> 0003)
[   70.759301] vfio-pci 0000:01:00.0: vfio_ecap_init: hiding ecap 0x1e@0x258
[   70.759347] vfio-pci 0000:01:00.0: vfio_ecap_init: hiding ecap 0x19@0x900
[   70.765651] vfio-pci 0000:01:00.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0x0000
[   89.359208] vfio-pci 0000:01:00.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0x0000