All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] drm/i915: Modify psr_wait_for_idle to be reused.
@ 2018-05-14 20:49 Tarun Vyas
  2018-05-14 20:49 ` [PATCH 2/2] drm/i915: Un-statify psr_wait_for_idle Tarun Vyas
                   ` (5 more replies)
  0 siblings, 6 replies; 17+ messages in thread
From: Tarun Vyas @ 2018-05-14 20:49 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula, dhinakaran.pandiyan, rodrigo.vivi

intel_pipe_update_start also needs to wait for PSR to idle
out. Need some minor modifications in psr_wait_for_idle in
order to reuse it.

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Tarun Vyas <tarun.vyas@intel.com>
---
 drivers/gpu/drm/i915/intel_psr.c | 29 ++++++++++++++++++-----------
 1 file changed, 18 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_psr.c b/drivers/gpu/drm/i915/intel_psr.c
index db27f2faa1de..40aafc0f4513 100644
--- a/drivers/gpu/drm/i915/intel_psr.c
+++ b/drivers/gpu/drm/i915/intel_psr.c
@@ -889,11 +889,15 @@ static bool psr_wait_for_idle(struct drm_i915_private *dev_priv)
 	i915_reg_t reg;
 	u32 mask;
 	int err;
+	bool wait = false;
+
+	mutex_lock(&dev_priv->psr.lock);
 
 	intel_dp = dev_priv->psr.enabled;
 	if (!intel_dp)
-		return false;
+		goto unlock;
 
+	wait = true;
 	if (HAS_DDI(dev_priv)) {
 		if (dev_priv->psr.psr2_enabled) {
 			reg = EDP_PSR2_STATUS;
@@ -911,15 +915,18 @@ static bool psr_wait_for_idle(struct drm_i915_private *dev_priv)
 		mask = VLV_EDP_PSR_IN_TRANS;
 	}
 
+unlock:
 	mutex_unlock(&dev_priv->psr.lock);
 
-	err = intel_wait_for_register(dev_priv, reg, mask, 0, 50);
-	if (err)
-		DRM_ERROR("Timed out waiting for PSR Idle for re-enable\n");
+	if(wait) {
+		err = intel_wait_for_register(dev_priv, reg, mask, 0, 50);
+		if (err) {
+			DRM_ERROR("Timed out waiting for PSR Idle for re-enable\n");
+			wait = false;
+		}
+	}
 
-	/* After the unlocked wait, verify that PSR is still wanted! */
-	mutex_lock(&dev_priv->psr.lock);
-	return err == 0 && dev_priv->psr.enabled;
+	return wait;
 }
 
 static void intel_psr_work(struct work_struct *work)
@@ -927,7 +934,6 @@ static void intel_psr_work(struct work_struct *work)
 	struct drm_i915_private *dev_priv =
 		container_of(work, typeof(*dev_priv), psr.work.work);
 
-	mutex_lock(&dev_priv->psr.lock);
 
 	/*
 	 * We have to make sure PSR is ready for re-enable
@@ -936,14 +942,15 @@ static void intel_psr_work(struct work_struct *work)
 	 * and be ready for re-enable.
 	 */
 	if (!psr_wait_for_idle(dev_priv))
-		goto unlock;
+		return;
 
-	/*
+	/* After the unlocked wait, verify that PSR is still wanted!
 	 * The delayed work can race with an invalidate hence we need to
 	 * recheck. Since psr_flush first clears this and then reschedules we
 	 * won't ever miss a flush when bailing out here.
 	 */
-	if (dev_priv->psr.busy_frontbuffer_bits)
+	mutex_lock(&dev_priv->psr.lock);
+	if (dev_priv->psr.enabled && dev_priv->psr.busy_frontbuffer_bits)
 		goto unlock;
 
 	intel_psr_activate(dev_priv->psr.enabled);
-- 
2.13.5

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2018-06-21 22:43 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-14 20:49 [PATCH 1/2] drm/i915: Modify psr_wait_for_idle to be reused Tarun Vyas
2018-05-14 20:49 ` [PATCH 2/2] drm/i915: Un-statify psr_wait_for_idle Tarun Vyas
2018-05-14 20:49 ` [PATCH v2] drm/i915: Wait for PSR exit before checking for vblank evasion Tarun Vyas
2018-05-14 21:16   ` Chris Wilson
2018-05-15 19:38     ` Tarun Vyas
2018-05-15  3:16   ` kbuild test robot
2018-06-19 21:27   ` Dhinakaran Pandiyan
2018-06-19 21:54     ` Dhinakaran Pandiyan
2018-06-19 21:59       ` Tarun Vyas
2018-06-19 23:11         ` Dhinakaran Pandiyan
2018-06-21 22:43         ` Tarun Vyas
2018-05-14 21:15 ` [PATCH 1/2] drm/i915: Modify psr_wait_for_idle to be reused Chris Wilson
2018-05-14 22:00   ` Tarun Vyas
2018-05-17 20:35     ` Tarun Vyas
2018-05-14 21:35 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [v2] drm/i915: Wait for PSR exit before checking for vblank evasion (rev2) Patchwork
2018-05-14 21:36 ` ✗ Fi.CI.SPARSE: " Patchwork
2018-05-14 21:53 ` ✗ Fi.CI.BAT: failure " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.