You are not logged in.

#1 2025-10-19 10:01:05

Piripe
Member
Registered: 2025-10-10
Posts: 9

No display output with PCI passthrough

I have 2 GPU on my PC, an RTX 3060 and a GT 620.
When I start a VM, no output, my screen keeps saying no signal. When I add a virtual display and install NVIDIA driver, I can see the GPU in the device manager, but it has error code 10.
I added the kernel parameters "intel_iommu=on pcie_aspm=off video=efifb:off vfio-pci.ids=10de:1049,10de:0e08"

$ ./iommu.sh
IOMMU Group 0:
	00:00.0 Host bridge [0600]: Intel Corporation 8th/9th Gen Core 8-core Desktop Processor Host Bridge/DRAM Registers [Coffee Lake S] [8086:3e30] (rev 0d)
IOMMU Group 1:
	00:01.0 PCI bridge [0604]: Intel Corporation 6th-10th Gen Core Processor PCIe Controller (x16) [8086:1901] (rev 0d)
	01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA106 [GeForce RTX 3060 Lite Hash Rate] [10de:2504] (rev a1)
	01:00.1 Audio device [0403]: NVIDIA Corporation GA106 High Definition Audio Controller [10de:228e] (rev a1)
IOMMU Group 2:
	00:14.0 USB controller [0c03]: Intel Corporation Cannon Lake PCH USB 3.1 xHCI Host Controller [8086:a36d] (rev 10)
	00:14.2 RAM memory [0500]: Intel Corporation Cannon Lake PCH Shared SRAM [8086:a36f] (rev 10)
IOMMU Group 3:
	00:16.0 Communication controller [0780]: Intel Corporation Cannon Lake PCH HECI Controller [8086:a360] (rev 10)
IOMMU Group 4:
	00:17.0 RAID bus controller [0104]: Intel Corporation SATA Controller [RAID mode] [8086:2822] (rev 10)
IOMMU Group 5:
	00:1b.0 PCI bridge [0604]: Intel Corporation Cannon Lake PCH PCI Express Root Port #17 [8086:a340] (rev f0)
IOMMU Group 6:
	00:1b.4 PCI bridge [0604]: Intel Corporation Cannon Lake PCH PCI Express Root Port #21 [8086:a32c] (rev f0)
IOMMU Group 7:
	00:1c.0 PCI bridge [0604]: Intel Corporation Cannon Lake PCH PCI Express Root Port #1 [8086:a338] (rev f0)
IOMMU Group 8:
	00:1c.6 PCI bridge [0604]: Intel Corporation Cannon Lake PCH PCI Express Root Port #7 [8086:a33e] (rev f0)
IOMMU Group 9:
	00:1d.0 PCI bridge [0604]: Intel Corporation Cannon Lake PCH PCI Express Root Port #9 [8086:a330] (rev f0)
IOMMU Group 10:
	00:1f.0 ISA bridge [0601]: Intel Corporation Z390 Chipset LPC/eSPI Controller [8086:a305] (rev 10)
	00:1f.3 Audio device [0403]: Intel Corporation Cannon Lake PCH cAVS [8086:a348] (rev 10)
	00:1f.4 SMBus [0c05]: Intel Corporation Cannon Lake PCH SMBus Controller [8086:a323] (rev 10)
	00:1f.5 Serial bus controller [0c80]: Intel Corporation Cannon Lake PCH SPI Controller [8086:a324] (rev 10)
	00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection (7) I219-V [8086:15bc] (rev 10)
IOMMU Group 11:
	03:00.0 VGA compatible controller [0300]: NVIDIA Corporation GF119 [GeForce GT 620 OEM] [10de:1049] (rev a1)
	03:00.1 Audio device [0403]: NVIDIA Corporation GF119 HDMI Audio Controller [10de:0e08] (rev a1)
IOMMU Group 12:
	05:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller [10ec:8125] (rev 04)
IOMMU Group 13:
	06:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981/PM983 [144d:a808]
$ lspci -v  
00:00.0 Host bridge: Intel Corporation 8th/9th Gen Core 8-core Desktop Processor Host Bridge/DRAM Registers [Coffee Lake S] (rev 0d)
	DeviceName: Onboard - Other
	Subsystem: ASUSTeK Computer Inc. Device 8694
	Flags: bus master, fast devsel, latency 0, IOMMU group 0
	Capabilities: <access denied>
	Kernel driver in use: skl_uncore
	Kernel modules: ie31200_edac

