All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] drm/i915/execlists: Always clear preempt status on cancelling all
@ 2018-07-16 12:48 Chris Wilson
  2018-07-16 12:48 ` [PATCH 2/2] drm/i915/selftests: Force a preemption hang Chris Wilson
                   ` (8 more replies)
  0 siblings, 9 replies; 14+ messages in thread
From: Chris Wilson @ 2018-07-16 12:48 UTC (permalink / raw)
  To: intel-gfx

On reset/wedging, we cancel all pending replies from the HW and we also
want to cancel an outstanding preemption event. Since we use the same
function to cancel the pending replies for reset and for a preemption
event, we can simply clear the active tracking for all.

v2: Keep execlists_user_end() markup for wedging

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/intel_guc_submission.c | 2 --
 drivers/gpu/drm/i915/intel_lrc.c            | 5 ++---
 2 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_guc_submission.c b/drivers/gpu/drm/i915/intel_guc_submission.c
index cc444dc5f3ad..94d0674ea3c6 100644
--- a/drivers/gpu/drm/i915/intel_guc_submission.c
+++ b/drivers/gpu/drm/i915/intel_guc_submission.c
@@ -633,8 +633,6 @@ static void complete_preempt_context(struct intel_engine_cs *engine)
 
 	wait_for_guc_preempt_report(engine);
 	intel_write_status_page(engine, I915_GEM_HWS_PREEMPT_INDEX, 0);
-
-	execlists_clear_active(execlists, EXECLISTS_ACTIVE_PREEMPT);
 }
 
 /**
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index 6fef9d130d55..1fe5481470c3 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -563,8 +563,6 @@ static void complete_preempt_context(struct intel_engine_execlists *execlists)
 	__unwind_incomplete_requests(container_of(execlists,
 						  struct intel_engine_cs,
 						  execlists));
-
-	execlists_clear_active(execlists, EXECLISTS_ACTIVE_PREEMPT);
 }
 
 static void execlists_dequeue(struct intel_engine_cs *engine)
@@ -792,7 +790,7 @@ execlists_cancel_port_requests(struct intel_engine_execlists * const execlists)
 		port++;
 	}
 
-	execlists_user_end(execlists);
+	execlists->active = 0;
 }
 
 static void reset_csb_pointers(struct intel_engine_execlists *execlists)
@@ -843,6 +841,7 @@ static void execlists_cancel_requests(struct intel_engine_cs *engine)
 
 	/* Cancel the requests on the HW and clear the ELSP tracker. */
 	execlists_cancel_port_requests(execlists);
+	execlists_user_end(execlists);
 
 	/* Mark all executing requests as skipped. */
 	list_for_each_entry(rq, &engine->timeline.requests, link) {
-- 
2.18.0

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

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

* [PATCH 2/2] drm/i915/selftests: Force a preemption hang
  2018-07-16 12:48 [PATCH 1/2] drm/i915/execlists: Always clear preempt status on cancelling all Chris Wilson
@ 2018-07-16 12:48 ` Chris Wilson
  2018-07-16 12:56   ` Tvrtko Ursulin
  2018-07-16 13:21   ` [PATCH] " Chris Wilson
  2018-07-16 12:53 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/2] drm/i915/execlists: Always clear preempt status on cancelling all Patchwork
                   ` (7 subsequent siblings)
  8 siblings, 2 replies; 14+ messages in thread
From: Chris Wilson @ 2018-07-16 12:48 UTC (permalink / raw)
  To: intel-gfx

Inject a failure into preemption completion to pretend as if the HW
didn't successfully handle preemption and we are forced to do a reset in
the middle.

v2: Wait for preemption, to force testing with the missed preemption.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 drivers/gpu/drm/i915/intel_guc_submission.c |   3 +
 drivers/gpu/drm/i915/intel_lrc.c            |   3 +
 drivers/gpu/drm/i915/intel_ringbuffer.h     |  27 +++++
 drivers/gpu/drm/i915/selftests/intel_lrc.c  | 115 ++++++++++++++++++++
 4 files changed, 148 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_guc_submission.c b/drivers/gpu/drm/i915/intel_guc_submission.c
index 94d0674ea3c6..0fa1eb0bfff5 100644
--- a/drivers/gpu/drm/i915/intel_guc_submission.c
+++ b/drivers/gpu/drm/i915/intel_guc_submission.c
@@ -628,6 +628,9 @@ static void complete_preempt_context(struct intel_engine_cs *engine)
 
 	GEM_BUG_ON(!execlists_is_active(execlists, EXECLISTS_ACTIVE_PREEMPT));
 
+	if (inject_preempt_hang(execlists))
+		return;
+
 	execlists_cancel_port_requests(execlists);
 	execlists_unwind_incomplete_requests(execlists);
 
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index 1fe5481470c3..8a7d5c12d8aa 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -559,6 +559,9 @@ static void complete_preempt_context(struct intel_engine_execlists *execlists)
 {
 	GEM_BUG_ON(!execlists_is_active(execlists, EXECLISTS_ACTIVE_PREEMPT));
 
+	if (inject_preempt_hang(execlists))
+		return;
+
 	execlists_cancel_port_requests(execlists);
 	__unwind_incomplete_requests(container_of(execlists,
 						  struct intel_engine_cs,
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.h b/drivers/gpu/drm/i915/intel_ringbuffer.h
index d1eee08e5f6b..85792de154b9 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.h
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.h
@@ -193,6 +193,11 @@ struct i915_priolist {
 	int priority;
 };
 
+struct st_preempt_hang {
+	struct completion completion;
+	bool inject_hang;
+};
+
 /**
  * struct intel_engine_execlists - execlist submission queue and port state
  *
@@ -333,6 +338,8 @@ struct intel_engine_execlists {
 	 * @csb_head: context status buffer head
 	 */
 	u8 csb_head;
+
+	I915_SELFTEST_DECLARE(struct st_preempt_hang preempt_hang;)
 };
 
 #define INTEL_ENGINE_CS_MAX_NAME 8
@@ -1149,4 +1156,24 @@ void intel_disable_engine_stats(struct intel_engine_cs *engine);
 
 ktime_t intel_engine_get_busy_time(struct intel_engine_cs *engine);
 
+#if IS_ENABLED(CONFIG_DRM_I915_SELFTEST)
+
+static inline bool inject_preempt_hang(struct intel_engine_execlists *execlists)
+{
+	if (!execlists->preempt_hang.inject_hang)
+		return false;
+
+	completion_done(&execlists->preempt_hang.completion);
+	return true;
+}
+
+#else
+
+static inline bool inject_preempt_hang(struct intel_engine_execlists *execlists)
+{
+	return false;
+}
+
+#endif
+
 #endif /* _INTEL_RINGBUFFER_H_ */
diff --git a/drivers/gpu/drm/i915/selftests/intel_lrc.c b/drivers/gpu/drm/i915/selftests/intel_lrc.c
index 636cb68191e3..1843d331f4f1 100644
--- a/drivers/gpu/drm/i915/selftests/intel_lrc.c
+++ b/drivers/gpu/drm/i915/selftests/intel_lrc.c
@@ -451,12 +451,127 @@ static int live_late_preempt(void *arg)
 	goto err_ctx_lo;
 }
 
+static int live_preempt_hang(void *arg)
+{
+	struct drm_i915_private *i915 = arg;
+	struct i915_gem_context *ctx_hi, *ctx_lo;
+	struct spinner spin_hi, spin_lo;
+	struct intel_engine_cs *engine;
+	enum intel_engine_id id;
+	int err = -ENOMEM;
+
+	if (!HAS_LOGICAL_RING_PREEMPTION(i915))
+		return 0;
+
+	if (!intel_has_reset_engine(i915))
+		return 0;
+
+	mutex_lock(&i915->drm.struct_mutex);
+
+	if (spinner_init(&spin_hi, i915))
+		goto err_unlock;
+
+	if (spinner_init(&spin_lo, i915))
+		goto err_spin_hi;
+
+	ctx_hi = kernel_context(i915);
+	if (!ctx_hi)
+		goto err_spin_lo;
+	ctx_hi->sched.priority = I915_CONTEXT_MAX_USER_PRIORITY;
+
+	ctx_lo = kernel_context(i915);
+	if (!ctx_lo)
+		goto err_ctx_hi;
+	ctx_lo->sched.priority = I915_CONTEXT_MIN_USER_PRIORITY;
+
+	for_each_engine(engine, i915, id) {
+		struct i915_request *rq;
+
+		if (!intel_engine_has_preemption(engine))
+			continue;
+
+		rq = spinner_create_request(&spin_lo, ctx_lo, engine,
+					    MI_ARB_CHECK);
+		if (IS_ERR(rq)) {
+			err = PTR_ERR(rq);
+			goto err_ctx_lo;
+		}
+
+		i915_request_add(rq);
+		if (!wait_for_spinner(&spin_lo, rq)) {
+			GEM_TRACE("lo spinner failed to start\n");
+			GEM_TRACE_DUMP();
+			i915_gem_set_wedged(i915);
+			err = -EIO;
+			goto err_ctx_lo;
+		}
+
+		rq = spinner_create_request(&spin_hi, ctx_hi, engine,
+					    MI_ARB_CHECK);
+		if (IS_ERR(rq)) {
+			spinner_end(&spin_lo);
+			err = PTR_ERR(rq);
+			goto err_ctx_lo;
+		}
+
+		init_completion(&engine->execlists.preempt_hang.completion);
+		engine->execlists.preempt_hang.inject_hang = true;
+
+		i915_request_add(rq);
+
+		if (!wait_for_completion_timeout(&engine->execlists.preempt_hang.completion,
+						HZ / 10)) {
+			pr_err("Preemption did not occur within timeout!");
+			GEM_TRACE_DUMP();
+			i915_gem_set_wedged(i915);
+			err = -EIO;
+			goto err_ctx_lo;
+		}
+
+		set_bit(I915_RESET_ENGINE + id, &i915->gpu_error.flags);
+		i915_reset_engine(engine, NULL);
+		clear_bit(I915_RESET_ENGINE + id, &i915->gpu_error.flags);
+
+		engine->execlists.preempt_hang.inject_hang = false;
+
+		if (!wait_for_spinner(&spin_hi, rq)) {
+			GEM_TRACE("hi spinner failed to start\n");
+			GEM_TRACE_DUMP();
+			i915_gem_set_wedged(i915);
+			err = -EIO;
+			goto err_ctx_lo;
+		}
+
+		spinner_end(&spin_hi);
+		spinner_end(&spin_lo);
+		if (igt_flush_test(i915, I915_WAIT_LOCKED)) {
+			err = -EIO;
+			goto err_ctx_lo;
+		}
+	}
+
+	err = 0;
+err_ctx_lo:
+	kernel_context_close(ctx_lo);
+err_ctx_hi:
+	kernel_context_close(ctx_hi);
+err_spin_lo:
+	spinner_fini(&spin_lo);
+err_spin_hi:
+	spinner_fini(&spin_hi);
+err_unlock:
+	igt_flush_test(i915, I915_WAIT_LOCKED);
+	mutex_unlock(&i915->drm.struct_mutex);
+	return err;
+}
+
 int intel_execlists_live_selftests(struct drm_i915_private *i915)
 {
 	static const struct i915_subtest tests[] = {
 		SUBTEST(live_sanitycheck),
 		SUBTEST(live_preempt),
 		SUBTEST(live_late_preempt),
+		SUBTEST(live_preempt_hang),
 	};
 
 	if (!HAS_EXECLISTS(i915))
-- 
2.18.0

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

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

* ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/2] drm/i915/execlists: Always clear preempt status on cancelling all
  2018-07-16 12:48 [PATCH 1/2] drm/i915/execlists: Always clear preempt status on cancelling all Chris Wilson
  2018-07-16 12:48 ` [PATCH 2/2] drm/i915/selftests: Force a preemption hang Chris Wilson
@ 2018-07-16 12:53 ` Patchwork
  2018-07-16 12:54 ` [PATCH v3] " Chris Wilson
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2018-07-16 12:53 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: series starting with [1/2] drm/i915/execlists: Always clear preempt status on cancelling all
URL   : https://patchwork.freedesktop.org/series/46597/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
3c43096cb418 drm/i915/execlists: Always clear preempt status on cancelling all
4d7770b00acc drm/i915/selftests: Force a preemption hang
-:170: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#170: FILE: drivers/gpu/drm/i915/selftests/intel_lrc.c:523:
+		if (!wait_for_completion_timeout(&engine->execlists.preempt_hang.completion,
+						HZ / 10)) {

total: 0 errors, 0 warnings, 1 checks, 188 lines checked

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

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

* [PATCH v3] drm/i915/execlists: Always clear preempt status on cancelling all
  2018-07-16 12:48 [PATCH 1/2] drm/i915/execlists: Always clear preempt status on cancelling all Chris Wilson
  2018-07-16 12:48 ` [PATCH 2/2] drm/i915/selftests: Force a preemption hang Chris Wilson
  2018-07-16 12:53 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/2] drm/i915/execlists: Always clear preempt status on cancelling all Patchwork
@ 2018-07-16 12:54 ` Chris Wilson
  2018-07-16 12:55   ` Tvrtko Ursulin
  2018-07-16 13:15 ` ✗ Fi.CI.BAT: failure for series starting with [1/2] " Patchwork
                   ` (5 subsequent siblings)
  8 siblings, 1 reply; 14+ messages in thread
From: Chris Wilson @ 2018-07-16 12:54 UTC (permalink / raw)
  To: intel-gfx

On reset/wedging, we cancel all pending replies from the HW and we also
want to cancel an outstanding preemption event. Since we use the same
function to cancel the pending replies for reset and for a preemption
event, we can simply clear the active tracking for all.

v2: Keep execlists_user_end() markup for wedging
v3: Move assignment to inline to hide the bare assignment.

Fixes: 60a943245413 ("drm/i915/execlists: Drop clear_gtiir() on GPU reset")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
 drivers/gpu/drm/i915/intel_guc_submission.c | 2 --
 drivers/gpu/drm/i915/intel_lrc.c            | 5 ++---
 drivers/gpu/drm/i915/intel_ringbuffer.h     | 6 ++++++
 3 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_guc_submission.c b/drivers/gpu/drm/i915/intel_guc_submission.c
index cc444dc5f3ad..94d0674ea3c6 100644
--- a/drivers/gpu/drm/i915/intel_guc_submission.c
+++ b/drivers/gpu/drm/i915/intel_guc_submission.c
@@ -633,8 +633,6 @@ static void complete_preempt_context(struct intel_engine_cs *engine)
 
 	wait_for_guc_preempt_report(engine);
 	intel_write_status_page(engine, I915_GEM_HWS_PREEMPT_INDEX, 0);
-
-	execlists_clear_active(execlists, EXECLISTS_ACTIVE_PREEMPT);
 }
 
 /**
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index 6fef9d130d55..c0ee14f86754 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -563,8 +563,6 @@ static void complete_preempt_context(struct intel_engine_execlists *execlists)
 	__unwind_incomplete_requests(container_of(execlists,
 						  struct intel_engine_cs,
 						  execlists));
-
-	execlists_clear_active(execlists, EXECLISTS_ACTIVE_PREEMPT);
 }
 
 static void execlists_dequeue(struct intel_engine_cs *engine)
@@ -792,7 +790,7 @@ execlists_cancel_port_requests(struct intel_engine_execlists * const execlists)
 		port++;
 	}
 
-	execlists_user_end(execlists);
+	execlists_clear_all_active(execlists);
 }
 
 static void reset_csb_pointers(struct intel_engine_execlists *execlists)
@@ -843,6 +841,7 @@ static void execlists_cancel_requests(struct intel_engine_cs *engine)
 
 	/* Cancel the requests on the HW and clear the ELSP tracker. */
 	execlists_cancel_port_requests(execlists);
