Virtualised Intel GPU with SR-IOV

Could it depend on the specific hardware and BIOS implementation?

Of course, but there could be mutiple other issues that should be checked first. Because software is easyer to fix (and cheaper probably) than hardware.

Sure, I’m just asking out of curiosity.

(I think some hardware detail helps with comparison.)

I have decided to disable memory balancing on some of the HVMs, as the assigned VRAM seems to be calculated based on the initial memory (as you also found) and does not grow when the memory assigned to the VM grows.

Wow, nice, wonder if it would work on NUC14

also tried this Guide on my Intel Core 2 Ultra 255H with Intel Arrow Lake Arc Pro 140T,

dom0 works like documented:

dom0:Start after creating the DKMS Modules
[    3.737197] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[    3.749712] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/mtl_dmc.bin (v2.23)
[    3.785515] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/mtl_guc_70.bin version 70.53.0
[    3.795383] i915 0000:00:02.0: [drm] GT0: GUC: submission enabled
[    3.795385] i915 0000:00:02.0: [drm] GT0: GUC: SLPC enabled
[    3.795656] i915 0000:00:02.0: [drm] GT0: GUC: RC enabled
[    3.813028] i915 0000:00:02.0: [drm] GT1: GuC firmware i915/mtl_guc_70.bin version 70.53.0
[    3.813030] i915 0000:00:02.0: [drm] GT1: HuC firmware i915/mtl_huc_gsc.bin version 8.5.4
[    3.834784] i915 0000:00:02.0: [drm] GT1: HuC: authenticated for clear media
[    3.835607] i915 0000:00:02.0: [drm] GT1: GUC: submission enabled
[    3.835608] i915 0000:00:02.0: [drm] GT1: GUC: SLPC enabled
[    3.835723] i915 0000:00:02.0: [drm] GT1: GUC: RC enabled
[    3.839275] i915 0000:00:02.0: [drm] Protected Xe Path (PXP) protected content support initialized
[    3.840101] i915 0000:00:02.0: [drm] *ERROR* [CRTC:148:pipe A] DSB 0 poll error
[    3.841035] i915 0000:00:02.0: [drm] Registered 4 planes with drm panic
[    3.841037] [drm] Initialized i915 1.6.0 for 0000:00:02.0 on minor 0
[    3.853598] ACPI: video: Video Device [GFX0] (multi-head: yes  rom: no  post: no)
[    3.856992] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input12
[    3.953966] fbcon: i915drmfb (fb0) is primary device
[    3.953968] fbcon: Deferring console take-over
[    3.953970] i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device
[    3.954053] i915 0000:00:02.0: 7 VFs could be associated with this PF
[    3.968093] intel_sriov_compat: loaded
[    3.980694] i915 0000:00:02.0: [drm] GT1: Loaded GSC firmware i915/mtl_gsc_1.bin (cv1.0, r102.1.15.1926, svn 1)
[    3.988667] Module xe is blacklisted
[    4.000848] i915 0000:00:02.0: [drm] GT1: HuC: authenticated for all workloads
[   24.002782] i915 0000:00:02.0: [drm] *ERROR* GT1: GSC proxy component didn't bind within the expected timeout
[   24.002790] i915 0000:00:02.0: [drm] *ERROR* GT1: GSC proxy handler failed to init

also creating the vGPUs works,

dom0: dmesg creating vGPUs
[  352.932169] pci 0000:00:02.1: [8086:7d51] type 00 class 0x030000 PCIe Root Complex Integrated Endpoint
[  352.932250] pci 0000:00:02.1: DMAR: Skip IOMMU disabling for graphics
[  352.932650] pci 0000:00:02.1: vgaarb: bridge control possible
[  352.932653] pci 0000:00:02.1: vgaarb: VGA device added: decodes=io+mem,owns=none,locks=none
[  352.932668] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=io+mem
[  352.932909] i915 0000:00:02.1: enabling device (0000 -> 0002)
[  352.933004] i915 0000:00:02.1: [drm] Cannot read valid display IP version; disabling display.
[  352.933030] i915 0000:00:02.1: [drm] Found meteorlake (device ID 7d51) integrated display version 0.00 stepping N/A
[  352.933048] i915 0000:00:02.1: Running in SR-IOV VF mode
[  352.933050] i915 0000:00:02.1: [drm] preliminary graphics version 12.70 media version 13.00
[  352.934048] i915 0000:00:02.1: [drm] GT1: GUC: interface version 0.1.26.0
[  352.934285] i915 0000:00:02.1: [drm] GT1: GMD_ID 0x3400008 version 13.0 step C0
[  352.936749] i915 0000:00:02.1: [drm] GT0: GUC: interface version 0.1.26.0
[  352.936825] i915 0000:00:02.1: [drm] GT0: GMD_ID 0x3128004 version 12.74 step B0
[  352.937943] i915 0000:00:02.1: [drm] GT1: GUC: interface version 0.1.26.0
[  352.938186] i915 0000:00:02.1: [drm] GT1: GMD_ID 0x3400008 version 13.0 step C0
[  352.939725] i915 0000:00:02.1: [drm] VT-d active for gfx access
[  352.939744] tmpfs: Unsupported parameter 'huge'
[  352.939747] i915 0000:00:02.1: [drm] Transparent Hugepage support is recommended for optimal performance on this platform!
[  352.940057] i915 0000:00:02.1: [drm] GT0: GUC: interface version 0.1.26.0
[  352.972698] i915 0000:00:02.1: [drm] GT0: GUC: interface version 0.1.26.0
[  352.972935] Module xe is blacklisted
[  352.973757] i915 0000:00:02.1: GuC firmware PRELOADED version 0.0 submission:SR-IOV VF
[  352.973761] i915 0000:00:02.1: HuC firmware N/A
[  352.978734] i915 0000:00:02.1: [drm] GT1: GUC: interface version 0.1.26.0
[  352.982340] i915 0000:00:02.1: [drm] GT1: GUC: interface version 0.1.26.0
[  352.983988] i915 0000:00:02.1: GuC firmware PRELOADED version 0.0 submission:SR-IOV VF
[  352.983992] i915 0000:00:02.1: HuC firmware PRELOADED
[  352.997748] i915 0000:00:02.1: [drm] PMU not supported for this GPU.
[  352.997935] [drm] Initialized i915 1.6.0 for 0000:00:02.1 on minor 1
[  352.998253] pci 0000:00:02.2: [8086:7d51] type 00 class 0x030000 PCIe Root Complex Integrated Endpoint
[  352.998322] pci 0000:00:02.2: DMAR: Skip IOMMU disabling for graphics
[  352.998708] pci 0000:00:02.2: vgaarb: bridge control possible
[  352.998711] pci 0000:00:02.2: vgaarb: VGA device added: decodes=io+mem,owns=none,locks=none
[  352.998727] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=io+mem
[  352.998741] i915 0000:00:02.1: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
[  352.998985] i915 0000:00:02.2: enabling device (0000 -> 0002)
[  352.999076] i915 0000:00:02.2: [drm] Cannot read valid display IP version; disabling display.
[  352.999079] i915 0000:00:02.2: [drm] Found meteorlake (device ID 7d51) integrated display version 0.00 stepping N/A
[  352.999097] i915 0000:00:02.2: Running in SR-IOV VF mode
[  352.999099] i915 0000:00:02.2: [drm] preliminary graphics version 12.70 media version 13.00
[  352.999908] i915 0000:00:02.2: [drm] GT1: GUC: interface version 0.1.26.0
[  352.999991] i915 0000:00:02.2: [drm] GT1: GMD_ID 0x3400008 version 13.0 step C0
[  353.001217] i915 0000:00:02.2: [drm] GT0: GUC: interface version 0.1.26.0
[  353.001310] i915 0000:00:02.2: [drm] GT0: GMD_ID 0x3128004 version 12.74 step B0
[  353.002265] i915 0000:00:02.2: [drm] GT1: GUC: interface version 0.1.26.0
[  353.002344] i915 0000:00:02.2: [drm] GT1: GMD_ID 0x3400008 version 13.0 step C0
[  353.003238] i915 0000:00:02.2: [drm] VT-d active for gfx access
[  353.003258] tmpfs: Unsupported parameter 'huge'
[  353.003262] i915 0000:00:02.2: [drm] Transparent Hugepage support is recommended for optimal performance on this platform!
[  353.003659] i915 0000:00:02.2: [drm] GT0: GUC: interface version 0.1.26.0
[  353.025555] i915 0000:00:02.2: [drm] GT0: GUC: interface version 0.1.26.0
[  353.026597] i915 0000:00:02.2: GuC firmware PRELOADED version 0.0 submission:SR-IOV VF
[  353.026601] i915 0000:00:02.2: HuC firmware N/A
[  353.028975] Module xe is blacklisted
[  353.032309] i915 0000:00:02.2: [drm] GT1: GUC: interface version 0.1.26.0
[  353.036164] i915 0000:00:02.2: [drm] GT1: GUC: interface version 0.1.26.0
[  353.037084] i915 0000:00:02.2: GuC firmware PRELOADED version 0.0 submission:SR-IOV VF
[  353.037087] i915 0000:00:02.2: HuC firmware PRELOADED
[  353.041371] i915 0000:00:02.2: [drm] PMU not supported for this GPU.
[  353.041562] [drm] Initialized i915 1.6.0 for 0000:00:02.2 on minor 2
[  353.041838] pci 0000:00:02.3: [8086:7d51] type 00 class 0x030000 PCIe Root Complex Integrated Endpoint
[  353.041905] pci 0000:00:02.3: DMAR: Skip IOMMU disabling for graphics
[  353.042356] pci 0000:00:02.3: vgaarb: bridge control possible
[  353.042358] pci 0000:00:02.3: vgaarb: VGA device added: decodes=io+mem,owns=none,locks=none
[  353.042372] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=io+mem
[  353.042385] i915 0000:00:02.1: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[  353.042397] i915 0000:00:02.2: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
[  353.042602] i915 0000:00:02.3: enabling device (0000 -> 0002)
[  353.042661] i915 0000:00:02.3: [drm] Cannot read valid display IP version; disabling display.
[  353.042663] i915 0000:00:02.3: [drm] Found meteorlake (device ID 7d51) integrated display version 0.00 stepping N/A
[  353.042677] i915 0000:00:02.3: Running in SR-IOV VF mode
[  353.042679] i915 0000:00:02.3: [drm] preliminary graphics version 12.70 media version 13.00
[  353.043521] i915 0000:00:02.3: [drm] GT1: GUC: interface version 0.1.26.0
[  353.043605] i915 0000:00:02.3: [drm] GT1: GMD_ID 0x3400008 version 13.0 step C0
[  353.044561] i915 0000:00:02.3: [drm] GT0: GUC: interface version 0.1.26.0
[  353.044639] i915 0000:00:02.3: [drm] GT0: GMD_ID 0x3128004 version 12.74 step B0
[  353.045619] i915 0000:00:02.3: [drm] GT1: GUC: interface version 0.1.26.0
[  353.045699] i915 0000:00:02.3: [drm] GT1: GMD_ID 0x3400008 version 13.0 step C0
[  353.046564] i915 0000:00:02.3: [drm] VT-d active for gfx access
[  353.046583] tmpfs: Unsupported parameter 'huge'
[  353.046587] i915 0000:00:02.3: [drm] Transparent Hugepage support is recommended for optimal performance on this platform!
[  353.047251] i915 0000:00:02.3: [drm] GT0: GUC: interface version 0.1.26.0
[  353.056596] Module xe is blacklisted
[  353.068055] i915 0000:00:02.3: [drm] GT0: GUC: interface version 0.1.26.0
[  353.069044] i915 0000:00:02.3: GuC firmware PRELOADED version 0.0 submission:SR-IOV VF
[  353.069048] i915 0000:00:02.3: HuC firmware N/A
[  353.074583] i915 0000:00:02.3: [drm] GT1: GUC: interface version 0.1.26.0
[  353.078113] i915 0000:00:02.3: [drm] GT1: GUC: interface version 0.1.26.0
[  353.079054] i915 0000:00:02.3: GuC firmware PRELOADED version 0.0 submission:SR-IOV VF
[  353.079058] i915 0000:00:02.3: HuC firmware PRELOADED
[  353.083456] i915 0000:00:02.3: [drm] PMU not supported for this GPU.
[  353.083618] [drm] Initialized i915 1.6.0 for 0000:00:02.3 on minor 3
[  353.083865] pci 0000:00:02.4: [8086:7d51] type 00 class 0x030000 PCIe Root Complex Integrated Endpoint
[  353.083932] pci 0000:00:02.4: DMAR: Skip IOMMU disabling for graphics
[  353.084336] pci 0000:00:02.4: vgaarb: bridge control possible
[  353.084339] pci 0000:00:02.4: vgaarb: VGA device added: decodes=io+mem,owns=none,locks=none
[  353.084352] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=io+mem
[  353.084366] i915 0000:00:02.1: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[  353.084378] i915 0000:00:02.2: vgaarb: VGA decodes changed: olddecodes=none,decodes=none:owns=none
[  353.084389] i915 0000:00:02.3: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
[  353.084606] i915 0000:00:02.4: enabling device (0000 -> 0002)
[  353.084666] i915 0000:00:02.4: [drm] Cannot read valid display IP version; disabling display.
[  353.084668] i915 0000:00:02.4: [drm] Found meteorlake (device ID 7d51) integrated display version 0.00 stepping N/A
[  353.084683] i915 0000:00:02.4: Running in SR-IOV VF mode
[  353.084685] i915 0000:00:02.4: [drm] preliminary graphics version 12.70 media version 13.00
[  353.085514] i915 0000:00:02.4: [drm] GT1: GUC: interface version 0.1.26.0
[  353.085598] i915 0000:00:02.4: [drm] GT1: GMD_ID 0x3400008 version 13.0 step C0
[  353.086541] i915 0000:00:02.4: [drm] GT0: GUC: interface version 0.1.26.0
[  353.086625] i915 0000:00:02.4: [drm] GT0: GMD_ID 0x3128004 version 12.74 step B0
[  353.087659] i915 0000:00:02.4: [drm] GT1: GUC: interface version 0.1.26.0
[  353.087737] i915 0000:00:02.4: [drm] GT1: GMD_ID 0x3400008 version 13.0 step C0
[  353.088861] i915 0000:00:02.4: [drm] VT-d active for gfx access
[  353.088881] tmpfs: Unsupported parameter 'huge'
[  353.088885] i915 0000:00:02.4: [drm] Transparent Hugepage support is recommended for optimal performance on this platform!
[  353.089249] i915 0000:00:02.4: [drm] GT0: GUC: interface version 0.1.26.0
[  353.108521] Module xe is blacklisted
[  353.114468] i915 0000:00:02.4: [drm] GT0: GUC: interface version 0.1.26.0
[  353.115433] i915 0000:00:02.4: GuC firmware PRELOADED version 0.0 submission:SR-IOV VF
[  353.115440] i915 0000:00:02.4: HuC firmware N/A
[  353.120252] i915 0000:00:02.4: [drm] GT1: GUC: interface version 0.1.26.0
[  353.123997] i915 0000:00:02.4: [drm] GT1: GUC: interface version 0.1.26.0
[  353.124864] i915 0000:00:02.4: GuC firmware PRELOADED version 0.0 submission:SR-IOV VF
[  353.124868] i915 0000:00:02.4: HuC firmware PRELOADED
[  353.129215] i915 0000:00:02.4: [drm] PMU not supported for this GPU.
[  353.129405] [drm] Initialized i915 1.6.0 for 0000:00:02.4 on minor 4
[  353.129798] i915 0000:00:02.0: Enabled 4 VFs

