]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.13-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 26 Jan 2014 16:09:26 +0000 (08:09 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 26 Jan 2014 16:09:26 +0000 (08:09 -0800)
added patches:
alsa-hda-explicitly-keep-codec-powered-up-in-hdmi_present_sense.patch

queue-3.13/alsa-hda-explicitly-keep-codec-powered-up-in-hdmi_present_sense.patch [new file with mode: 0644]
queue-3.13/series

diff --git a/queue-3.13/alsa-hda-explicitly-keep-codec-powered-up-in-hdmi_present_sense.patch b/queue-3.13/alsa-hda-explicitly-keep-codec-powered-up-in-hdmi_present_sense.patch
new file mode 100644 (file)
index 0000000..f5032b6
--- /dev/null
@@ -0,0 +1,58 @@
+From da4a7a3926d09c13ae052ede67feb7285e01e3f5 Mon Sep 17 00:00:00 2001
+From: David Henningsson <david.henningsson@canonical.com>
+Date: Wed, 18 Dec 2013 10:46:04 +0100
+Subject: ALSA: hda - Explicitly keep codec powered up in hdmi_present_sense
+
+From: David Henningsson <david.henningsson@canonical.com>
+
+commit da4a7a3926d09c13ae052ede67feb7285e01e3f5 upstream.
+
+This should help us avoid the following mutex deadlock:
+
+[] mutex_lock+0x2a/0x50
+[] hdmi_present_sense+0x53/0x3a0 [snd_hda_codec_hdmi]
+[] generic_hdmi_resume+0x5a/0x70 [snd_hda_codec_hdmi]
+[] hda_call_codec_resume+0xec/0x1d0 [snd_hda_codec]
+[] snd_hda_power_save+0x1e4/0x280 [snd_hda_codec]
+[] codec_exec_verb+0x5f/0x290 [snd_hda_codec]
+[] snd_hda_codec_read+0x5b/0x90 [snd_hda_codec]
+[] snd_hdmi_get_eld_size+0x1e/0x20 [snd_hda_codec_hdmi]
+[] snd_hdmi_get_eld+0x2c/0xd0 [snd_hda_codec_hdmi]
+[] hdmi_present_sense+0x9a/0x3a0 [snd_hda_codec_hdmi]
+[] hdmi_repoll_eld+0x34/0x50 [snd_hda_codec_hdmi]
+
+Signed-off-by: David Henningsson <david.henningsson@canonical.com>
+Fixes: cbbaa603a03c ('ALSA: hda - Fix possible races in HDMI driver')
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_hdmi.c |    6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -1496,11 +1496,14 @@ static bool hdmi_present_sense(struct hd
+        * specification worked this way. Hence, we just ignore the data in
+        * the unsolicited response to avoid custom WARs.
+        */
+-      int present = snd_hda_pin_sense(codec, pin_nid);
++      int present;
+       bool update_eld = false;
+       bool eld_changed = false;
+       bool ret;
++      snd_hda_power_up(codec);
++      present = snd_hda_pin_sense(codec, pin_nid);
++
+       mutex_lock(&per_pin->lock);
+       pin_eld->monitor_present = !!(present & AC_PINSENSE_PRESENCE);
+       if (pin_eld->monitor_present)
+@@ -1573,6 +1576,7 @@ static bool hdmi_present_sense(struct hd
+               jack->block_report = !ret;
+       mutex_unlock(&per_pin->lock);
++      snd_hda_power_down(codec);
+       return ret;
+ }
index 47ccab369ee637974284876a72b60e96b7a42501..565d77b1948d960178c05556acabe4ffe26b28af 100644 (file)
@@ -5,3 +5,4 @@ staging-comedi-adl_pci9111-fix-incorrect-irq-passed-to-request_irq.patch
 mm-make-set-page_address-static-inline-if-want_page_virtual.patch
 serial-amba-pl011-use-port-lock-to-guard-control-register-access.patch
 extcon-gpio-request-gpio-pin-before-modifying-its-state.patch
+alsa-hda-explicitly-keep-codec-powered-up-in-hdmi_present_sense.patch