drm/i915: Update comment in vlv_set_rps_idle()
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 2 Jan 2017 15:28:45 +0000 (15:28 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Tue, 3 Jan 2017 12:05:32 +0000 (12:05 +0000)
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>
Link: http://patchwork.freedesktop.org/patch/msgid/20170102152845.32352-1-chris@chris-wilson.co.uk
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
drivers/gpu/drm/i915/intel_pm.c

index 4b12637..ccdea53 100644 (file)
@@ -5004,8 +5004,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 committing 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);