But later, after assigning the vGPU1 to qvm with the same kernel, (6.19.5.1) as HVM
throws following stacktrace to dom0 dmesg (and also to qvm dmesg)

Stacktrace starting the qvm
[  953.181904] ------------[ cut here ]------------
[  953.181911] WARNING: arch/x86/mm/ioremap.c:460 at iounmap+0x33/0xf0, CPU#1: rpc-virtxend/4438
[  953.181923] Modules linked in: snd_seq_dummy snd_hrtimer vfat fat snd_hda_intel snd_sof_pci_intel_mtl snd_sof_intel_hda_generic soundwire_intel snd_sof_intel_hda_sdw_bpt snd_sof_intel_hda_common snd_soc_hdac_hda snd_sof_intel_hda_mlink snd_sof_intel_hda snd_hda_codec_hdmi soundwire_cadence snd_sof_pci snd_sof_xtensa_dsp snd_sof snd_sof_utils snd_hda_ext_core intel_uncore_frequency_common snd_hda_codec spi_nor snd_hda_core snd_intel_dspcfg snd_intel_sdw_acpi snd_soc_acpi_intel_match mtd mei_gsc_proxy spd5118 intel_powerclamp iTCO_wdt intel_pmc_bxt snd_soc_acpi_intel_sdca_quirks iTCO_vendor_support intel_rapl_msr soundwire_generic_allocation snd_soc_sdw_utils snd_soc_acpi snd_hwdep crc8 soundwire_bus snd_soc_sdca snd_soc_core snd_compress pcspkr ac97_bus snd_pcm_dmaengine lenovo_wmi_other snd_seq lenovo_wmi_helpers lenovo_wmi_capdata01 think_lmi firmware_attributes_class snd_seq_device processor_thermal_device_pci iwlwifi wmi_bmof processor_thermal_device processor_thermal_wt_hint platform_temperature_control snd_pcm
[  953.181977]  processor_thermal_soc_slider mei_me snd_ctl_led processor_thermal_rfim e1000e mei snd_timer cfg80211 processor_thermal_rapl spi_intel_pci i2c_i801 spi_intel i2c_smbus intel_rapl_common idma64 processor_thermal_wt_req processor_thermal_power_floor igen6_edac processor_thermal_mbox thinkpad_acpi platform_profile rfkill snd soundcore int3403_thermal intel_pmc_core pmt_telemetry int340x_thermal_zone pmt_discovery int3400_thermal pmt_class intel_hid acpi_thermal_rel acpi_tad intel_pmc_ssram_telemetry sparse_keymap joydev fuse loop xenfs nfnetlink dm_thin_pool dm_persistent_data dm_bio_prison dm_crypt drm_ttm_helper drm_suballoc_helper intel_sriov_compat(OE) gpu_sched drm_gpuvm drm_exec i915(OE) hid_multitouch nvme i2c_algo_bit drm_buddy ttm ucsi_acpi drm_display_helper typec_ucsi nvme_core xhci_pci nvme_keyring typec video nvme_auth ghash_clmulni_intel intel_vpu hkdf xhci_hcd thunderbolt intel_vsec cec i2c_hid_acpi i2c_hid wmi pinctrl_meteorlake serio_raw xen_acpi_processor xen_privcmd xen_pciback xen_blkback
[  953.182040]  xen_gntalloc xen_gntdev xen_evtchn scsi_dh_rdac scsi_dh_emc scsi_dh_alua uinput i2c_dev
[  953.182049] CPU: 1 UID: 0 PID: 4438 Comm: rpc-virtxend Tainted: G     U     OE       6.19.5-1.qubes.fc41.x86_64 #1 PREEMPT(full) 
[  953.182055] Tainted: [U]=USER, [O]=OOT_MODULE, [E]=UNSIGNED_MODULE
[  953.182057] Hardware name: LENOVO 21QTCTO1WW/21QTCTO1WW, BIOS R2WET40W (1.22 ) 01/08/2026
[  953.182058] RIP: e030:iounmap+0x33/0xf0
[  953.182063] Code: 48 8b 05 e0 8c c3 01 55 53 48 39 c7 72 1c 48 89 fb eb 20 cc cc cc 48 ba 00 00 00 00 00 00 32 00 48 8d 44 02 ff 48 39 c3 72 1d <0f> 0b 5b 5d c3 cc cc cc cc 48 ba 00 00 00 00 00 20 00 00 48 8d 44
[  953.182066] RSP: e02b:ffffc9004aeafb48 EFLAGS: 00010207
[  953.182069] RAX: ffffc90000000000 RBX: ffff88810d421028 RCX: 0000000000000000
[  953.182071] RDX: ffff88810d421058 RSI: ffff8881892a4000 RDI: 0000000000000000
[  953.182072] RBP: ffff88810d421030 R08: 0000000000000000 R09: ffff88810d421130
[  953.182074] R10: 0000000000007ff0 R11: ffff88813c43d190 R12: ffff88810d421028
[  953.182075] R13: ffff88810d421220 R14: ffff88810d4211a8 R15: ffff88818c39a374
[  953.182085] FS:  00007aaab5fff6c0(0000) GS:ffff88820d1b7000(0000) knlGS:0000000000000000
[  953.182087] CS:  e030 DS: 0000 ES: 0000 CR0: 0000000080050033
[  953.182089] CR2: 00007a8cf801c8d8 CR3: 00000001080ba000 CR4: 0000000000050660
[  953.182094] Call Trace:
[  953.182096]  <TASK>
[  953.182101]  gen6_gmch_remove+0x19/0x30 [i915]
[  953.182289]  ggtt_cleanup_hw+0x12f/0x1d0 [i915]
[  953.182425]  i915_driver_release+0x43/0x80 [i915]
[  953.182530]  devm_drm_dev_init_release+0x51/0x70
[  953.182534]  release_nodes+0x38/0xb0
[  953.182538]  devres_release_all+0x8f/0xd0
[  953.182543]  device_unbind_cleanup+0xe/0xa0
[  953.182548]  device_release_driver_internal+0x1c1/0x200
[  953.182551]  unbind_store+0xa1/0xb0
[  953.182555]  kernfs_fop_write_iter+0x150/0x200
[  953.182561]  vfs_write+0x25d/0x450
[  953.182565]  ksys_write+0x6b/0xe0
[  953.182569]  do_syscall_64+0x84/0x6c0
[  953.182574]  ? syscall_exit_work+0x108/0x140
[  953.182579]  ? do_syscall_64+0xc0/0x6c0
[  953.182583]  ? kmem_cache_free+0x358/0x4c0
[  953.182588]  ? do_readlinkat+0x129/0x180
[  953.182592]  ? syscall_exit_work+0x108/0x140
[  953.182596]  ? do_syscall_64+0xc0/0x6c0
[  953.182600]  ? clear_bhb_loop+0x50/0xa0
[  953.182604]  ? clear_bhb_loop+0x50/0xa0
[  953.182607]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
[  953.182611] RIP: 0033:0x7aaace666c1d
[  953.182615] Code: e5 48 83 ec 20 48 89 55 e8 48 89 75 f0 89 7d f8 e8 28 51 f8 ff 48 8b 55 e8 48 8b 75 f0 41 89 c0 8b 7d f8 b8 01 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 33 44 89 c7 48 89 45 f8 e8 7f 51 f8 ff 48 8b
[  953.182617] RSP: 002b:00007aaab5ffe420 EFLAGS: 00000293 ORIG_RAX: 0000000000000001
[  953.182621] RAX: ffffffffffffffda RBX: 0000000000000034 RCX: 00007aaace666c1d
[  953.182623] RDX: 000000000000000c RSI: 00007aaaa8018af0 RDI: 0000000000000034
[  953.182625] RBP: 00007aaab5ffe440 R08: 0000000000000000 R09: 00000000ffffffff
[  953.182627] R10: 0000000000000000 R11: 0000000000000293 R12: 000000000000000c
[  953.182629] R13: 00007aaaa8018af0 R14: 0000000000000034 R15: 0000000000000000
[  953.182632]  </TASK>
[  953.182633] ---[ end trace 0000000000000000 ]---
[  953.193981] pciback 0000:00:02.1: xen_pciback: seizing device
[  953.194758] i915 0000:00:02.0: VF1 FLR
[  954.405312] loop11: detected capacity change from 0 to 1509064
[  954.559704] loop12: detected capacity change from 0 to 1509064
[  954.562211] pciback 0000:00:02.1: resetting
[  954.562775] i915 0000:00:02.0: VF1 FLR
[  954.668033] pciback 0000:00:02.1: reset done
[  954.680273] pciback 0000:00:02.1: xen_pciback: vpci: assign to virtual slot 0
[  954.680434] pciback 0000:00:02.1: registering for 17
[  954.858146] pciback 0000:00:02.1: xen-pciback: Driver tried to write to a read-only configuration space field at offset 0x78, size 2. This may be harmless, but if you have problems with your device:
               1) see permissive attribute in sysfs
               2) report problems to the xen-devel mailing list along with details of your device obtained from lspci.

So, i think i also have to install the kernel to the template of the qvm

after rebooting the system, all vGPUs are lost…
is this normal?

[root@dom0 ~]# dmesg |grep -i SRIOV
[    3.604869] i915: You are using the i915-sriov-dkms module, a ported version of the i915/xe module with SR-IOV support.
[    3.604871] i915: Please file any bug report at https://github.com/strongtz/i915-sriov-dkms/issues/new.
[    3.604871] i915: Module Homepage: https://github.com/strongtz/i915-sriov-dkms
[    3.848444] intel_sriov_compat: loaded
[root@dom0 ~]# cat /sys/devices/pci0000\:00/0000\:00\:02.0/sriov_numvfs 
0

is it necessary to activate the vGPUs each time, the system reboots?

Yes, you need to activate the vGPUs after every reboot

1 Like

IĀ“ve implemented this via a simple systemd service…

On that I’m not sure what the problem is. I would guess, that the problem might be that dom0 tried to grap the vGPUs and wasn’t happy about loosing them. I would check if it works, if you hide them from dom0 via the rd.qubes.hide_pci Kernel boot parameter.

Also please stick to the official naming conventions. It was unnecessarily difficult to understand what was going on.

The issue is, as mentioned by @pablob before, the DKMS Modules for SRIOV /i915/XE aren“t available inside the qvm / template.