00:01.0 PCI bridge: Intel Corporation 6th-10th Gen Core Processor PCIe Controller (x16) (rev 0d) (prog-if 00 [Normal decode])
	Subsystem: ASUSTeK Computer Inc. Device 8694
	Flags: bus master, fast devsel, latency 0, IRQ 121, IOMMU group 1
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
	I/O behind bridge: 5000-5fff [size=4K] [16-bit]
	Memory behind bridge: b4000000-b50fffff [size=17M] [32-bit]
	Prefetchable memory behind bridge: 90000000-a1ffffff [size=288M] [32-bit]
	Capabilities: <access denied>
	Kernel driver in use: pcieport

00:14.0 USB controller: Intel Corporation Cannon Lake PCH USB 3.1 xHCI Host Controller (rev 10) (prog-if 30 [XHCI])
	DeviceName: Onboard - Other
	Subsystem: ASUSTeK Computer Inc. Device 8694
	Flags: bus master, medium devsel, latency 0, IRQ 128, IOMMU group 2
	Memory at b3220000 (64-bit, non-prefetchable) [size=64K]
	Capabilities: <access denied>
	Kernel driver in use: xhci_hcd

00:14.2 RAM memory: Intel Corporation Cannon Lake PCH Shared SRAM (rev 10)
	DeviceName: Onboard - Other
	Subsystem: ASUSTeK Computer Inc. Device 8694
	Flags: fast devsel, IOMMU group 2
	Memory at b3236000 (64-bit, non-prefetchable) [disabled] [size=8K]
	Memory at b323c000 (64-bit, non-prefetchable) [disabled] [size=4K]
	Capabilities: <access denied>

00:16.0 Communication controller: Intel Corporation Cannon Lake PCH HECI Controller (rev 10)
	DeviceName: Onboard - Other
	Subsystem: ASUSTeK Computer Inc. Device 8694
	Flags: bus master, fast devsel, latency 0, IRQ 171, IOMMU group 3
	Memory at b323b000 (64-bit, non-prefetchable) [size=4K]
	Capabilities: <access denied>
	Kernel driver in use: mei_me
	Kernel modules: mei_me

00:17.0 RAID bus controller: Intel Corporation SATA Controller [RAID mode] (rev 10)
	DeviceName: Onboard - Other
	Subsystem: ASUSTeK Computer Inc. Device 8694
	Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 16, IOMMU group 4
	Memory at b3234000 (32-bit, non-prefetchable) [size=8K]
	Memory at b323a000 (32-bit, non-prefetchable) [size=256]
	I/O ports at 6050 [size=8]
	I/O ports at 6040 [size=4]
	I/O ports at 6020 [size=32]
	Memory at b3239000 (32-bit, non-prefetchable) [size=2K]
	Capabilities: <access denied>
	Kernel driver in use: ahci

00:1b.0 PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port #17 (rev f0) (prog-if 00 [Normal decode])
	Subsystem: ASUSTeK Computer Inc. Device 8694
	Flags: bus master, fast devsel, latency 0, IRQ 122, IOMMU group 5
	Bus: primary=00, secondary=02, subordinate=02, sec-latency=0
	I/O behind bridge: [disabled] [16-bit]
	Memory behind bridge: [disabled] [32-bit]
	Prefetchable memory behind bridge: [disabled] [64-bit]
	Capabilities: <access denied>
	Kernel driver in use: pcieport

00:1b.4 PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port #21 (rev f0) (prog-if 00 [Normal decode])
	Subsystem: ASUSTeK Computer Inc. Device 8694
	Flags: bus master, fast devsel, latency 0, IRQ 123, IOMMU group 6
	Bus: primary=00, secondary=03, subordinate=03, sec-latency=0
	I/O behind bridge: 4000-4fff [size=4K] [16-bit]
	Memory behind bridge: b2000000-b30fffff [size=17M] [32-bit]
	Prefetchable memory behind bridge: a8000000-b1ffffff [size=160M] [32-bit]
	Capabilities: <access denied>
	Kernel driver in use: pcieport

