[PATCH 2/2] reset2

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


---
 drivers/gpu/drm/i915/i915_gem.c                  |  1 -
 drivers/gpu/drm/i915/i915_gpu_error.h            | 12 ------------
 drivers/gpu/drm/i915/intel_display.c             | 15 +++------------
 drivers/gpu/drm/i915/intel_overlay.c             | 12 +++---------
 drivers/gpu/drm/i915/selftests/mock_gem_device.c |  1 -
 5 files changed, 6 insertions(+), 35 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index caccff87a2a1..33d3ff48a44f 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -5288,7 +5288,6 @@ int i915_gem_init_early(struct drm_i915_private *dev_priv)
 			  i915_gem_retire_work_handler);
 	INIT_DELAYED_WORK(&dev_priv->gt.idle_work,
 			  i915_gem_idle_work_handler);
-	init_waitqueue_head(&dev_priv->gpu_error.wait_queue);
 	init_waitqueue_head(&dev_priv->gpu_error.reset_queue);
 	mutex_init(&dev_priv->gpu_error.wedge_mutex);
 	init_srcu_struct(&dev_priv->gpu_error.srcu);
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.h b/drivers/gpu/drm/i915/i915_gpu_error.h
index 4e797c552b96..d1ac9193f7fe 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
 	 *
@@ -258,16 +256,6 @@ struct i915_gpu_error {
 
 	struct mutex wedge_mutex; /* serialises wedging/unwedging */
 
-	/**
-	 * Waitqueue to signal when a hang is detected. Used to for waiters
-	 * to release the struct_mutex for the reset to procede.
-	 */
-	wait_queue_head_t wait_queue;
-
-	/**
-	 * Waitqueue to signal when the reset has completed. Used by clients
-	 * that wait for dev_priv->mm.wedged to settle.
-	 */
 	wait_queue_head_t reset_queue;
 
 	struct srcu_struct srcu;
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 539d8915b55f..4346535e5667 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -2083,8 +2083,6 @@ intel_pin_and_fence_fb_obj(struct drm_framebuffer *fb,
 	 */
 	wakeref = intel_runtime_pm_get(dev_priv);
 
-	atomic_inc(&dev_priv->gpu_error.pending_fb_pin);
-
 	pinctl = 0;
 
 	/* Valleyview is definitely limited to scanning out the first
@@ -2134,8 +2132,6 @@ intel_pin_and_fence_fb_obj(struct drm_framebuffer *fb,
 
 	i915_vma_get(vma);
 err:
-	atomic_dec(&dev_priv->gpu_error.pending_fb_pin);
-
 	intel_runtime_pm_put(dev_priv, wakeref);
 	return vma;
 }
@@ -3800,12 +3796,7 @@ void intel_prepare_reset(struct drm_i915_private *dev_priv)
 
 	/* We have a modeset vs reset deadlock, defensively unbreak it. */
 	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);
-	}
+	wake_up_all(&dev_priv->gpu_error.reset_queue);
 
 	/*
 	 * Need mode_config.mutex so that we don't
@@ -12990,7 +12981,7 @@ static void intel_atomic_commit_fence_wait(struct intel_atomic_state *intel_stat
 	for (;;) {
 		prepare_to_wait(&intel_state->commit_ready.wait,
 				&wait_fence, TASK_UNINTERRUPTIBLE);
-		prepare_to_wait(&dev_priv->gpu_error.wait_queue,
+		prepare_to_wait(&dev_priv->gpu_error.reset_queue,
 				&wait_reset, TASK_UNINTERRUPTIBLE);
 
 
@@ -13001,7 +12992,7 @@ static void intel_atomic_commit_fence_wait(struct intel_atomic_state *intel_stat
 		schedule();
 	}
 	finish_wait(&intel_state->commit_ready.wait, &wait_fence);
-	finish_wait(&dev_priv->gpu_error.wait_queue, &wait_reset);
+	finish_wait(&dev_priv->gpu_error.reset_queue, &wait_reset);
 }
 
 static void intel_atomic_cleanup_work(struct work_struct *work)
diff --git a/drivers/gpu/drm/i915/intel_overlay.c b/drivers/gpu/drm/i915/intel_overlay.c
index a9238fd07e30..595246881448 100644
--- a/drivers/gpu/drm/i915/intel_overlay.c
+++ b/drivers/gpu/drm/i915/intel_overlay.c
@@ -759,14 +759,11 @@ 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);
-
 	vma = i915_gem_object_pin_to_display_plane(new_bo,
 						   0, NULL, PIN_MAPPABLE);
-	if (IS_ERR(vma)) {
-		ret = PTR_ERR(vma);
-		goto out_pin_section;
-	}
+	if (IS_ERR(vma))
+		return PTR_ERR(vma);
+
 	intel_fb_obj_flush(new_bo, ORIGIN_DIRTYFB);
 
 	ret = i915_vma_put_fence(vma);
@@ -844,9 +841,6 @@ static int intel_overlay_do_put_image(struct intel_overlay *overlay,
 
 out_unpin:
 	i915_gem_object_unpin_from_display_plane(vma);
-out_pin_section:
-	atomic_dec(&dev_priv->gpu_error.pending_fb_pin);
-
 	return ret;
 }
 
diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
index 074a0d9cbf26..6cf1361f829f 100644
--- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
+++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
@@ -187,7 +187,6 @@ struct drm_i915_private *mock_gem_device(void)
 	mock_uncore_init(i915);
 	i915_gem_init__mm(i915);
 
-	init_waitqueue_head(&i915->gpu_error.wait_queue);
 	init_waitqueue_head(&i915->gpu_error.reset_queue);
 	init_srcu_struct(&i915->gpu_error.srcu);
 	mutex_init(&i915->gpu_error.wedge_mutex);
-- 
2.20.1



More information about the Intel-gfx-trybot mailing list