Here the output of /lib/modules

some of the Templates: in this example Debian-13-minimal

ls -al /lib/modules/6.19.5-1.qubes.fc41.x86_64/updates/
total 180
drwxr-xr-x. 3 root root   4096 Feb 28 01:00 .
drwxr-xr-x. 8 root root   4096 Feb 28 01:00 ..
drwxr-xr-x. 2 root root   4096 Feb 28 01:00 module
-rw-r--r--. 1 root root  15249 Feb 28 01:00 u2mfn.ko
-rw-r--r--. 1 root root 150585 Feb 28 01:00 v4l2loopback.ko

dom0:

ls -al /lib/modules/6.19.5-1.qubes.fc41.x86_64/updates/
insgesamt 23400
drwxr-xr-x 3 root root     4096  5. Mai 20:46 .
drwxr-xr-x 7 root root     4096  5. Mai 20:46 ..
-rw-r--r-- 1 root root 12506613  5. Mai 20:46 i915.ko
-rw-r--r-- 1 root root    78613  5. Mai 20:46 intel_sriov_compat.ko
-rw-r--r-- 1 root root  1110301  5. Mai 20:46 kvmgt.ko
drwxr-xr-x 2 root root     4096 18. MƤr 09:45 module
-rw-r--r-- 1 root root    15249 28. Feb 01:00 u2mfn.ko
-rw-r--r-- 1 root root   150585 28. Feb 01:00 v4l2loopback.ko
-rw-r--r-- 1 root root 10075149  5. Mai 20:46 xe.ko