00:1c.0 PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port #1 (rev f0) (prog-if 00 [Normal decode])
	Subsystem: ASUSTeK Computer Inc. Device 8694
	Flags: bus master, fast devsel, latency 0, IRQ 124, IOMMU group 7
	Bus: primary=00, secondary=04, subordinate=04, sec-latency=0
	I/O behind bridge: [disabled] [16-bit]
	Memory behind bridge: [disabled] [32-bit]
	Prefetchable memory behind bridge: [disabled] [64-bit]
	Capabilities: <access denied>
	Kernel driver in use: pcieport

00:1c.6 PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port #7 (rev f0) (prog-if 00 [Normal decode])
	Subsystem: ASUSTeK Computer Inc. Device 8694
	Flags: bus master, fast devsel, latency 0, IRQ 125, IOMMU group 8
	Bus: primary=00, secondary=05, subordinate=05, sec-latency=0
	I/O behind bridge: 3000-3fff [size=4K] [16-bit]
	Memory behind bridge: b5300000-b53fffff [size=1M] [32-bit]
	Prefetchable memory behind bridge: [disabled] [64-bit]
	Capabilities: <access denied>
	Kernel driver in use: pcieport

00:1d.0 PCI bridge: Intel Corporation Cannon Lake PCH PCI Express Root Port #9 (rev f0) (prog-if 00 [Normal decode])
	Subsystem: ASUSTeK Computer Inc. Device 8694
	Flags: bus master, fast devsel, latency 0, IRQ 126, IOMMU group 9
	Bus: primary=00, secondary=06, subordinate=06, sec-latency=0
	I/O behind bridge: [disabled] [16-bit]
	Memory behind bridge: b5200000-b52fffff [size=1M] [32-bit]
	Prefetchable memory behind bridge: [disabled] [64-bit]
	Capabilities: <access denied>
	Kernel driver in use: pcieport

00:1f.0 ISA bridge: Intel Corporation Z390 Chipset LPC/eSPI Controller (rev 10)
	DeviceName: Onboard - Other
	Subsystem: ASUSTeK Computer Inc. Device 8694
	Flags: bus master, medium devsel, latency 0, IOMMU group 10

00:1f.3 Audio device: Intel Corporation Cannon Lake PCH cAVS (rev 10)
	DeviceName: Onboard - Sound
	Subsystem: ASUSTeK Computer Inc. Device 8796
	Flags: bus master, fast devsel, latency 32, IRQ 188, IOMMU group 10
	Memory at b3230000 (64-bit, non-prefetchable) [size=16K]
	Memory at b3100000 (64-bit, non-prefetchable) [size=1M]
	Capabilities: <access denied>
	Kernel driver in use: snd_hda_intel
	Kernel modules: snd_soc_avs, snd_sof_pci_intel_cnl, snd_hda_intel

00:1f.4 SMBus: Intel Corporation Cannon Lake PCH SMBus Controller (rev 10)
	DeviceName: Onboard - Other
	Subsystem: ASUSTeK Computer Inc. Device 8694
	Flags: medium devsel, IRQ 16, IOMMU group 10
	Memory at b3238000 (64-bit, non-prefetchable) [size=256]
	I/O ports at efa0 [size=32]
	Kernel driver in use: i801_smbus
	Kernel modules: i2c_i801

00:1f.5 Serial bus controller: Intel Corporation Cannon Lake PCH SPI Controller (rev 10)
	DeviceName: Onboard - Other
	Subsystem: ASUSTeK Computer Inc. Device 8694
	Flags: fast devsel, IOMMU group 10
	Memory at fe010000 (32-bit, non-prefetchable) [size=4K]
	Kernel driver in use: intel-spi
	Kernel modules: spi_intel_pci

00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (7) I219-V (rev 10)
	DeviceName: Onboard - Ethernet
	Subsystem: ASUSTeK Computer Inc. Device 8672
	Flags: bus master, fast devsel, latency 0, IRQ 186, IOMMU group 10
	Memory at b3200000 (32-bit, non-prefetchable) [size=128K]
	Capabilities: <access denied>
	Kernel driver in use: e1000e
	Kernel modules: e1000e

