* [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.