Skip to content
This repository has been archived by the owner on Oct 3, 2024. It is now read-only.

GVT-d: No HDMI audio in guest-VM when iGPU passed through #219

Open
mirko opened this issue Sep 22, 2022 · 2 comments
Open

GVT-d: No HDMI audio in guest-VM when iGPU passed through #219

mirko opened this issue Sep 22, 2022 · 2 comments

Comments

@mirko
Copy link

mirko commented Sep 22, 2022

I'm having a intel nuc ("Intel NUC 11 Essential Kit NUC11ATKC4 (Atlas Canyon)") featuring a intel N5105 CPU (Jasper Lake), running Debian Bullseye (stable) with bullseye-backports enabled, hence running kernel version is 5.18.0-0.deb11.4-amd64.

Host and guest/VM are running the same system flavour.

I already figured out out that GVT-g is not supported for my CPU version/generation (yet), so I'm trying to go withn GVT-d (full PCI passthrough of the iGPU).

I'm passing over the IOMMU group for the display controller as well as everything which is of the same IOMMU group as the sound card, resulting modprobing vfio-pci on the host with the following arguments:

modprobe vfio-pci ids=8086:4e61,8086:4d87,8086:4da3,8086:4da4,8086:4dc8

Within the VM I load i915 the following way:
modprobe i915 force_probe=4e61 enable_guc=0
It works, the VM the iGPU and sound card is attached to has full control of the iGPU and can drive the connected screen and can see the sound card.

Except for HDMI audio. The VM recognises the passed sound card producing analogue audio (DAC), but that's it.

When not using vfio / passing-through the PCI devices, but modprobing i915 and snd_hda_intel on the physical host (same way as in the VM as stated above), I do see the two soundcards - HDMI as well as the DAC.

I read, that instead of solely passing "intel_iommu=on" to the hosts's kernel, this issue might be fixed by passing "intel_iommu=on,igfx_off" instead (or even "intel_iommu=on,igfx_off iommu=pt"), however when doing so vfio fails to acquire the memory regions, failing with:

VFIO - User Level meta-driver version: 0.3
vfio-pci 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem
vfio-pci: probe of 0000:00:02.0 failed with error -22
vfio_pci: add [8086:4e61[ffffffff:ffffffff]] class 0x000000/00000000
vfio-pci 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem
vfio-pci: probe of 0000:00:02.0 failed with error -22
vfio_pci: add [8086:4d87[ffffffff:ffffffff]] class 0x000000/00000000
vfio-pci 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem
vfio-pci: probe of 0000:00:02.0 failed with error -22
vfio_pci: add [8086:4da3[ffffffff:ffffffff]] class 0x000000/00000000
vfio-pci 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem
vfio-pci: probe of 0000:00:02.0 failed with error -22
vfio_pci: add [8086:4da4[ffffffff:ffffffff]] class 0x000000/00000000
vfio-pci 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem
vfio-pci: probe of 0000:00:02.0 failed with error -22
vfio_pci: add [8086:4dc8[ffffffff:ffffffff]] class 0x000000/00000000

when modprobing as stated above.

My kernel command line, resulting in the failing passthrough with above "error -22"-messages, is:
BOOT_IMAGE=/vmlinuz-5.18.0-0.deb11.4-amd64 root=UUID=42a5070f-01d2-4904-aff9-f90a71a2b39c ro intel_iommu=on,igfx_off iommu=pt video=vesafb:off video=efifb:off nofb vga=off kvm.ignore_msrs=1 console=ttyS0,115200

What makes me wonder is the errors I see in dmesg when the VM controls the iGPU:

i915 0000:00:0a.0: [drm] VT-d active for gfx access
i915 0000:00:0a.0: vgaarb: deactivate vga console
i915 0000:00:0a.0: [drm] Transparent Hugepage mode 'huge=within_size'
i915 0000:00:0a.0: [drm] *ERROR* conflict detected with stolen region: [mem 0x78000000-0x7fffffff]
i915 0000:00:0a.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0x0000
i915 0000:00:0a.0: [drm] Failed to find VBIOS tables (VBT)
i915 0000:00:0a.0: [drm] *ERROR* VBT claims to have both internal and external displays on PHY A.  Configuring for internal.
i915 0000:00:0a.0: [drm] *ERROR* VBT claims to have both internal and external displays on PHY A.  Configuring for internal.
i915 0000:00:0a.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem
i915 0000:00:0a.0: firmware: direct-loading firmware i915/icl_dmc_ver1_09.bin
i915 0000:00:0a.0: [drm] Finished loading DMC firmware i915/icl_dmc_ver1_09.bin (v1.9)
i915 0000:00:0a.0: [drm] failed to retrieve link info, disabling eDP
i915 0000:00:0a.0: [drm] [ENCODER:238:DDI B/PHY B] is disabled/in DSI mode with an ungated DDI clock, gate it
[drm] Initialized i915 1.6.0 20201103 for 0000:00:0a.0 on minor 0
snd_hda_intel 0000:00:02.0: bound 0000:00:0a.0 (ops i915_audio_component_bind_ops [i915])
fbcon: i915drmfb (fb0) is primary device
i915 0000:00:0a.0: [drm] *ERROR* VBT claims to have both internal and external displays on PHY A.  Configuring for internal.
Console: switching to colour frame buffer device 240x67
i915 0000:00:0a.0: [drm] fb0: i915drmfb frame buffer device
snd_hda_intel 0000:00:02.0: azx_get_response timeout, switching to polling mode: last cmd=0x200f0000
snd_hda_intel 0000:00:02.0: No response from codec, disabling MSI: last cmd=0x200f0000
snd_hda_intel 0000:00:02.0: Codec #2 probe error; disabling it...
snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC269VB: line_outs=1 (0x21/0x0/0x0/0x0/0x0) type:hp
snd_hda_codec_realtek hdaudioC0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
snd_hda_codec_realtek hdaudioC0D0:    hp_outs=0 (0x0/0x0/0x0/0x0/0x0)
snd_hda_codec_realtek hdaudioC0D0:    mono: mono_out=0x0
snd_hda_codec_realtek hdaudioC0D0:    inputs:
snd_hda_codec_realtek hdaudioC0D0:      Mic=0x18
input: HDA Intel PCH Mic as /devices/pci0000:00/0000:00:02.0/sound/card0/input7
input: HDA Intel PCH Headphone as /devices/pci0000:00/0000:00:02.0/sound/card0/input8

I do not see those errors when loading i915 equally on the physical host.

Thanks a lot!

@SerialVelocity
Copy link

@mirko Did you get anywhere with this? I'm assuming GVT-g will never be supported on Jasper Lake since it uses an 11th Gen GPU, but I couldn't actually get GVT-d working at all either... (using a n6005 though). Just wondering if I will encounter the same issue with sound once I get video working.

@vszakd
Copy link

vszakd commented Feb 3, 2024

+1 with N5105

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants