Linux kernel -stable discussions
 help / color / mirror / Atom feed
* [PATCH] ALSA: hda/hdmi: disable KAE for Intel Panther Lake
@ 2026-06-10 17:48 Alexander Kaplan
  2026-06-11  9:08 ` Péter Ujfalusi
  0 siblings, 1 reply; 11+ messages in thread
From: Alexander Kaplan @ 2026-06-10 17:48 UTC (permalink / raw)
  To: Takashi Iwai, linux-sound
  Cc: Jaroslav Kysela, Kai Vehmanen, Pierre-Louis Bossart, stable,
	alexander.kaplan

On Panther Lake the keep-alive engine poisons the display side of the
audio path for multichannel PCM.
Once KAE has been active in the running display power cycle, the first
6 or 8 channel stream on that pin plays silent and wedges the pin.
All subsequent streams stay silent regardless of their format.
Only a display power domain cycle recovers the pin, in practice a
reboot or one suspend cycle.

The wedge sits behind the audio converter.
Sample counters in the display audio register block keep running during
the silent playback while the output stays dead.
The wedge survives clearing the KAE bit ahead of the stream id
programming, fully quiescing the converter (KAE bit, stream id and
format cleared before the multichannel setup), a complete codec and
controller reset through a driver rebind with the keep-alive kept off,
and powering down the audio well for ten minutes.
The sequence is harmless when the keep-alive was never enabled in the
running display power cycle, which isolates the KAE hardware as the
trigger.

Easy reproducer on a sink whose LPCM capability is limited to
2 channels:
speaker-test -c2 plays, one speaker-test -c6 run plays silent and every
following speaker-test -c2 stays silent until reboot.
With enable_silent_stream=0 the same sequence plays normally.

This is the failure class already known from commit 6ab6f98fcdc9
("ALSA: hda/hdmi: disable KAE for Intel DG2").
Handle Panther Lake like DG2 and fall back to the older i915 silent
stream method, which uses the regular stream path instead of the
keep-alive engine.
Like on DG2 this keeps the codec powered while the silent stream runs.

Cc: stable@vger.kernel.org
Fixes: e9481d9b83f8 ("ALSA: hda: add HDMI codec ID for Intel PTL")
Signed-off-by: Alexander Kaplan <alexander.kaplan@sms-medipool.de>
---
Found and verified on an ASUS NUC 16 Pro (Panther Lake H, codec
0x80862822) driving an LG TV through a Synaptics VMM7100 DP-to-HDMI
protocol converter, kernel 7.1-rc7.
The poisoning is independent of the sink and of the video mode.

This may also fix the silent Dolby TrueHD passthrough on Battlemage
reported in
https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/7515.
Battlemage uses the same keep-alive code path and TrueHD passthrough
is the same first-multichannel-stream pattern, but I could not test
that hardware.

Workaround for affected systems without this patch:
snd_hda_codec_intelhdmi.enable_silent_stream=0.

 sound/hda/codecs/hdmi/intelhdmi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/hda/codecs/hdmi/intelhdmi.c b/sound/hda/codecs/hdmi/intelhdmi.c
index 6a7882544a..52997caae9 100644
--- a/sound/hda/codecs/hdmi/intelhdmi.c
+++ b/sound/hda/codecs/hdmi/intelhdmi.c
@@ -791,7 +791,7 @@ static const struct hda_device_id snd_hda_id_intelhdmi[] = {
 	HDA_CODEC_ID_MODEL(0x8086281e, "Battlemage HDMI",	MODEL_ADLP),
 	HDA_CODEC_ID_MODEL(0x8086281f, "Raptor Lake P HDMI",	MODEL_ADLP),
 	HDA_CODEC_ID_MODEL(0x80862820, "Lunar Lake HDMI",	MODEL_ADLP),
-	HDA_CODEC_ID_MODEL(0x80862822, "Panther Lake HDMI",	MODEL_ADLP),
+	HDA_CODEC_ID_MODEL(0x80862822, "Panther Lake HDMI",	MODEL_TGL),
 	HDA_CODEC_ID_MODEL(0x80862823, "Wildcat Lake HDMI",	MODEL_ADLP),
 	HDA_CODEC_ID_MODEL(0x80862824, "Nova Lake HDMI",	MODEL_ADLP),
 	HDA_CODEC_ID_MODEL(0x80862882, "Valleyview2 HDMI",	MODEL_BYT),
-- 
2.54.0



^ permalink raw reply related	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2026-07-03 23:30 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-10 17:48 [PATCH] ALSA: hda/hdmi: disable KAE for Intel Panther Lake Alexander Kaplan
2026-06-11  9:08 ` Péter Ujfalusi
2026-06-11  9:33   ` Péter Ujfalusi
2026-06-11 14:44     ` Alexander Kaplan
2026-06-12 12:45       ` Péter Ujfalusi
2026-06-12 18:13         ` Alexander Kaplan
2026-06-16 19:13           ` Kai Vehmanen
2026-06-20 15:00             ` Alexander Kaplan
2026-06-24 17:04               ` Kai Vehmanen
2026-06-30 22:45                 ` Kai Vehmanen
2026-07-03 23:24                   ` Alexander Kaplan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox