All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Matt Roper <matthew.d.roper@intel.com>
Cc: Ander Conselvan de Oliveira
	<ander.conselvan.de.oliveira@intel.com>,
	intel-gfx@lists.freedesktop.org, shuang.he@linux.intel.com
Subject: Re: [PATCH 4/8] drm/i915: Use local pipe_config varariable when available
Date: Mon, 15 Dec 2014 21:21:41 +0200	[thread overview]
Message-ID: <20141215192141.GG10649@intel.com> (raw)
In-Reply-To: <20141215183757.GD31948@intel.com>

On Mon, Dec 15, 2014 at 10:37:57AM -0800, Matt Roper wrote:
> On Thu, Dec 11, 2014 at 02:38:07PM +0200, Ander Conselvan de Oliveira wrote:
> > In function that define a local pipe_config variable to point to
> > crtc->config, replace remaining references to crtc->config with
> > the local variable. This makes the code more consistent and easier
> > to change in an automated manner.
> > 
> > Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
> > ---
> >  drivers/gpu/drm/i915/intel_display.c | 6 +++---
> >  1 file changed, 3 insertions(+), 3 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> > index 3bceacb..da5af23 100644
> > --- a/drivers/gpu/drm/i915/intel_display.c
> > +++ b/drivers/gpu/drm/i915/intel_display.c
> > @@ -4602,7 +4602,7 @@ static void i9xx_pfit_enable(struct intel_crtc *crtc)
> >  	struct drm_i915_private *dev_priv = dev->dev_private;
> >  	struct intel_crtc_state *pipe_config = &crtc->config;
> >  
> > -	if (!crtc->config.gmch_pfit.control)
> > +	if (!pipe_config->gmch_pfit.control)
> >  		return;
> >  
> >  	/*
> > @@ -5925,7 +5925,7 @@ static void vlv_prepare_pll(struct intel_crtc *crtc,
> >  		vlv_dpio_write(dev_priv, pipe, VLV_PLL_DW10(pipe),
> >  				 0x00d0000f);
> >  
> > -	if (crtc->config.has_dp_encoder) {
> > +	if (pipe_config->has_dp_encoder) {
> 
> Does this one change the behavior in some cases?  The pipe_config
> parameter passed to this function from vlv_force_pll_on() is a hardcoded
> pipe_config that is never going to have has_dp_encoder set, regardless
> of what the current config is.

The force stuff is only done when the pipe isn't active, so crtc->config
will be stale anyway (well, actually the pipe could be driving DSI but
that shouldn't really matter either).

So using the passed pipe_config leads to a more consistent result. The
value of has_dp_encoder shouldn't actually matter as long as we get
some kind of clock from the DPLL.

> 
> 
> >  		/* Use SSC source */
> >  		if (pipe == PIPE_A)
> >  			vlv_dpio_write(dev_priv, pipe, VLV_PLL_DW5(pipe),
> > @@ -7541,7 +7541,7 @@ static void intel_cpu_transcoder_get_m_n(struct intel_crtc *crtc,
> >  void intel_dp_get_m_n(struct intel_crtc *crtc,
> >  		      struct intel_crtc_state *pipe_config)
> >  {
> > -	if (crtc->config.has_pch_encoder)
> > +	if (pipe_config->has_pch_encoder)
> 
> I think this one might also change the semantics?  The callchain
> 
>    check_crtc_state() -> intel_{dp,ddi}_get_config() -> intel_dp_get_m_n()
> 
> passes down a fresh pipe_config() that isn't the same structure stored
> in crtc->config (although it hopefully has the same values in the end).

This looks like a straight up bug fix to me. Apparently I already
fumbled it when I introduced the DP M/N readout.

The state checker hasn't tripped on this since we've already
written the new pipe config to crtc->config by the time we do the
readout during modeset.

And intel_modeset_readout_hw_state() reads the state directly into
crtc->config, so even the initial state would have come out correct.

So, while the code is wrong, doesn't look like it could have caused
any real issues.

> 
> 
> Matt
> 
> >  		intel_pch_transcoder_get_m_n(crtc, &pipe_config->dp_m_n);
> >  	else
> >  		intel_cpu_transcoder_get_m_n(crtc, pipe_config->cpu_transcoder,
> > -- 
> > 1.9.1
> > 
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
> 
> -- 
> Matt Roper
> Graphics Software Engineer
> IoTG Platform Enabling & Development
> Intel Corporation
> (916) 356-2795
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

  reply	other threads:[~2014-12-15 19:21 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-11 12:38 [PATCH 0/8] Resend of drm/i915: Keep drm_crtc->state in sync Ander Conselvan de Oliveira
2014-12-11 12:38 ` [PATCH 1/8] drm/i915: Rename struct intel_crtc_config to intel_crtc_state Ander Conselvan de Oliveira
2014-12-11 12:38 ` [PATCH 2/8] drm/i915: Embedded struct drm_crtc_state in intel_crtc_state Ander Conselvan de Oliveira
2014-12-11 12:38 ` [PATCH 3/8] drm/i915: Pass new_config down do crtc_compute_clock Ander Conselvan de Oliveira
2014-12-11 12:38 ` [PATCH 4/8] drm/i915: Use local pipe_config varariable when available Ander Conselvan de Oliveira
2014-12-15 18:37   ` Matt Roper
2014-12-15 19:21     ` Ville Syrjälä [this message]
2014-12-16  9:25       ` Daniel Vetter
2014-12-11 12:38 ` [PATCH 5/8] drm/i915: Don't access to crtc->new_config from intel_mode_max_pixclk() Ander Conselvan de Oliveira
2014-12-15 19:17   ` Matt Roper
2014-12-15 19:30     ` Ville Syrjälä
2014-12-16  9:29       ` Daniel Vetter
2014-12-15 19:24   ` Ville Syrjälä
2014-12-16  9:34     ` Daniel Vetter
2014-12-18 15:06       ` Ander Conselvan de Oliveira
2014-12-11 12:38 ` [PATCH 6/8] drm/i915: Remove intel_crtc->new_config pointer Ander Conselvan de Oliveira
2014-12-11 12:38 ` [PATCH 7/8] drm/i915: Make intel_crtc->config a pointer Ander Conselvan de Oliveira
2014-12-15 19:30   ` Matt Roper
2014-12-11 12:38 ` [PATCH 8/8] drm/i915: Keep drm_crtc->state in sync with intel_crtc->config Ander Conselvan de Oliveira
2014-12-11 12:49   ` shuang.he

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=20141215192141.GG10649@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=ander.conselvan.de.oliveira@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=matthew.d.roper@intel.com \
    --cc=shuang.he@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.