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

Chris Wilson chris at chris-wilson.co.uk
Tue Jun 26 19:25:58 UTC 2018


Quoting Patchwork (2018-06-26 20:02:33)
> == Series Details ==
> 
> Series: series starting with [i-g-t,1/8] lib: Report file cache as available system memory
> URL   : https://patchwork.freedesktop.org/series/45427/
> State : failure
> 
> == Summary ==
> 
> = CI Bug Log - changes from CI_DRM_4373 -> IGTPW_1502 =
> 
> == Summary - FAILURE ==
> 
>   Serious unknown changes coming with IGTPW_1502 absolutely need to be
>   verified manually.
>   
>   If you think the reported changes have nothing to do with the changes
>   introduced in IGTPW_1502, please notify your bug team to allow them
>   to document this new failure mode, which will reduce false positives in CI.
> 
>   External URL: https://patchwork.freedesktop.org/api/1.0/series/45427/revisions/1/mbox/
> 
> == Possible new issues ==
> 
>   Here are the unknown changes that may have been introduced in IGTPW_1502:
> 
>   === IGT changes ===
> 
>     ==== Possible regressions ====
> 
>     igt at drv_module_reload@basic-no-display:
>       fi-snb-2600:        PASS -> INCOMPLETE

Just bad timing to hit a recursive deadlock in hdmi_present_sense().

<6>[  456.622589] snd_hda_intel 0000:00:1b.0: failed to add i915 component master (-19)
<6>[  456.634323] snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC887-VD: line_outs=4 (0x14/0x15/0x16/0x17/0x0) type:line
<6>[  456.634332] snd_hda_codec_realtek hdaudioC0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
<6>[  456.634334] snd_hda_codec_realtek hdaudioC0D0:    hp_outs=1 (0x1b/0x0/0x0/0x0/0x0)
<6>[  456.634336] snd_hda_codec_realtek hdaudioC0D0:    mono: mono_out=0x0
<6>[  456.634338] snd_hda_codec_realtek hdaudioC0D0:    dig-out=0x1e/0x0
<6>[  456.634340] snd_hda_codec_realtek hdaudioC0D0:    inputs:
<6>[  456.634343] snd_hda_codec_realtek hdaudioC0D0:      Front Mic=0x19
<6>[  456.634345] snd_hda_codec_realtek hdaudioC0D0:      Rear Mic=0x18
<6>[  456.634347] snd_hda_codec_realtek hdaudioC0D0:      Line=0x1a
<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

<4>[  456.665407] ============================================
<4>[  456.665411] WARNING: possible recursive locking detected
<4>[  456.665416] 4.18.0-rc2-CI-CI_DRM_4373+ #1 Tainted: G     U           
<4>[  456.665421] --------------------------------------------
<4>[  456.665425] kworker/3:2/396 is trying to acquire lock:
<4>[  456.665430] 0000000026312358 (&spec->pcm_lock){+.+.}, at: hdmi_present_sense+0x46/0x370 [snd_hda_codec_hdmi]
<4>[  456.665443] 
                  but task is already holding lock:
<4>[  456.665447] 0000000026312358 (&spec->pcm_lock){+.+.}, at: hdmi_present_sense+0x46/0x370 [snd_hda_codec_hdmi]
<4>[  456.665458] 
                  other info that might help us debug this:
<4>[  456.665463]  Possible unsafe locking scenario:

<4>[  456.665468]        CPU0
<4>[  456.665470]        ----
<4>[  456.665473]   lock(&spec->pcm_lock);
<4>[  456.665477]   lock(&spec->pcm_lock);
<4>[  456.665481] 
                   *** DEADLOCK ***

<4>[  456.665488]  May be due to missing lock nesting notation

<4>[  456.665494] 3 locks held by kworker/3:2/396:
<4>[  456.665497]  #0: 000000006a321a6b ((wq_completion)"events"){+.+.}, at: process_one_work+0x1c2/0x6c0
<4>[  456.665510]  #1: 00000000c4e02304 ((work_completion)(&bus->unsol_work)){+.+.}, at: process_one_work+0x1c2/0x6c0
<4>[  456.665521]  #2: 0000000026312358 (&spec->pcm_lock){+.+.}, at: hdmi_present_sense+0x46/0x370 [snd_hda_codec_hdmi]
<4>[  456.665532] 
                  stack backtrace:
<4>[  456.665539] CPU: 3 PID: 396 Comm: kworker/3:2 Tainted: G     U            4.18.0-rc2-CI-CI_DRM_4373+ #1
<4>[  456.665545] Hardware name: Dell Inc. XPS 8300  /0Y2MRG, BIOS A06 10/17/2011
<4>[  456.665555] Workqueue: events process_unsol_events [snd_hda_core]
<4>[  456.665561] Call Trace:
<4>[  456.665567]  dump_stack+0x67/0x9b
<4>[  456.665573]  __lock_acquire+0xc67/0x1b50
<4>[  456.665586]  ? mark_held_locks+0x50/0x80
<4>[  456.665596]  ? codec_exec_verb+0x94/0x100 [snd_hda_codec]
<4>[  456.665602]  ? lock_acquire+0xa6/0x210
<4>[  456.665607]  lock_acquire+0xa6/0x210
<4>[  456.665612]  ? hdmi_present_sense+0x46/0x370 [snd_hda_codec_hdmi]
<4>[  456.665620]  __mutex_lock+0x8c/0x9c0
<4>[  456.665625]  ? hdmi_present_sense+0x46/0x370 [snd_hda_codec_hdmi]
<4>[  456.665633]  ? hda_reg_write+0x20e/0x2f0 [snd_hda_core]
<4>[  456.665639]  ? hdmi_present_sense+0x46/0x370 [snd_hda_codec_hdmi]
<4>[  456.665646]  ? regcache_sync+0x113/0x3f0
<4>[  456.665651]  ? regcache_sync_block+0xcb/0x260
<4>[  456.665657]  ? hdmi_present_sense+0x46/0x370 [snd_hda_codec_hdmi]
<4>[  456.665664]  hdmi_present_sense+0x46/0x370 [snd_hda_codec_hdmi]
<4>[  456.665671]  ? rcu_read_lock_sched_held+0x6f/0x80
<4>[  456.665676]  ? regcache_sync+0x328/0x3f0
<4>[  456.665684]  ? hda_call_codec_resume+0x110/0x110 [snd_hda_codec]
<4>[  456.665691]  generic_hdmi_resume+0x44/0x50 [snd_hda_codec_hdmi]
<4>[  456.665699]  hda_call_codec_resume+0xb6/0x110 [snd_hda_codec]
<4>[  456.665707]  hda_codec_runtime_resume+0x2c/0x40 [snd_hda_codec]
<4>[  456.665714]  __rpm_callback+0xb3/0x1b0
<4>[  456.665719]  rpm_callback+0x1a/0x70
<4>[  456.665727]  ? hda_call_codec_resume+0x110/0x110 [snd_hda_codec]
<4>[  456.665733]  rpm_resume+0x4f7/0x850
<4>[  456.665739]  __pm_runtime_resume+0x42/0x80
<4>[  456.665747]  codec_exec_verb+0x57/0x100 [snd_hda_codec]
<4>[  456.665755]  codec_read+0x39/0x70 [snd_hda_core]
<4>[  456.665764]  read_pin_sense+0x39/0xa0 [snd_hda_codec]
<4>[  456.665772]  jack_detect_update+0x8d/0xc0 [snd_hda_codec]
<4>[  456.665781]  snd_hda_pin_sense+0x55/0x60 [snd_hda_codec]
<4>[  456.665787]  hdmi_present_sense+0x162/0x370 [snd_hda_codec_hdmi]
<4>[  456.665795]  check_presence_and_report+0x59/0x80 [snd_hda_codec_hdmi]
<4>[  456.665802]  process_unsol_events+0x5d/0x70 [snd_hda_core]
<4>[  456.665809]  process_one_work+0x248/0x6c0
<4>[  456.665815]  worker_thread+0x37/0x380
<4>[  456.665821]  ? process_one_work+0x6c0/0x6c0
<4>[  456.665826]  kthread+0x119/0x130
<4>[  456.665831]  ? kthread_flush_work_fn+0x10/0x10
<4>[  456.665836]  ret_from_fork+0x3a/0x50
<6>[  456.667401] input: HDA Intel PCH Front Mic as /devices/pci0000:00/0000:00:1b.0/sound/card0/input29
<6>[  456.667703] input: HDA Intel PCH Rear Mic as /devices/pci0000:00/0000:00:1b.0/sound/card0/input30
<6>[  456.668004] input: HDA Intel PCH Line as /devices/pci0000:00/0000:00:1b.0/sound/card0/input31
<6>[  456.668317] input: HDA Intel PCH Line Out Front as /devices/pci0000:00/0000:00:1b.0/sound/card0/input32
<6>[  456.668614] input: HDA Intel PCH Line Out Surround as /devices/pci0000:00/0000:00:1b.0/sound/card0/input33
<6>[  456.668905] input: HDA Intel PCH Line Out CLFE as /devices/pci0000:00/0000:00:1b.0/sound/card0/input34
<6>[  456.669463] input: HDA Intel PCH Line Out Side as /devices/pci0000:00/0000:00:1b.0/sound/card0/input35
<6>[  456.669964] input: HDA Intel PCH Front Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card0/input36
<6>[  456.670463] input: HDA Intel PCH HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1b.0/sound/card0/input37

hdmi_present_sense() is not handling a possible error,

diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
index 7d7eb1354eee..3ca98c9fcaee 100644
--- a/sound/pci/hda/patch_hdmi.c
+++ b/sound/pci/hda/patch_hdmi.c
@@ -1632,8 +1632,8 @@ static bool hdmi_present_sense(struct hdmi_spec_per_pin *per_pin, int repoll)
        int ret;
 
        /* no temporary power up/down needed for component notifier */
-       if (!codec_has_acomp(codec))
-               snd_hda_power_up_pm(codec);
+       if (!codec_has_acomp(codec) && snd_hda_power_up_pm(codec))
+               return false;
 
        mutex_lock(&spec->pcm_lock);
        if (codec_has_acomp(codec)) {

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.
-Chris



More information about the igt-dev mailing list