Intel HDMI Audio not working with IOMMU enabled

Bug #1428121 reported by Kelvin Middleton on 2015-03-04
22
This bug affects 4 people
Affects Status Importance Assigned to Milestone
ALSA driver
Unknown
Unknown
alsa-driver (Ubuntu)
Medium
Unassigned

Bug Description

New ASRock Z97 Extreme 6 motherboard with an Intel i7 4790S and an Nvidia GTX 650.

Host uses Intel IGD for video and HDMI audio out.

When I pass kernel flags 'intel_iommu=on' or 'intel_iommu=on,igfx_on' HDMI audio no longer functions although the device and modules seem to load and I cannot locate any error messages. In this configuration IOMMU functions as expected and I can successfully pass the Nvidia card through to a KVM guest using VFIO.

As per this (https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1223840) bug report and the linked bugzilla thread I attempted to use kernel flag 'intel_iommu=on,igfx_off'. This resolves the HDMI audio out but breaks IOMMU as in VGA pass through generates DMA errors.

I'm running from a clean installation of 14.10 with no modifications to the kernel or kvm, qemu, libvirt or virt-manager.

In either scenario above the analogue audio out continues to function, I haven't tested the optical out as I have no hardware to do so.

ProblemType: Bug
DistroRelease: Ubuntu 14.10
Package: linux-image-3.16.0-31-generic 3.16.0-31.41
ProcVersionSignature: Ubuntu 3.16.0-31.41-generic 3.16.7-ckt5
Uname: Linux 3.16.0-31-generic x86_64
ApportVersion: 2.14.7-0ubuntu8.2
Architecture: amd64
AudioDevicesInUse:
 USER PID ACCESS COMMAND
 /dev/snd/controlC2: kelvin 3468 F.... pulseaudio
 /dev/snd/controlC3: kelvin 3468 F.... pulseaudio
 /dev/snd/controlC0: kelvin 3468 F.... pulseaudio
 /dev/snd/controlC1: kelvin 3468 F.... pulseaudio
CurrentDesktop: Unity
Date: Wed Mar 4 12:53:17 2015
HibernationDevice: RESUME=UUID=4d35060a-85c4-45fd-9f8e-530491588931
InstallationDate: Installed on 2015-02-26 (5 days ago)
InstallationMedia: Ubuntu-Server 14.10 "Utopic Unicorn" - Release amd64 (20141022.2)
MachineType: To Be Filled By O.E.M. To Be Filled By O.E.M.
ProcFB: 0 inteldrmfb
ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-3.16.0-31-generic.efi.signed root=UUID=4914f227-6bb0-40bb-a781-9ad7111a996f ro intremap=no_x2apic_optout intel_iommu=on,forcedac pci-stub.ids=10de:11c8,10de:0e0b nomdmonddf nomdmonisw
RelatedPackageVersions:
 linux-restricted-modules-3.16.0-31-generic N/A
 linux-backports-modules-3.16.0-31-generic N/A
 linux-firmware 1.138.1
RfKill:

SourcePackage: linux
UpgradeStatus: No upgrade log present (probably fresh install)
dmi.bios.date: 12/17/2014
dmi.bios.vendor: American Megatrends Inc.
dmi.bios.version: P1.70
dmi.board.name: Z97 Extreme6
dmi.board.vendor: ASRock
dmi.chassis.asset.tag: To Be Filled By O.E.M.
dmi.chassis.type: 3
dmi.chassis.vendor: To Be Filled By O.E.M.
dmi.chassis.version: To Be Filled By O.E.M.
dmi.modalias: dmi:bvnAmericanMegatrendsInc.:bvrP1.70:bd12/17/2014:svnToBeFilledByO.E.M.:pnToBeFilledByO.E.M.:pvrToBeFilledByO.E.M.:rvnASRock:rnZ97Extreme6:rvr:cvnToBeFilledByO.E.M.:ct3:cvrToBeFilledByO.E.M.:
dmi.product.name: To Be Filled By O.E.M.
dmi.product.version: To Be Filled By O.E.M.
dmi.sys.vendor: To Be Filled By O.E.M.

