[PATCH 2/2] reset2

Chris Wilson chris at chris-wilson.co.uk
Wed Jan 30 01:26:07 UTC 2019


---
 drivers/gpu/drm/i915/i915_gpu_error.h |  2 --
 drivers/gpu/drm/i915/intel_display.c  | 12 +++---------
 drivers/gpu/drm/i915/intel_overlay.c  |  7 ++++---
 3 files changed, 7 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gpu_error.h b/drivers/gpu/drm/i915/i915_gpu_error.h
index 4e797c552b96..211b4531757a 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.h
+++ b/drivers/gpu/drm/i915/i915_gpu_error.h
@@ -202,8 +202,6 @@ struct i915_gpu_error {
 	/* Protected by the above dev->gpu_error.lock. */
 	struct i915_gpu_state *first_error;
 
-	atomic_t pending_fb_pin;
-
 	/**
 	 * State variable controlling the reset flow and count
 	 *
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 539d8915b55f..42c50403a0b9 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -2061,6 +2061,7 @@ intel_pin_and_fence_fb_obj(struct drm_framebuffer *fb,
 	struct i915_vma *vma;
 	unsigned int pinctl;
 	u32 alignment;
+	int srcu;
 
 	WARN_ON(!mutex_is_locked(&dev->struct_mutex));
 
@@ -2082,8 +2083,7 @@ intel_pin_and_fence_fb_obj(struct drm_framebuffer *fb,
 	 * pin/unpin/fence and not more.
 	 */
 	wakeref = intel_runtime_pm_get(dev_priv);
-
-	atomic_inc(&dev_priv->gpu_error.pending_fb_pin);
+	srcu = i915_reset_lock(dev_priv);
 
 	pinctl = 0;
 
@@ -2134,8 +2134,7 @@ intel_pin_and_fence_fb_obj(struct drm_framebuffer *fb,
 
 	i915_vma_get(vma);
 err:
-	atomic_dec(&dev_priv->gpu_error.pending_fb_pin);
-
+	i915_reset_unlock(dev_priv, srcu);
 	intel_runtime_pm_put(dev_priv, wakeref);
 	return vma;
 }
@@ -3802,11 +3801,6 @@ void intel_prepare_reset(struct drm_i915_private *dev_priv)
 	set_bit(I915_RESET_MODESET, &dev_priv->gpu_error.flags);
 	wake_up_all(&dev_priv->gpu_error.wait_queue);
 
-	if (atomic_read(&dev_priv->gpu_error.pending_fb_pin)) {
-		DRM_DEBUG_KMS("Modeset potentially stuck, unbreaking through wedging\n");
-		i915_gem_set_wedged(dev_priv);
-	}
-
 	/*
 	 * Need mode_config.mutex so that we don't
 	 * trample ongoing ->detect() and whatnot.
diff --git a/drivers/gpu/drm/i915/intel_overlay.c b/drivers/gpu/drm/i915/intel_overlay.c
index a9238fd07e30..80d40934ff54 100644
--- a/drivers/gpu/drm/i915/intel_overlay.c
+++ b/drivers/gpu/drm/i915/intel_overlay.c
@@ -751,6 +751,7 @@ static int intel_overlay_do_put_image(struct intel_overlay *overlay,
 	bool scale_changed = false;
 	struct i915_vma *vma;
 	int ret, tmp_width;
+	int srcu;
 
 	lockdep_assert_held(&dev_priv->drm.struct_mutex);
 	WARN_ON(!drm_modeset_is_locked(&dev_priv->drm.mode_config.connection_mutex));
@@ -759,7 +760,7 @@ static int intel_overlay_do_put_image(struct intel_overlay *overlay,
 	if (ret != 0)
 		return ret;
 
-	atomic_inc(&dev_priv->gpu_error.pending_fb_pin);
+	srcu = i915_reset_lock(dev_priv);
 
 	vma = i915_gem_object_pin_to_display_plane(new_bo,
 						   0, NULL, PIN_MAPPABLE);
@@ -840,13 +841,13 @@ static int intel_overlay_do_put_image(struct intel_overlay *overlay,
 	if (ret)
 		goto out_unpin;
 
+	i915_reset_unlock(dev_priv, srcu);
 	return 0;
 
 out_unpin:
 	i915_gem_object_unpin_from_display_plane(vma);
 out_pin_section:
-	atomic_dec(&dev_priv->gpu_error.pending_fb_pin);
-
+	i915_reset_unlock(dev_priv, srcu);
 	return ret;
 }
 
-- 
2.20.1



More information about the Intel-gfx-trybot mailing list