All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Takashi Iwai <tiwai@suse.de>
Cc: alsa-devel@alsa-project.org, intel-gfx@lists.freedesktop.org,
	linux-kernel@vger.kernel.org, perex@perex.cz,
	Martin Kepplinger <martink@posteo.de>,
	han.lu@intel.com, treding@nvidia.com,
	david.henningsson@canonical.com
Subject: Re: [BUG] [REGRESSION] [BISECTED] -rc1 breaks audio over HDMI for i915
Date: Tue, 23 Feb 2016 19:14:47 +0200	[thread overview]
Message-ID: <20160223171447.GL23290@intel.com> (raw)
In-Reply-To: <s5hio1ffjp7.wl-tiwai@suse.de>

On Tue, Feb 23, 2016 at 05:57:40PM +0100, Takashi Iwai wrote:
> On Mon, 22 Feb 2016 22:37:28 +0100,
> Martin Kepplinger wrote:
> > 
> > Am 2016-02-22 um 20:10 schrieb Takashi Iwai:
> > > On Mon, 22 Feb 2016 19:58:18 +0100,
> > > Martin Kepplinger wrote:
> > >>
> > >> Am 2016-02-22 um 15:12 schrieb Takashi Iwai:
> > >>> On Mon, 22 Feb 2016 15:02:56 +0100,
> > >>> Martin Kepplinger wrote:
> > >>>>> And how about my questions in the previous mail?  Does
> > >>>>> i915_audio_component_get_eld() is called and returns 0?
> > >>>>> And is monitor_present set true or false?
> > >>>>
> > >>>> i915_audio_component_get_eld() returns 0 and monitor_present is 0.
> > >>>>>
> > >>>>> If i915_audio_component_get_eld() is called but returns zero, track
> > >>>>> the code flow there.  It means either intel_encoder is NULL or
> > >>>>> intel_dig_port->audio_connector is NULL.
> > >>>>
> > >>>> intel_dig_port->audio_connector is NULL!
> > >>>>
> > >>>> (when called during boot and during HDMI plugin)
> > >>>
> > >>> Interesting.  The relevant code flow should be like:
> > >>>
> > >>>   intel_audio_codec_enable()
> > >>>   -> acomp->audio_ops->pin_eld_notify()
> > >>>     -> intel_pin_eld_notify()
> > >>>       -> check_presence_and_report()
> > >>>         -> hdmi_present_sense()
> > >>> 	  -> sync_eld_via_acomp()
> > >>> 	    -> snd_hdac_acomp_get_eld()
> > >>> 	      -> i915_audio_component_get_eld()
> > >>>
> > >>> So, at first, check whether intel_dig_port in both
> > >>> intel_audio_codec_enable() and i915_audio_component_get_eld() points
> > >>> to the same object address.  The audio_connector must be set in
> > >>> intel_audio_codec_enable(), thus basically it must be non-NULL at
> > >>> i915_audio_component_get_eld(), too.
> > >>>
> > >>
> > >> intel_dig_port is *not* the same object in these 2 places. During
> > >> plugin, see:
> > >>
> > >> [  146.934091] in intel_audio_codec_enable: intel_dig_port is
> > >> ffff8800a1f54000
> > >> [  146.934121] in i915_audio_component_get_eld: intel_dig_port is
> > >> ffff880244f7d000
> > >>
> > >> sorry for the slow responses. I'll try to go back that direction unless
> > >> again someone comes up with other suggestions.
> > > 
> > > Thanks, this makes sense.  It implies that the digital port mapping is
> > > somehow wrong.  There are three places setting dig_port_map[], one in
> > > intel_ddi_init(), one in intel_dp_init() and another in
> > > intel_hdmi_init().  Try to check which function creates which object
> > > assigned to which port number, together with drm.debug=0x0e debug
> > > messages.
> > > 
> > without using drm.debug=0x0e, but by printing the kmalloc'ed objects in
> > those 3 functions with ports, I found:
> > 
> > 2 of them are running, only during boot:
> > 
> > [    2.322865] intel_hdmi_init: intel_dig_port is ffff880242564000  port 1
> > [    2.322999] intel_dp_init: intel_dig_port is ffff880242f30000  port 1
> > 
> > is is correct for them to have both port 1? Any more ideas?
> 
> Adding intel-gfx ML to Cc.
> 
> Martin, is the machine SandyBridge or IvyBridge?
> 
> In anyway it's PCH_SPLIT and there can call both intel_hdmi_init() and 
> intel_dp_init() for the same port although both functions map
> intel_dig_port[].  The assumption of intel_dig_port[] reverse mapping
> is that there is only a single intel_dig_port assigned to a port, but
> this doesn't look correct...

On pre-HSW there can indeed be two encoders for the same port.
And I'm planning to change HSW+ to follow that model as well,
but I've been busy with other stuff to finish off that work [1]

[1] https://lists.freedesktop.org/archives/intel-gfx/2015-December/082384.html

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

WARNING: multiple messages have this Message-ID (diff)
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Takashi Iwai <tiwai@suse.de>
Cc: Martin Kepplinger <martink@posteo.de>,
	alsa-devel@alsa-project.org, intel-gfx@lists.freedesktop.org,
	linux-kernel@vger.kernel.org, perex@perex.cz, han.lu@intel.com,
	treding@nvidia.com, david.henningsson@canonical.com
Subject: Re: [Intel-gfx] [BUG] [REGRESSION] [BISECTED] -rc1 breaks audio over HDMI for i915
Date: Tue, 23 Feb 2016 19:14:47 +0200	[thread overview]
Message-ID: <20160223171447.GL23290@intel.com> (raw)
In-Reply-To: <s5hio1ffjp7.wl-tiwai@suse.de>

On Tue, Feb 23, 2016 at 05:57:40PM +0100, Takashi Iwai wrote:
> On Mon, 22 Feb 2016 22:37:28 +0100,
> Martin Kepplinger wrote:
> > 
> > Am 2016-02-22 um 20:10 schrieb Takashi Iwai:
> > > On Mon, 22 Feb 2016 19:58:18 +0100,
> > > Martin Kepplinger wrote:
> > >>
> > >> Am 2016-02-22 um 15:12 schrieb Takashi Iwai:
> > >>> On Mon, 22 Feb 2016 15:02:56 +0100,
> > >>> Martin Kepplinger wrote:
> > >>>>> And how about my questions in the previous mail?  Does
> > >>>>> i915_audio_component_get_eld() is called and returns 0?
> > >>>>> And is monitor_present set true or false?
> > >>>>
> > >>>> i915_audio_component_get_eld() returns 0 and monitor_present is 0.
> > >>>>>
> > >>>>> If i915_audio_component_get_eld() is called but returns zero, track
> > >>>>> the code flow there.  It means either intel_encoder is NULL or
> > >>>>> intel_dig_port->audio_connector is NULL.
> > >>>>
> > >>>> intel_dig_port->audio_connector is NULL!
> > >>>>
> > >>>> (when called during boot and during HDMI plugin)
> > >>>
> > >>> Interesting.  The relevant code flow should be like:
> > >>>
> > >>>   intel_audio_codec_enable()
> > >>>   -> acomp->audio_ops->pin_eld_notify()
> > >>>     -> intel_pin_eld_notify()
> > >>>       -> check_presence_and_report()
> > >>>         -> hdmi_present_sense()
> > >>> 	  -> sync_eld_via_acomp()
> > >>> 	    -> snd_hdac_acomp_get_eld()
> > >>> 	      -> i915_audio_component_get_eld()
> > >>>
> > >>> So, at first, check whether intel_dig_port in both
> > >>> intel_audio_codec_enable() and i915_audio_component_get_eld() points
> > >>> to the same object address.  The audio_connector must be set in
> > >>> intel_audio_codec_enable(), thus basically it must be non-NULL at
> > >>> i915_audio_component_get_eld(), too.
> > >>>
> > >>
> > >> intel_dig_port is *not* the same object in these 2 places. During
> > >> plugin, see:
> > >>
> > >> [  146.934091] in intel_audio_codec_enable: intel_dig_port is
> > >> ffff8800a1f54000
> > >> [  146.934121] in i915_audio_component_get_eld: intel_dig_port is
> > >> ffff880244f7d000
> > >>
> > >> sorry for the slow responses. I'll try to go back that direction unless
> > >> again someone comes up with other suggestions.
> > > 
> > > Thanks, this makes sense.  It implies that the digital port mapping is
> > > somehow wrong.  There are three places setting dig_port_map[], one in
> > > intel_ddi_init(), one in intel_dp_init() and another in
> > > intel_hdmi_init().  Try to check which function creates which object
> > > assigned to which port number, together with drm.debug=0x0e debug
> > > messages.
> > > 
> > without using drm.debug=0x0e, but by printing the kmalloc'ed objects in
> > those 3 functions with ports, I found:
> > 
> > 2 of them are running, only during boot:
> > 
> > [    2.322865] intel_hdmi_init: intel_dig_port is ffff880242564000  port 1
> > [    2.322999] intel_dp_init: intel_dig_port is ffff880242f30000  port 1
> > 
> > is is correct for them to have both port 1? Any more ideas?
> 
> Adding intel-gfx ML to Cc.
> 
> Martin, is the machine SandyBridge or IvyBridge?
> 
> In anyway it's PCH_SPLIT and there can call both intel_hdmi_init() and 
> intel_dp_init() for the same port although both functions map
> intel_dig_port[].  The assumption of intel_dig_port[] reverse mapping
> is that there is only a single intel_dig_port assigned to a port, but
> this doesn't look correct...

On pre-HSW there can indeed be two encoders for the same port.
And I'm planning to change HSW+ to follow that model as well,
but I've been busy with other stuff to finish off that work [1]

[1] https://lists.freedesktop.org/archives/intel-gfx/2015-December/082384.html

-- 
Ville Syrjälä
Intel OTC

  parent reply	other threads:[~2016-02-23 17:14 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-09  6:34 [BUG] [REGRESSION] [BISECTED] -rc1 breaks audio over HDMI for i915 Martin Kepplinger
2016-02-09 11:44 ` Takashi Iwai
2016-02-09 11:44   ` Takashi Iwai
2016-02-10 14:47   ` Yang, Libin
2016-02-10 17:21   ` Martin Kepplinger
2016-02-11  9:06     ` Takashi Iwai
2016-02-12 13:09       ` Martin Kepplinger
2016-02-12 13:49         ` Takashi Iwai
2016-02-12 15:54           ` Martin Kepplinger
2016-02-12 16:16             ` Takashi Iwai
2016-02-22 10:24               ` Martin Kepplinger
2016-02-22 10:34                 ` Takashi Iwai
2016-02-22 14:02                   ` Martin Kepplinger
2016-02-22 14:02                     ` Martin Kepplinger
2016-02-22 14:12                     ` Takashi Iwai
2016-02-22 14:12                       ` Takashi Iwai
2016-02-22 18:58                       ` Martin Kepplinger
2016-02-22 18:58                         ` Martin Kepplinger
2016-02-22 19:10                         ` Takashi Iwai
2016-02-22 21:37                           ` Martin Kepplinger
2016-02-23 16:57                             ` Takashi Iwai
2016-02-23 16:57                               ` Takashi Iwai
2016-02-23 17:09                               ` Martin Kepplinger
2016-02-23 17:14                               ` Ville Syrjälä [this message]
2016-02-23 17:14                                 ` [Intel-gfx] " Ville Syrjälä
2016-02-23 19:09                                 ` Martin Kepplinger
2016-02-23 19:09                                   ` [Intel-gfx] " Martin Kepplinger
2016-02-24  7:51                                   ` Takashi Iwai
2016-02-24  9:13                                     ` Takashi Iwai
2016-02-24 12:18                                       ` Martin Kepplinger
2016-02-24 14:28                                         ` Takashi Iwai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160223171447.GL23290@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=david.henningsson@canonical.com \
    --cc=han.lu@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=martink@posteo.de \
    --cc=perex@perex.cz \
    --cc=tiwai@suse.de \
    --cc=treding@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.