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 <chris@xxxxxxxxxxxxxxxxxx> Cc: Imre Deak <imre.deak@xxxxxxxxx> --- 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 Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx