You are not logged in.

#1 2025-04-21 14:49:58

chaos_prevails
Member
Registered: 2015-10-05
Posts: 3

GVT-G + Wayland guest: garbled, pixelated, black white graphics

Hello,

I have a E7470 laptop with skylake (i7-6650u with Iris 540) "9th" Gen Intel GPU and configured GVT-g according to the howto at archlinux: https://wiki.archlinux.org/title/Intel_GVT-g

passthrough works fine for a Windows 11 VM - I see the GPU correctly in device manager, etc. I've done it also on another E7450 with broadwell and GPU performance is notably better (under Windows).

here is my grub commandline:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash module.sig_enforce=yes intel_iommu=on iommu=pt i915.enable_guc=3 i915.enable_gvt=1 i915.enable_fbc=1 snd_hda_intel.align_buffer_size=1"

I know that in the archlinux documentation, it is written that gvt-g cannot be combined with guc/huc, but at least to my experience/testing, it still does: gvt-g works (in windows), and intel_gpu_top shows that my GPU is used when playing e.g. VP8 videos.

However, when trying to use the vGPU on a VM configured for wayland (tuxedo OS with wayland session), the screen gets garbled as soon as I login. When I logout, the problem disappears. When I switch the session to X11, the problem disappears as well (still using gpu passthrough).

My laptop runs Ubuntu 24.04 and is updated. I didn't find a lot of information about using wayland and GVT-g. I've tried these config settings (as found here: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2678)

<qemu:commandline>
    <qemu:env name="INTEL_DEBUG" value="norbc"/>
  </qemu:commandline>

(setting MESA_LOADER_DRIVER_OVERRIDE to i965 or i915 results in an error)

But this doesn´t change a thing. I'm not sure where to look in the logfiles, which are hard to read having all this pixelation. So I was wondering if somebody can give me a pointer for what to look at?

Here is my qemu config:

<domain xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0" type="kvm">
  <name>daron</name>
  <uuid>f3abbbfe-9eb6-4427-92fd-47c7f9b32279</uuid>
  <metadata>
    <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
      <libosinfo:os id="http://ubuntu.com/ubuntu/24.04"/>
    </libosinfo:libosinfo>
  </metadata>
  <memory unit="KiB">4194304</memory>
  <currentMemory unit="KiB">4194304</currentMemory>
  <vcpu placement="static">2</vcpu>
  <os firmware="efi">
    <type arch="x86_64" machine="pc-q35-8.2">hvm</type>
    <firmware>
      <feature enabled="no" name="enrolled-keys"/>
      <feature enabled="yes" name="secure-boot"/>
    </firmware>
    <loader readonly="yes" secure="yes" type="pflash">/usr/share/OVMF/OVMF_CODE_4M.secboot.fd</loader>
    <nvram template="/usr/share/OVMF/OVMF_VARS_4M.fd">/var/lib/libvirt/qemu/nvram/daron_VARS.fd</nvram>
    <boot dev="hd"/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <vmport state="off"/>
    <smm state="on"/>
  </features>
  <cpu mode="host-passthrough" check="none" migratable="on">
    <topology sockets="1" dies="1" cores="2" threads="1"/>
  </cpu>
  <clock offset="utc">
    <timer name="rtc" tickpolicy="catchup"/>
    <timer name="pit" tickpolicy="delay"/>
    <timer name="hpet" present="no"/>
  </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/daron.qcow2"/>
      <target dev="vda" bus="virtio"/>
      <address type="pci" domain="0x0000" bus="0x04" slot="0x00" function="0x0"/>
    </disk>
    <disk type="file" device="cdrom">
      <driver name="qemu" type="raw"/>
      <target dev="sda" bus="sata"/>
      <readonly/>
      <address type="drive" controller="0" bus="0" target="0" unit="0"/>
    </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="sata" index="0">
      <address type="pci" domain="0x0000" bus="0x00" slot="0x1f" function="0x2"/>
    </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="virtio-serial" index="0">
      <address type="pci" domain="0x0000" bus="0x03" slot="0x00" function="0x0"/>
    </controller>
    <interface type="network">
      <mac address="52:54:00:f3:63:c9"/>
      <source network="default"/>
      <model type="virtio"/>
      <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="unix">
      <target type="virtio" name="org.qemu.guest_agent.0"/>
      <address type="virtio-serial" controller="0" bus="0" port="1"/>
    </channel>
    <channel type="spicevmc">
      <target type="virtio" name="com.redhat.spice.0"/>
      <address type="virtio-serial" controller="0" bus="0" port="2"/>
    </channel>
    <input type="tablet" bus="usb">
      <address type="usb" bus="0" port="1"/>
    </input>
    <input type="mouse" bus="ps2"/>
    <input type="keyboard" bus="ps2"/>
    <tpm model="tpm-crb">
      <backend type="emulator" version="2.0"/>
    </tpm>
    <graphics type="spice">
      <listen type="none"/>
      <image compression="off"/>
      <gl enable="yes" rendernode="/dev/dri/by-path/pci-0000:00:02.0-render"/>
    </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="mdev" managed="no" model="vfio-pci" display="on">
      <source>
        <address uuid="4d1cb2aa-f678-4516-b065-3059a218244b"/>
      </source>
      <address type="pci" domain="0x0000" bus="0x08" 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>
    <rng model="virtio">
      <backend model="random">/dev/urandom</backend>
      <address type="pci" domain="0x0000" bus="0x07" slot="0x00" function="0x0"/>
    </rng>
  </devices>
  <qemu:commandline>
    <qemu:env name="INTEL_DEBUG" value="norbc"/>
  </qemu:commandline>
  <qemu:override>
    <qemu:device alias="hostdev0">
      <qemu:frontend>
        <qemu:property name="romfile" type="string" value="/usr/share/vgabios/vbios_gvt_uefi.rom"/>
        <qemu:property name="x-igd-opregion" type="bool" value="true"/>
        <qemu:property name="ramfb" type="bool" value="true"/>
        <qemu:property name="driver" type="string" value="vfio-pci-nohotplug"/>
        <qemu:property name="xres" type="unsigned" value="1024"/>
        <qemu:property name="yres" type="unsigned" value="768"/>
      </qemu:frontend>
    </qemu:device>
  </qemu:override>
</domain>

here is a sample image
PSmkiEM.png

Offline

#2 2025-06-02 18:58:02

chaos_prevails
Member
Registered: 2015-10-05
Posts: 3

Re: GVT-G + Wayland guest: garbled, pixelated, black white graphics

I can answer my own question, but I don´t have a solution.

These artefacts are caused by specific kernel versions, e.g. I tested 6.11 and 6.14. When I downgrade e.g. KDE neon to kernel 6.8 (e.g. 6.8.0-56) the artefacts are gone.

Also, when I run KDE (neon) with Kernel 6.11 directly on my laptop (thus not with GVT-g in KVM), these artefacts also do not show.

I tried to find a discussion about this online but couldn't find a lot of topics, and I couldn't find a topic which proposed a solution through e.g. kernel parameters.I tried https://bbs.archlinux.org/viewtopic.php?id=298071 (using "i915.enable_psr=0") which didn't help (any my problem are distortions, not flickering).

Could anybody shed some light on discussions about similar distortions happening with intel GPUs?

Which log files best to assess (and compare output between 6.8 and 6.11) /var/log/kern.log /var/log/syslog, ...?

Offline

Board footer

Powered by FluxBB