public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
From: Ben Widawsky <ben@bwidawsk.net>
To: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Intel Graphics Development <intel-gfx@lists.freedesktop.org>
Subject: Re: [PATCH 1/5] drm/i915: wrap up gt powersave enabling functions
Date: Fri, 29 Jun 2012 11:51:35 -0700	[thread overview]
Message-ID: <20120629115135.3566d752@bwidawsk.net> (raw)
In-Reply-To: <1340548956-4097-2-git-send-email-daniel.vetter@ffwll.ch>

On Sun, 24 Jun 2012 16:42:32 +0200
Daniel Vetter <daniel.vetter@ffwll.ch> wrote:

> ... instead of calling each one for each generation indiviudally.
> 
> Notice that we've already managed to be inconsistent, the resume path
> is missing an IS_VLV check. As a nice benefit we can mark all the
> platform specific enable/disable functions as static and hide them in
> intel_pm.c
> 
> Signed-Off-by: Daniel Vetter <daniel.vetter@ffwll.ch>

I like what you've done here. Some comments inline, still.

> ---
>  drivers/gpu/drm/i915/i915_suspend.c  |    5 +----
>  drivers/gpu/drm/i915/intel_display.c |   21 ++-----------------
>  drivers/gpu/drm/i915/intel_drv.h     |    9 ++-------
>  drivers/gpu/drm/i915/intel_pm.c      |   37 +++++++++++++++++++++++++++-------
>  4 files changed, 35 insertions(+), 37 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_suspend.c b/drivers/gpu/drm/i915/i915_suspend.c
> index 0ede02a..740c076 100644
> --- a/drivers/gpu/drm/i915/i915_suspend.c
> +++ b/drivers/gpu/drm/i915/i915_suspend.c
> @@ -825,10 +825,7 @@ int i915_save_state(struct drm_device *dev)
>  		dev_priv->saveIMR = I915_READ(IMR);
>  	}
>  
> -	if (IS_IRONLAKE_M(dev))
> -		ironlake_disable_drps(dev);
> -	if (INTEL_INFO(dev)->gen >= 6)
> -		gen6_disable_rps(dev);
> +	intel_disable_gt_powersave(dev);
>  
>  	/* Cache mode state */
>  	dev_priv->saveCACHE_MODE_0 = I915_READ(CACHE_MODE_0);
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index b3052ef..fdca5b9 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -7172,20 +7172,9 @@ static void ivb_pch_pwm_override(struct drm_device *dev)
>  
>  void intel_modeset_init_hw(struct drm_device *dev)
>  {
> -	struct drm_i915_private *dev_priv = dev->dev_private;
> -
>  	intel_init_clock_gating(dev);
>  
> -	if (IS_IRONLAKE_M(dev)) {
> -		ironlake_enable_drps(dev);
> -		ironlake_enable_rc6(dev);
> -		intel_init_emon(dev);
> -	}
> -
> -	if ((IS_GEN6(dev) || IS_GEN7(dev)) && !IS_VALLEYVIEW(dev)) {
> -		gen6_enable_rps(dev_priv);
> -		gen6_update_ring_freq(dev_priv);
> -	}
> +	intel_enable_gt_powersave(dev);
>  
>  	if (IS_IVYBRIDGE(dev))
>  		ivb_pch_pwm_override(dev);
> @@ -7277,13 +7266,7 @@ void intel_modeset_cleanup(struct drm_device *dev)
>  
>  	intel_disable_fbc(dev);
>  
> -	if (IS_IRONLAKE_M(dev))
> -		ironlake_disable_drps(dev);
> -	if ((IS_GEN6(dev) || IS_GEN7(dev)) && !IS_VALLEYVIEW(dev))
> -		gen6_disable_rps(dev);
> -
> -	if (IS_IRONLAKE_M(dev))
> -		ironlake_disable_rc6(dev);
> +	intel_disable_gt_powersave(dev);
>  
>  	if (IS_VALLEYVIEW(dev))
>  		vlv_init_dpio(dev);
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index 5290e9d..cc1573b 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -425,9 +425,6 @@ extern void intel_crtc_fb_gamma_set(struct drm_crtc *crtc, u16 red, u16 green,
>  extern void intel_crtc_fb_gamma_get(struct drm_crtc *crtc, u16 *red, u16 *green,
>  				    u16 *blue, int regno);
>  extern void intel_enable_clock_gating(struct drm_device *dev);
> -extern void ironlake_disable_rc6(struct drm_device *dev);
> -extern void ironlake_enable_drps(struct drm_device *dev);
> -extern void ironlake_disable_drps(struct drm_device *dev);
>  
>  extern int intel_pin_and_fence_fb_obj(struct drm_device *dev,
>  				      struct drm_i915_gem_object *obj,
> @@ -494,10 +491,8 @@ extern void intel_update_fbc(struct drm_device *dev);
>  extern void intel_gpu_ips_init(struct drm_i915_private *dev_priv);
>  extern void intel_gpu_ips_teardown(void);
>  
> -extern void gen6_enable_rps(struct drm_i915_private *dev_priv);
> -extern void gen6_update_ring_freq(struct drm_i915_private *dev_priv);
> -extern void gen6_disable_rps(struct drm_device *dev);
> -extern void intel_init_emon(struct drm_device *dev);
> +extern void intel_enable_gt_powersave(struct drm_device *dev);
> +extern void intel_disable_gt_powersave(struct drm_device *dev);
>  
>  extern void intel_ddi_dpms(struct drm_encoder *encoder, int mode);
>  extern void intel_ddi_mode_set(struct drm_encoder *encoder,
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 7504fbc..2baba10 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -2184,7 +2184,7 @@ bool ironlake_set_drps(struct drm_device *dev, u8 val)
>  	return true;
>  }
>  
> -void ironlake_enable_drps(struct drm_device *dev)
> +static void ironlake_enable_drps(struct drm_device *dev)
>  {
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	u32 rgvmodectl = I915_READ(MEMMODECTL);
> @@ -2248,7 +2248,7 @@ void ironlake_enable_drps(struct drm_device *dev)
>  	getrawmonotonic(&dev_priv->last_time2);
>  }
>  
> -void ironlake_disable_drps(struct drm_device *dev)
> +static void ironlake_disable_drps(struct drm_device *dev)
>  {
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	u16 rgvswctl = I915_READ16(MEMSWCTL);
> @@ -2301,7 +2301,7 @@ void gen6_set_rps(struct drm_device *dev, u8 val)
>  	dev_priv->cur_delay = val;
>  }
>  
> -void gen6_disable_rps(struct drm_device *dev)
> +static void gen6_disable_rps(struct drm_device *dev)
>  {
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  
> @@ -2349,7 +2349,7 @@ int intel_enable_rc6(const struct drm_device *dev)
>  	return (INTEL_RC6_ENABLE | INTEL_RC6p_ENABLE);
>  }
>  
> -void gen6_enable_rps(struct drm_i915_private *dev_priv)
> +static void gen6_enable_rps(struct drm_i915_private *dev_priv)
>  {
>  	struct intel_ring_buffer *ring;
>  	u32 rp_state_cap;
> @@ -2494,7 +2494,7 @@ void gen6_enable_rps(struct drm_i915_private *dev_priv)
>  	mutex_unlock(&dev_priv->dev->struct_mutex);
>  }
>  
> -void gen6_update_ring_freq(struct drm_i915_private *dev_priv)
> +static void gen6_update_ring_freq(struct drm_i915_private *dev_priv)
>  {
>  	int min_freq = 15;
>  	int gpu_freq, ia_freq, max_ia_freq;
> @@ -3156,8 +3156,7 @@ void intel_gpu_ips_teardown(void)
>  	i915_mch_dev = NULL;
>  	spin_unlock(&mchdev_lock);
>  }
> -
> -void intel_init_emon(struct drm_device *dev)
> +static void intel_init_emon(struct drm_device *dev)
>  {
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	u32 lcfuse;
> @@ -3228,6 +3227,30 @@ void intel_init_emon(struct drm_device *dev)
>  	dev_priv->corr = (lcfuse & LCFUSE_HIV_MASK);
>  }
>  
> +void intel_disable_gt_powersave(struct drm_device *dev)
> +{
> +	if (IS_IRONLAKE_M(dev))
> +		ironlake_disable_drps(dev);
> +	if (INTEL_INFO(dev)->gen >= 6 && !IS_VALLEYVIEW(dev))
> +		gen6_disable_rps(dev);
> +}

What happened to ironlake_disable_rc6?

> +
> +void intel_enable_gt_powersave(struct drm_device *dev)
> +{
> +	struct drm_i915_private *dev_priv = dev->dev_private;
> +
> +	if (IS_IRONLAKE_M(dev)) {
> +		ironlake_enable_drps(dev);
> +		ironlake_enable_rc6(dev);
> +		intel_init_emon(dev);
> +	}
> +
> +	if ((IS_GEN6(dev) || IS_GEN7(dev)) && !IS_VALLEYVIEW(dev)) {
> +		gen6_enable_rps(dev_priv);
> +		gen6_update_ring_freq(dev_priv);
> +	}
> +}
> +
>  static void ironlake_init_clock_gating(struct drm_device *dev)
>  {
>  	struct drm_i915_private *dev_priv = dev->dev_private;


It'd be nice if there was some explanation of why disable doesn't do the
reverse of enable.


-- 
Ben Widawsky, Intel Open Source Technology Center

  parent reply	other threads:[~2012-06-29 18:51 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-24 14:42 [PATCH 0/5] gpu reset improvements Daniel Vetter
2012-06-24 14:42 ` [PATCH 1/5] drm/i915: wrap up gt powersave enabling functions Daniel Vetter
2012-06-24 23:03   ` Eugeni Dodonov
2012-06-25  7:20     ` Daniel Vetter
2012-06-29 18:51   ` Ben Widawsky [this message]
2012-06-29 21:11     ` Daniel Vetter
2012-06-24 14:42 ` [PATCH 2/5] drm/i915: make enable/disable_gt_powersave locking consistent Daniel Vetter
2012-06-24 23:03   ` Eugeni Dodonov
2012-06-25 19:08     ` Daniel Vetter
2012-06-24 14:42 ` [PATCH 3/5] drm/i915: don't return a spurious -EIO from intel_ring_begin Daniel Vetter
2012-06-25 20:32   ` Chris Wilson
2012-06-25 20:49     ` Daniel Vetter
2012-06-25 21:06       ` Chris Wilson
2012-06-25 21:48         ` Daniel Vetter
2012-06-25 22:52           ` Chris Wilson
2012-06-25 23:05             ` Daniel Vetter
2012-06-26  9:30               ` Chris Wilson
2012-06-24 14:42 ` [PATCH 4/5] drm/i915: don't trylock in the gpu reset code Daniel Vetter
2012-06-25 20:10   ` Chris Wilson
2012-06-24 14:42 ` [PATCH 5/5] drm/i915: non-interruptible sleeps can't handle -EGAIN Daniel Vetter
2012-06-25 20:23   ` Chris Wilson
2012-06-25 20:35     ` Daniel Vetter
2012-06-25 20:24   ` [PATCH] " Daniel Vetter

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=20120629115135.3566d752@bwidawsk.net \
    --to=ben@bwidawsk.net \
    --cc=daniel.vetter@ffwll.ch \
    --cc=intel-gfx@lists.freedesktop.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox