Gemini Lake HDMI audio broken after unplug/plug
The issue occurs with v6.6.29 and current drm-tip (v6.9-rc6-1671-g5a43da669cdb).
Hardware is a Intel(R) Pentium(R) Silver N5030 CPU @ 1.10GHz
with:
00:02.0 VGA compatible controller [0300]: Intel Corporation GeminiLake [UHD Graphics 605] [8086:3184] (rev 06) (prog-if 00 [VGA controller])
DeviceName: Onboard - Video
Subsystem: Elitegroup Computer Systems GeminiLake [UHD Graphics 605] [1019:a94d]
Flags: bus master, fast devsel, latency 0, IRQ 129, IOMMU group 0
Memory at a0000000 (64-bit, non-prefetchable) [size=16M]
Memory at 90000000 (64-bit, prefetchable) [size=256M]
I/O ports at f000 [size=64]
Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]
Capabilities: [40] Vendor Specific Information: Len=0c <?>
Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00
Capabilities: [ac] MSI: Enable+ Count=1/1 Maskable- 64bit-
Capabilities: [d0] Power Management version 2
Capabilities: [100] Process Address Space ID (PASID)
Capabilities: [200] Address Translation Service (ATS)
Capabilities: [300] Page Request Interface (PRI)
Kernel driver in use: i915
When I do the following, HDMI audio is broken:
- Start playing audio
- Unplug HDMI
- Wait a few seconds
- Plug HDMI
At that point the kernel reports:
[ 104.001450] snd_hda_intel 0000:00:0e.0: azx_get_response timeout, switching to polling mode: last cmd=0x20bf8100
[ 105.021370] snd_hda_intel 0000:00:0e.0: No response from codec, disabling MSI: last cmd=0x20bf8100
[ 106.031417] snd_hda_intel 0000:00:0e.0: azx_get_response timeout, switching to single_cmd mode: last cmd=0x20bf8100
Now audio no longer works.
Occasionally the kernel reports azx_single_send_cmd: 224 callbacks suppressed
or azx_single_wait_for_response: 73 callbacks suppressed
.
I can work around this issue by disabling runtime pm. Either by disabling CONFIG_PM
entirely or by hacking the kernel and removing AZX_DCAPS_PM_RUNTIME
from the driver caps in hda_intel.