Once all the preparations are complete, we are ready to write the
modesetting to the hardware. During this phase, we will be making lots
of HW register access, so take a top level wakeref to prevent an
unwarranted rpm suspend cycle mid-commit. Lower level functions should
be waking the individual power wells as required.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93439
Signed-off-by: Chris Wilson <[email protected]>
Cc: Imre Deak <[email protected]>
---
 drivers/gpu/drm/i915/intel_display.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_display.c 
b/drivers/gpu/drm/i915/intel_display.c
index abd2d2944022..60451c3932db 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -13470,6 +13470,13 @@ static int intel_atomic_commit(struct drm_device *dev,
        drm_atomic_helper_swap_state(dev, state);
        dev_priv->wm.config = to_intel_atomic_state(state)->wm_config;
 
+       /* Take a rpm wakeref for the duration of the commit. Lower level
+        * functions should be acquiring the power wells for their own use,
+        * we take this toplevel reference to prevent rpm suspend cycles
+        * mid-commit.
+        */
+       intel_runtime_pm_get(dev_priv);
+
        for_each_crtc_in_state(state, crtc, crtc_state, i) {
                struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 
@@ -13558,6 +13565,8 @@ static int intel_atomic_commit(struct drm_device *dev,
        if (any_ms)
                intel_modeset_check_state(dev, state);
 
+       intel_runtime_pm_put(dev_priv);
+
        drm_atomic_state_free(state);
 
        return 0;
-- 
2.6.4

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to