All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3] drm/i915: Enable debugobjects for request validation
@ 2018-01-30  9:12 Chris Wilson
  2018-01-30 12:24 ` ✓ Fi.CI.BAT: success for drm/i915: Enable debugobjects for request validation (rev3) Patchwork
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Chris Wilson @ 2018-01-30  9:12 UTC (permalink / raw)
  To: intel-gfx

Use debugobjects to track and validate the lifecycle of a struct
drm_i915_gem_request.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/Kconfig.debug      |  14 ++++
 drivers/gpu/drm/i915/i915_gem_request.c | 140 ++++++++++++++++++++++++++++++--
 drivers/gpu/drm/i915/i915_gem_request.h |  32 +++++++-
 3 files changed, 176 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/i915/Kconfig.debug b/drivers/gpu/drm/i915/Kconfig.debug
index 108d21f34777..326be039e39c 100644
--- a/drivers/gpu/drm/i915/Kconfig.debug
+++ b/drivers/gpu/drm/i915/Kconfig.debug
@@ -27,6 +27,7 @@ config DRM_I915_DEBUG
         select DRM_DEBUG_MM if DRM=y
 	select DRM_DEBUG_MM_SELFTEST
 	select SW_SYNC # signaling validation framework (igt/syncobj*)
+	select DRM_I915_REQUEST_DEBUG_OBJECTS
 	select DRM_I915_SW_FENCE_DEBUG_OBJECTS
 	select DRM_I915_SELFTEST
         default n
@@ -64,6 +65,19 @@ config DRM_I915_TRACE_GEM
 
 	  If in doubt, say "N".
 
+config DRM_I915_REQUEST_DEBUG_OBJECTS
+        bool "Enable additional driver debugging for request objects"
+        depends on DRM_I915
+        select DEBUG_OBJECTS
+        default n
+        help
+          Choose this option to turn on extra driver debugging that may affect
+          performance but will catch some internal issues.
+
+          Recommended for driver developers only.
+
+          If in doubt, say "N".
+
 config DRM_I915_SW_FENCE_DEBUG_OBJECTS
         bool "Enable additional driver debugging for fence objects"
         depends on DRM_I915
diff --git a/drivers/gpu/drm/i915/i915_gem_request.c b/drivers/gpu/drm/i915/i915_gem_request.c
index 0a890ef4c420..7192521e3d10 100644
--- a/drivers/gpu/drm/i915/i915_gem_request.c
+++ b/drivers/gpu/drm/i915/i915_gem_request.c
@@ -30,6 +30,108 @@
 
 #include "i915_drv.h"
 
+enum {
+	DEBUG_REQUEST_INACTIVE = 0,
+	DEBUG_REQUEST_WAITING,
+	DEBUG_REQUEST_READY,
+	DEBUG_REQUEST_EXECUTING,
+	DEBUG_REQUEST_RETIRED,
+};
+
+#if IS_ENABLED(CONFIG_DRM_I915_REQUEST_DEBUG_OBJECTS)
+
+static struct debug_obj_descr i915_request_debug_descr = {
+	.name = "i915_request",
+};
+
+static inline void debug_request_init(struct drm_i915_gem_request *rq)
+{
+	debug_object_init(rq, &i915_request_debug_descr);
+}
+
+static inline void debug_request_activate(struct drm_i915_gem_request *rq)
+{
+	debug_object_activate(rq, &i915_request_debug_descr);
+}
+
+static inline void debug_request_set_state(struct drm_i915_gem_request *rq,
+					   int old, int new)
+{
+	debug_object_active_state(rq, &i915_request_debug_descr, old, new);
+}
+
+static inline void debug_request_deactivate(struct drm_i915_gem_request *rq)
+{
+	debug_object_deactivate(rq, &i915_request_debug_descr);
+}
+
+static inline void debug_request_destroy(struct drm_i915_gem_request *rq)
+{
+	debug_object_destroy(rq, &i915_request_debug_descr);
+}
+
+static inline void debug_request_free(struct drm_i915_gem_request *rq)
+{
+	debug_object_free(rq, &i915_request_debug_descr);
+	smp_wmb(); /* flush the change in state before reallocation */
+}
+
+void debug_request_assert(const struct drm_i915_gem_request *rq)
+{
+	debug_object_assert_init((void *)rq, &i915_request_debug_descr);
+}
+
+#else
+
+static inline void debug_request_init(struct drm_i915_gem_request *rq)
+{
+}
+
+static inline void debug_request_activate(struct drm_i915_gem_request *rq)
+{
+}
+
+static inline void debug_request_set_state(struct drm_i915_gem_request *rq,
+					   int old, int new)
+{
+}
+
+static inline void debug_request_deactivate(struct drm_i915_gem_request *rq)
+{
+}
+
+static inline void debug_request_destroy(struct drm_i915_gem_request *rq)
+{
+}
+
+static inline void debug_request_free(struct drm_i915_gem_request *rq)
+{
+}
+
+#endif
+
+static inline struct drm_i915_gem_request *
+__request_alloc(struct drm_i915_private *i915, gfp_t gfp)
+{
+#if IS_ENABLED(CONFIG_KASAN)
+	return kmalloc(sizeof(struct drm_i915_gem_request), gfp);
+#else
+	return kmem_cache_alloc(i915->requests, gfp);
+#endif
+}
+
+static inline void
+__request_free(struct drm_i915_gem_request *rq)
+{
+	debug_request_free(rq);
+
+#if IS_ENABLED(CONFIG_KASAN)
+	dma_fence_free(&rq->fence);
+#else
+	kmem_cache_free(rq->i915->requests, rq);
+#endif
+}
+
 static const char *i915_fence_get_driver_name(struct dma_fence *fence)
 {
 	return "i915";
@@ -37,7 +139,8 @@ static const char *i915_fence_get_driver_name(struct dma_fence *fence)
 
 static const char *i915_fence_get_timeline_name(struct dma_fence *fence)
 {
-	/* The timeline struct (as part of the ppgtt underneath a context)
+	/*
+	 * The timeline struct (as part of the ppgtt underneath a context)
 	 * may be freed when the request is no longer in use by the GPU.
 	 * We could extend the life of a context to beyond that of all
 	 * fences, possibly keeping the hw resource around indefinitely,
@@ -76,7 +179,12 @@ static void i915_fence_release(struct dma_fence *fence)
 {
 	struct drm_i915_gem_request *req = to_request(fence);
 
-	/* The request is put onto a RCU freelist (i.e. the address
+	debug_request_set_state(req,
+				DEBUG_REQUEST_RETIRED, DEBUG_REQUEST_INACTIVE);
+	debug_request_deactivate(req);
+
+	/*
+	 * The request is put onto a RCU freelist (i.e. the address
 	 * is immediately reused), mark the fences as being freed now.
 	 * Otherwise the debugobjects for the fences are only marked as
 	 * freed when the slab cache itself is freed, and so we would get
@@ -84,7 +192,7 @@ static void i915_fence_release(struct dma_fence *fence)
 	 */
 	i915_sw_fence_fini(&req->submit);
 
-	kmem_cache_free(req->i915->requests, req);
+	__request_free(req);
 }
 
 const struct dma_fence_ops i915_fence_ops = {
@@ -387,6 +495,8 @@ static void i915_gem_request_retire(struct drm_i915_gem_request *request)
 	GEM_BUG_ON(!request->i915->gt.active_requests);
 
 	trace_i915_gem_request_retire(request);
+	debug_request_set_state(request,
+				DEBUG_REQUEST_EXECUTING, DEBUG_REQUEST_RETIRED);
 
 	spin_lock_irq(&engine->timeline->lock);
 	list_del_init(&request->link);
@@ -484,6 +594,8 @@ void __i915_gem_request_submit(struct drm_i915_gem_request *request)
 	lockdep_assert_held(&engine->timeline->lock);
 
 	trace_i915_gem_request_execute(request);
+	debug_request_set_state(request,
+				DEBUG_REQUEST_READY, DEBUG_REQUEST_EXECUTING);
 
 	/* Transfer from per-context onto the global per-engine timeline */
 	timeline = engine->timeline;
@@ -532,6 +644,9 @@ void __i915_gem_request_unsubmit(struct drm_i915_gem_request *request)
 	GEM_BUG_ON(!irqs_disabled());
 	lockdep_assert_held(&engine->timeline->lock);
 
+	debug_request_set_state(request,
+				DEBUG_REQUEST_EXECUTING, DEBUG_REQUEST_READY);
+
 	/* Only unwind in reverse order, required so that the per-context list
 	 * is kept in seqno/ring order.
 	 */
@@ -586,6 +701,9 @@ submit_notify(struct i915_sw_fence *fence, enum i915_sw_fence_notify state)
 	switch (state) {
 	case FENCE_COMPLETE:
 		trace_i915_gem_request_submit(request);
+		debug_request_set_state(request,
+					DEBUG_REQUEST_WAITING,
+					DEBUG_REQUEST_READY);
 		/*
 		 * We need to serialize use of the submit_request() callback with its
 		 * hotplugging performed during an emergency i915_gem_set_wedged().
@@ -690,8 +808,8 @@ i915_gem_request_alloc(struct intel_engine_cs *engine,
 	 *
 	 * Do not use kmem_cache_zalloc() here!
 	 */
-	req = kmem_cache_alloc(dev_priv->requests,
-			       GFP_KERNEL | __GFP_RETRY_MAYFAIL | __GFP_NOWARN);
+	req = __request_alloc(dev_priv,
+			      GFP_KERNEL | __GFP_RETRY_MAYFAIL | __GFP_NOWARN);
 	if (unlikely(!req)) {
 		/* Ratelimit ourselves to prevent oom from malicious clients */
 		ret = i915_gem_wait_for_idle(dev_priv,
@@ -711,13 +829,15 @@ i915_gem_request_alloc(struct intel_engine_cs *engine,
 		kmem_cache_shrink(dev_priv->requests);
 		rcu_barrier(); /* Recover the TYPESAFE_BY_RCU pages */
 
-		req = kmem_cache_alloc(dev_priv->requests, GFP_KERNEL);
+		req = __request_alloc(dev_priv, GFP_KERNEL);
 		if (!req) {
 			ret = -ENOMEM;
 			goto err_unreserve;
 		}
 	}
 
+	debug_request_init(req);
+
 	req->timeline = i915_gem_context_lookup_timeline(ctx, engine);
 	GEM_BUG_ON(req->timeline == engine->timeline);
 
@@ -786,7 +906,7 @@ i915_gem_request_alloc(struct intel_engine_cs *engine,
 	GEM_BUG_ON(!list_empty(&req->priotree.signalers_list));
 	GEM_BUG_ON(!list_empty(&req->priotree.waiters_list));
 
-	kmem_cache_free(dev_priv->requests, req);
+	__request_free(req);
 err_unreserve:
 	unreserve_engine(engine);
 err_unpin:
@@ -1065,6 +1185,10 @@ void __i915_add_request(struct drm_i915_gem_request *request, bool flush_caches)
 		engine->schedule(request, request->ctx->priority);
 
 	local_bh_disable();
+	debug_request_activate(request);
+	debug_request_set_state(request,
+				DEBUG_REQUEST_INACTIVE,
+				DEBUG_REQUEST_WAITING);
 	i915_sw_fence_commit(&request->submit);
 	local_bh_enable(); /* Kick the execlists tasklet if just scheduled */
 }
@@ -1206,6 +1330,7 @@ long i915_wait_request(struct drm_i915_gem_request *req,
 		   !!(flags & I915_WAIT_LOCKED));
 #endif
 	GEM_BUG_ON(timeout < 0);
+	debug_request_assert(req);
 
 	if (i915_gem_request_completed(req))
 		return timeout;
@@ -1321,6 +1446,7 @@ long i915_wait_request(struct drm_i915_gem_request *req,
 		remove_wait_queue(errq, &reset);
 	remove_wait_queue(&req->execute, &exec);
 	trace_i915_gem_request_wait_end(req);
+	debug_request_assert(req);
 
 	return timeout;
 }
diff --git a/drivers/gpu/drm/i915/i915_gem_request.h b/drivers/gpu/drm/i915/i915_gem_request.h
index 2236e9188c5c..0327b59c9022 100644
--- a/drivers/gpu/drm/i915/i915_gem_request.h
+++ b/drivers/gpu/drm/i915/i915_gem_request.h
@@ -218,13 +218,26 @@ i915_gem_request_alloc(struct intel_engine_cs *engine,
 		       struct i915_gem_context *ctx);
 void i915_gem_request_retire_upto(struct drm_i915_gem_request *req);
 
+#if IS_ENABLED(CONFIG_DRM_I915_REQUEST_DEBUG_OBJECTS)
+void debug_request_assert(const struct drm_i915_gem_request *request);
+#else
+static inline void
+debug_request_assert(const struct drm_i915_gem_request *request) {}
+#endif
+
 static inline struct drm_i915_gem_request *
 to_request(struct dma_fence *fence)
 {
+	struct drm_i915_gem_request *rq;
+
 	/* We assume that NULL fence/request are interoperable */
 	BUILD_BUG_ON(offsetof(struct drm_i915_gem_request, fence) != 0);
 	GEM_BUG_ON(fence && !dma_fence_is_i915(fence));
-	return container_of(fence, struct drm_i915_gem_request, fence);
+
+	rq = container_of(fence, struct drm_i915_gem_request, fence);
+	debug_request_assert(rq);
+
+	return rq;
 }
 
 static inline struct drm_i915_gem_request *
@@ -242,6 +255,7 @@ i915_gem_request_get_rcu(struct drm_i915_gem_request *req)
 static inline void
 i915_gem_request_put(struct drm_i915_gem_request *req)
 {
+	debug_request_assert(req);
 	dma_fence_put(&req->fence);
 }
 
@@ -266,6 +280,7 @@ i915_gem_request_put(struct drm_i915_gem_request *req)
 static u32
 i915_gem_request_global_seqno(const struct drm_i915_gem_request *request)
 {
+	debug_request_assert(request);
 	return READ_ONCE(request->global_seqno);
 }
 
@@ -322,6 +337,8 @@ i915_gem_request_completed(const struct drm_i915_gem_request *req)
 {
 	u32 seqno;
 
+	debug_request_assert(req);
+
 	seqno = i915_gem_request_global_seqno(req);
 	if (!seqno)
 		return false;
@@ -334,6 +351,8 @@ i915_gem_request_started(const struct drm_i915_gem_request *req)
 {
 	u32 seqno;
 
+	debug_request_assert(req);
+
 	seqno = i915_gem_request_global_seqno(req);
 	if (!seqno)
 		return false;
@@ -347,6 +366,8 @@ static inline bool i915_priotree_signaled(const struct i915_priotree *pt)
 	const struct drm_i915_gem_request *rq =
 		container_of(pt, const struct drm_i915_gem_request, priotree);
 
+	debug_request_assert(rq);
+
 	return i915_gem_request_completed(rq);
 }
 
@@ -423,6 +444,7 @@ static inline void
 i915_gem_active_set(struct i915_gem_active *active,
 		    struct drm_i915_gem_request *request)
 {
+	debug_request_assert(request);
 	list_move(&active->link, &request->active_list);
 	rcu_assign_pointer(active->request, request);
 }
@@ -469,8 +491,12 @@ __i915_gem_active_peek(const struct i915_gem_active *active)
 static inline struct drm_i915_gem_request *
 i915_gem_active_raw(const struct i915_gem_active *active, struct mutex *mutex)
 {
-	return rcu_dereference_protected(active->request,
-					 lockdep_is_held(mutex));
+	struct drm_i915_gem_request *rq =
+		rcu_dereference_protected(active->request,
+					  lockdep_is_held(mutex));
+
+	debug_request_assert(rq);
+	return rq;
 }
 
 /**
-- 
2.15.1

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

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

* ✓ Fi.CI.BAT: success for drm/i915: Enable debugobjects for request validation (rev3)
  2018-01-30  9:12 [PATCH v3] drm/i915: Enable debugobjects for request validation Chris Wilson
@ 2018-01-30 12:24 ` Patchwork
  2018-01-30 14:06 ` ✗ Fi.CI.IGT: failure " Patchwork
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2018-01-30 12:24 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Enable debugobjects for request validation (rev3)
URL   : https://patchwork.freedesktop.org/series/37240/
State : success

== Summary ==

Series 37240v3 drm/i915: Enable debugobjects for request validation
https://patchwork.freedesktop.org/api/1.0/series/37240/revisions/3/mbox/

fi-bdw-5557u     total:288  pass:267  dwarn:0   dfail:0   fail:0   skip:21  time:424s
fi-bdw-gvtdvm    total:288  pass:264  dwarn:0   dfail:0   fail:0   skip:24  time:426s
fi-blb-e6850     total:288  pass:223  dwarn:1   dfail:0   fail:0   skip:64  time:373s
fi-bsw-n3050     total:288  pass:242  dwarn:0   dfail:0   fail:0   skip:46  time:495s
fi-bwr-2160      total:288  pass:183  dwarn:0   dfail:0   fail:0   skip:105 time:282s
fi-bxt-dsi       total:288  pass:258  dwarn:0   dfail:0   fail:0   skip:30  time:485s
fi-bxt-j4205     total:288  pass:259  dwarn:0   dfail:0   fail:0   skip:29  time:486s
fi-byt-j1900     total:288  pass:253  dwarn:0   dfail:0   fail:0   skip:35  time:475s
fi-cfl-s2        total:288  pass:262  dwarn:0   dfail:0   fail:0   skip:26  time:564s
fi-glk-1         total:288  pass:260  dwarn:0   dfail:0   fail:0   skip:28  time:513s
fi-hsw-4770      total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:390s
fi-hsw-4770r     total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:402s
fi-ilk-650       total:288  pass:228  dwarn:0   dfail:0   fail:0   skip:60  time:417s
fi-ivb-3520m     total:288  pass:259  dwarn:0   dfail:0   fail:0   skip:29  time:452s
fi-ivb-3770      total:288  pass:255  dwarn:0   dfail:0   fail:0   skip:33  time:414s
fi-kbl-7500u     total:288  pass:263  dwarn:1   dfail:0   fail:0   skip:24  time:458s
fi-kbl-7560u     total:288  pass:269  dwarn:0   dfail:0   fail:0   skip:19  time:504s
fi-kbl-7567u     total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:457s
fi-kbl-r         total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:500s
fi-skl-6260u     total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:434s
fi-skl-6600u     total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:510s
fi-skl-6700hq    total:288  pass:262  dwarn:0   dfail:0   fail:0   skip:26  time:527s
fi-skl-6700k2    total:288  pass:264  dwarn:0   dfail:0   fail:0   skip:24  time:489s
fi-skl-6770hq    total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:478s
fi-skl-guc       total:288  pass:260  dwarn:0   dfail:0   fail:0   skip:28  time:418s
fi-skl-gvtdvm    total:288  pass:265  dwarn:0   dfail:0   fail:0   skip:23  time:428s
fi-snb-2600      total:288  pass:248  dwarn:0   dfail:0   fail:0   skip:40  time:399s
Blacklisted hosts:
fi-glk-dsi       total:288  pass:258  dwarn:0   dfail:0   fail:0   skip:30  time:473s

9afefca72cf89d53e114f3974c5afea1d663d3e1 drm-tip: 2018y-01m-29d-22h-12m-08s UTC integration manifest
098820189c72 drm/i915: Enable debugobjects for request validation

== Logs ==

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

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

* ✗ Fi.CI.IGT: failure for drm/i915: Enable debugobjects for request validation (rev3)
  2018-01-30  9:12 [PATCH v3] drm/i915: Enable debugobjects for request validation Chris Wilson
  2018-01-30 12:24 ` ✓ Fi.CI.BAT: success for drm/i915: Enable debugobjects for request validation (rev3) Patchwork