01:00.0 VGA compatible controller: NVIDIA Corporation GA106 [GeForce RTX 3060 Lite Hash Rate] (rev a1) (prog-if 00 [VGA controller])
	Subsystem: Gigabyte Technology Co., Ltd Device 4071
	Flags: bus master, fast devsel, latency 0, IRQ 187, IOMMU group 1
	Memory at b4000000 (32-bit, non-prefetchable) [size=16M]
	Memory at 90000000 (64-bit, prefetchable) [size=256M]
	Memory at a0000000 (64-bit, prefetchable) [size=32M]
	I/O ports at 5000 [size=128]
	Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]
	Capabilities: <access denied>
	Kernel driver in use: nvidia
	Kernel modules: nouveau, nvidia_drm, nvidia

01:00.1 Audio device: NVIDIA Corporation GA106 High Definition Audio Controller (rev a1)
	Subsystem: Gigabyte Technology Co., Ltd Device 4071
	Flags: bus master, fast devsel, latency 0, IRQ 17, IOMMU group 1
	Memory at b5080000 (32-bit, non-prefetchable) [size=16K]
	Capabilities: <access denied>
	Kernel driver in use: snd_hda_intel
	Kernel modules: snd_hda_intel

03:00.0 VGA compatible controller: NVIDIA Corporation GF119 [GeForce GT 620 OEM] (rev a1) (prog-if 00 [VGA controller])
	Subsystem: Pegatron Device 90b7
	Flags: fast devsel, IRQ 16, IOMMU group 11
	Memory at b2000000 (32-bit, non-prefetchable) [size=16M]
	Memory at a8000000 (64-bit, prefetchable) [size=128M]
	Memory at b0000000 (64-bit, prefetchable) [size=32M]
	I/O ports at 4000 [size=128]
	Expansion ROM at b3000000 [disabled] [size=512K]
	Capabilities: <access denied>
	Kernel driver in use: vfio-pci
	Kernel modules: nouveau, nvidia_drm, nvidia

03:00.1 Audio device: NVIDIA Corporation GF119 HDMI Audio Controller (rev a1)
	Subsystem: Pegatron Device 90b7
	Flags: fast devsel, IRQ 17, IOMMU group 11
	Memory at b3080000 (32-bit, non-prefetchable) [size=16K]
	Capabilities: <access denied>
	Kernel driver in use: vfio-pci
	Kernel modules: snd_hda_intel

05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 04)
	Subsystem: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller
	Flags: bus master, fast devsel, latency 0, IRQ 18, IOMMU group 12
	I/O ports at 3000 [size=256]
	Memory at b5300000 (64-bit, non-prefetchable) [size=64K]
	Memory at b5310000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: <access denied>
	Kernel driver in use: r8125
	Kernel modules: r8169, r8125

06:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981/PM983 (prog-if 02 [NVM Express])
	Subsystem: Samsung Electronics Co Ltd SSD 970 EVO/PRO
	Flags: bus master, fast devsel, latency 0, IRQ 16, IOMMU group 13
	Memory at b5200000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: <access denied>
	Kernel driver in use: nvme
	Kernel modules: nvme
