RE: [lkp] [ALSA] ca53fbf3a6: WARNING: CPU: 0 PID: 151 at sound/hda/hdac_i915.c:129 pin2port+0x2a/0x40 [snd_hda_core]()
From: Lin, Mengdong
Date: Tue Mar 15 2016 - 12:11:28 EST
> -----Original Message-----
> From: Takashi Iwai [mailto:tiwai@xxxxxxx]
> Sent: Tuesday, March 15, 2016 1:12 AM
>
> On Mon, 14 Mar 2016 16:30:22 +0100,
> Lin, Mengdong wrote:
> >
> > > -----Original Message-----
> > > From: Takashi Iwai [mailto:tiwai@xxxxxxx]
> > > Sent: Monday, March 14, 2016 9:03 PM
> > > To: Yang, Libin
> > > Cc: kernel test robot; lkp@xxxxxx; LKML; Wu, Fengguang; Lin,
> > > Mengdong
> > > Subject: Re: [lkp] [ALSA] ca53fbf3a6: WARNING: CPU: 0 PID: 151 at
> > > sound/hda/hdac_i915.c:129 pin2port+0x2a/0x40 [snd_hda_core]()
> > >
> > > On Mon, 14 Mar 2016 13:02:39 +0100,
> > > Yang, Libin wrote:
> > > >
> > > > Hi Takashi,
> > > >
> > > > > -----Original Message-----
> > > > > From: Takashi Iwai [mailto:tiwai@xxxxxxx]
> > > > > Sent: Monday, March 14, 2016 3:23 PM
> > > > > To: kernel test robot
> > > > > Cc: lkp@xxxxxx; LKML; Wu, Fengguang; Yang, Libin; Lin, Mengdong
> > > > > Subject: Re: [lkp] [ALSA] ca53fbf3a6: WARNING: CPU: 0 PID: 151
> > > > > at
> > > > > sound/hda/hdac_i915.c:129 pin2port+0x2a/0x40 [snd_hda_core]()
> > > > >
> > > > > On Mon, 14 Mar 2016 01:50:45 +0100, kernel test robot wrote:
> > > > > >
> > > > > > FYI, we noticed the below changes on
> > > > > >
> > > > > > https://github.com/0day-ci/linux
> > > > > > Takashi-Iwai/ALSA-hda-Add-a-sanity-
> > > > > check-of-pin-port-mapping-on-i915-HDMI-DP/20160310-225740
> > > > > > commit ca53fbf3a609b6831222078af9ddbecbf76fddce ("ALSA: hda
> -
> > > > > Add a sanity check of pin / port mapping on i915 HDMI/DP")
> > > > > >
> > > > > >
> > > > > > [ 14.546058] snd_hda_intel 0000:00:1b.0: bound 0000:00:02.0
> > > (ops
> > > > > i915_audio_component_bind_ops [i915])
> > > > > > [ 14.549740] fbcon: inteldrmfb (fb0) is primary device
> > > > > > [ 14.553691] ------------[ cut here ]------------
> > > > > > [ 14.553707] WARNING: CPU: 0 PID: 151 at
> > > > > sound/hda/hdac_i915.c:129 pin2port+0x2a/0x40 [snd_hda_core]()
> > > > >
> > > > > Does your tree contain the commit
> > > > > 2f791908a70e95768596f5bb9e6de4f441d7bf13
> > > > > drm/i915: Fix bogus dig_port_map[] assignment for
> pre-HSW ?
> > > > >
> > > > > The commit above should cover it even for HSW.
> > > > >
> > > > > If it's already included, then it's really a bug, and the
> > > > > warning is exactly for catching such a bug. The HD-audio driver
> > > > > expects that the valid audio ports are only from port B to port
> > > > > D while i915 driver assigns a different one. I suspect that the
> > > > > current assumption is too naive and broken for SKL and later in this
> regard.
> > > > >
> > > > > Libin, Mengdong, could you check whether the audio port mapping
> > > > > rule is still valid? At least, a wrong port-A mapping could be
> > > > > reproduced even on a HSW laptop with DP-MST dock when I boot
> > > without
> > > > > eDP (e.g. video=eDP-1:d option).
> > > >
> > > > We checked with HW before, and the mapping should be right.
> > > > What's the problem now? I will check with our HW and gfx team.
> > >
> > > One problem I've heard is that port-A is reported from i915 ELD notifier.
> > > This happens when you disable eDP and use DP-MST on a HSW machine.
> > > Then port A DDI is also used for the DP-MST, and when it's plugged,
> > > it passes
> > > port=0 to the notifier.
> >
> > Hi Takashi,
> >
> > Could you or someone provide the output of intel_audio_dump when the
> error happens?
> > This can help us to check the pipe:port connections in GPU from the
> display register values.
> >
> > For Haswell and later platforms, port A (DDI A) is only used for eDP, not for
> DP or HDMI. So I feel the DP-MST dock should not bridge port A to external
> monitors and so port A should not be reported by the ELD notifier.
> > Maybe the port mapping has bug since i915 support for DP MST is still
> ongoing.
>
> Below are four outputs with 4.5-final kernel:
Hi Takashi,
Thanks for your info!
I think the laptop built-in DP port uses port B (DDI B) and the dock DP port uses port C (DDI C).
It seems i915 connections may be wrong for the case "intel-audio-dock-noedp DP monitor connected to dock DP port".
> Normal boot
> * intel-audio-laptop-normal DP monitor connected to built-in DP port
Looks good:
Pipe A -> transcoder EDP -> DDI A (for EDP) ,
Pipe B -> transcoder B -> DDI B (port B, for DP monitor)
> * intel-audio-dock-normal DP monitor connected to dock DP port
Also looks good:
Pipe A -> transcoder EDP -> DDI A (for EDP)
Pipe B -> transcoder B -> DDI C (port C, for DP monitor)
> Boot with video=eDP-1:d option
> * intel-audio-laptop-noedp DP monitor connected to built-in DP port
Looks good:
Pipe A -> transcoder A -> DDI B (port B)
> * intel-audio-dock-noedp DP monitor connected to dock DP port
Seems wrong:
Pipe A -> transcoder A -> DDI B (port B, port 0 for the audio codec)
Pipe B -> transcoder B -> DDI C (port C, port 1 for the audio codec)
The connection between pipe A and DDI B may be wrong here and that's why eld notifier with port=0.
I think pipe A should connects to DDI C and pipe B should be free, then we can see eld notifier with port=1 (from DDI C).
>
> I didn't check whether *this* kernel really caused the issue. But, at least,
> the last case (intel-audio-dock-noedp) triggered eld notifier with port=0 in
> the past with 4.5-rc7.
>
Hi Libin,
Have you checked with GFX team?
We don't have HSW/BDW laptop with dock atm, but GFX team may have similar HW and be able to clarify the connections here.
Thanks
Mengdong