@ 2018-01-30 14:06 ` Patchwork
  2018-01-30 16:48 ` ✓ Fi.CI.BAT: success " Patchwork
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2018-01-30 14:06 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Enable debugobjects for request validation (rev3)
URL   : https://patchwork.freedesktop.org/series/37240/
State : failure

== Summary ==

Test perf:
        Subgroup oa-exponents:
                pass       -> FAIL       (shard-apl) fdo#102254
        Subgroup enable-disable:
                fail       -> PASS       (shard-apl) fdo#103715
        Subgroup buffer-fill:
                pass       -> FAIL       (shard-apl) fdo#103755
Test gem_eio:
        Subgroup hibernate:
                pass       -> DMESG-WARN (shard-snb)
Test gem_exec_schedule:
        Subgroup wide-render:
                pass       -> FAIL       (shard-apl)
        Subgroup wide-blt:
                pass       -> FAIL       (shard-apl) fdo#102848 +2
Test kms_flip:
        Subgroup 2x-flip-vs-absolute-wf_vblank:
                fail       -> PASS       (shard-hsw)

fdo#102254 https://bugs.freedesktop.org/show_bug.cgi?id=102254
fdo#103715 https://bugs.freedesktop.org/show_bug.cgi?id=103715
fdo#103755 https://bugs.freedesktop.org/show_bug.cgi?id=103755
fdo#102848 https://bugs.freedesktop.org/show_bug.cgi?id=102848