$ sudo dmesg | grep -E "vfio|03:00"
[sudo] password for piripe: 
[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-linux root=UUID=2238a60a-39c2-4b2f-ba90-4d825656f069 rw loglevel=3 quiet intel_iommu=on pcie_aspm=off video=efifb:off vfio-pci.ids=10de:1049,10de:0e08
[    0.105568] Kernel command line: BOOT_IMAGE=/vmlinuz-linux root=UUID=2238a60a-39c2-4b2f-ba90-4d825656f069 rw loglevel=3 quiet intel_iommu=on pcie_aspm=off video=efifb:off vfio-pci.ids=10de:1049,10de:0e08
[    0.437767] pci 0000:03:00.0: [10de:1049] type 00 class 0x030000 PCIe Endpoint
[    0.437807] pci 0000:03:00.0: BAR 0 [mem 0xb2000000-0xb2ffffff]
[    0.437810] pci 0000:03:00.0: BAR 1 [mem 0xa8000000-0xafffffff 64bit pref]
[    0.437813] pci 0000:03:00.0: BAR 3 [mem 0xb0000000-0xb1ffffff 64bit pref]
[    0.437816] pci 0000:03:00.0: BAR 5 [io  0x4000-0x407f]
[    0.437818] pci 0000:03:00.0: ROM [mem 0xb3000000-0xb307ffff pref]
[    0.437825] pci 0000:03:00.0: enabling Extended Tags
[    0.437936] pci 0000:03:00.0: 8.000 Gb/s available PCIe bandwidth, limited by 2.5 GT/s PCIe x4 link at 0000:00:1b.4 (capable of 32.000 Gb/s with 2.5 GT/s PCIe x16 link)
[    0.438013] pci 0000:03:00.1: [10de:0e08] type 00 class 0x040300 PCIe Endpoint
[    0.438052] pci 0000:03:00.1: BAR 0 [mem 0xb3080000-0xb3083fff]
[    0.438066] pci 0000:03:00.1: enabling Extended Tags
[    0.489352] pci 0000:03:00.0: vgaarb: bridge control possible
[    0.489353] pci 0000:03:00.0: vgaarb: VGA device added: decodes=io+mem,owns=none,locks=none
[    0.632292] pci 0000:03:00.1: extending delay after power-on from D3hot to 20 msec
[    0.632309] pci 0000:03:00.1: D0 power state depends on 0000:03:00.0
[    0.632716] pci 0000:03:00.0: Adding to iommu group 11
[    0.632732] pci 0000:03:00.1: Adding to iommu group 11
[    1.441938] vfio_pci: unknown parameter 'kvm' ignored
[    1.442016] vfio-pci 0000:03:00.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
[    1.442122] vfio_pci: add [10de:1049[ffffffff:ffffffff]] class 0x000000/00000000
[    1.489517] vfio_pci: add [10de:0e08[ffffffff:ffffffff]] class 0x000000/00000000
[    2.065821] NVRM: GPU 0000:03:00.0 is already bound to vfio-pci.
[   71.587177] vfio-pci 0000:03:00.0: enabling device (0000 -> 0003)
[   71.587263] vfio-pci 0000:03:00.0: resetting
[   71.587354] vfio-pci 0000:03:00.0: reset done
[   71.617028] vfio-pci 0000:03:00.1: enabling device (0000 -> 0002)
[   71.623729] vfio-pci 0000:03:00.0: resetting
[   71.623772] vfio-pci 0000:03:00.1: resetting
[   71.768992] vfio-pci 0000:03:00.0: reset done
[   71.769037] vfio-pci 0000:03:00.1: reset done
[  117.070447] vfio-pci 0000:03:00.0: resetting
[  117.070504] vfio-pci 0000:03:00.1: resetting
[  117.214408] vfio-pci 0000:03:00.0: reset done
[  117.214451] vfio-pci 0000:03:00.1: reset done
[  130.382380] vfio-pci 0000:03:00.0: resetting
[  130.382469] vfio-pci 0000:03:00.0: reset done
[  130.431210] vfio-pci 0000:03:00.0: resetting
[  130.431255] vfio-pci 0000:03:00.1: resetting
[  130.575296] vfio-pci 0000:03:00.0: reset done
[  130.575352] vfio-pci 0000:03:00.1: reset done
[  141.035188] vfio-pci 0000:03:00.0: resetting
[  141.035277] vfio-pci 0000:03:00.0: reset done
[  141.066224] vfio-pci 0000:03:00.0: resetting
[  141.066278] vfio-pci 0000:03:00.1: resetting
[  141.206837] vfio-pci 0000:03:00.0: reset done
[  141.206877] vfio-pci 0000:03:00.1: reset done
[  188.178937] vfio-pci 0000:03:00.0: resetting
[  188.178996] vfio-pci 0000:03:00.1: resetting
[  188.322662] vfio-pci 0000:03:00.0: reset done
[  188.322699] vfio-pci 0000:03:00.1: reset done
$ cat /etc/modprobe.d/vfio.conf 
softdep snd_hda_intel pre: vfio-pci
softdep nvidia-open pre: vfio-pci
softdep drm pre: vfio-pci

options vfio-pci ids=10de:1049,10de:0e08 disable_vga=1
$ cat /etc/mkinitcpio.conf
# vim:set ft=sh
# MODULES
# The following modules are loaded before any boot hooks are
# run.  Advanced users may wish to specify all system modules
# in this array.  For instance:
#     MODULES=(usbhid xhci_hcd)
MODULES=(vfio_pci vfio vfio_iommu_type1)

# BINARIES
# This setting includes any additional binaries a given user may
# wish into the CPIO image.  This is run last, so it may be used to
# override the actual binaries included by a given hook
# BINARIES are dependency parsed, so you may safely ignore libraries
BINARIES=()

# FILES
# This setting is similar to BINARIES above, however, files are added
# as-is and are not parsed in any way.  This is useful for config files.
FILES=()

# HOOKS
# This is the most important setting in this file.  The HOOKS control the
# modules and scripts added to the image, and what happens at boot time.
# Order is important, and it is recommended that you do not change the
# order in which HOOKS are added.  Run 'mkinitcpio -H <hook name>' for
# help on a given hook.
# 'base' is _required_ unless you know precisely what you are doing.
# 'udev' is _required_ in order to automatically load modules
# 'filesystems' is _required_ unless you specify your fs modules in MODULES
# Examples:
##   This setup specifies all modules in the MODULES setting above.
##   No RAID, lvm2, or encrypted root is needed.
#    HOOKS=(base)
#
##   This setup will autodetect all modules for your system and should
##   work as a sane default
#    HOOKS=(base udev autodetect modconf block filesystems fsck)
#
##   This setup will generate a 'full' image which supports most systems.
##   No autodetection is done.
#    HOOKS=(base udev modconf block filesystems fsck)
#
##   This setup assembles a mdadm array with an encrypted root file system.
##   Note: See 'mkinitcpio -H mdadm_udev' for more information on RAID devices.
#    HOOKS=(base udev modconf keyboard keymap consolefont block mdadm_udev encrypt filesystems fsck)
#
##   This setup loads an lvm2 volume group.
#    HOOKS=(base udev modconf block lvm2 filesystems fsck)
#
##   This will create a systemd based initramfs which loads an encrypted root filesystem.
#    HOOKS=(base systemd autodetect modconf kms keyboard sd-vconsole sd-encrypt block filesystems fsck)
#
##   NOTE: If you have /usr on a separate partition, you MUST include the
#    usr and fsck hooks.
HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block filesystems fsck)