So i think the build of the DKMS didn“t copy it to the templates.

Maybe there is a ā€œspecialā€ task, which does this during a dom0 Kernel update.
But i didn“t have the knowledge currently to find the right point for further analytics.

Sorry, not sure which naming conventions are meant?

Can confirm, after installing the DKMS Module in the template to,
vGPU was initialized successfully with Intel ARC Pro 140T aka iGPU from Intel Core Ultra 255H

root@dev-work:~# dmesg |grep -i i915
[    0.000000] Command line: systemd.machine_id=ac818d09481c481e97b0ee8e240b2e7f root=/dev/mapper/dmroot ro console=hvc0 rd_NO_PLYMOUTH rd.plymouth.enable=0 plymouth.enable=0 clocksource=tsc xen_scrub_pages=0  qubes_exp_pm_use_suspend=1 apparmor=1 security=apparmor i915.force_probe=7d51 i915.enable_guc=3
[    0.096424] Kernel command line: systemd.machine_id=ac818d09481c481e97b0ee8e240b2e7f root=/dev/mapper/dmroot ro console=hvc0 rd_NO_PLYMOUTH rd.plymouth.enable=0 plymouth.enable=0 clocksource=tsc xen_scrub_pages=0  qubes_exp_pm_use_suspend=1 apparmor=1 security=apparmor i915.force_probe=7d51 i915.enable_guc=3
[    4.527045] i915: loading out-of-tree module taints kernel.
[    4.527095] i915: module verification failed: signature and/or required key missing - tainting kernel
[    4.925265] i915: You are using the i915-sriov-dkms module, a ported version of the i915/xe module with SR-IOV support.
[    4.925289] i915: Please file any bug report at https://github.com/strongtz/i915-sriov-dkms/issues/new.
[    4.925316] i915: Module Homepage: https://github.com/strongtz/i915-sriov-dkms
[    4.925718] i915 0000:00:07.0: [drm] Cannot read valid display IP version; disabling display.
[    4.925732] i915 0000:00:07.0: [drm] Found meteorlake (device ID 7d51) integrated display version 0.00 stepping N/A
[    4.925749] i915 0000:00:07.0: Running in SR-IOV VF mode
[    4.925762] i915 0000:00:07.0: [drm] preliminary graphics version 12.70 media version 13.00
[    4.926209] i915 0000:00:07.0: [drm] GT1: GUC: interface version 0.1.26.0
[    4.926445] i915 0000:00:07.0: [drm] GT1: GMD_ID 0x3400008 version 13.0 step C0
[    4.929649] i915 0000:00:07.0: [drm] GT0: GUC: interface version 0.1.26.0
[    4.930478] i915 0000:00:07.0: [drm] GT0: GMD_ID 0x3128004 version 12.74 step B0
[    4.932954] i915 0000:00:07.0: [drm] GT1: GUC: interface version 0.1.26.0
[    4.933255] i915 0000:00:07.0: [drm] GT1: GMD_ID 0x3400008 version 13.0 step C0
[    4.935738] i915 0000:00:07.0: [drm] VT-d active for gfx access
[    4.935770] i915 0000:00:07.0: [drm] Using Transparent Hugepages
[    4.938436] i915 0000:00:07.0: [drm] GT0: GUC: interface version 0.1.26.0
[    4.944757] i915 0000:00:07.0: [drm] GT0: GUC: interface version 0.1.26.0
[    4.945744] i915 0000:00:07.0: GuC firmware PRELOADED version 0.0 submission:SR-IOV VF
[    4.945754] i915 0000:00:07.0: HuC firmware N/A
[    4.953310] i915 0000:00:07.0: [drm] GT1: GUC: interface version 0.1.26.0
[    4.957510] i915 0000:00:07.0: [drm] GT1: GUC: interface version 0.1.26.0
[    4.959280] i915 0000:00:07.0: GuC firmware PRELOADED version 0.0 submission:SR-IOV VF
[    4.959291] i915 0000:00:07.0: HuC firmware PRELOADED
[    4.973170] i915 0000:00:07.0: [drm] PMU not supported for this GPU.
[    4.973625] [drm] Initialized i915 1.6.0 for 0000:00:07.0 on minor 1
[    5.389541] xe: You are using the i915-sriov-dkms module, a ported version of the i915/xe module with SR-IOV support.
[    5.389558] xe: Please file any bug report at https://github.com/strongtz/i915-sriov-dkms/issues/new.
[    5.389566] xe: Module Homepage: https://github.com/strongtz/i915-sriov-dkms

just fyi:

this works with Debian-13 based Templates,
Debian 12, uses gcc12.x which is not compatible with the dom0 Kernel, which is build by gcc14

Edit: on Qubes 4.3

1 Like

For me, on Qubes 4.2, it only worked with Fedora templates.

Hi guys,
yesterday I updated dom0 which included a kernel update to 6.19.14. The dkms module build was triggered but ran into errors. I had to update the module version to the most recent one (2026.05.06) to make it build again. After that vgpu was working. On Qube side I stayed with the ā€œoldā€ kernel, the different module versions do not matter.
Please take this into account when updating dom0.
Bye

Hi guys,

wanted to ask if anybody faces a similar issue with memory. Since I am using the the shared gpu module it seems that my qubes are running out of memory quite quickly. Especially usage of Chromium seems to speed up the ā€œmemory problemsā€. Basically my "shared "memory bucket grows to number like 10-15GB, like can be seen here:

At some point, when the memory becomes rare, the system is slugish, tabs are crashing and I need to restart the qube.
I don’t think this is expected but I am also not sure if there are parameters I can tweak the memory usage here.
Anybody else having the ā€œsharedā€ memory growing big?

Thanks!