shard-apl        total:2838 pass:1744 dwarn:1   dfail:0   fail:29  skip:1064 time:12792s
shard-hsw        total:2758 pass:1690 dwarn:1   dfail:0   fail:12  skip:1054 time:11746s
shard-snb        total:2838 pass:1327 dwarn:2   dfail:0   fail:12  skip:1497 time:6691s
Blacklisted hosts:
shard-kbl        total:2439 pass:1599 dwarn:14  dfail:0   fail:15  skip:811 time:7965s

== Logs ==

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

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

* ✓ Fi.CI.BAT: success for drm/i915: Enable debugobjects for request validation (rev3)
  2018-01-30  9:12 [PATCH v3] drm/i915: Enable debugobjects for request validation Chris Wilson
  2018-01-30 12:24 ` ✓ Fi.CI.BAT: success for drm/i915: Enable debugobjects for request validation (rev3) Patchwork
  2018-01-30 14:06 ` ✗ Fi.CI.IGT: failure " Patchwork
@ 2018-01-30 16:48 ` Patchwork
  2018-02-04 20:01 ` [PATCH v2] drm/i915: Enable debugobjects for request validation Chris Wilson
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2018-01-30 16:48 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Enable debugobjects for request validation (rev3)
URL   : https://patchwork.freedesktop.org/series/37240/
State : success

== Summary ==

Series 37240v3 drm/i915: Enable debugobjects for request validation
https://patchwork.freedesktop.org/api/1.0/series/37240/revisions/3/mbox/

fi-bdw-5557u     total:288  pass:267  dwarn:0   dfail:0   fail:0   skip:21  time:418s
fi-bdw-gvtdvm    total:288  pass:264  dwarn:0   dfail:0   fail:0   skip:24  time:424s
fi-blb-e6850     total:288  pass:223  dwarn:1   dfail:0   fail:0   skip:64  time:376s
fi-bsw-n3050     total:288  pass:242  dwarn:0   dfail:0   fail:0   skip:46  time:486s
fi-bwr-2160      total:288  pass:183  dwarn:0   dfail:0   fail:0   skip:105 time:282s
fi-bxt-dsi       total:288  pass:258  dwarn:0   dfail:0   fail:0   skip:30  time:481s
fi-bxt-j4205     total:288  pass:259  dwarn:0   dfail:0   fail:0   skip:29  time:484s
fi-byt-j1900     total:288  pass:253  dwarn:0   dfail:0   fail:0   skip:35  time:467s
fi-byt-n2820     total:288  pass:249  dwarn:0   dfail:0   fail:0   skip:39  time:458s
fi-cfl-s2        total:288  pass:262  dwarn:0   dfail:0   fail:0   skip:26  time:566s
fi-elk-e7500     total:224  pass:168  dwarn:10  dfail:0   fail:0   skip:45 
fi-gdg-551       total:288  pass:179  dwarn:0   dfail:0   fail:1   skip:108 time:279s
fi-glk-1         total:288  pass:260  dwarn:0   dfail:0   fail:0   skip:28  time:513s
fi-hsw-4770      total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:390s
fi-hsw-4770r     total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:405s
fi-ilk-650       total:288  pass:228  dwarn:0   dfail:0   fail:0   skip:60  time:413s
fi-ivb-3520m     total:288  pass:259  dwarn:0   dfail:0   fail:0   skip:29  time:465s
fi-ivb-3770      total:288  pass:255  dwarn:0   dfail:0   fail:0   skip:33  time:414s
fi-kbl-7500u     total:288  pass:263  dwarn:1   dfail:0   fail:0   skip:24  time:457s
fi-kbl-7560u     total:288  pass:269  dwarn:0   dfail:0   fail:0   skip:19  time:495s
fi-kbl-7567u     total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:455s
fi-kbl-r         total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:499s
fi-skl-6260u     total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:434s
fi-skl-6600u     total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:511s
fi-skl-6700hq    total:288  pass:262  dwarn:0   dfail:0   fail:0   skip:26  time:531s
fi-skl-6700k2    total:288  pass:264  dwarn:0   dfail:0   fail:0   skip:24  time:491s
fi-skl-6770hq    total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:491s
fi-skl-guc       total:288  pass:260  dwarn:0   dfail:0   fail:0   skip:28  time:417s
fi-skl-gvtdvm    total:288  pass:265  dwarn:0   dfail:0   fail:0   skip:23  time:433s
fi-snb-2520m     total:288  pass:248  dwarn:0   dfail:0   fail:0   skip:40  time:532s
fi-snb-2600      total:288  pass:248  dwarn:0   dfail:0   fail:0   skip:40  time:401s
Blacklisted hosts:
fi-glk-dsi       total:288  pass:258  dwarn:0   dfail:0   fail:0   skip:30  time:469s
fi-pnv-d510 failed to collect. IGT log at Patchwork_7820/fi-pnv-d510/igt.log