# COMPRESSION
# Use this to compress the initramfs image. By default, zstd compression
# is used for Linux ≥ 5.9 and gzip compression is used for Linux < 5.9.
# Use 'cat' to create an uncompressed image.
#COMPRESSION="zstd"
#COMPRESSION="gzip"
#COMPRESSION="bzip2"
#COMPRESSION="lzma"
#COMPRESSION="xz"
#COMPRESSION="lzop"
#COMPRESSION="lz4"

# COMPRESSION_OPTIONS
# Additional options for the compressor
#COMPRESSION_OPTIONS=()

# MODULES_DECOMPRESS
# Decompress loadable kernel modules and their firmware during initramfs
# creation. Switch (yes/no).
# Enable to allow further decreasing image size when using high compression
# (e.g. xz -9e or zstd --long --ultra -22) at the expense of increased RAM usage
# at early boot.
# Note that any compressed files will be placed in the uncompressed early CPIO
# to avoid double compression.
#MODULES_DECOMPRESS="no"

VM XML:

<domain type="kvm">
  <name>win10</name>
  <uuid>3a0399b1-7148-4734-bc12-505b4047878b</uuid>
  <metadata>
    <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
      <libosinfo:os id="http://microsoft.com/win/10"/>
    </libosinfo:libosinfo>
  </metadata>
  <memory unit="KiB">16779264</memory>
  <currentMemory unit="KiB">16779264</currentMemory>
  <vcpu placement="static">4</vcpu>
  <os firmware="efi">
    <type arch="x86_64" machine="pc-q35-10.1">hvm</type>
    <firmware>
      <feature enabled="no" name="enrolled-keys"/>
      <feature enabled="yes" name="secure-boot"/>
    </firmware>
    <loader readonly="yes" secure="yes" type="pflash" format="raw">/usr/share/edk2/x64/OVMF_CODE.secboot.4m.fd</loader>
    <nvram template="/usr/share/edk2/x64/OVMF_VARS.4m.fd" templateFormat="raw" format="raw">/var/lib/libvirt/qemu/nvram/win10_VARS.fd</nvram>
    <boot dev="hd"/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hyperv mode="custom">
      <relaxed state="on"/>
      <vapic state="on"/>
      <spinlocks state="on" retries="8191"/>
      <vpindex state="on"/>
      <runtime state="on"/>
      <synic state="on"/>
      <stimer state="on"/>
      <frequencies state="on"/>
      <tlbflush state="on"/>
      <ipi state="on"/>
      <evmcs state="on"/>
      <avic state="on"/>
    </hyperv>
    <vmport state="off"/>
    <smm state="on"/>
  </features>
  <cpu mode="host-passthrough" check="none" migratable="on"/>
  <clock offset="localtime">
    <timer name="rtc" tickpolicy="catchup"/>
    <timer name="pit" tickpolicy="delay"/>
    <timer name="hpet" present="no"/>
    <timer name="hypervclock" present="yes"/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <pm>
    <suspend-to-mem enabled="no"/>
    <suspend-to-disk enabled="no"/>
  </pm>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type="file" device="disk">
      <driver name="qemu" type="qcow2" discard="unmap"/>
      <source file="/var/lib/libvirt/images/win10.qcow2"/>
      <target dev="sda" bus="sata"/>
      <address type="drive" controller="0" bus="0" target="0" unit="0"/>
    </disk>
    <disk type="file" device="cdrom">
      <driver name="qemu" type="raw"/>
      <source file="/media/docs1/Documents/Documents/iso/Win10_22H2_English_x64v1.iso"/>
      <target dev="sdb" bus="sata"/>
      <readonly/>
      <address type="drive" controller="0" bus="0" target="0" unit="1"/>
    </disk>
    <controller type="usb" index="0" model="qemu-xhci" ports="15">
      <address type="pci" domain="0x0000" bus="0x02" slot="0x00" function="0x0"/>
    </controller>
    <controller type="pci" index="0" model="pcie-root"/>
    <controller type="pci" index="1" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="1" port="0x8"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x0" multifunction="on"/>
    </controller>
    <controller type="pci" index="2" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="2" port="0x9"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x1"/>
    </controller>
    <controller type="pci" index="3" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="3" port="0xa"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x2"/>
    </controller>
    <controller type="pci" index="4" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="4" port="0xb"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x3"/>
    </controller>
    <controller type="pci" index="5" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="5" port="0xc"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x4"/>
    </controller>
    <controller type="pci" index="6" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="6" port="0xd"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x5"/>
    </controller>
    <controller type="pci" index="7" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="7" port="0xe"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x6"/>
    </controller>
    <controller type="pci" index="8" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="8" port="0xf"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x7"/>
    </controller>
    <controller type="pci" index="9" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="9" port="0x10"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0" multifunction="on"/>
    </controller>
    <controller type="pci" index="10" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="10" port="0x11"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x1"/>
    </controller>
    <controller type="pci" index="11" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="11" port="0x12"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x2"/>
    </controller>
    <controller type="pci" index="12" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="12" port="0x13"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x3"/>
    </controller>
    <controller type="pci" index="13" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="13" port="0x14"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x4"/>
    </controller>
    <controller type="pci" index="14" model="pcie-root-port">
      <model name="pcie-root-port"/>
      <target chassis="14" port="0x15"/>
      <address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x5"/>
    </controller>
    <controller type="sata" index="0">
      <address type="pci" domain="0x0000" bus="0x00" slot="0x1f" function="0x2"/>
    </controller>
    <controller type="virtio-serial" index="0">
      <address type="pci" domain="0x0000" bus="0x03" slot="0x00" function="0x0"/>
    </controller>
    <interface type="network">
      <mac address="52:54:00:a5:a1:5d"/>
      <source network="default"/>
      <model type="e1000e"/>
      <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
    </interface>
    <serial type="pty">
      <target type="isa-serial" port="0">
        <model name="isa-serial"/>
      </target>
    </serial>
    <console type="pty">
      <target type="serial" port="0"/>
    </console>
    <channel type="spicevmc">
      <target type="virtio" name="com.redhat.spice.0"/>
      <address type="virtio-serial" controller="0" bus="0" port="1"/>
    </channel>
    <input type="tablet" bus="usb">
      <address type="usb" bus="0" port="1"/>
    </input>
    <input type="mouse" bus="ps2"/>
    <input type="keyboard" bus="ps2"/>
    <graphics type="spice" autoport="yes">
      <listen type="address"/>
      <image compression="off"/>
    </graphics>
    <sound model="ich9">
      <address type="pci" domain="0x0000" bus="0x00" slot="0x1b" function="0x0"/>
    </sound>
    <audio id="1" type="spice"/>
    <video>
      <model type="none"/>
    </video>
    <hostdev mode="subsystem" type="pci" managed="yes">
      <source>
        <address domain="0x0000" bus="0x03" slot="0x00" function="0x0"/>
      </source>
      <address type="pci" domain="0x0000" bus="0x04" slot="0x00" function="0x0"/>
    </hostdev>
    <hostdev mode="subsystem" type="pci" managed="yes">
      <source>
        <address domain="0x0000" bus="0x03" slot="0x00" function="0x1"/>
      </source>
      <address type="pci" domain="0x0000" bus="0x05" slot="0x00" function="0x0"/>
    </hostdev>
    <redirdev bus="usb" type="spicevmc">
      <address type="usb" bus="0" port="2"/>
    </redirdev>
    <redirdev bus="usb" type="spicevmc">
      <address type="usb" bus="0" port="3"/>
    </redirdev>
    <watchdog model="itco" action="reset"/>
    <memballoon model="virtio">
      <address type="pci" domain="0x0000" bus="0x06" slot="0x00" function="0x0"/>
    </memballoon>
  </devices>
