diff mbox

drm/i915: Update comment in vlv_set_rps_idle()

Message ID 20170102152845.32352-1-chris@chris-wilson.co.uk (mailing list archive)
State New, archived
Headers show

Commit Message

Chris Wilson Jan. 2, 2017, 3:28 p.m. UTC
Ville explained that the wakelock was being acquired during set-idle in
order to flush the voltage change from the punit.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com
---
 drivers/gpu/drm/i915/intel_pm.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

Comments

Ville Syrjälä Jan. 2, 2017, 3:56 p.m. UTC | #1
On Mon, Jan 02, 2017 at 03:28:45PM +0000, Chris Wilson wrote:
> Ville explained that the wakelock was being acquired during set-idle in
> order to flush the voltage change from the punit.
> 
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com
> ---
>  drivers/gpu/drm/i915/intel_pm.c | 14 ++++++++++++--
>  1 file changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 4406359c5f81..4c9a1b12dfee 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -5011,8 +5011,18 @@ static void vlv_set_rps_idle(struct drm_i915_private *dev_priv)
>  	if (dev_priv->rps.cur_freq <= val)
>  		return;
>  
> -	/* Wake up the media well, as that takes a lot less
> -	 * power than the Render well. */
> +	/* The punit delays the write of the frequency and voltage until it
> +	 * determines the GPU is awake. During normal usage we don't want to
> +	 * waste power changing the frequency if the GPU is sleeping (rc6).
> +	 * However, the GPU and driver is now idle and we do not want to delay
> +	 * switching to minimum voltage (reducing power whilst idle) as we do
> +	 * not expect to be woken in the near future and so must flush the
> +	 * change by waking the device.
> +	 *
> +	 * We choose to take the media powerwell (either would do to trick the
> +	 * punit into commiting the voltage change) as that takes a lot less
> +	 * power than the render powerwell.
> +	 */

lgtm

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

>  	intel_uncore_forcewake_get(dev_priv, FORCEWAKE_MEDIA);
>  	valleyview_set_rps(dev_priv, val);
>  	intel_uncore_forcewake_put(dev_priv, FORCEWAKE_MEDIA);
> -- 
> 2.11.0
Chris Wilson Jan. 3, 2017, 12:07 p.m. UTC | #2
On Mon, Jan 02, 2017 at 05:56:51PM +0200, Ville Syrjälä wrote:
> On Mon, Jan 02, 2017 at 03:28:45PM +0000, Chris Wilson wrote:
> > Ville explained that the wakelock was being acquired during set-idle in
> > order to flush the voltage change from the punit.
> > 
> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com
> > ---
> >  drivers/gpu/drm/i915/intel_pm.c | 14 ++++++++++++--
> >  1 file changed, 12 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> > index 4406359c5f81..4c9a1b12dfee 100644
> > --- a/drivers/gpu/drm/i915/intel_pm.c
> > +++ b/drivers/gpu/drm/i915/intel_pm.c
> > @@ -5011,8 +5011,18 @@ static void vlv_set_rps_idle(struct drm_i915_private *dev_priv)
> >  	if (dev_priv->rps.cur_freq <= val)
> >  		return;
> >  
> > -	/* Wake up the media well, as that takes a lot less
> > -	 * power than the Render well. */
> > +	/* The punit delays the write of the frequency and voltage until it
> > +	 * determines the GPU is awake. During normal usage we don't want to
> > +	 * waste power changing the frequency if the GPU is sleeping (rc6).
> > +	 * However, the GPU and driver is now idle and we do not want to delay
> > +	 * switching to minimum voltage (reducing power whilst idle) as we do
> > +	 * not expect to be woken in the near future and so must flush the
> > +	 * change by waking the device.
> > +	 *
> > +	 * We choose to take the media powerwell (either would do to trick the
> > +	 * punit into commiting the voltage change) as that takes a lot less
> > +	 * power than the render powerwell.
> > +	 */
> 
> lgtm
> 
> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Ta, fixed a spelling mistake and pushed.
-Chris
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 4406359c5f81..4c9a1b12dfee 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -5011,8 +5011,18 @@  static void vlv_set_rps_idle(struct drm_i915_private *dev_priv)
 	if (dev_priv->rps.cur_freq <= val)
 		return;
 
-	/* Wake up the media well, as that takes a lot less
-	 * power than the Render well. */
+	/* The punit delays the write of the frequency and voltage until it
+	 * determines the GPU is awake. During normal usage we don't want to
+	 * waste power changing the frequency if the GPU is sleeping (rc6).
+	 * However, the GPU and driver is now idle and we do not want to delay
+	 * switching to minimum voltage (reducing power whilst idle) as we do
+	 * not expect to be woken in the near future and so must flush the
+	 * change by waking the device.
+	 *
+	 * We choose to take the media powerwell (either would do to trick the
+	 * punit into commiting the voltage change) as that takes a lot less
+	 * power than the render powerwell.
+	 */
 	intel_uncore_forcewake_get(dev_priv, FORCEWAKE_MEDIA);
 	valleyview_set_rps(dev_priv, val);
 	intel_uncore_forcewake_put(dev_priv, FORCEWAKE_MEDIA);