All of lore.kernel.org
 help / color / mirror / Atom feed
From: Imre Deak <imre.deak@intel.com>
To: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH v2] drm/i915/lspcon: Enable AUX interrupts for resume time initialization
Date: Tue, 29 Nov 2016 22:41:45 +0200	[thread overview]
Message-ID: <1480452105.16375.21.camel@intel.com> (raw)
In-Reply-To: <20161129202716.GZ31595@intel.com>

On Tue, 2016-11-29 at 22:27 +0200, Ville Syrjälä wrote:
> On Tue, Nov 29, 2016 at 10:14:23PM +0200, Imre Deak wrote:
> > On Tue, 2016-11-29 at 21:55 +0200, Ville Syrjälä wrote:
> > > On Tue, Nov 29, 2016 at 09:40:29PM +0200, Imre Deak wrote:
> > > > For LSPCON initialization during system resume we need AUX
> > > > functionality, but we call the corresponding encoder reset hook
> > > > with all
> > > > interrupts disabled. Without interrupts we'll do a poll-wait
> > > > for AUX
> > > > transfer completions, which adds a significant delay if the
> > > > transfers
> > > > timeout/need to be retried for some reason.
> > > > 
> > > > Fix this by enabling interrupts before calling the reset hooks.
> > > > Note
> > > > that while this will enable AUX interrupts it will keep HPD
> > > > interrupts
> > > > disabled, in a similar way to the init time output setup code.
> > > > 
> > > > This issue existed since LSPCON support was added.
> > > > 
> > > > v2:
> > > > - Rebased on drm-tip.
> > > > 
> > > > Cc: Shashank Sharma <shashank.sharma@intel.com>
> > > > Signed-off-by: Imre Deak <imre.deak@intel.com>
> > > > ---
> > > >  drivers/gpu/drm/i915/i915_drv.c | 5 ++++-
> > > >  1 file changed, 4 insertions(+), 1 deletion(-)
> > > > 
> > > > diff --git a/drivers/gpu/drm/i915/i915_drv.c
> > > > b/drivers/gpu/drm/i915/i915_drv.c
> > > > index 8dac298..2cea2ef 100644
> > > > --- a/drivers/gpu/drm/i915/i915_drv.c
> > > > +++ b/drivers/gpu/drm/i915/i915_drv.c
> > > > @@ -1582,18 +1582,21 @@ static int i915_drm_resume(struct
> > > > drm_device *dev)
> > > >  	intel_opregion_setup(dev_priv);
> > > >  
> > > >  	intel_init_pch_refclk(dev_priv);
> > > > -	drm_mode_config_reset(dev);
> > > >  
> > > >  	/*
> > > >  	 * Interrupts have to be enabled before any batches
> > > > are run. If not the
> > > >  	 * GPU will hang. i915_gem_init_hw() will initiate
> > > > batches to
> > > >  	 * update/restore the context.
> > > >  	 *
> > > > +	 * drm_mode_config_reset() needs AUX interrupts.
> > > > +	 *
> > > >  	 * Modeset enabling in intel_modeset_init_hw() also
> > > > needs working
> > > >  	 * interrupts.
> > > >  	 */
> > > >  	intel_runtime_pm_enable_interrupts(dev_priv);
> > > >  
> > > > +	drm_mode_config_reset(dev);
> > > > +
> > > 
> > > Didn't look like anything should seriously explode.
> > > 
> > > Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > 
> > > There is a slight concern on g4x/vlv/chv that an AUX interrupts
> > > would
> > > trigger the hpd irq handler, which doesn't realize it's supposed
> > > to
> > > ignore the actual hpd bits in PORT_HOTPLUG_STAT. So any aux
> > > before we
> > > enable hpd processing for real could do something bad. So I guess
> > > we
> > > should add some kind of software tracking for that stuff like we
> > > have
> > > for PIPESTAT.
> > 
> > Didn't think about that, but BSpec tells me those are masked by the
> > HPD
> > IRQ enable bits in PORT_HOTPLUG_EN and those we enable only later.
> > Otherwise this would be also a problem during output setup time.
> 
> Hmm. Are they really masked? I though it's just an IER effectively.

I only tried for real on BXT/SKL where I had to enable the interrupts
(in PCH_PORT_HOTPLUG) for HPD sensing. The CHV BSpec suggests the same
for the live state bits, but yes it's not clear if the long/short
detect bits are completely masked by the enable flags or they are just
not propagated if not enabled. Will give it a try tomorrow.

> 
> > 
> > --Imre
> > 
> > > 
> > > >  	mutex_lock(&dev->struct_mutex);
> > > >  	if (i915_gem_init_hw(dev)) {
> > > >  		DRM_ERROR("failed to re-initialize GPU,
> > > > declaring wedged!\n");
> > > > -- 
> > > > 2.5.0
> > > > 
> > > > _______________________________________________
> > > > Intel-gfx mailing list
> > > > Intel-gfx@lists.freedesktop.org
> > > > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
> > > 
> 
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2016-11-29 20:41 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-29 14:52 [PATCH] drm/i915/lspcon: Enable AUX interrupts for resume time initialization Imre Deak
2016-11-29 19:40 ` [PATCH v2] " Imre Deak
2016-11-29 19:55   ` Ville Syrjälä
2016-11-29 20:14     ` Imre Deak
2016-11-29 20:27       ` Ville Syrjälä
2016-11-29 20:41         ` Imre Deak [this message]
2016-11-29 21:00           ` Ville Syrjälä
2016-11-30 12:27             ` Imre Deak
2016-12-01 13:18   ` David Weinehall
2016-11-29 21:53 ` ✓ Fi.CI.BAT: success for drm/i915/lspcon: Enable AUX interrupts for resume time initialization (rev2) Patchwork
2016-12-01 13:33   ` Imre Deak

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=1480452105.16375.21.camel@intel.com \
    --to=imre.deak@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=ville.syrjala@linux.intel.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.