[igt-dev] ✗ Fi.CI.BAT: failure for series starting with [i-g-t,1/8] lib: Report file cache as available system memory

Takashi Iwai tiwai at suse.de
Tue Jun 26 21:35:09 UTC 2018


On Tue, 26 Jun 2018 21:25:58 +0200,
Chris Wilson wrote:
> 
> Just bad timing to hit a recursive deadlock in hdmi_present_sense().

Yeah, the runtime PM return value should be checked like your patch.
Care to send a proper patch?

However...

> <6>[  456.622589] snd_hda_intel 0000:00:1b.0: failed to add i915 component master (-19)
(snip)
> <6>[  456.654732] snd_hda_codec_hdmi hdaudioC0D3: No i915 binding for Intel HDMI/DP codec
> <6>[  456.659357] snd_hda_codec_hdmi hdaudioC0D3: No i915 binding for Intel HDMI/DP codec

... so i915 binding failed but still the HDMI codec got probed.
That's the unexpected point.  We should have stopped probing in such a
case.

The patch below prevents the generic driver binding in the case of
i915 binding error.

(snip)
> but
> 
> int snd_hdac_power_up_pm(struct hdac_device *codec)
> {
>         if (!atomic_inc_not_zero(&codec->in_pm))
>                 return snd_hdac_power_up(codec);
>         return 0;
> }
> 
> looks weird as how is in_pm actually incremented?
> 
> $ git grep in_pm -- sound/hda/
> sound/hda/hdac_device.c:        atomic_set(&codec->in_pm, 0);
> sound/hda/hdac_device.c:        if (!atomic_inc_not_zero(&codec->in_pm))
> sound/hda/hdac_device.c:        if (!atomic_inc_not_zero(&codec->in_pm)) {
> sound/hda/hdac_device.c:        if (atomic_dec_if_positive(&codec->in_pm) < 0)
> 
> as I read that in_pm always remains 0.

It's set in the codec driver side, i.e. in sound/pci/hda/hda_codec.c.


thanks,

Takashi

---
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
index 98e1c411c56a..6aab2aad9f8d 100644
--- a/sound/pci/hda/patch_hdmi.c
+++ b/sound/pci/hda/patch_hdmi.c
@@ -2542,6 +2542,8 @@ static int alloc_intel_hdmi(struct hda_codec *codec)
 	/* requires i915 binding */
 	if (!codec->bus->core.audio_component) {
 		codec_info(codec, "No i915 binding for Intel HDMI/DP codec\n");
+		/* set probe_id here to prevent generic fallback binding */
+		codec->probe_id = HDA_CODEC_ID_GENERIC_HDMI:
 		return -ENODEV;
 	}
 


More information about the igt-dev mailing list