+	execlists_user_end(execlists);
 
 	/* Mark all executing requests as skipped. */
 	list_for_each_entry(rq, &engine->timeline.requests, link) {
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.h b/drivers/gpu/drm/i915/intel_ringbuffer.h
index d1eee08e5f6b..665b59ba1f45 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.h
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.h
@@ -683,6 +683,12 @@ execlists_clear_active(struct intel_engine_execlists *execlists,
 	__clear_bit(bit, (unsigned long *)&execlists->active);
 }
 
+static inline void
+execlists_clear_all_active(struct intel_engine_execlists *execlists)
+{
+	execlists->active = 0;
+}
+
 static inline bool
 execlists_is_active(const struct intel_engine_execlists *execlists,
 		    unsigned int bit)
-- 
2.18.0

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

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

* Re: [PATCH v3] drm/i915/execlists: Always clear preempt status on cancelling all
  2018-07-16 12:54 ` [PATCH v3] " Chris Wilson
@ 2018-07-16 12:55   ` Tvrtko Ursulin
  2018-07-16 12:57     ` Chris Wilson
  0 siblings, 1 reply; 14+ messages in thread
From: Tvrtko Ursulin @ 2018-07-16 12:55 UTC (permalink / raw)
  To: Chris Wilson, intel-gfx


On 16/07/2018 13:54, Chris Wilson wrote:
> On reset/wedging, we cancel all pending replies from the HW and we also
> want to cancel an outstanding preemption event. Since we use the same
> function to cancel the pending replies for reset and for a preemption
> event, we can simply clear the active tracking for all.
> 
> v2: Keep execlists_user_end() markup for wedging
> v3: Move assignment to inline to hide the bare assignment.
> 
> Fixes: 60a943245413 ("drm/i915/execlists: Drop clear_gtiir() on GPU reset")
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> ---
>   drivers/gpu/drm/i915/intel_guc_submission.c | 2 --
>   drivers/gpu/drm/i915/intel_lrc.c            | 5 ++---
>   drivers/gpu/drm/i915/intel_ringbuffer.h     | 6 ++++++
>   3 files changed, 8 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_guc_submission.c b/drivers/gpu/drm/i915/intel_guc_submission.c
> index cc444dc5f3ad..94d0674ea3c6 100644
> --- a/drivers/gpu/drm/i915/intel_guc_submission.c
> +++ b/drivers/gpu/drm/i915/intel_guc_submission.c
> @@ -633,8 +633,6 @@ static void complete_preempt_context(struct intel_engine_cs *engine)
>   
>   	wait_for_guc_preempt_report(engine);
>   	intel_write_status_page(engine, I915_GEM_HWS_PREEMPT_INDEX, 0);
> -
> -	execlists_clear_active(execlists, EXECLISTS_ACTIVE_PREEMPT);
>   }
>   
>   /**
> diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
> index 6fef9d130d55..c0ee14f86754 100644
> --- a/drivers/gpu/drm/i915/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/intel_lrc.c
> @@ -563,8 +563,6 @@ static void complete_preempt_context(struct intel_engine_execlists *execlists)
>   	__unwind_incomplete_requests(container_of(execlists,
>   						  struct intel_engine_cs,
>   						  execlists));
> -
> -	execlists_clear_active(execlists, EXECLISTS_ACTIVE_PREEMPT);
>   }
>   
>   static void execlists_dequeue(struct intel_engine_cs *engine)
> @@ -792,7 +790,7 @@ execlists_cancel_port_requests(struct intel_engine_execlists * const execlists)
>   		port++;
>   	}
>   
> -	execlists_user_end(execlists);
> +	execlists_clear_all_active(execlists);
>   }
>   
>   static void reset_csb_pointers(struct intel_engine_execlists *execlists)
> @@ -843,6 +841,7 @@ static void execlists_cancel_requests(struct intel_engine_cs *engine)
>   
>   	/* Cancel the requests on the HW and clear the ELSP tracker. */
>   	execlists_cancel_port_requests(execlists);
> +	execlists_user_end(execlists);
>   
>   	/* Mark all executing requests as skipped. */
>   	list_for_each_entry(rq, &engine->timeline.requests, link) {
> diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.h b/drivers/gpu/drm/i915/intel_ringbuffer.h
> index d1eee08e5f6b..665b59ba1f45 100644
> --- a/drivers/gpu/drm/i915/intel_ringbuffer.h
> +++ b/drivers/gpu/drm/i915/intel_ringbuffer.h
> @@ -683,6 +683,12 @@ execlists_clear_active(struct intel_engine_execlists *execlists,
>   	__clear_bit(bit, (unsigned long *)&execlists->active);
>   }
>   
> +static inline void
> +execlists_clear_all_active(struct intel_engine_execlists *execlists)
> +{
> +	execlists->active = 0;
> +}
> +
>   static inline bool
>   execlists_is_active(const struct intel_engine_execlists *execlists,
>   		    unsigned int bit)
> 

Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Regards,

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

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

* Re: [PATCH 2/2] drm/i915/selftests: Force a preemption hang
  2018-07-16 12:48 ` [PATCH 2/2] drm/i915/selftests: Force a preemption hang Chris Wilson
@ 2018-07-16 12:56   ` Tvrtko Ursulin
  2018-07-16 13:21   ` [PATCH] " Chris Wilson
  1 sibling, 0 replies; 14+ messages in thread
From: Tvrtko Ursulin @ 2018-07-16 12:56 UTC (permalink / raw)
  To: Chris Wilson, intel-gfx


On 16/07/2018 13:48, Chris Wilson wrote:
> Inject a failure into preemption completion to pretend as if the HW
> didn't successfully handle preemption and we are forced to do a reset in
> the middle.
> 
> v2: Wait for preemption, to force testing with the missed preemption.
> 
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> ---
>   drivers/gpu/drm/i915/intel_guc_submission.c |   3 +
>   drivers/gpu/drm/i915/intel_lrc.c            |   3 +
>   drivers/gpu/drm/i915/intel_ringbuffer.h     |  27 +++++
>   drivers/gpu/drm/i915/selftests/intel_lrc.c  | 115 ++++++++++++++++++++
>   4 files changed, 148 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/intel_guc_submission.c b/drivers/gpu/drm/i915/intel_guc_submission.c
> index 94d0674ea3c6..0fa1eb0bfff5 100644
> --- a/drivers/gpu/drm/i915/intel_guc_submission.c
> +++ b/drivers/gpu/drm/i915/intel_guc_submission.c
> @@ -628,6 +628,9 @@ static void complete_preempt_context(struct intel_engine_cs *engine)
>   
>   	GEM_BUG_ON(!execlists_is_active(execlists, EXECLISTS_ACTIVE_PREEMPT));
>   
> +	if (inject_preempt_hang(execlists))
> +		return;
> +
>   	execlists_cancel_port_requests(execlists);
>   	execlists_unwind_incomplete_requests(execlists);
>   
> diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
> index 1fe5481470c3..8a7d5c12d8aa 100644
> --- a/drivers/gpu/drm/i915/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/intel_lrc.c
> @@ -559,6 +559,9 @@ static void complete_preempt_context(struct intel_engine_execlists *execlists)
>   {
>   	GEM_BUG_ON(!execlists_is_active(execlists, EXECLISTS_ACTIVE_PREEMPT));
>   
> +	if (inject_preempt_hang(execlists))
> +		return;
> +
>   	execlists_cancel_port_requests(execlists);
>   	__unwind_incomplete_requests(container_of(execlists,
>   						  struct intel_engine_cs,
> diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.h b/drivers/gpu/drm/i915/intel_ringbuffer.h
> index d1eee08e5f6b..85792de154b9 100644
> --- a/drivers/gpu/drm/i915/intel_ringbuffer.h
> +++ b/drivers/gpu/drm/i915/intel_ringbuffer.h
> @@ -193,6 +193,11 @@ struct i915_priolist {
>   	int priority;
>   };
>   
> +struct st_preempt_hang {
> +	struct completion completion;
> +	bool inject_hang;
> +};
> +
>   /**
>    * struct intel_engine_execlists - execlist submission queue and port state
>    *
> @@ -333,6 +338,8 @@ struct intel_engine_execlists {
>   	 * @csb_head: context status buffer head
>   	 */
>   	u8 csb_head;
> +
> +	I915_SELFTEST_DECLARE(struct st_preempt_hang preempt_hang;)
>   };
>   
>   #define INTEL_ENGINE_CS_MAX_NAME 8
> @@ -1149,4 +1156,24 @@ void intel_disable_engine_stats(struct intel_engine_cs *engine);
>   
>   ktime_t intel_engine_get_busy_time(struct intel_engine_cs *engine);
>   
> +#if IS_ENABLED(CONFIG_DRM_I915_SELFTEST)
> +
> +static inline bool inject_preempt_hang(struct intel_engine_execlists *execlists)
> +{
> +	if (!execlists->preempt_hang.inject_hang)
> +		return false;
> +
> +	completion_done(&execlists->preempt_hang.completion);
> +	return true;
> +}
> +
> +#else
> +
> +static inline bool inject_preempt_hang(struct intel_engine_execlists *execlists)
> +{
> +	return false;
> +}
> +
> +#endif
> +
>   #endif /* _INTEL_RINGBUFFER_H_ */
> diff --git a/drivers/gpu/drm/i915/selftests/intel_lrc.c b/drivers/gpu/drm/i915/selftests/intel_lrc.c
> index 636cb68191e3..1843d331f4f1 100644
> --- a/drivers/gpu/drm/i915/selftests/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/selftests/intel_lrc.c
> @@ -451,12 +451,127 @@ static int live_late_preempt(void *arg)
>   	goto err_ctx_lo;
>   }
>   
> +static int live_preempt_hang(void *arg)
> +{
> +	struct drm_i915_private *i915 = arg;
> +	struct i915_gem_context *ctx_hi, *ctx_lo;
> +	struct spinner spin_hi, spin_lo;
> +	struct intel_engine_cs *engine;
> +	enum intel_engine_id id;
> +	int err = -ENOMEM;
> +
> +	if (!HAS_LOGICAL_RING_PREEMPTION(i915))
> +		return 0;
> +
> +	if (!intel_has_reset_engine(i915))
> +		return 0;
> +
> +	mutex_lock(&i915->drm.struct_mutex);
> +
> +	if (spinner_init(&spin_hi, i915))
> +		goto err_unlock;
> +
> +	if (spinner_init(&spin_lo, i915))
> +		goto err_spin_hi;
> +
> +	ctx_hi = kernel_context(i915);
> +	if (!ctx_hi)
> +		goto err_spin_lo;
> +	ctx_hi->sched.priority = I915_CONTEXT_MAX_USER_PRIORITY;
> +
> +	ctx_lo = kernel_context(i915);
> +	if (!ctx_lo)
> +		goto err_ctx_hi;
> +	ctx_lo->sched.priority = I915_CONTEXT_MIN_USER_PRIORITY;
> +
> +	for_each_engine(engine, i915, id) {
> +		struct i915_request *rq;
> +
> +		if (!intel_engine_has_preemption(engine))
> +			continue;
> +
> +		rq = spinner_create_request(&spin_lo, ctx_lo, engine,
> +					    MI_ARB_CHECK);
> +		if (IS_ERR(rq)) {
> +			err = PTR_ERR(rq);
> +			goto err_ctx_lo;
> +		}
> +
> +		i915_request_add(rq);
> +		if (!wait_for_spinner(&spin_lo, rq)) {
> +			GEM_TRACE("lo spinner failed to start\n");
> +			GEM_TRACE_DUMP();
> +			i915_gem_set_wedged(i915);
> +			err = -EIO;
> +			goto err_ctx_lo;
> +		}
> +
> +		rq = spinner_create_request(&spin_hi, ctx_hi, engine,
> +					    MI_ARB_CHECK);
> +		if (IS_ERR(rq)) {
> +			spinner_end(&spin_lo);
> +			err = PTR_ERR(rq);
> +			goto err_ctx_lo;
> +		}
> +
> +		init_completion(&engine->execlists.preempt_hang.completion);
> +		engine->execlists.preempt_hang.inject_hang = true;
> +
> +		i915_request_add(rq);
> +
> +		if (!wait_for_completion_timeout(&engine->execlists.preempt_hang.completion,
> +						HZ / 10)) {
> +			pr_err("Preemption did not occur within timeout!");
> +			GEM_TRACE_DUMP();
> +			i915_gem_set_wedged(i915);
> +			err = -EIO;
> +			goto err_ctx_lo;
> +		}
> +
> +		set_bit(I915_RESET_ENGINE + id, &i915->gpu_error.flags);
> +		i915_reset_engine(engine, NULL);
> +		clear_bit(I915_RESET_ENGINE + id, &i915->gpu_error.flags);
> +
> +		engine->execlists.preempt_hang.inject_hang = false;
> +
> +		if (!wait_for_spinner(&spin_hi, rq)) {
> +			GEM_TRACE("hi spinner failed to start\n");
> +			GEM_TRACE_DUMP();
> +			i915_gem_set_wedged(i915);
> +			err = -EIO;
> +			goto err_ctx_lo;
> +		}
> +
> +		spinner_end(&spin_hi);
> +		spinner_end(&spin_lo);
> +		if (igt_flush_test(i915, I915_WAIT_LOCKED)) {
> +			err = -EIO;
> +			goto err_ctx_lo;
> +		}
> +	}
> +
> +	err = 0;
> +err_ctx_lo:
> +	kernel_context_close(ctx_lo);
> +err_ctx_hi:
> +	kernel_context_close(ctx_hi);
> +err_spin_lo:
> +	spinner_fini(&spin_lo);
> +err_spin_hi:
> +	spinner_fini(&spin_hi);
> +err_unlock:
> +	igt_flush_test(i915, I915_WAIT_LOCKED);
> +	mutex_unlock(&i915->drm.struct_mutex);
> +	return err;
> +}
> +
>   int intel_execlists_live_selftests(struct drm_i915_private *i915)
>   {
>   	static const struct i915_subtest tests[] = {
>   		SUBTEST(live_sanitycheck),
>   		SUBTEST(live_preempt),
>   		SUBTEST(live_late_preempt),
> +		SUBTEST(live_preempt_hang),
>   	};
>   
>   	if (!HAS_EXECLISTS(i915))
> 

Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Regards,

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

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

* Re: [PATCH v3] drm/i915/execlists: Always clear preempt status on cancelling all
  2018-07-16 12:55   ` Tvrtko Ursulin
@ 2018-07-16 12:57     ` Chris Wilson
  0 siblings, 0 replies; 14+ messages in thread
From: Chris Wilson @ 2018-07-16 12:57 UTC (permalink / raw)
  To: Tvrtko Ursulin, intel-gfx

Quoting Tvrtko Ursulin (2018-07-16 13:55:55)
> 
> On 16/07/2018 13:54, Chris Wilson wrote:
> > On reset/wedging, we cancel all pending replies from the HW and we also
> > want to cancel an outstanding preemption event. Since we use the same
> > function to cancel the pending replies for reset and for a preemption
> > event, we can simply clear the active tracking for all.
> > 
> > v2: Keep execlists_user_end() markup for wedging
> > v3: Move assignment to inline to hide the bare assignment.
> > 
> > Fixes: 60a943245413 ("drm/i915/execlists: Drop clear_gtiir() on GPU reset")
> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> > Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> > ---
> >   drivers/gpu/drm/i915/intel_guc_submission.c | 2 --
> >   drivers/gpu/drm/i915/intel_lrc.c            | 5 ++---
> >   drivers/gpu/drm/i915/intel_ringbuffer.h     | 6 ++++++
> >   3 files changed, 8 insertions(+), 5 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_guc_submission.c b/drivers/gpu/drm/i915/intel_guc_submission.c
> > index cc444dc5f3ad..94d0674ea3c6 100644
> > --- a/drivers/gpu/drm/i915/intel_guc_submission.c
> > +++ b/drivers/gpu/drm/i915/intel_guc_submission.c
> > @@ -633,8 +633,6 @@ static void complete_preempt_context(struct intel_engine_cs *engine)
> >   
> >       wait_for_guc_preempt_report(engine);
> >       intel_write_status_page(engine, I915_GEM_HWS_PREEMPT_INDEX, 0);
> > -
> > -     execlists_clear_active(execlists, EXECLISTS_ACTIVE_PREEMPT);
> >   }
> >   
> >   /**
> > diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
> > index 6fef9d130d55..c0ee14f86754 100644
> > --- a/drivers/gpu/drm/i915/intel_lrc.c
> > +++ b/drivers/gpu/drm/i915/intel_lrc.c
> > @@ -563,8 +563,6 @@ static void complete_preempt_context(struct intel_engine_execlists *execlists)
> >       __unwind_incomplete_requests(container_of(execlists,
> >                                                 struct intel_engine_cs,
> >                                                 execlists));
> > -
> > -     execlists_clear_active(execlists, EXECLISTS_ACTIVE_PREEMPT);
> >   }
> >   
> >   static void execlists_dequeue(struct intel_engine_cs *engine)
> > @@ -792,7 +790,7 @@ execlists_cancel_port_requests(struct intel_engine_execlists * const execlists)
> >               port++;
> >       }
> >   
> > -     execlists_user_end(execlists);
> > +     execlists_clear_all_active(execlists);
> >   }
> >   
> >   static void reset_csb_pointers(struct intel_engine_execlists *execlists)
> > @@ -843,6 +841,7 @@ static void execlists_cancel_requests(struct intel_engine_cs *engine)
> >   
> >       /* Cancel the requests on the HW and clear the ELSP tracker. */
> >       execlists_cancel_port_requests(execlists);
> > +     execlists_user_end(execlists);
> >   
> >       /* Mark all executing requests as skipped. */
> >       list_for_each_entry(rq, &engine->timeline.requests, link) {
> > diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.h b/drivers/gpu/drm/i915/intel_ringbuffer.h
> > index d1eee08e5f6b..665b59ba1f45 100644
> > --- a/drivers/gpu/drm/i915/intel_ringbuffer.h
> > +++ b/drivers/gpu/drm/i915/intel_ringbuffer.h
> > @@ -683,6 +683,12 @@ execlists_clear_active(struct intel_engine_execlists *execlists,
> >       __clear_bit(bit, (unsigned long *)&execlists->active);
> >   }
> >   
> > +static inline void
> > +execlists_clear_all_active(struct intel_engine_execlists *execlists)
> > +{
> > +     execlists->active = 0;
> > +}
> > +
> >   static inline bool
> >   execlists_is_active(const struct intel_engine_execlists *execlists,
> >                   unsigned int bit)
> > 
> 
> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

There's an alternate minimalistic v4, so take your pick.
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* ✗ Fi.CI.BAT: failure for series starting with [1/2] drm/i915/execlists: Always clear preempt status on cancelling all
  2018-07-16 12:48 [PATCH 1/2] drm/i915/execlists: Always clear preempt status on cancelling all Chris Wilson
                   ` (2 preceding siblings ...)
  2018-07-16 12:54 ` [PATCH v3] " Chris Wilson
@ 2018-07-16 13:15 ` Patchwork
  2018-07-16 13:19 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [v3] drm/i915/execlists: Always clear preempt status on cancelling all (rev2) Patchwork
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2018-07-16 13:15 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: series starting with [1/2] drm/i915/execlists: Always clear preempt status on cancelling all
URL   : https://patchwork.freedesktop.org/series/46597/
State : failure

== Summary ==

= CI Bug Log - changes from CI_DRM_4493 -> Patchwork_9672 =

== Summary - FAILURE ==

  Serious unknown changes coming with Patchwork_9672 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_9672, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/46597/revisions/1/mbox/

== Possible new issues ==

  Here are the unknown changes that may have been introduced in Patchwork_9672:

  === IGT changes ===

    ==== Possible regressions ====

    igt@drv_selftest@live_execlists:
      fi-whl-u:           PASS -> DMESG-FAIL
      fi-cfl-8700k:       PASS -> DMESG-FAIL
      {fi-cfl-8109u}:     PASS -> DMESG-FAIL
      fi-glk-j4005:       PASS -> DMESG-FAIL
      fi-kbl-7567u:       PASS -> DMESG-FAIL
      fi-kbl-r:           PASS -> DMESG-FAIL
      fi-cfl-s3:          PASS -> DMESG-FAIL
      fi-kbl-7560u:       PASS -> DMESG-FAIL +1
      fi-bxt-dsi:         PASS -> DMESG-FAIL
      fi-kbl-guc:         PASS -> DMESG-FAIL
      fi-kbl-7500u:       PASS -> DMESG-FAIL
      fi-bxt-j4205:       PASS -> DMESG-FAIL
      fi-kbl-x1275:       PASS -> DMESG-FAIL
      fi-skl-gvtdvm:      PASS -> DMESG-FAIL
      fi-glk-dsi:         PASS -> DMESG-FAIL
      fi-cfl-guc:         PASS -> DMESG-FAIL

    igt@drv_selftest@live_workarounds:
      fi-bsw-n3050:       PASS -> DMESG-FAIL

    
== Known issues ==

  Here are the changes found in Patchwork_9672 that come from known issues:

  === IGT changes ===

    ==== Issues hit ====

    igt@drv_selftest@live_execlists:
      fi-skl-guc:         PASS -> DMESG-FAIL (fdo#107174)
      fi-skl-6260u:       PASS -> DMESG-FAIL (fdo#107174)
      fi-skl-6700k2:      PASS -> DMESG-FAIL (fdo#107174)
      fi-skl-6770hq:      PASS -> DMESG-FAIL (fdo#107174)
      fi-skl-6600u:       PASS -> DMESG-FAIL (fdo#107174)
      fi-skl-6700hq:      NOTRUN -> DMESG-FAIL (fdo#107174)

    igt@drv_selftest@live_hangcheck:
      fi-bxt-dsi:         PASS -> DMESG-FAIL (fdo#106560)

    igt@kms_frontbuffer_tracking@basic:
      fi-hsw-peppy:       PASS -> DMESG-FAIL (fdo#102614, fdo#106103)

    
    ==== Possible fixes ====

    igt@drv_selftest@live_hangcheck:
      fi-bdw-5557u:       DMESG-FAIL (fdo#106560) -> PASS

    igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
      fi-snb-2520m:       INCOMPLETE (fdo#103713) -> PASS

    
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  fdo#102614 https://bugs.freedesktop.org/show_bug.cgi?id=102614
  fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713
  fdo#106103 https://bugs.freedesktop.org/show_bug.cgi?id=106103
  fdo#106560 https://bugs.freedesktop.org/show_bug.cgi?id=106560
  fdo#107174 https://bugs.freedesktop.org/show_bug.cgi?id=107174


== Participating hosts (44 -> 41) ==

  Additional (1): fi-skl-6700hq 
  Missing    (4): fi-ctg-p8600 fi-ilk-m540 fi-byt-squawks fi-hsw-4200u 


== Build changes ==

    * Linux: CI_DRM_4493 -> Patchwork_9672

  CI_DRM_4493: c69b4c1274cccaa270c1e4daa68228724c80603a @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4558: d8e97e1710b27a3931a1c53d1dd88c0e709c085b @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_9672: 4d7770b00accbe052d38f37be0ce4ceddbc1f502 @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

4d7770b00acc drm/i915/selftests: Force a preemption hang
3c43096cb418 drm/i915/execlists: Always clear preempt status on cancelling all

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_9672/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* ✗ Fi.CI.CHECKPATCH: warning for series starting with [v3] drm/i915/execlists: Always clear preempt status on cancelling all (rev2)
  2018-07-16 12:48 [PATCH 1/2] drm/i915/execlists: Always clear preempt status on cancelling all Chris Wilson
                   ` (3 preceding siblings ...)
  2018-07-16 13:15 ` ✗ Fi.CI.BAT: failure for series starting with [1/2] " Patchwork
@ 2018-07-16 13:19 ` Patchwork
  2018-07-16 13:41 ` ✗ Fi.CI.BAT: failure " Patchwork
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2018-07-16 13:19 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: series starting with [v3] drm/i915/execlists: Always clear preempt status on cancelling all (rev2)
URL   : https://patchwork.freedesktop.org/series/46597/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
7a09e4391067 drm/i915/execlists: Always clear preempt status on cancelling all
efaf75bec631 drm/i915/selftests: Force a preemption hang
-:171: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#171: FILE: drivers/gpu/drm/i915/selftests/intel_lrc.c:523:
+		if (!wait_for_completion_timeout(&engine->execlists.preempt_hang.completion,
+						HZ / 10)) {

total: 0 errors, 0 warnings, 1 checks, 188 lines checked

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

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

* [PATCH] drm/i915/selftests: Force a preemption hang
  2018-07-16 12:48 ` [PATCH 2/2] drm/i915/selftests: Force a preemption hang Chris Wilson
  2018-07-16 12:56   ` Tvrtko Ursulin
@ 2018-07-16 13:21   ` Chris Wilson
  1 sibling, 0 replies; 14+ messages in thread
From: Chris Wilson @ 2018-07-16 13:21 UTC (permalink / raw)
  To: intel-gfx

Inject a failure into preemption completion to pretend as if the HW
didn't successfully handle preemption and we are forced to do a reset in
the middle.

v2: Wait for preemption, to force testing with the missed preemption.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
---
complete() not completion_done() to complete a completion.
-Chris
---
 drivers/gpu/drm/i915/intel_guc_submission.c |   3 +
 drivers/gpu/drm/i915/intel_lrc.c            |   3 +
 drivers/gpu/drm/i915/intel_ringbuffer.h     |  27 +++++
 drivers/gpu/drm/i915/selftests/intel_lrc.c  | 115 ++++++++++++++++++++
 4 files changed, 148 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_guc_submission.c b/drivers/gpu/drm/i915/intel_guc_submission.c
index cc444dc5f3ad..6bd1c3ee14a3 100644
--- a/drivers/gpu/drm/i915/intel_guc_submission.c
+++ b/drivers/gpu/drm/i915/intel_guc_submission.c
@@ -628,6 +628,9 @@ static void complete_preempt_context(struct intel_engine_cs *engine)
 
 	GEM_BUG_ON(!execlists_is_active(execlists, EXECLISTS_ACTIVE_PREEMPT));
 
+	if (inject_preempt_hang(execlists))
+		return;
+
 	execlists_cancel_port_requests(execlists);
 	execlists_unwind_incomplete_requests(execlists);
 
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index f9fb32efb97f..c44072a35fb6 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -559,6 +559,9 @@ static void complete_preempt_context(struct intel_engine_execlists *execlists)
 {
 	GEM_BUG_ON(!execlists_is_active(execlists, EXECLISTS_ACTIVE_PREEMPT));
 
+	if (inject_preempt_hang(execlists))
+		return;
+
 	execlists_cancel_port_requests(execlists);
 	__unwind_incomplete_requests(container_of(execlists,
 						  struct intel_engine_cs,
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.h b/drivers/gpu/drm/i915/intel_ringbuffer.h
index 665b59ba1f45..f5ffa6d31e82 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.h
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.h
@@ -193,6 +193,11 @@ struct i915_priolist {
 	int priority;
 };
 
+struct st_preempt_hang {
+	struct completion completion;
+	bool inject_hang;
+};
+
 /**
  * struct intel_engine_execlists - execlist submission queue and port state
  *
@@ -333,6 +338,8 @@ struct intel_engine_execlists {
 	 * @csb_head: context status buffer head
 	 */
 	u8 csb_head;
+
+	I915_SELFTEST_DECLARE(struct st_preempt_hang preempt_hang;)
 };
 
 #define INTEL_ENGINE_CS_MAX_NAME 8
@@ -1155,4 +1162,24 @@ void intel_disable_engine_stats(struct intel_engine_cs *engine);
 
 ktime_t intel_engine_get_busy_time(struct intel_engine_cs *engine);
 
+#if IS_ENABLED(CONFIG_DRM_I915_SELFTEST)
+
+static inline bool inject_preempt_hang(struct intel_engine_execlists *execlists)
+{
+	if (!execlists->preempt_hang.inject_hang)
+		return false;
+
+	complete(&execlists->preempt_hang.completion);
+	return true;
+}
+
+#else
+
+static inline bool inject_preempt_hang(struct intel_engine_execlists *execlists)
+{
+	return false;
+}
+
+#endif
+
 #endif /* _INTEL_RINGBUFFER_H_ */
diff --git a/drivers/gpu/drm/i915/selftests/intel_lrc.c b/drivers/gpu/drm/i915/selftests/intel_lrc.c
index 636cb68191e3..1843d331f4f1 100644
--- a/drivers/gpu/drm/i915/selftests/intel_lrc.c
+++ b/drivers/gpu/drm/i915/selftests/intel_lrc.c
@@ -451,12 +451,127 @@ static int live_late_preempt(void *arg)
 	goto err_ctx_lo;
 }
 
+static int live_preempt_hang(void *arg)
+{
+	struct drm_i915_private *i915 = arg;
+	struct i915_gem_context *ctx_hi, *ctx_lo;
+	struct spinner spin_hi, spin_lo;
+	struct intel_engine_cs *engine;
+	enum intel_engine_id id;
+	int err = -ENOMEM;
+
+	if (!HAS_LOGICAL_RING_PREEMPTION(i915))
+		return 0;
+
+	if (!intel_has_reset_engine(i915))
+		return 0;
+
+	mutex_lock(&i915->drm.struct_mutex);
+
+	if (spinner_init(&spin_hi, i915))
+		goto err_unlock;
+
+	if (spinner_init(&spin_lo, i915))
+		goto err_spin_hi;
+
+	ctx_hi = kernel_context(i915);
+	if (!ctx_hi)
+		goto err_spin_lo;
+	ctx_hi->sched.priority = I915_CONTEXT_MAX_USER_PRIORITY;
+
+	ctx_lo = kernel_context(i915);
+	if (!ctx_lo)
+		goto err_ctx_hi;
+	ctx_lo->sched.priority = I915_CONTEXT_MIN_USER_PRIORITY;
+
+	for_each_engine(engine, i915, id) {
+		struct i915_request *rq;
+
+		if (!intel_engine_has_preemption(engine))
+			continue;
+
+		rq = spinner_create_request(&spin_lo, ctx_lo, engine,
+					    MI_ARB_CHECK);
+		if (IS_ERR(rq)) {
+			err = PTR_ERR(rq);
+			goto err_ctx_lo;
+		}
+
+		i915_request_add(rq);
+		if (!wait_for_spinner(&spin_lo, rq)) {
+			GEM_TRACE("lo spinner failed to start\n");
+			GEM_TRACE_DUMP();
+			i915_gem_set_wedged(i915);
+			err = -EIO;
+			goto err_ctx_lo;
+		}
+
+		rq = spinner_create_request(&spin_hi, ctx_hi, engine,
+					    MI_ARB_CHECK);
+		if (IS_ERR(rq)) {
+			spinner_end(&spin_lo);
+			err = PTR_ERR(rq);
+			goto err_ctx_lo;
+		}
+
+		init_completion(&engine->execlists.preempt_hang.completion);
+		engine->execlists.preempt_hang.inject_hang = true;
+
+		i915_request_add(rq);
+
+		if (!wait_for_completion_timeout(&engine->execlists.preempt_hang.completion,
+						HZ / 10)) {
+			pr_err("Preemption did not occur within timeout!");
+			GEM_TRACE_DUMP();
+			i915_gem_set_wedged(i915);
+			err = -EIO;
+			goto err_ctx_lo;
+		}
+
+		set_bit(I915_RESET_ENGINE + id, &i915->gpu_error.flags);
+		i915_reset_engine(engine, NULL);
+		clear_bit(I915_RESET_ENGINE + id, &i915->gpu_error.flags);
+
+		engine->execlists.preempt_hang.inject_hang = false;
+
+		if (!wait_for_spinner(&spin_hi, rq)) {
+			GEM_TRACE("hi spinner failed to start\n");
+			GEM_TRACE_DUMP();
+			i915_gem_set_wedged(i915);
+			err = -EIO;
+			goto err_ctx_lo;
+		}
+
+		spinner_end(&spin_hi);
+		spinner_end(&spin_lo);
+		if (igt_flush_test(i915, I915_WAIT_LOCKED)) {
+			err = -EIO;
+			goto err_ctx_lo;
+		}
+	}
+
+	err = 0;
+err_ctx_lo:
+	kernel_context_close(ctx_lo);
+err_ctx_hi:
+	kernel_context_close(ctx_hi);
+err_spin_lo:
+	spinner_fini(&spin_lo);
+err_spin_hi:
+	spinner_fini(&spin_hi);
+err_unlock:
+	igt_flush_test(i915, I915_WAIT_LOCKED);
+	mutex_unlock(&i915->drm.struct_mutex);
+	return err;
+}
+
 int intel_execlists_live_selftests(struct drm_i915_private *i915)
 {
 	static const struct i915_subtest tests[] = {
 		SUBTEST(live_sanitycheck),
 		SUBTEST(live_preempt),
 		SUBTEST(live_late_preempt),
+		SUBTEST(live_preempt_hang),
 	};
 
 	if (!HAS_EXECLISTS(i915))
-- 
2.18.0

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

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

* ✗ Fi.CI.BAT: failure for series starting with [v3] drm/i915/execlists: Always clear preempt status on cancelling all (rev2)
  2018-07-16 12:48 [PATCH 1/2] drm/i915/execlists: Always clear preempt status on cancelling all Chris Wilson
                   ` (4 preceding siblings ...)
  2018-07-16 13:19 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [v3] drm/i915/execlists: Always clear preempt status on cancelling all (rev2) Patchwork
@ 2018-07-16 13:41 ` Patchwork
  2018-07-16 15:52 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [v3] drm/i915/execlists: Always clear preempt status on cancelling all (rev3) Patchwork
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2018-07-16 13:41 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: series starting with [v3] drm/i915/execlists: Always clear preempt status on cancelling all (rev2)
URL   : https://patchwork.freedesktop.org/series/46597/
State : failure

== Summary ==

= CI Bug Log - changes from CI_DRM_4493 -> Patchwork_9673 =

== Summary - FAILURE ==

  Serious unknown changes coming with Patchwork_9673 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_9673, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/46597/revisions/2/mbox/

== Possible new issues ==

  Here are the unknown changes that may have been introduced in Patchwork_9673:

  === IGT changes ===

    ==== Possible regressions ====

    igt@drv_selftest@live_execlists:
      fi-whl-u:           PASS -> DMESG-FAIL
      fi-cfl-8700k:       PASS -> DMESG-FAIL
      fi-glk-j4005:       PASS -> DMESG-FAIL
      fi-kbl-7567u:       PASS -> DMESG-FAIL
      fi-kbl-r:           PASS -> DMESG-FAIL
      fi-cfl-s3:          PASS -> DMESG-FAIL
      fi-kbl-7560u:       PASS -> DMESG-FAIL
      fi-bxt-dsi:         PASS -> DMESG-FAIL
      fi-kbl-guc:         PASS -> DMESG-FAIL
      fi-kbl-7500u:       PASS -> DMESG-FAIL
      fi-bxt-j4205:       PASS -> DMESG-FAIL
      fi-kbl-x1275:       PASS -> DMESG-FAIL
      fi-skl-gvtdvm:      PASS -> DMESG-FAIL
      fi-glk-dsi:         PASS -> DMESG-FAIL
      fi-cfl-guc:         PASS -> DMESG-FAIL

    igt@drv_selftest@live_workarounds:
      {fi-cfl-8109u}:     PASS -> DMESG-FAIL +1

    
== Known issues ==

  Here are the changes found in Patchwork_9673 that come from known issues:

  === IGT changes ===

    ==== Issues hit ====

    igt@drv_selftest@live_execlists:
      fi-skl-guc:         PASS -> DMESG-FAIL (fdo#107174) +1
      fi-skl-6260u:       PASS -> DMESG-FAIL (fdo#107174)
      fi-skl-6700k2:      PASS -> DMESG-FAIL (fdo#107174)
      fi-skl-6770hq:      PASS -> DMESG-FAIL (fdo#107174)
      fi-skl-6600u:       PASS -> DMESG-FAIL (fdo#107174)
      fi-skl-6700hq:      NOTRUN -> DMESG-FAIL (fdo#107174)

    
    ==== Possible fixes ====

    igt@drv_selftest@live_hangcheck:
      fi-bdw-5557u:       DMESG-FAIL (fdo#106560) -> PASS

    igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
      fi-snb-2520m:       INCOMPLETE (fdo#103713) -> PASS

    
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713
  fdo#106560 https://bugs.freedesktop.org/show_bug.cgi?id=106560
  fdo#107174 https://bugs.freedesktop.org/show_bug.cgi?id=107174


== Participating hosts (44 -> 41) ==

  Additional (1): fi-skl-6700hq 
  Missing    (4): fi-ctg-p8600 fi-ilk-m540 fi-byt-squawks fi-hsw-4200u 


== Build changes ==

    * Linux: CI_DRM_4493 -> Patchwork_9673

  CI_DRM_4493: c69b4c1274cccaa270c1e4daa68228724c80603a @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4558: d8e97e1710b27a3931a1c53d1dd88c0e709c085b @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_9673: efaf75bec631da3bc6833fa2c92881df820dd410 @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

efaf75bec631 drm/i915/selftests: Force a preemption hang
7a09e4391067 drm/i915/execlists: Always clear preempt status on cancelling all

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_9673/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* ✗ Fi.CI.CHECKPATCH: warning for series starting with [v3] drm/i915/execlists: Always clear preempt status on cancelling all (rev3)
  2018-07-16 12:48 [PATCH 1/2] drm/i915/execlists: Always clear preempt status on cancelling all Chris Wilson
                   ` (5 preceding siblings ...)
  2018-07-16 13:41 ` ✗ Fi.CI.BAT: failure " Patchwork
@ 2018-07-16 15:52 ` Patchwork
  2018-07-16 16:13 ` ✓ Fi.CI.BAT: success " Patchwork
  2018-07-16 22:16 ` ✓ Fi.CI.IGT: " Patchwork
  8 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2018-07-16 15:52 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: series starting with [v3] drm/i915/execlists: Always clear preempt status on cancelling all (rev3)
URL   : https://patchwork.freedesktop.org/series/46597/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
f5a7b007b612 drm/i915/execlists: Always clear preempt status on cancelling all
fa854cb30acb drm/i915/selftests: Force a preemption hang
-:171: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#171: FILE: drivers/gpu/drm/i915/selftests/intel_lrc.c:523:
+		if (!wait_for_completion_timeout(&engine->execlists.preempt_hang.completion,
+						HZ / 10)) {

total: 0 errors, 0 warnings, 1 checks, 188 lines checked

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

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

* ✓ Fi.CI.BAT: success for series starting with [v3] drm/i915/execlists: Always clear preempt status on cancelling all (rev3)
  2018-07-16 12:48 [PATCH 1/2] drm/i915/execlists: Always clear preempt status on cancelling all Chris Wilson
                   ` (6 preceding siblings ...)
  2018-07-16 15:52 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [v3] drm/i915/execlists: Always clear preempt status on cancelling all (rev3) Patchwork
@ 2018-07-16 16:13 ` Patchwork
  2018-07-16 22:16 ` ✓ Fi.CI.IGT: " Patchwork
  8 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2018-07-16 16:13 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: series starting with [v3] drm/i915/execlists: Always clear preempt status on cancelling all (rev3)
URL   : https://patchwork.freedesktop.org/series/46597/
State : success

== Summary ==

= CI Bug Log - changes from CI_DRM_4495 -> Patchwork_9677 =

== Summary - WARNING ==

  Minor unknown changes coming with Patchwork_9677 need to be verified
  manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_9677, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/46597/revisions/3/mbox/

== Possible new issues ==

  Here are the unknown changes that may have been introduced in Patchwork_9677:

  === IGT changes ===

    ==== Warnings ====

    igt@drv_selftest@live_guc:
      fi-kbl-7567u:       SKIP -> PASS +1

    
== Known issues ==

  Here are the changes found in Patchwork_9677 that come from known issues:

  === IGT changes ===

    ==== Issues hit ====

    igt@drv_selftest@live_coherency:
      fi-gdg-551:         PASS -> DMESG-FAIL (fdo#107164)

    igt@kms_chamelium@dp-edid-read:
      fi-kbl-7500u:       PASS -> FAIL (fdo#103841)

    igt@kms_flip@basic-flip-vs-modeset:
      fi-skl-6700hq:      PASS -> DMESG-WARN (fdo#105998) +1

    
    ==== Possible fixes ====

    igt@drv_selftest@live_hangcheck:
      fi-kbl-7567u:       DMESG-FAIL (fdo#106947) -> PASS

    igt@drv_selftest@live_workarounds:
      fi-kbl-x1275:       DMESG-FAIL -> PASS
      fi-skl-6700k2:      DMESG-FAIL -> PASS

    
  fdo#103841 https://bugs.freedesktop.org/show_bug.cgi?id=103841
  fdo#105998 https://bugs.freedesktop.org/show_bug.cgi?id=105998
  fdo#106947 https://bugs.freedesktop.org/show_bug.cgi?id=106947
  fdo#107164 https://bugs.freedesktop.org/show_bug.cgi?id=107164


== Participating hosts (46 -> 41) ==

  Missing    (5): fi-ctg-p8600 fi-ilk-m540 fi-byt-squawks fi-bsw-cyan fi-hsw-4200u 


== Build changes ==

    * Linux: CI_DRM_4495 -> Patchwork_9677

  CI_DRM_4495: d8a0e5354fb87a5e09894b97f3496eaf67b3e03d @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4558: d8e97e1710b27a3931a1c53d1dd88c0e709c085b @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_9677: fa854cb30acb41b91b823957fccdec06bd3a6f92 @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

fa854cb30acb drm/i915/selftests: Force a preemption hang
f5a7b007b612 drm/i915/execlists: Always clear preempt status on cancelling all

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_9677/issues.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

* ✓ Fi.CI.IGT: success for series starting with [v3] drm/i915/execlists: Always clear preempt status on cancelling all (rev3)
  2018-07-16 12:48 [PATCH 1/2] drm/i915/execlists: Always clear preempt status on cancelling all Chris Wilson
                   ` (7 preceding siblings ...)
  2018-07-16 16:13 ` ✓ Fi.CI.BAT: success " Patchwork
@ 2018-07-16 22:16 ` Patchwork
  8 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2018-07-16 22:16 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: series starting with [v3] drm/i915/execlists: Always clear preempt status on cancelling all (rev3)
URL   : https://patchwork.freedesktop.org/series/46597/
State : success

== Summary ==

= CI Bug Log - changes from CI_DRM_4495_full -> Patchwork_9677_full =

== Summary - WARNING ==

  Minor unknown changes coming with Patchwork_9677_full need to be verified
  manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_9677_full, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

== Possible new issues ==

  Here are the unknown changes that may have been introduced in Patchwork_9677_full:

  === IGT changes ===

    ==== Warnings ====

    igt@gem_exec_params@secure-non-master:
      shard-kbl:          SKIP -> PASS +11

    igt@gem_exec_schedule@deep-bsd1:
      shard-kbl:          PASS -> SKIP +1

    igt@gem_exec_schedule@reorder-wide-render:
      shard-glk:          SKIP -> PASS +37

    igt@gem_userptr_blits@map-fixed-invalidate:
      shard-apl:          SKIP -> PASS +37

    igt@kms_frontbuffer_tracking@fbc-modesetfrombusy:
      shard-snb:          SKIP -> PASS +1

    
== Known issues ==

  Here are the changes found in Patchwork_9677_full that come from known issues:

  === IGT changes ===

    ==== Issues hit ====

    igt@gem_ctx_isolation@vcs0-s3:
      shard-kbl:          NOTRUN -> INCOMPLETE (fdo#103665)

    igt@gem_workarounds@suspend-resume-fd:
      shard-kbl:          SKIP -> INCOMPLETE (fdo#103665)

    igt@kms_flip@2x-plain-flip-fb-recreate:
      shard-glk:          PASS -> FAIL (fdo#100368)

    
    ==== Possible fixes ====

    igt@drv_missed_irq:
      shard-apl:          INCOMPLETE (fdo#103927) -> PASS +1
      shard-glk:          INCOMPLETE (fdo#103359, k.org#198133) -> PASS +1

    igt@gem_exec_schedule@preempt-hang-bsd:
      shard-glk:          DMESG-FAIL -> PASS +3

    igt@gem_exec_schedule@preempt-hang-bsd1:
      shard-kbl:          DMESG-FAIL -> PASS +3

    igt@gem_exec_schedule@preempt-hang-render:
      shard-apl:          DMESG-FAIL -> PASS +3

    igt@kms_cursor_crc@cursor-256x256-suspend:
      shard-kbl:          INCOMPLETE (fdo#103665) -> PASS

    igt@kms_flip@plain-flip-ts-check-interruptible:
      shard-glk:          FAIL (fdo#100368) -> PASS

    igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-cpu:
      shard-kbl:          FAIL (fdo#106067) -> PASS

    igt@kms_frontbuffer_tracking@fbc-1p-shrfb-fliptrack:
      shard-glk:          FAIL -> PASS +8

    igt@kms_plane_multiple@atomic-pipe-c-tiling-y:
      shard-kbl:          FAIL (fdo#106066) -> PASS

    igt@kms_rotation_crc@bad-pixel-format:
      shard-apl:          FAIL -> PASS +6

    
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368
  fdo#103359 https://bugs.freedesktop.org/show_bug.cgi?id=103359
  fdo#103665 https://bugs.freedesktop.org/show_bug.cgi?id=103665
  fdo#103927 https://bugs.freedesktop.org/show_bug.cgi?id=103927
  fdo#106066 https://bugs.freedesktop.org/show_bug.cgi?id=106066
  fdo#106067 https://bugs.freedesktop.org/show_bug.cgi?id=106067
  k.org#198133 https://bugzilla.kernel.org/show_bug.cgi?id=198133


== Participating hosts (5 -> 5) ==

  No changes in participating hosts


== Build changes ==

    * Linux: CI_DRM_4495 -> Patchwork_9677

  CI_DRM_4495: d8a0e5354fb87a5e09894b97f3496eaf67b3e03d @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4558: d8e97e1710b27a3931a1c53d1dd88c0e709c085b @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_9677: fa854cb30acb41b91b823957fccdec06bd3a6f92 @ git://anongit.freedesktop.org/gfx-ci/linux
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_9677/shards.html
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

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

end of thread, other threads:[~2018-07-16 22:16 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-16 12:48 [PATCH 1/2] drm/i915/execlists: Always clear preempt status on cancelling all Chris Wilson
2018-07-16 12:48 ` [PATCH 2/2] drm/i915/selftests: Force a preemption hang Chris Wilson
2018-07-16 12:56   ` Tvrtko Ursulin
2018-07-16 13:21   ` [PATCH] " Chris Wilson
2018-07-16 12:53 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/2] drm/i915/execlists: Always clear preempt status on cancelling all Patchwork
2018-07-16 12:54 ` [PATCH v3] " Chris Wilson
2018-07-16 12:55   ` Tvrtko Ursulin
2018-07-16 12:57     ` Chris Wilson
2018-07-16 13:15 ` ✗ Fi.CI.BAT: failure for series starting with [1/2] " Patchwork
2018-07-16 13:19 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [v3] drm/i915/execlists: Always clear preempt status on cancelling all (rev2) Patchwork
2018-07-16 13:41 ` ✗ Fi.CI.BAT: failure " Patchwork
2018-07-16 15:52 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [v3] drm/i915/execlists: Always clear preempt status on cancelling all (rev3) Patchwork
2018-07-16 16:13 ` ✓ Fi.CI.BAT: success " Patchwork
2018-07-16 22:16 ` ✓ Fi.CI.IGT: " 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.