diff mbox

[v4] drm/i915: Set softmin frequency on idle->busy transition

Message ID 1466416707-12075-1-git-send-email-michal.winiarski@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Michał Winiarski June 20, 2016, 9:58 a.m. UTC
If the GPU load is low enough, it's possible that we'll be stuck at idle
frequency rather than transition into softmin frequency requested by
userspace.

v2: Use intel_set_rps, drop vlv_set_idle
v3: Back to vlv_set_idle, clamp to valid range
v4: Place intel_set_rps at the end

References: https://bugs.freedesktop.org/show_bug.cgi?id=89728
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Imre Deak <imre.deak@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
---
 drivers/gpu/drm/i915/intel_pm.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Chris Wilson June 20, 2016, 4:55 p.m. UTC | #1
On Mon, Jun 20, 2016 at 11:58:27AM +0200, Michał Winiarski wrote:
> If the GPU load is low enough, it's possible that we'll be stuck at idle
> frequency rather than transition into softmin frequency requested by
> userspace.
> 
> v2: Use intel_set_rps, drop vlv_set_idle
> v3: Back to vlv_set_idle, clamp to valid range
> v4: Place intel_set_rps at the end
> 
> References: https://bugs.freedesktop.org/show_bug.cgi?id=89728
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Imre Deak <imre.deak@intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
> Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>

Mind resending this so we get proper CI results? And include the output
of pm_rps (since presumably we do fix a bug...)
-Chris
Chris Wilson June 21, 2016, 10:41 a.m. UTC | #2
On Mon, Jun 20, 2016 at 05:55:16PM +0100, Chris Wilson wrote:
> On Mon, Jun 20, 2016 at 11:58:27AM +0200, Michał Winiarski wrote:
> > If the GPU load is low enough, it's possible that we'll be stuck at idle
> > frequency rather than transition into softmin frequency requested by
> > userspace.
> > 
> > v2: Use intel_set_rps, drop vlv_set_idle
> > v3: Back to vlv_set_idle, clamp to valid range
> > v4: Place intel_set_rps at the end
> > 
> > References: https://bugs.freedesktop.org/show_bug.cgi?id=89728
> > Cc: Chris Wilson <chris@chris-wilson.co.uk>
> > Cc: Imre Deak <imre.deak@intel.com>
> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
> > Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
> 
> Mind resending this so we get proper CI results? And include the output
> of pm_rps (since presumably we do fix a bug...)

I gambled 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 658a756..c94521cc 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -4844,6 +4844,12 @@  void gen6_rps_busy(struct drm_i915_private *dev_priv)
 			gen6_rps_reset_ei(dev_priv);
 		I915_WRITE(GEN6_PMINTRMSK,
 			   gen6_rps_pm_mask(dev_priv, dev_priv->rps.cur_freq));
+
+		/* Ensure we start at the user's desired frequency */
+		intel_set_rps(dev_priv,
+			      clamp(dev_priv->rps.cur_freq,
+				    dev_priv->rps.min_freq_softlimit,
+				    dev_priv->rps.max_freq_softlimit));
 	}
 	mutex_unlock(&dev_priv->rps.hw_lock);
 }