[alsa-devel] New snd-hda warning spew

Takashi Iwai tiwai at suse.de
Tue Mar 15 18:22:56 CET 2016


On Tue, 15 Mar 2016 17:02:07 +0100,
Ville Syrjälä wrote:
> 
> We have a few new WARN spews from snd-hda causing some grief in i915 CI.
> 
> This one happens on ILK and BYT. Looks like it happens 100% of the time on driver load:
> [   18.809850] ------------[ cut here ]------------
> [   18.809866] WARNING: CPU: 0 PID: 39 at sound/hda/hdac_i915.c:129 pin2port+0x25/0x30 [snd_hda_core]()

This is bad.  Basically we had a naive assumption of the fixed mapping
between the port number and the HD-audio widget, but it doesn't apply
properly to pre-HSW models.

The patch attached below disables the audio binding for pre-HSW
models.  I'm going to queue to for-linus branch.

> This other one was seen at least on on SKL:
> [  124.808525] ------------[ cut here ]------------
> [  124.808545] WARNING: CPU: 3 PID: 173 at sound/hda/hdac_i915.c:91 snd_hdac_display_power+0xf1/0x110 [snd_hda_core]()

This is a different one, and it implies that the unbalanced power
refcount.  Might be related with the recent fix for the recursive
regmap deadlock.  I'll try later with a SKL machine here, too.

Didn't you see this before the recent tree, right?  Some good/bad
commits would be really helpful...


thanks,

Takashi

-- 8< --
From: Takashi Iwai <tiwai at suse.de>
Subject: [PATCH] ALSA: hda - Limit i915 HDMI binding only for HSW and later
MIME-Version: 1.0

It turned out that the pre-HSW Intel chips are incompatible with the
naive assumption we had -- the fixed mapping between the port and the
HD-audio widget.  This may result in the bad access, as captured by
the recent patch to add a WARN_ON() for the port mapping check.

As a quick workaround, disable the i915 audio component binding for
all pre-Haswell models.

Reported-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
Cc: <stable at vger.kernel.org> # v4.5
Signed-off-by: Takashi Iwai <tiwai at suse.de>
---
 sound/pci/hda/patch_hdmi.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
index 3fc259154c0b..cde9746cda8e 100644
--- a/sound/pci/hda/patch_hdmi.c
+++ b/sound/pci/hda/patch_hdmi.c
@@ -2243,9 +2243,10 @@ static int patch_generic_hdmi(struct hda_codec *codec)
 	codec->spec = spec;
 	hdmi_array_init(spec, 4);
 
-	/* Try to bind with i915 for any Intel codecs (if not done yet) */
+	/* Try to bind with i915 for Intel HSW+ codecs (if not done yet) */
 	if (!codec_has_acomp(codec) &&
-	    (codec->core.vendor_id >> 16) == 0x8086)
+	    (codec->core.vendor_id >> 16) == 0x8086 &&
+	    is_haswell_plus(codec))
 		if (!snd_hdac_i915_init(&codec->bus->core))
 			spec->i915_bound = true;
 
-- 
2.7.3




More information about the Alsa-devel mailing list