Have attached the dmesg error stream when trying to run a guest with VFIO pass through when the 'intel_iommu,igfx=off' kernel flag is used.

This change was made by a bot.

Changed in linux (Ubuntu):
status: New → Confirmed
Joseph Salisbury (jsalisbury) wrote :

Would it be possible for you to test the latest upstream kernel? Refer to https://wiki.ubuntu.com/KernelMainlineBuilds . Please test the latest v4.0 kernel[0].

If this bug is fixed in the mainline kernel, please add the following tag 'kernel-fixed-upstream'.

If the mainline kernel does not fix this bug, please add the tag: 'kernel-bug-exists-upstream'.

If you are unable to test the mainline kernel, for example it will not boot, please add the tag: 'kernel-unable-to-test-upstream'.
Once testing of the upstream kernel is complete, please mark this bug as "Confirmed".

Thanks in advance.

[0] http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.0-rc2-vivid/

Changed in linux (Ubuntu):
importance: Undecided → Medium
status: Confirmed → Incomplete
tags: added: kernel-bug-exists-upstream

Think I've done all correctly, upstream has the same issues using the kernel you linked.

Changed in linux (Ubuntu):
status: Incomplete → Confirmed
tags: added: latest-bios-1.70
affects: linux (Ubuntu) → alsa-driver (Ubuntu)
Changed in alsa-driver (Ubuntu):
status: Confirmed → New
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in alsa-driver (Ubuntu):
status: New → Confirmed
DiQ (dik23) wrote :

Seeing this with 4.2.0-27-generic on Haswell 4790K

Glad to see this bug report isn't completely dead.

Can confirm too that the problem still exists with kernel 4.2.0-27-generic with the same motherboard as per the original bug report.

The attached is a recent extract from dmesg outputs...I use vfio passthrough for GFX on a Windows guest. You can see from the timestamps that I start the guest at 21:02:44 and at around 21:26:07 I get some DMAR faults pertain to device at 00:02.0. This device is the Intel IGD...

lspci -s 00:02.0
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06)

...not sure if this is related to the HDMI audio or not.

What I can say is that I have to boot the host with "intel_iommu=on". If I change this to =on,igfx_off then my syslog fills with constant complaints about DMAR for another device I use in passthrough which works perfectly with =on, this device is a DVB-S2 device. If I use =igfx_off this stops IOMMU so I can not longer passthrough PCI devices but presto the HDMI audio now works?!

Freddy Angel (fhangel) wrote :

Same issue with 4.2.0-27-generic, i7-4790K

Freddy Angel (fhangel) wrote :

I can confirm same problem with the latest mainstream 4.4.2 kernel on a fresh install.
Same hardware as the OP except for the VGA, mine is the NVIDIA GTX 750 Ti

Zeke Laschinski (geast) wrote :

Ubuntu 17.04 with 4.10.0-21, libvirt 2.5.0, QEMU 2.8, and virt-manager 1.3.2.
Gigabyte EX58-UD3R Rev 1.6, ICH10 (00:1b.0) audio, x5675 (Westmere).
Nvidia GTX 275 for the host, GTX 1050 Ti for the VM.

Added to /etc/default/grub, updated grub, rebooted, and replaced the previous entry each time:
intel_iommu=igfx_off (Audio works, breaks IOMMU)

intel_iommu=on,igfx_off (Breaks audio)

intel_iommu=on,igfx_off snd_hda_intel.align_buffer_size=1 (Breaks audio)

intel_iommu=on iommu=pt (Breaks audio)

dmesg gives with intel_iommu=on:
DMAR: [DMA Read] Request device [00:1b.0] fault addr ffffb000 [fault reason 02] Present bit in context entry is clear

THE FIX:
Alex Williamson created a patch that was verified by Matthieu Speder
https://bugzilla.kernel.org/show_bug.cgi?id=76331
https://patchwork.kernel.org/patch/4505951/

Zeke Laschinski, did you test the patch yourself and confirm it fixes the problem you are experiencing?

Zeke Laschinski (geast) wrote :

I've now tested the patch myself by patching kernel 4.10.0.21.23. Unfortunately, it does not fix the problem.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.