Skip to contentSkip to conversation

Patch "ALSA: hda - Skip ELD notification during system suspend" has been added to the 4.3-stable tree

PATCH [email protected] 1 participant 1 message Jan 25, 2016

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

ALSA: hda - Skip ELD notification during system suspend

to the 4.3-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
alsa-hda-skip-eld-notification-during-system-suspend.patch
and it can be found in the queue-4.3 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From 8ae743e82f0b86f3b860c27fc2c8f574cf959fd0 Mon Sep 17 00:00:00 2001

From: Takashi Iwai <[email protected]>
Date: Fri, 27 Nov 2015 14:23:00 +0100
Subject: ALSA: hda - Skip ELD notification during system suspend

From: Takashi Iwai <[email protected]>

commit 8ae743e82f0b86f3b860c27fc2c8f574cf959fd0 upstream.

The recent addition of ELD notifier for Intel HDMI/DP codec may lead
the bad codec connection found as kernel messages like below:
Suspending console(s) (use no_console_suspend to debug)
hdmi_present_sense: snd_hda_codec_hdmi hdaudioC0D2: HDMI status: Codec=2 Pin=6 Presence_Detect=1 ELD_Valid=1 snd_hda_intel 0000:00:1f.3: spurious response 0x0:0x2, last cmd=0x206f2e08
snd_hda_intel 0000:00:1f.3: spurious response 0x0:0x2, last cmd=0x206f2e08
....
snd_hda_codec_hdmi hdaudioC0D2: HDMI: ELD buf size is 0, force 128
snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to polling mode: last cmd=0x206f2f00
snd_hda_intel 0000:00:1f.3: No response from codec, disabling MSI: last cmd=0x206f2f00 snd_hda_intel 0000:00:1f.3: azx_get_response timeout, switching to single_cmd mode: last cmd=0x206f2f00 azx_single_wait_for_response: 42 callbacks suppressed

This seems appearing when the sound driver went to suspend before i915 driver. Then i915 driver disables HDMI/DP audio bit and calls the registered notifier, and the HDA codec tries to handle it as a hot(un)plug. But since the driver is already in the suspended state, it fails miserably.

As this is a sort of spurious wakeup, it can be ignored safely, as long as it's delivered during the system suspend. OTOH, if a notification comes during the runtime suspend, the situation is
different: we need to wake up. But during the system suspend, such a notification can't be the reason for a wakeup.

This patch addresses it by a simple check of the current sound card status. The skipped notification doesn't matter because the HDA driver will check the plugged status forcibly at the resume in return.

Then, why the card status, not a runtime PM status or else? The HDA controller driver is supposed to set the card status to D3 at the system suspend but not at the runtime suspend. So we can see it as a flag that is set only for the system suspend. Admittedly, it's a bit ugly, but it should work well for now.

Fixes 25adc137c546 ('ALSA: hda - Wake the codec up on pin/ELD notify events')
---
 sound/pci/hda/patch_hdmi.c |    6 ++++++
 1 file changed, 6 insertions(+)
sound/pci/hda/patch_hdmi.c +6 -0
@@ -2330,6 +2330,12 @@ static void intel_pin_eld_notify(void *a
 	struct hda_codec *codec = audio_ptr;
 	int pin_nid = port + 0x04;
 
+	/* skip notification during system suspend (but not in runtime PM);
+	 * the state will be updated at resume
+	 */
+	if (snd_power_get_state(codec->card) != SNDRV_CTL_POWER_D0)
+		return;
+
 	check_presence_and_report(codec, pin_nid);
 }
 

Patches currently in stable-queue which might be from [email protected] are

queue-4.3/alsa-hda-fix-headphone-mic-input-on-a-few-dell-alc293-machines.patch queue-4.3/alsa-hda-add-fixup-for-acer-aspire-one-cloudbook-14.patch queue-4.3/alsa-usb-audio-add-sample-rate-inquiry-quirk-for-audioquest-dragonfly.patch queue-4.3/alsa-hda-realtek-dell-xps-one-alc3260-speaker-no-sound-after-resume-back.patch queue-4.3/alsa-hda-apply-hp-headphone-fixups-more-generically.patch queue-4.3/alsa-hda-set-codec-to-d3-at-reboot-shutdown-on-thinkpads.patch queue-4.3/alsa-hda-realtek-fix-silent-headphone-output-on-macpro-4-1-v2.patch queue-4.3/alsa-rme96-fix-unexpected-volume-reset-after-rate-changes.patch queue-4.3/alsa-fireworks-bebob-oxfw-dice-enable-to-make-as-built-in.patch queue-4.3/alsa-hda-set-skl-hda-controller-power-at-freeze-and-thaw.patch queue-4.3/alsa-hda-add-inverted-dmic-for-packard-bell-dots.patch queue-4.3/alsa-hda-add-intel-lewisburg-device-ids-audio.patch queue-4.3/alsa-hda-add-keycode-map-for-alc-input-device.patch queue-4.3/alsa-hda-add-a-fixup-for-thinkpad-x1-carbon-2nd.patch queue-4.3/alsa-hda-skip-eld-notification-during-system-suspend.patch queue-4.3/alsa-hda-add-mic-mute-hotkey-quirk-for-lenovo-thinkcentre-aio.patch queue-4.3/alsa-hda-disable-64bit-address-for-creative-hda-controllers.patch queue-4.3/alsa-hda-fix-noise-on-dell-latitude-e6440.patch queue-4.3/alsa-hda-ca0132-quirk-for-alienware-17-2015.patch queue-4.3/alsa-usb-audio-add-a-more-accurate-volume-quirk-for-audioquest-dragonfly.patch queue-4.3/alsa-hda-fix-headphone-noise-after-dell-xps-13-resume-back-from-s3.patch queue-4.3/alsa-hda-fix-noise-problems-on-thinkpad-t440s.patch queue-4.3/alsa-hda-fix-lost-4k-bdl-boundary-workaround.patch queue-4.3/alsa-hda-apply-pin-fixup-for-hp-probook-6550b.patch queue-4.3/alsa-hda-fixing-speaker-noise-on-the-two-latest-thinkpad-models.patch queue-4.3/alsa-hda-apply-click-noise-workaround-for-thinkpads-generically.patch queue-4.3/alsa-hda-fix-noise-on-gigabyte-z170x-mobo.patch