FAILED: patch "[PATCH] ALSA: hda/hdmi: Disable silent stream on GLK" failed to apply to 5.10-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 5.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From b6fd77472dea76b7a2bad3a338ade920152972b8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <[email protected]>
Date: Wed, 22 Dec 2021 16:53:50 +0200
Subject: [PATCH] ALSA: hda/hdmi: Disable silent stream on GLK
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The silent stream stuff recurses back into i915 audio component .get_power() from the .pin_eld_notify() hook. On GLK this will deadlock as i915 may already be holding the relevant modeset locks during .pin_eld_notify() and the GLK audio vs. CDCLK workaround will try to grab the same locks from .get_power().
Until someone comes up with a better fix just disable the silent stream support on GLK.
sound/pci/hda/patch_hdmi.c +15 -6
@@ -2947,7 +2947,8 @@ static int parse_intel_hdmi(struct hda_codec *codec)/* Intel Haswell and onwards; audio component with eld notifier */ static int intel_hsw_common_init (struct hda_codec *codec,hda_nid_t vendor_nid, -const int *port_map,int port_num,int dev_num) +const int *port_map,int port_num,int dev_num, +bool send_silent_stream) {struct hdmi_spec *spec;int err;
@@ -2980,7 +2981,7 @@ static int intel_hsw_common_init(struct hda_codec *codec, hda_nid_t vendor_nid,* Enable silent stream feature, if it is enabled via * module param or Kconfig option */ -if (enable_silent_stream) +if (send_silent_stream) spec->send_silent_stream = true;return parse_intel_hdmi (codec);
@@ -2988,12 +2989,18 @@ static int intel_hsw_common_init(struct hda_codec *codec, hda_nid_t vendor_nid,static int patch_i915_hsw_hdmi (struct hda_codec *codec) { -return intel_hsw_common_init (codec,0x08 ,NULL ,0 ,3 ); +return intel_hsw_common_init (codec,0x08 ,NULL ,0 ,3 , + enable_silent_stream); }static int patch_i915_glk_hdmi (struct hda_codec *codec) { -return intel_hsw_common_init (codec,0x0b ,NULL ,0 ,3 ); +/* +* Silent stream calls audio component .get_power() from +* .pin_eld_notify(). On GLK this will deadlock in i915 due +* to the audio vs. CDCLK workaround. +*/ +return intel_hsw_common_init (codec,0x0b ,NULL ,0 ,3 , false); }static int patch_i915_icl_hdmi (struct hda_codec *codec)
@@ -3004,7 +3011,8 @@ static int patch_i915_icl_hdmi(struct hda_codec *codec)*/ static const int map[] = {0x0 ,0x4 ,0x6 ,0x8 ,0xa ,0xb }; -return intel_hsw_common_init (codec,0x02 , map,ARRAY_SIZE (map),3 ); +return intel_hsw_common_init (codec,0x02 , map,ARRAY_SIZE (map),3 , + enable_silent_stream); }static int patch_i915_tgl_hdmi (struct hda_codec *codec)
@@ -3016,7 +3024,8 @@ static int patch_i915_tgl_hdmi(struct hda_codec *codec)static const int map[] = {0x4 ,0x6 ,0x8 ,0xa ,0xb ,0xc ,0xd ,0xe ,0xf };int ret; - ret =intel_hsw_common_init (codec,0x02 , map,ARRAY_SIZE (map),4 ); + ret =intel_hsw_common_init (codec,0x02 , map,ARRAY_SIZE (map),4 , + enable_silent_stream);if (!ret) {struct hdmi_spec *spec = codec->spec;