From: Greg Kroah-Hartman Date: Sun, 26 Jan 2014 16:09:26 +0000 (-0800) Subject: 3.13-stable patches X-Git-Tag: v3.13.1~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f62e87d313c9fb032445e55e8ddc4c5e2e341a8b;p=thirdparty%2Fkernel%2Fstable-queue.git 3.13-stable patches added patches: alsa-hda-explicitly-keep-codec-powered-up-in-hdmi_present_sense.patch --- 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 index 00000000000..f5032b61cd2 --- /dev/null +++ b/queue-3.13/alsa-hda-explicitly-keep-codec-powered-up-in-hdmi_present_sense.patch @@ -0,0 +1,58 @@ +From da4a7a3926d09c13ae052ede67feb7285e01e3f5 Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Wed, 18 Dec 2013 10:46:04 +0100 +Subject: ALSA: hda - Explicitly keep codec powered up in hdmi_present_sense + +From: David Henningsson + +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 +Fixes: cbbaa603a03c ('ALSA: hda - Fix possible races in HDMI driver') +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + 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; + } + diff --git a/queue-3.13/series b/queue-3.13/series index 47ccab369ee..565d77b1948 100644 --- a/queue-3.13/series +++ b/queue-3.13/series @@ -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