040c6384a6d2a3c5fbb578824775e940a73c6021 drm-tip: 2018y-01m-30d-16h-00m-34s UTC integration manifest
1a7cf980c495 drm/i915: Enable debugobjects for request validation

== Logs ==

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

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

* [PATCH v2] drm/i915: Enable debugobjects for request validation
  2018-01-30  9:12 [PATCH v3] drm/i915: Enable debugobjects for request validation Chris Wilson
                   ` (2 preceding siblings ...)
  2018-01-30 16:48 ` ✓ Fi.CI.BAT: success " Patchwork
@ 2018-02-04 20:01 ` Chris Wilson
  2018-02-04 20:20 ` ✓ Fi.CI.BAT: success for drm/i915: Enable debugobjects for request validation (rev4) Patchwork
  2018-02-04 21:13 ` ✗ Fi.CI.IGT: failure " Patchwork
  5 siblings, 0 replies; 7+ messages in thread
From: Chris Wilson @ 2018-02-04 20:01 UTC (permalink / raw)
  To: intel-gfx

Use debugobjects to track and validate the lifecycle of a struct
drm_i915_gem_request.

v2: Mark up allowed NULL request pointers.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/Kconfig.debug      |  14 ++++
 drivers/gpu/drm/i915/i915_gem_request.c | 140 ++++++++++++++++++++++++++++++--
 drivers/gpu/drm/i915/i915_gem_request.h |  37 ++++++++-
 3 files changed, 181 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/i915/Kconfig.debug b/drivers/gpu/drm/i915/Kconfig.debug
index 108d21f34777..326be039e39c 100644
--- a/drivers/gpu/drm/i915/Kconfig.debug
+++ b/drivers/gpu/drm/i915/Kconfig.debug
@@ -27,6 +27,7 @@ config DRM_I915_DEBUG
         select DRM_DEBUG_MM if DRM=y
 	select DRM_DEBUG_MM_SELFTEST
 	select SW_SYNC # signaling validation framework (igt/syncobj*)
+	select DRM_I915_REQUEST_DEBUG_OBJECTS
 	select DRM_I915_SW_FENCE_DEBUG_OBJECTS
 	select DRM_I915_SELFTEST
         default n
@@ -64,6 +65,19 @@ config DRM_I915_TRACE_GEM
 
 	  If in doubt, say "N".
 
+config DRM_I915_REQUEST_DEBUG_OBJECTS
+        bool "Enable additional driver debugging for request objects"
+        depends on DRM_I915
+        select DEBUG_OBJECTS
+        default n
+        help
+          Choose this option to turn on extra driver debugging that may affect
+          performance but will catch some internal issues.
+
+          Recommended for driver developers only.
+
+          If in doubt, say "N".
+
 config DRM_I915_SW_FENCE_DEBUG_OBJECTS
         bool "Enable additional driver debugging for fence objects"
         depends on DRM_I915
diff --git a/drivers/gpu/drm/i915/i915_gem_request.c b/drivers/gpu/drm/i915/i915_gem_request.c
index cf2f3895b70e..164a1bb8d655 100644
--- a/drivers/gpu/drm/i915/i915_gem_request.c
+++ b/drivers/gpu/drm/i915/i915_gem_request.c
@@ -30,6 +30,108 @@
 
 #include "i915_drv.h"
 
+enum {
+	DEBUG_REQUEST_INACTIVE = 0,
+	DEBUG_REQUEST_WAITING,
+	DEBUG_REQUEST_READY,
+	DEBUG_REQUEST_EXECUTING,
+	DEBUG_REQUEST_RETIRED,
+};
+
+#if IS_ENABLED(CONFIG_DRM_I915_REQUEST_DEBUG_OBJECTS)
+
+static struct debug_obj_descr i915_request_debug_descr = {
+	.name = "i915_request",
+};
+
+static inline void debug_request_init(struct drm_i915_gem_request *rq)
+{
+	debug_object_init(rq, &i915_request_debug_descr);
+}
+
+static inline void debug_request_activate(struct drm_i915_gem_request *rq)
+{
+	debug_object_activate(rq, &i915_request_debug_descr);
+}
+
+static inline void debug_request_set_state(struct drm_i915_gem_request *rq,
+					   int old, int new)
+{
+	debug_object_active_state(rq, &i915_request_debug_descr, old, new);
+}
+
+static inline void debug_request_deactivate(struct drm_i915_gem_request *rq)
+{
+	debug_object_deactivate(rq, &i915_request_debug_descr);
+}
+
+static inline void debug_request_destroy(struct drm_i915_gem_request *rq)
+{
+	debug_object_destroy(rq, &i915_request_debug_descr);
+}
+
+static inline void debug_request_free(struct drm_i915_gem_request *rq)
+{
+	debug_object_free(rq, &i915_request_debug_descr);
+	smp_wmb(); /* flush the change in state before reallocation */
+}
+
+void debug_request_assert(const struct drm_i915_gem_request *rq)
+{
+	debug_object_assert_init((void *)rq, &i915_request_debug_descr);
+}
+
+#else
+
+static inline void debug_request_init(struct drm_i915_gem_request *rq)
+{
+}
+
+static inline void debug_request_activate(struct drm_i915_gem_request *rq)
+{
+}
+
+static inline void debug_request_set_state(struct drm_i915_gem_request *rq,
+					   int old, int new)
+{
+}
+
+static inline void debug_request_deactivate(struct drm_i915_gem_request *rq)
+{
+}
+
+static inline void debug_request_destroy(struct drm_i915_gem_request *rq)
+{
+}
+
+static inline void debug_request_free(struct drm_i915_gem_request *rq)
+{
+}
+
+#endif
+
+static inline struct drm_i915_gem_request *
+__request_alloc(struct drm_i915_private *i915, gfp_t gfp)
+{
+#if IS_ENABLED(CONFIG_KASAN)
+	return kmalloc(sizeof(struct drm_i915_gem_request), gfp);
+#else
+	return kmem_cache_alloc(i915->requests, gfp);
+#endif
+}
+
+static inline void
+__request_free(struct drm_i915_gem_request *rq)
+{
+	debug_request_free(rq);
+
+#if IS_ENABLED(CONFIG_KASAN)
+	dma_fence_free(&rq->fence);
+#else
+	kmem_cache_free(rq->i915->requests, rq);
+#endif
+}
+
 static const char *i915_fence_get_driver_name(struct dma_fence *fence)
 {
 	return "i915";
@@ -37,7 +139,8 @@ static const char *i915_fence_get_driver_name(struct dma_fence *fence)
 
 static const char *i915_fence_get_timeline_name(struct dma_fence *fence)
 {
-	/* The timeline struct (as part of the ppgtt underneath a context)
+	/*
+	 * The timeline struct (as part of the ppgtt underneath a context)
 	 * may be freed when the request is no longer in use by the GPU.
 	 * We could extend the life of a context to beyond that of all
 	 * fences, possibly keeping the hw resource around indefinitely,
@@ -76,7 +179,12 @@ static void i915_fence_release(struct dma_fence *fence)
 {
 	struct drm_i915_gem_request *req = to_request(fence);
 
-	/* The request is put onto a RCU freelist (i.e. the address
+	debug_request_set_state(req,
+				DEBUG_REQUEST_RETIRED, DEBUG_REQUEST_INACTIVE);
+	debug_request_deactivate(req);
+
+	/*
+	 * The request is put onto a RCU freelist (i.e. the address
 	 * is immediately reused), mark the fences as being freed now.
 	 * Otherwise the debugobjects for the fences are only marked as
 	 * freed when the slab cache itself is freed, and so we would get
@@ -84,7 +192,7 @@ static void i915_fence_release(struct dma_fence *fence)
 	 */
 	i915_sw_fence_fini(&req->submit);
 
-	kmem_cache_free(req->i915->requests, req);
+	__request_free(req);
 }
 
 const struct dma_fence_ops i915_fence_ops = {
@@ -389,6 +497,8 @@ static void i915_gem_request_retire(struct drm_i915_gem_request *request)
 	GEM_BUG_ON(!request->i915->gt.active_requests);
 
 	trace_i915_gem_request_retire(request);
+	debug_request_set_state(request,
+				DEBUG_REQUEST_EXECUTING, DEBUG_REQUEST_RETIRED);
 
 	spin_lock_irq(&engine->timeline->lock);
 	list_del_init(&request->link);
@@ -486,6 +596,8 @@ void __i915_gem_request_submit(struct drm_i915_gem_request *request)
 	lockdep_assert_held(&engine->timeline->lock);
 
 	trace_i915_gem_request_execute(request);
+	debug_request_set_state(request,
+				DEBUG_REQUEST_READY, DEBUG_REQUEST_EXECUTING);
 
 	/* Transfer from per-context onto the global per-engine timeline */
 	timeline = engine->timeline;
@@ -534,6 +646,9 @@ void __i915_gem_request_unsubmit(struct drm_i915_gem_request *request)
 	GEM_BUG_ON(!irqs_disabled());
 	lockdep_assert_held(&engine->timeline->lock);
 
+	debug_request_set_state(request,
+				DEBUG_REQUEST_EXECUTING, DEBUG_REQUEST_READY);
+
 	/* Only unwind in reverse order, required so that the per-context list
 	 * is kept in seqno/ring order.
 	 */
@@ -588,6 +703,9 @@ submit_notify(struct i915_sw_fence *fence, enum i915_sw_fence_notify state)
 	switch (state) {
 	case FENCE_COMPLETE:
 		trace_i915_gem_request_submit(request);
+		debug_request_set_state(request,
+					DEBUG_REQUEST_WAITING,
+					DEBUG_REQUEST_READY);
 		/*
 		 * We need to serialize use of the submit_request() callback with its
 		 * hotplugging performed during an emergency i915_gem_set_wedged().
@@ -692,8 +810,8 @@ i915_gem_request_alloc(struct intel_engine_cs *engine,
 	 *
 	 * Do not use kmem_cache_zalloc() here!
 	 */
-	req = kmem_cache_alloc(dev_priv->requests,
-			       GFP_KERNEL | __GFP_RETRY_MAYFAIL | __GFP_NOWARN);
+	req = __request_alloc(dev_priv,
+			      GFP_KERNEL | __GFP_RETRY_MAYFAIL | __GFP_NOWARN);
 	if (unlikely(!req)) {
 		/* Ratelimit ourselves to prevent oom from malicious clients */
 		ret = i915_gem_wait_for_idle(dev_priv,
@@ -713,13 +831,15 @@ i915_gem_request_alloc(struct intel_engine_cs *engine,
 		kmem_cache_shrink(dev_priv->requests);
 		rcu_barrier(); /* Recover the TYPESAFE_BY_RCU pages */
 
-		req = kmem_cache_alloc(dev_priv->requests, GFP_KERNEL);
+		req = __request_alloc(dev_priv, GFP_KERNEL);
 		if (!req) {
 			ret = -ENOMEM;
 			goto err_unreserve;
 		}
 	}
 
+	debug_request_init(req);
+
 	req->timeline = i915_gem_context_lookup_timeline(ctx, engine);
 	GEM_BUG_ON(req->timeline == engine->timeline);
 
@@ -788,7 +908,7 @@ i915_gem_request_alloc(struct intel_engine_cs *engine,
 	GEM_BUG_ON(!list_empty(&req->priotree.signalers_list));
 	GEM_BUG_ON(!list_empty(&req->priotree.waiters_list));
 
-	kmem_cache_free(dev_priv->requests, req);
+	__request_free(req);
 err_unreserve:
 	unreserve_engine(engine);
 err_unpin:
@@ -1067,6 +1187,10 @@ void __i915_add_request(struct drm_i915_gem_request *request, bool flush_caches)
 		engine->schedule(request, request->ctx->priority);
 
 	local_bh_disable();
+	debug_request_activate(request);
+	debug_request_set_state(request,
+				DEBUG_REQUEST_INACTIVE,
+				DEBUG_REQUEST_WAITING);
 	i915_sw_fence_commit(&request->submit);
 	local_bh_enable(); /* Kick the execlists tasklet if just scheduled */
 }
@@ -1208,6 +1332,7 @@ long i915_wait_request(struct drm_i915_gem_request *req,
 		   !!(flags & I915_WAIT_LOCKED));
 #endif
 	GEM_BUG_ON(timeout < 0);
+	debug_request_assert(req);
 
 	if (i915_gem_request_completed(req))
 		return timeout;
@@ -1323,6 +1448,7 @@ long i915_wait_request(struct drm_i915_gem_request *req,
 		remove_wait_queue(errq, &reset);
 	remove_wait_queue(&req->execute, &exec);
 	trace_i915_gem_request_wait_end(req);
+	debug_request_assert(req);
 
 	return timeout;
 }
diff --git a/drivers/gpu/drm/i915/i915_gem_request.h b/drivers/gpu/drm/i915/i915_gem_request.h
index 2236e9188c5c..35065b27d9d6 100644
--- a/drivers/gpu/drm/i915/i915_gem_request.h
+++ b/drivers/gpu/drm/i915/i915_gem_request.h
@@ -218,13 +218,33 @@ i915_gem_request_alloc(struct intel_engine_cs *engine,
 		       struct i915_gem_context *ctx);
 void i915_gem_request_retire_upto(struct drm_i915_gem_request *req);
 
+#if IS_ENABLED(CONFIG_DRM_I915_REQUEST_DEBUG_OBJECTS)
+void debug_request_assert(const struct drm_i915_gem_request *request);
+#else
+static inline void
+debug_request_assert(const struct drm_i915_gem_request *request) {}
+#endif
+
+static inline void
+debug_request_assert_or_null(const struct drm_i915_gem_request *request)
+{
+	if (request)
+		debug_request_assert(request);
+}
+
 static inline struct drm_i915_gem_request *
 to_request(struct dma_fence *fence)
 {
+	struct drm_i915_gem_request *rq;
+
 	/* We assume that NULL fence/request are interoperable */
 	BUILD_BUG_ON(offsetof(struct drm_i915_gem_request, fence) != 0);
 	GEM_BUG_ON(fence && !dma_fence_is_i915(fence));
-	return container_of(fence, struct drm_i915_gem_request, fence);
+
+	rq = container_of(fence, struct drm_i915_gem_request, fence);
+	debug_request_assert_or_null(rq);
+
+	return rq;
 }
 
 static inline struct drm_i915_gem_request *
@@ -242,6 +262,7 @@ i915_gem_request_get_rcu(struct drm_i915_gem_request *req)
 static inline void
 i915_gem_request_put(struct drm_i915_gem_request *req)
 {
+	debug_request_assert_or_null(req);
 	dma_fence_put(&req->fence);
 }
 
@@ -266,6 +287,7 @@ i915_gem_request_put(struct drm_i915_gem_request *req)
 static u32
 i915_gem_request_global_seqno(const struct drm_i915_gem_request *request)
 {
+	debug_request_assert(request);
 	return READ_ONCE(request->global_seqno);
 }
 
@@ -322,6 +344,8 @@ i915_gem_request_completed(const struct drm_i915_gem_request *req)
 {
 	u32 seqno;
 
+	debug_request_assert(req);
+
 	seqno = i915_gem_request_global_seqno(req);
 	if (!seqno)
 		return false;
@@ -334,6 +358,8 @@ i915_gem_request_started(const struct drm_i915_gem_request *req)
 {
 	u32 seqno;
 
+	debug_request_assert(req);
+
 	seqno = i915_gem_request_global_seqno(req);
 	if (!seqno)
 		return false;
@@ -423,6 +449,7 @@ static inline void
 i915_gem_active_set(struct i915_gem_active *active,
 		    struct drm_i915_gem_request *request)
 {
+	debug_request_assert(request);
 	list_move(&active->link, &request->active_list);
 	rcu_assign_pointer(active->request, request);
 }
@@ -469,8 +496,12 @@ __i915_gem_active_peek(const struct i915_gem_active *active)
 static inline struct drm_i915_gem_request *
 i915_gem_active_raw(const struct i915_gem_active *active, struct mutex *mutex)
 {
-	return rcu_dereference_protected(active->request,
-					 lockdep_is_held(mutex));
+	struct drm_i915_gem_request *rq =
+		rcu_dereference_protected(active->request,
+					  lockdep_is_held(mutex));
+
+	debug_request_assert_or_null(rq);
+	return rq;
 }
 
 /**
-- 
2.15.1

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

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

* ✓ Fi.CI.BAT: success for drm/i915: Enable debugobjects for request validation (rev4)
  2018-01-30  9:12 [PATCH v3] drm/i915: Enable debugobjects for request validation Chris Wilson
                   ` (3 preceding siblings ...)
  2018-02-04 20:01 ` [PATCH v2] drm/i915: Enable debugobjects for request validation Chris Wilson
@ 2018-02-04 20:20 ` Patchwork
  2018-02-04 21:13 ` ✗ Fi.CI.IGT: failure " Patchwork
  5 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2018-02-04 20:20 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Enable debugobjects for request validation (rev4)
URL   : https://patchwork.freedesktop.org/series/37240/
State : success

== Summary ==

Series 37240v4 drm/i915: Enable debugobjects for request validation
https://patchwork.freedesktop.org/api/1.0/series/37240/revisions/4/mbox/

Test debugfs_test:
        Subgroup read_all_entries:
                pass       -> INCOMPLETE (fi-snb-2520m) fdo#103713
Test gem_mmap_gtt:
        Subgroup basic-small-bo-tiledx:
                pass       -> FAIL       (fi-gdg-551) fdo#102575
Test gem_ringfill:
        Subgroup basic-default-hang:
                dmesg-warn -> INCOMPLETE (fi-pnv-d510) fdo#101600

fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713
fdo#102575 https://bugs.freedesktop.org/show_bug.cgi?id=102575
fdo#101600 https://bugs.freedesktop.org/show_bug.cgi?id=101600

fi-bdw-5557u     total:288  pass:267  dwarn:0   dfail:0   fail:0   skip:21  time:417s
fi-bdw-gvtdvm    total:288  pass:264  dwarn:0   dfail:0   fail:0   skip:24  time:423s
fi-blb-e6850     total:288  pass:223  dwarn:1   dfail:0   fail:0   skip:64  time:371s
fi-bsw-n3050     total:288  pass:242  dwarn:0   dfail:0   fail:0   skip:46  time:483s
fi-bwr-2160      total:288  pass:183  dwarn:0   dfail:0   fail:0   skip:105 time:281s
fi-bxt-dsi       total:288  pass:258  dwarn:0   dfail:0   fail:0   skip:30  time:482s
fi-bxt-j4205     total:288  pass:259  dwarn:0   dfail:0   fail:0   skip:29  time:481s
fi-byt-j1900     total:288  pass:253  dwarn:0   dfail:0   fail:0   skip:35  time:466s
fi-byt-n2820     total:288  pass:249  dwarn:0   dfail:0   fail:0   skip:39  time:455s
fi-cfl-s2        total:288  pass:262  dwarn:0   dfail:0   fail:0   skip:26  time:566s
fi-elk-e7500     total:288  pass:229  dwarn:0   dfail:0   fail:0   skip:59  time:420s
fi-gdg-551       total:288  pass:179  dwarn:0   dfail:0   fail:1   skip:108 time:280s
fi-glk-1         total:288  pass:260  dwarn:0   dfail:0   fail:0   skip:28  time:512s
fi-hsw-4770      total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:390s
fi-hsw-4770r     total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:405s
fi-ilk-650       total:288  pass:228  dwarn:0   dfail:0   fail:0   skip:60  time:412s
fi-ivb-3520m     total:288  pass:259  dwarn:0   dfail:0   fail:0   skip:29  time:461s
fi-ivb-3770      total:288  pass:255  dwarn:0   dfail:0   fail:0   skip:33  time:417s
fi-kbl-7500u     total:288  pass:263  dwarn:1   dfail:0   fail:0   skip:24  time:455s
fi-kbl-7560u     total:288  pass:269  dwarn:0   dfail:0   fail:0   skip:19  time:497s
fi-kbl-7567u     total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:453s
fi-kbl-r         total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:501s
fi-pnv-d510      total:146  pass:113  dwarn:0   dfail:0   fail:0   skip:32 
fi-skl-6260u     total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:426s
fi-skl-6600u     total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:507s
fi-skl-6700hq    total:288  pass:262  dwarn:0   dfail:0   fail:0   skip:26  time:527s
fi-skl-6700k2    total:288  pass:264  dwarn:0   dfail:0   fail:0   skip:24  time:490s
fi-skl-6770hq    total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:478s
fi-skl-guc       total:288  pass:260  dwarn:0   dfail:0   fail:0   skip:28  time:415s
fi-skl-gvtdvm    total:288  pass:265  dwarn:0   dfail:0   fail:0   skip:23  time:430s
fi-snb-2520m     total:3    pass:2    dwarn:0   dfail:0   fail:0   skip:0  
fi-snb-2600      total:288  pass:248  dwarn:0   dfail:0   fail:0   skip:40  time:396s
Blacklisted hosts:
fi-glk-dsi       total:288  pass:258  dwarn:0   dfail:0   fail:0   skip:30  time:471s

2e76a2952923eba64c4f9baf461613bc42ee997a drm-tip: 2018y-02m-02d-20h-33m-12s UTC integration manifest
444faaa68de2 drm/i915: Enable debugobjects for request validation

== Logs ==

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

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

* ✗ Fi.CI.IGT: failure for drm/i915: Enable debugobjects for request validation (rev4)
  2018-01-30  9:12 [PATCH v3] drm/i915: Enable debugobjects for request validation Chris Wilson
                   ` (4 preceding siblings ...)
  2018-02-04 20:20 ` ✓ Fi.CI.BAT: success for drm/i915: Enable debugobjects for request validation (rev4) Patchwork
@ 2018-02-04 21:13 ` Patchwork
  5 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2018-02-04 21:13 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

== Series Details ==

Series: drm/i915: Enable debugobjects for request validation (rev4)
URL   : https://patchwork.freedesktop.org/series/37240/
State : failure

== Summary ==

Test kms_cursor_legacy:
        Subgroup flip-vs-cursor-atomic:
                fail       -> PASS       (shard-hsw) fdo#102670 +1
Test testdisplay:
                pass       -> DMESG-WARN (shard-apl) fdo#104727
Test gem_eio:
        Subgroup in-flight-contexts:
                dmesg-warn -> PASS       (shard-snb) fdo#104058
Test kms_frontbuffer_tracking:
        Subgroup fbc-1p-primscrn-pri-shrfb-draw-mmap-cpu:
                pass       -> DMESG-FAIL (shard-apl) fdo#103167
        Subgroup fbc-1p-primscrn-cur-indfb-draw-mmap-gtt:
                pass       -> FAIL       (shard-apl) fdo#101623
Test gem_exec_schedule:
        Subgroup wide-bsd:
                pass       -> FAIL       (shard-apl) fdo#102848 +2
        Subgroup wide-render:
                pass       -> FAIL       (shard-apl)
Test kms_flip:
        Subgroup 2x-plain-flip-ts-check:
                fail       -> PASS       (shard-hsw)
        Subgroup 2x-flip-vs-expired-vblank-interruptible:
                fail       -> PASS       (shard-hsw) fdo#102887
Test gem_busy:
        Subgroup close-race:
                pass       -> DMESG-WARN (shard-hsw)

fdo#102670 https://bugs.freedesktop.org/show_bug.cgi?id=102670
fdo#104727 https://bugs.freedesktop.org/show_bug.cgi?id=104727
fdo#104058 https://bugs.freedesktop.org/show_bug.cgi?id=104058
fdo#103167 https://bugs.freedesktop.org/show_bug.cgi?id=103167
fdo#101623 https://bugs.freedesktop.org/show_bug.cgi?id=101623
fdo#102848 https://bugs.freedesktop.org/show_bug.cgi?id=102848
fdo#102887 https://bugs.freedesktop.org/show_bug.cgi?id=102887

shard-apl        total:2836 pass:1744 dwarn:2   dfail:1   fail:25  skip:1064 time:12370s
shard-hsw        total:2836 pass:1732 dwarn:2   dfail:0   fail:11  skip:1090 time:11510s
shard-snb        total:2836 pass:1328 dwarn:1   dfail:0   fail:10  skip:1497 time:6427s
Blacklisted hosts:
shard-kbl        total:2836 pass:1867 dwarn:2   dfail:1   fail:21  skip:945 time:9460s

== Logs ==

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

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

end of thread, other threads:[~2018-02-04 21:13 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-30  9:12 [PATCH v3] drm/i915: Enable debugobjects for request validation Chris Wilson
2018-01-30 12:24 ` ✓ Fi.CI.BAT: success for drm/i915: Enable debugobjects for request validation (rev3) Patchwork
2018-01-30 14:06 ` ✗ Fi.CI.IGT: failure " Patchwork
2018-01-30 16:48 ` ✓ Fi.CI.BAT: success " Patchwork
2018-02-04 20:01 ` [PATCH v2] drm/i915: Enable debugobjects for request validation Chris Wilson
2018-02-04 20:20 ` ✓ Fi.CI.BAT: success for drm/i915: Enable debugobjects for request validation (rev4) Patchwork
2018-02-04 21:13 ` ✗ Fi.CI.IGT: 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.