</domain>

Offline

#2 2025-10-19 10:31:18

Lone_Wolf
Administrator
From: Netherlands, Europe
Registered: 2005-10-04
Posts: 14,485

Re: No display output with PCI passthrough

For clarity :

You are trying to passthrough the GT 620 to the guest ?

Your host is running archlinux and the guest is a windows 10 VM ?

Which version of the nvidia driver have you tried in the guest ?


Disliking systemd intensely, but not satisfied with alternatives so focusing on taming systemd.

clean chroot building not flexible enough ?
Try clean chroot manager by graysky

Offline

#3 2025-10-19 12:20:52

Piripe
Member
Registered: 2025-10-10
Posts: 9

Re: No display output with PCI passthrough

Yes, I'm trying to passthrough the GT 620 to the guest.

My host is Arch and I have 2 guest VMs (Not running at the same time btw) Windows XP (By following this guide) and Windows 10 (with Q35 UEFI firmware)

I only tried to install the driver on the Windows XP guest, and I installed the driver 368.81-desktop-winxp-32bit (I didn't tried on the Windows 10 VM because it's not even supposed to require a manual installation of the driver to get UEFI display and basic VGA Display)

Edit: I also have a GT 210, I tried to replace the GT 620 by the 210 and I got the exact same result. So it's not a GPU issue but more of a configuration issue.

Last edited by Piripe (2025-10-19 12:22:50)

Offline

#4 2025-10-19 20:53:21

Piripe
Member
Registered: 2025-10-10
Posts: 9

Re: No display output with PCI passthrough

It was my mistake, I added under "<features>":

<kvm>
  <hidden state='on'/>
</kvm>

And the following under the "<hyperv>" section:

<vendor_id state="on" value="randomid"/>

Now it works perfectly

Last edited by Piripe (2025-10-19 20:53:49)

Offline

#5 2025-10-20 10:01:40

Lone_Wolf
Administrator
From: Netherlands, Europe
Registered: 2005-10-04
Posts: 14,485

Re: No display output with PCI passthrough

Looks like you were bitten by one of the articial limitations the nvidia windows driver has :
usage in a VM is only allowed for professional cards (quattro) and forbidden for consumer cards.

Please prepend [Solved] to the thread title (edit first post)


Disliking systemd intensely, but not satisfied with alternatives so focusing on taming systemd.

clean chroot building not flexible enough ?
Try clean chroot manager by graysky

Offline

Board footer

Powered by FluxBB