From: Ville Syrjälä <ville.syrj...@linux.intel.com>

Split intel_atomic_commit_tail() into a lower level function that does
the actual commit, and a higher level one that waits for the
dependencies and signals the commit as done. We'll reuse the lower
level function to perform commits during GPU resets.

Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_display.c | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c 
b/drivers/gpu/drm/i915/intel_display.c
index 0ff3f254ee58..e9c85d7cbb3e 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -13021,7 +13021,7 @@ static void 
intel_atomic_helper_free_state_worker(struct work_struct *work)
        intel_atomic_helper_free_state(dev_priv);
 }
 
-static void intel_atomic_commit_tail(struct drm_atomic_state *state)
+static void __intel_atomic_commit_tail(struct drm_atomic_state *state)
 {
        struct drm_device *dev = state->dev;
        struct intel_atomic_state *intel_state = to_intel_atomic_state(state);
@@ -13034,8 +13034,6 @@ static void intel_atomic_commit_tail(struct 
drm_atomic_state *state)
        unsigned crtc_vblank_mask = 0;
        int i;
 
-       drm_atomic_helper_wait_for_dependencies(state);
-
        if (intel_state->modeset)
                intel_display_power_get(dev_priv, POWER_DOMAIN_MODESET);
 
@@ -13160,8 +13158,6 @@ static void intel_atomic_commit_tail(struct 
drm_atomic_state *state)
        if (intel_state->modeset && intel_can_enable_sagv(state))
                intel_enable_sagv(dev_priv);
 
-       drm_atomic_helper_commit_hw_done(state);
-
        if (intel_state->modeset) {
                /* As one of the primary mmio accessors, KMS has a high
                 * likelihood of triggering bugs in unclaimed access. After we
@@ -13172,6 +13168,18 @@ static void intel_atomic_commit_tail(struct 
drm_atomic_state *state)
                intel_uncore_arm_unclaimed_mmio_detection(dev_priv);
                intel_display_power_put(dev_priv, POWER_DOMAIN_MODESET);
        }
+}
+
+static void intel_atomic_commit_tail(struct drm_atomic_state *state)
+{
+       struct drm_device *dev = state->dev;
+       struct drm_i915_private *dev_priv = to_i915(dev);
+
+       drm_atomic_helper_wait_for_dependencies(state);
+
+       __intel_atomic_commit_tail(state);
+
+       drm_atomic_helper_commit_hw_done(state);
 
        mutex_lock(&dev->struct_mutex);
        drm_atomic_helper_cleanup_planes(dev, state);
-- 
2.13.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to