* [Intel-gfx] [PATCH 1/7] drm/i915: Add a couple of missing i915_active_fini() @ 2020-07-28 15:30 Chris Wilson 2020-07-28 15:30 ` [Intel-gfx] [PATCH 2/7] drm/i915: Skip taking acquire mutex for no ref->active callback Chris Wilson ` (8 more replies) 0 siblings, 9 replies; 10+ messages in thread From: Chris Wilson @ 2020-07-28 15:30 UTC (permalink / raw) To: intel-gfx; +Cc: thomas.hellstrom, Chris Wilson We use i915_active_fini() as a debug check on the i915_active state before freeing. If we forget to call it, we may end up angering the debugobjects contained within. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Thomas Hellström <thomas.hellstrom@intel.com> --- drivers/gpu/drm/i915/display/intel_frontbuffer.c | 2 ++ drivers/gpu/drm/i915/gt/selftest_engine_heartbeat.c | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.c b/drivers/gpu/drm/i915/display/intel_frontbuffer.c index 2979ed2588eb..d898b370d7a4 100644 --- a/drivers/gpu/drm/i915/display/intel_frontbuffer.c +++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.c @@ -232,6 +232,8 @@ static void frontbuffer_release(struct kref *ref) RCU_INIT_POINTER(obj->frontbuffer, NULL); spin_unlock(&to_i915(obj->base.dev)->fb_tracking.lock); + i915_active_fini(&front->write); + i915_gem_object_put(obj); kfree_rcu(front, rcu); } diff --git a/drivers/gpu/drm/i915/gt/selftest_engine_heartbeat.c b/drivers/gpu/drm/i915/gt/selftest_engine_heartbeat.c index 73243ba59c7d..e73854dd2fe0 100644 --- a/drivers/gpu/drm/i915/gt/selftest_engine_heartbeat.c +++ b/drivers/gpu/drm/i915/gt/selftest_engine_heartbeat.c @@ -47,7 +47,10 @@ static int pulse_active(struct i915_active *active) static void pulse_free(struct kref *kref) { - kfree(container_of(kref, struct pulse, kref)); + struct pulse *p = container_of(kref, typeof(*p), kref); + + i915_active_fini(&p->active); + kfree(p); } static void pulse_put(struct pulse *p) -- 2.20.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Intel-gfx] [PATCH 2/7] drm/i915: Skip taking acquire mutex for no ref->active callback 2020-07-28 15:30 [Intel-gfx] [PATCH 1/7] drm/i915: Add a couple of missing i915_active_fini() Chris Wilson @ 2020-07-28 15:30 ` Chris Wilson 2020-07-28 15:30 ` [Intel-gfx] [PATCH 3/7] drm/i915: Export a preallocate variant of i915_active_acquire() Chris Wilson ` (7 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: Chris Wilson @ 2020-07-28 15:30 UTC (permalink / raw) To: intel-gfx; +Cc: thomas.hellstrom, Chris Wilson If no active callback is defined for i915_active, we do not need to serialise its enabling with the mutex. We still do only want to call the debug activate once, and must still serialise with a concurrent retire. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Thomas Hellström <thomas.hellstrom@intel.com> --- drivers/gpu/drm/i915/i915_active.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_active.c b/drivers/gpu/drm/i915/i915_active.c index d960d0be5bd2..500537889e66 100644 --- a/drivers/gpu/drm/i915/i915_active.c +++ b/drivers/gpu/drm/i915/i915_active.c @@ -416,6 +416,14 @@ bool i915_active_acquire_if_busy(struct i915_active *ref) return atomic_add_unless(&ref->count, 1, 0); } +static void __i915_active_activate(struct i915_active *ref) +{ + spin_lock_irq(&ref->tree_lock); /* __active_retire() */ + if (!atomic_fetch_inc(&ref->count)) + debug_active_activate(ref); + spin_unlock_irq(&ref->tree_lock); +} + int i915_active_acquire(struct i915_active *ref) { int err; @@ -423,19 +431,19 @@ int i915_active_acquire(struct i915_active *ref) if (i915_active_acquire_if_busy(ref)) return 0; + if (!ref->active) { + __i915_active_activate(ref); + return 0; + } + err = mutex_lock_interruptible(&ref->mutex); if (err) return err; if (likely(!i915_active_acquire_if_busy(ref))) { - if (ref->active) - err = ref->active(ref); - if (!err) { - spin_lock_irq(&ref->tree_lock); /* __active_retire() */ - debug_active_activate(ref); - atomic_inc(&ref->count); - spin_unlock_irq(&ref->tree_lock); - } + err = ref->active(ref); + if (!err) + __i915_active_activate(ref); } mutex_unlock(&ref->mutex); -- 2.20.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Intel-gfx] [PATCH 3/7] drm/i915: Export a preallocate variant of i915_active_acquire() 2020-07-28 15:30 [Intel-gfx] [PATCH 1/7] drm/i915: Add a couple of missing i915_active_fini() Chris Wilson 2020-07-28 15:30 ` [Intel-gfx] [PATCH 2/7] drm/i915: Skip taking acquire mutex for no ref->active callback Chris Wilson @ 2020-07-28 15:30 ` Chris Wilson 2020-07-28 15:30 ` [Intel-gfx] [PATCH 4/7] drm/i915: Keep the most recently used active-fence upon discard Chris Wilson ` (6 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: Chris Wilson @ 2020-07-28 15:30 UTC (permalink / raw) To: intel-gfx; +Cc: thomas.hellstrom, Chris Wilson Sometimes we have to be very careful not to allocate underneath a mutex (or spinlock) and yet still want to track activity. Enter i915_active_acquire_for_context(). This raises the activity counter on i915_active prior to use and ensures that the fence-tree contains a slot for the context. v2: Refactor active_lookup() so it can be called again before/after locking to resolve contention. Since we protect the rbtree until we idle, we can do a lockfree lookup, with the caveat that if another thread performs a concurrent insertion, the rotations from the insert may cause us to not find our target. A second pass holding the treelock will find the target if it exists, or the place to perform our insertion. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> --- .../gpu/drm/i915/gem/i915_gem_execbuffer.c | 2 +- drivers/gpu/drm/i915/gt/intel_timeline.c | 4 +- drivers/gpu/drm/i915/i915_active.c | 150 ++++++++++++++---- drivers/gpu/drm/i915/i915_active.h | 12 +- 4 files changed, 130 insertions(+), 38 deletions(-) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c index 6b4ec66cb558..719ba9fe3e85 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c @@ -1729,7 +1729,7 @@ __parser_mark_active(struct i915_vma *vma, { struct intel_gt_buffer_pool_node *node = vma->private; - return i915_active_ref(&node->active, tl, fence); + return i915_active_ref(&node->active, tl->fence_context, fence); } static int diff --git a/drivers/gpu/drm/i915/gt/intel_timeline.c b/drivers/gpu/drm/i915/gt/intel_timeline.c index 46d20f5f3ddc..acb43aebd669 100644 --- a/drivers/gpu/drm/i915/gt/intel_timeline.c +++ b/drivers/gpu/drm/i915/gt/intel_timeline.c @@ -484,7 +484,9 @@ __intel_timeline_get_seqno(struct intel_timeline *tl, * free it after the current request is retired, which ensures that * all writes into the cacheline from previous requests are complete. */ - err = i915_active_ref(&tl->hwsp_cacheline->active, tl, &rq->fence); + err = i915_active_ref(&tl->hwsp_cacheline->active, + tl->fence_context, + &rq->fence); if (err) goto err_cacheline; diff --git a/drivers/gpu/drm/i915/i915_active.c b/drivers/gpu/drm/i915/i915_active.c index 500537889e66..3a728401c09c 100644 --- a/drivers/gpu/drm/i915/i915_active.c +++ b/drivers/gpu/drm/i915/i915_active.c @@ -28,12 +28,14 @@ static struct i915_global_active { } global; struct active_node { + struct rb_node node; struct i915_active_fence base; struct i915_active *ref; - struct rb_node node; u64 timeline; }; +#define fetch_node(x) rb_entry(READ_ONCE(x), typeof(struct active_node), node) + static inline struct active_node * node_from_active(struct i915_active_fence *active) { @@ -216,12 +218,9 @@ excl_retire(struct dma_fence *fence, struct dma_fence_cb *cb) active_retire(container_of(cb, struct i915_active, excl.cb)); } -static struct i915_active_fence * -active_instance(struct i915_active *ref, struct intel_timeline *tl) +static struct active_node *__active_lookup(struct i915_active *ref, u64 idx) { - struct active_node *node, *prealloc; - struct rb_node **p, *parent; - u64 idx = tl->fence_context; + struct active_node *it; /* * We track the most recently used timeline to skip a rbtree search @@ -230,8 +229,39 @@ active_instance(struct i915_active *ref, struct intel_timeline *tl) * after the previous activity has been retired, or if it matches the * current timeline. */ - node = READ_ONCE(ref->cache); - if (node && node->timeline == idx) + it = READ_ONCE(ref->cache); + if (it && it->timeline == idx) + return it; + + BUILD_BUG_ON(offsetof(typeof(*it), node)); + + /* While active, the tree can only be built; not destroyed */ + GEM_BUG_ON(i915_active_is_idle(ref)); + + it = fetch_node(ref->tree.rb_node); + while (it) { + if (it->timeline < idx) { + it = fetch_node(it->node.rb_right); + } else if (it->timeline > idx) { + it = fetch_node(it->node.rb_left); + } else { + WRITE_ONCE(ref->cache, it); + break; + } + } + + /* NB: If the tree rotated beneath us, we may miss our target. */ + return it; +} + +static struct i915_active_fence * +active_instance(struct i915_active *ref, u64 idx) +{ + struct active_node *node, *prealloc; + struct rb_node **p, *parent; + + node = __active_lookup(ref, idx); + if (likely(node)) return &node->base; /* Preallocate a replacement, just in case */ @@ -268,10 +298,9 @@ active_instance(struct i915_active *ref, struct intel_timeline *tl) rb_insert_color(&node->node, &ref->tree); out: - ref->cache = node; + WRITE_ONCE(ref->cache, node); spin_unlock_irq(&ref->tree_lock); - BUILD_BUG_ON(offsetof(typeof(*node), base)); return &node->base; } @@ -353,63 +382,102 @@ __active_del_barrier(struct i915_active *ref, struct active_node *node) return ____active_del_barrier(ref, node, barrier_to_engine(node)); } -int i915_active_ref(struct i915_active *ref, - struct intel_timeline *tl, - struct dma_fence *fence) +static bool +replace_barrier(struct i915_active *ref, struct i915_active_fence *active) +{ + if (!is_barrier(active)) /* proto-node used by our idle barrier? */ + return false; + + /* + * This request is on the kernel_context timeline, and so + * we can use it to substitute for the pending idle-barrer + * request that we want to emit on the kernel_context. + */ + __active_del_barrier(ref, node_from_active(active)); + return true; +} + +int i915_active_ref(struct i915_active *ref, u64 idx, struct dma_fence *fence) { struct i915_active_fence *active; int err; - lockdep_assert_held(&tl->mutex); - /* Prevent reaping in case we malloc/wait while building the tree */ err = i915_active_acquire(ref); if (err) return err; - active = active_instance(ref, tl); + active = active_instance(ref, idx); if (!active) { err = -ENOMEM; goto out; } - if (is_barrier(active)) { /* proto-node used by our idle barrier */ - /* - * This request is on the kernel_context timeline, and so - * we can use it to substitute for the pending idle-barrer - * request that we want to emit on the kernel_context. - */ - __active_del_barrier(ref, node_from_active(active)); + if (replace_barrier(ref, active)) { RCU_INIT_POINTER(active->fence, NULL); atomic_dec(&ref->count); } if (!__i915_active_fence_set(active, fence)) - atomic_inc(&ref->count); + __i915_active_acquire(ref); out: i915_active_release(ref); return err; } -struct dma_fence * -i915_active_set_exclusive(struct i915_active *ref, struct dma_fence *f) +static struct dma_fence * +__i915_active_set_fence(struct i915_active *ref, + struct i915_active_fence *active, + struct dma_fence *fence) { struct dma_fence *prev; - /* We expect the caller to manage the exclusive timeline ordering */ - GEM_BUG_ON(i915_active_is_idle(ref)); + if (replace_barrier(ref, active)) { + RCU_INIT_POINTER(active->fence, fence); + return NULL; + } rcu_read_lock(); - prev = __i915_active_fence_set(&ref->excl, f); + prev = __i915_active_fence_set(active, fence); if (prev) prev = dma_fence_get_rcu(prev); else - atomic_inc(&ref->count); + __i915_active_acquire(ref); rcu_read_unlock(); return prev; } +static struct i915_active_fence * +__active_fence(struct i915_active *ref, u64 idx) +{ + struct active_node *it; + + it = __active_lookup(ref, idx); + if (unlikely(!it)) { /* Contention with parallel tree builders! */ + spin_lock_irq(&ref->tree_lock); + it = __active_lookup(ref, idx); + spin_unlock_irq(&ref->tree_lock); + } + GEM_BUG_ON(!it); /* slot must be preallocated */ + + return &it->base; +} + +struct dma_fence * +__i915_active_ref(struct i915_active *ref, u64 idx, struct dma_fence *fence) +{ + /* Only valid while active, see i915_active_acquire_for_context() */ + return __i915_active_set_fence(ref, __active_fence(ref, idx), fence); +} + +struct dma_fence * +i915_active_set_exclusive(struct i915_active *ref, struct dma_fence *f) +{ + /* We expect the caller to manage the exclusive timeline ordering */ + return __i915_active_set_fence(ref, &ref->excl, f); +} + bool i915_active_acquire_if_busy(struct i915_active *ref) { debug_active_assert(ref); @@ -451,6 +519,24 @@ int i915_active_acquire(struct i915_active *ref) return err; } +int i915_active_acquire_for_context(struct i915_active *ref, u64 idx) +{ + struct i915_active_fence *active; + int err; + + err = i915_active_acquire(ref); + if (err) + return err; + + active = active_instance(ref, idx); + if (!active) { + i915_active_release(ref); + return -ENOMEM; + } + + return 0; /* return with active ref */ +} + void i915_active_release(struct i915_active *ref) { debug_active_assert(ref); @@ -754,7 +840,7 @@ static struct active_node *reuse_idle_barrier(struct i915_active *ref, u64 idx) match: rb_erase(p, &ref->tree); /* Hide from waits and sibling allocations */ if (p == &ref->cache->node) - ref->cache = NULL; + WRITE_ONCE(ref->cache, NULL); spin_unlock_irq(&ref->tree_lock); return rb_entry(p, struct active_node, node); @@ -812,7 +898,7 @@ int i915_active_acquire_preallocate_barrier(struct i915_active *ref, */ RCU_INIT_POINTER(node->base.fence, ERR_PTR(-EAGAIN)); node->base.cb.node.prev = (void *)engine; - atomic_inc(&ref->count); + __i915_active_acquire(ref); } GEM_BUG_ON(rcu_access_pointer(node->base.fence) != ERR_PTR(-EAGAIN)); diff --git a/drivers/gpu/drm/i915/i915_active.h b/drivers/gpu/drm/i915/i915_active.h index cf4058150966..73ded3c52a04 100644 --- a/drivers/gpu/drm/i915/i915_active.h +++ b/drivers/gpu/drm/i915/i915_active.h @@ -163,14 +163,16 @@ void __i915_active_init(struct i915_active *ref, __i915_active_init(ref, active, retire, &__mkey, &__wkey); \ } while (0) -int i915_active_ref(struct i915_active *ref, - struct intel_timeline *tl, - struct dma_fence *fence); +struct dma_fence * +__i915_active_ref(struct i915_active *ref, u64 idx, struct dma_fence *fence); +int i915_active_ref(struct i915_active *ref, u64 idx, struct dma_fence *fence); static inline int i915_active_add_request(struct i915_active *ref, struct i915_request *rq) { - return i915_active_ref(ref, i915_request_timeline(rq), &rq->fence); + return i915_active_ref(ref, + i915_request_timeline(rq)->fence_context, + &rq->fence); } struct dma_fence * @@ -198,7 +200,9 @@ int i915_request_await_active(struct i915_request *rq, #define I915_ACTIVE_AWAIT_BARRIER BIT(2) int i915_active_acquire(struct i915_active *ref); +int i915_active_acquire_for_context(struct i915_active *ref, u64 idx); bool i915_active_acquire_if_busy(struct i915_active *ref); + void i915_active_release(struct i915_active *ref); static inline void __i915_active_acquire(struct i915_active *ref) -- 2.20.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Intel-gfx] [PATCH 4/7] drm/i915: Keep the most recently used active-fence upon discard 2020-07-28 15:30 [Intel-gfx] [PATCH 1/7] drm/i915: Add a couple of missing i915_active_fini() Chris Wilson 2020-07-28 15:30 ` [Intel-gfx] [PATCH 2/7] drm/i915: Skip taking acquire mutex for no ref->active callback Chris Wilson 2020-07-28 15:30 ` [Intel-gfx] [PATCH 3/7] drm/i915: Export a preallocate variant of i915_active_acquire() Chris Wilson @ 2020-07-28 15:30 ` Chris Wilson 2020-07-28 15:30 ` [Intel-gfx] [PATCH 5/7] drm/i915: Make the stale cached active node available for any timeline Chris Wilson ` (5 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: Chris Wilson @ 2020-07-28 15:30 UTC (permalink / raw) To: intel-gfx; +Cc: thomas.hellstrom, Chris Wilson Whenever an i915_active idles, we prune its tree of old fence slots to prevent a gradual leak should it be used to track many, many timelines. The downside is that we then have to frequently reallocate the rbtree. A compromise is that we keep the most recently used fence slot, and reuse that for the next active reference as that is the most likely timeline to be reused. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Thomas Hellström <thomas.hellstrom@intel.com> --- drivers/gpu/drm/i915/i915_active.c | 27 ++++++++++++++++++++------- drivers/gpu/drm/i915/i915_active.h | 4 ---- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_active.c b/drivers/gpu/drm/i915/i915_active.c index 3a728401c09c..b9bd5578ff54 100644 --- a/drivers/gpu/drm/i915/i915_active.c +++ b/drivers/gpu/drm/i915/i915_active.c @@ -130,8 +130,8 @@ static inline void debug_active_assert(struct i915_active *ref) { } static void __active_retire(struct i915_active *ref) { + struct rb_root root = RB_ROOT; struct active_node *it, *n; - struct rb_root root; unsigned long flags; GEM_BUG_ON(i915_active_is_idle(ref)); @@ -143,9 +143,21 @@ __active_retire(struct i915_active *ref) GEM_BUG_ON(rcu_access_pointer(ref->excl.fence)); debug_active_deactivate(ref); - root = ref->tree; - ref->tree = RB_ROOT; - ref->cache = NULL; + /* Even if we have not used the cache, we may still have a barrier */ + if (!ref->cache) + ref->cache = fetch_node(ref->tree.rb_node); + + /* Keep the MRU cached node for reuse */ + if (ref->cache) { + /* Discard all other nodes in the tree */ + rb_erase(&ref->cache->node, &ref->tree); + root = ref->tree; + + /* Rebuild the tree with only the cached node */ + rb_link_node(&ref->cache->node, NULL, &ref->tree.rb_node); + rb_insert_color(&ref->cache->node, &ref->tree); + GEM_BUG_ON(ref->tree.rb_node != &ref->cache->node); + } spin_unlock_irqrestore(&ref->tree_lock, flags); @@ -156,6 +168,7 @@ __active_retire(struct i915_active *ref) /* ... except if you wait on it, you must manage your own references! */ wake_up_var(ref); + /* Finally free the discarded timeline tree */ rbtree_postorder_for_each_entry_safe(it, n, &root, node) { GEM_BUG_ON(i915_active_fence_isset(&it->base)); kmem_cache_free(global.slab_cache, it); @@ -745,16 +758,16 @@ int i915_sw_fence_await_active(struct i915_sw_fence *fence, return await_active(ref, flags, sw_await_fence, fence, fence); } -#if IS_ENABLED(CONFIG_DRM_I915_DEBUG_GEM) void i915_active_fini(struct i915_active *ref) { debug_active_fini(ref); GEM_BUG_ON(atomic_read(&ref->count)); GEM_BUG_ON(work_pending(&ref->work)); - GEM_BUG_ON(!RB_EMPTY_ROOT(&ref->tree)); mutex_destroy(&ref->mutex); + + if (ref->cache) + kmem_cache_free(global.slab_cache, ref->cache); } -#endif static inline bool is_idle_barrier(struct active_node *node, u64 idx) { diff --git a/drivers/gpu/drm/i915/i915_active.h b/drivers/gpu/drm/i915/i915_active.h index 73ded3c52a04..b9e0394e2975 100644 --- a/drivers/gpu/drm/i915/i915_active.h +++ b/drivers/gpu/drm/i915/i915_active.h @@ -217,11 +217,7 @@ i915_active_is_idle(const struct i915_active *ref) return !atomic_read(&ref->count); } -#if IS_ENABLED(CONFIG_DRM_I915_DEBUG_GEM) void i915_active_fini(struct i915_active *ref); -#else -static inline void i915_active_fini(struct i915_active *ref) { } -#endif int i915_active_acquire_preallocate_barrier(struct i915_active *ref, struct intel_engine_cs *engine); -- 2.20.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Intel-gfx] [PATCH 5/7] drm/i915: Make the stale cached active node available for any timeline 2020-07-28 15:30 [Intel-gfx] [PATCH 1/7] drm/i915: Add a couple of missing i915_active_fini() Chris Wilson ` (2 preceding siblings ...) 2020-07-28 15:30 ` [Intel-gfx] [PATCH 4/7] drm/i915: Keep the most recently used active-fence upon discard Chris Wilson @ 2020-07-28 15:30 ` Chris Wilson 2020-07-28 15:30 ` [Intel-gfx] [PATCH 6/7] drm/i915: Reduce locking around i915_active_acquire_preallocate_barrier() Chris Wilson ` (4 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: Chris Wilson @ 2020-07-28 15:30 UTC (permalink / raw) To: intel-gfx; +Cc: thomas.hellstrom, Chris Wilson Rather than require the next timeline after idling to match the MRU before idling, reset the index on the node and allow it to match the first request. However, this requires cmpxchg(u64) and so is not trivial on 32b, so for compatibility we just fallback to keeping the cached node pointing to the MRU timeline. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Thomas Hellström <thomas.hellstrom@intel.com> --- drivers/gpu/drm/i915/i915_active.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_active.c b/drivers/gpu/drm/i915/i915_active.c index b9bd5578ff54..03b246cb8466 100644 --- a/drivers/gpu/drm/i915/i915_active.c +++ b/drivers/gpu/drm/i915/i915_active.c @@ -157,6 +157,10 @@ __active_retire(struct i915_active *ref) rb_link_node(&ref->cache->node, NULL, &ref->tree.rb_node); rb_insert_color(&ref->cache->node, &ref->tree); GEM_BUG_ON(ref->tree.rb_node != &ref->cache->node); + + /* Make the cached node available for reuse with any timeline */ + if (IS_ENABLED(CONFIG_64BIT)) + ref->cache->timeline = 0; /* needs cmpxchg(u64) */ } spin_unlock_irqrestore(&ref->tree_lock, flags); @@ -235,6 +239,8 @@ static struct active_node *__active_lookup(struct i915_active *ref, u64 idx) { struct active_node *it; + GEM_BUG_ON(idx == 0); /* 0 is the unordered timeline, rsvd for cache */ + /* * We track the most recently used timeline to skip a rbtree search * for the common case, under typical loads we never need the rbtree @@ -243,8 +249,17 @@ static struct active_node *__active_lookup(struct i915_active *ref, u64 idx) * current timeline. */ it = READ_ONCE(ref->cache); - if (it && it->timeline == idx) - return it; + if (it) { + u64 cached = READ_ONCE(it->timeline); + + if (cached == idx) + return it; + +#ifdef CONFIG_64BIT /* for cmpxchg(u64) */ + if (!cached && !cmpxchg(&it->timeline, 0, idx)) + return it; +#endif + } BUILD_BUG_ON(offsetof(typeof(*it), node)); -- 2.20.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Intel-gfx] [PATCH 6/7] drm/i915: Reduce locking around i915_active_acquire_preallocate_barrier() 2020-07-28 15:30 [Intel-gfx] [PATCH 1/7] drm/i915: Add a couple of missing i915_active_fini() Chris Wilson ` (3 preceding siblings ...) 2020-07-28 15:30 ` [Intel-gfx] [PATCH 5/7] drm/i915: Make the stale cached active node available for any timeline Chris Wilson @ 2020-07-28 15:30 ` Chris Wilson 2020-07-28 15:30 ` [Intel-gfx] [PATCH 7/7] drm/i915: Provide a fastpath for waiting on vma bindings Chris Wilson ` (3 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: Chris Wilson @ 2020-07-28 15:30 UTC (permalink / raw) To: intel-gfx; +Cc: thomas.hellstrom, Chris Wilson As the conversion between idle-barrier and full i915_active_fence is already serialised by explicit memory barriers, we can reduce the spinlock in i915_active_acquire_preallocate_barrier() for finding an idle-barrier to reuse to an RCU read lock to ensure the fence remains valid, only taking the spinlock for the update of the rbtree itself. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> --- drivers/gpu/drm/i915/i915_active.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_active.c b/drivers/gpu/drm/i915/i915_active.c index 03b246cb8466..d22b44f9470a 100644 --- a/drivers/gpu/drm/i915/i915_active.c +++ b/drivers/gpu/drm/i915/i915_active.c @@ -796,7 +796,6 @@ static struct active_node *reuse_idle_barrier(struct i915_active *ref, u64 idx) if (RB_EMPTY_ROOT(&ref->tree)) return NULL; - spin_lock_irq(&ref->tree_lock); GEM_BUG_ON(i915_active_is_idle(ref)); /* @@ -861,11 +860,10 @@ static struct active_node *reuse_idle_barrier(struct i915_active *ref, u64 idx) goto match; } - spin_unlock_irq(&ref->tree_lock); - return NULL; match: + spin_lock_irq(&ref->tree_lock); rb_erase(p, &ref->tree); /* Hide from waits and sibling allocations */ if (p == &ref->cache->node) WRITE_ONCE(ref->cache, NULL); @@ -900,7 +898,9 @@ int i915_active_acquire_preallocate_barrier(struct i915_active *ref, struct llist_node *prev = first; struct active_node *node; + rcu_read_lock(); node = reuse_idle_barrier(ref, idx); + rcu_read_unlock(); if (!node) { node = kmem_cache_alloc(global.slab_cache, GFP_KERNEL); if (!node) { -- 2.20.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Intel-gfx] [PATCH 7/7] drm/i915: Provide a fastpath for waiting on vma bindings 2020-07-28 15:30 [Intel-gfx] [PATCH 1/7] drm/i915: Add a couple of missing i915_active_fini() Chris Wilson ` (4 preceding siblings ...) 2020-07-28 15:30 ` [Intel-gfx] [PATCH 6/7] drm/i915: Reduce locking around i915_active_acquire_preallocate_barrier() Chris Wilson @ 2020-07-28 15:30 ` Chris Wilson 2020-07-28 20:13 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for series starting with [1/7] drm/i915: Add a couple of missing i915_active_fini() Patchwork ` (2 subsequent siblings) 8 siblings, 0 replies; 10+ messages in thread From: Chris Wilson @ 2020-07-28 15:30 UTC (permalink / raw) To: intel-gfx; +Cc: thomas.hellstrom, Chris Wilson Before we can execute a request, we must wait for all of its vma to be bound. This is a frequent operation for which we can optimise away a few atomic operations (notably a cmpxchg) in lieu of the RCU protection. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Thomas Hellström <thomas.hellstrom@intel.com> --- drivers/gpu/drm/i915/i915_active.h | 15 +++++++++++++++ drivers/gpu/drm/i915/i915_vma.c | 9 +++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_active.h b/drivers/gpu/drm/i915/i915_active.h index b9e0394e2975..fb165d3f01cf 100644 --- a/drivers/gpu/drm/i915/i915_active.h +++ b/drivers/gpu/drm/i915/i915_active.h @@ -231,4 +231,19 @@ struct i915_active *i915_active_create(void); struct i915_active *i915_active_get(struct i915_active *ref); void i915_active_put(struct i915_active *ref); +static inline int __i915_request_await_exclusive(struct i915_request *rq, + struct i915_active *active) +{ + struct dma_fence *fence; + int err = 0; + + fence = i915_active_fence_get(&active->excl); + if (fence) { + err = i915_request_await_dma_fence(rq, fence); + dma_fence_put(fence); + } + + return err; +} + #endif /* _I915_ACTIVE_H_ */ diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c index bc64f773dcdb..cd12047c7791 100644 --- a/drivers/gpu/drm/i915/i915_vma.c +++ b/drivers/gpu/drm/i915/i915_vma.c @@ -1167,6 +1167,12 @@ void i915_vma_revoke_mmap(struct i915_vma *vma) list_del(&vma->obj->userfault_link); } +static int +__i915_request_await_bind(struct i915_request *rq, struct i915_vma *vma) +{ + return __i915_request_await_exclusive(rq, &vma->active); +} + int __i915_vma_move_to_active(struct i915_vma *vma, struct i915_request *rq) { int err; @@ -1174,8 +1180,7 @@ int __i915_vma_move_to_active(struct i915_vma *vma, struct i915_request *rq) GEM_BUG_ON(!i915_vma_is_pinned(vma)); /* Wait for the vma to be bound before we start! */ - err = i915_request_await_active(rq, &vma->active, - I915_ACTIVE_AWAIT_EXCL); + err = __i915_request_await_bind(rq, vma); if (err) return err; -- 2.20.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [Intel-gfx] ✗ Fi.CI.SPARSE: warning for series starting with [1/7] drm/i915: Add a couple of missing i915_active_fini() 2020-07-28 15:30 [Intel-gfx] [PATCH 1/7] drm/i915: Add a couple of missing i915_active_fini() Chris Wilson ` (5 preceding siblings ...) 2020-07-28 15:30 ` [Intel-gfx] [PATCH 7/7] drm/i915: Provide a fastpath for waiting on vma bindings Chris Wilson @ 2020-07-28 20:13 ` Patchwork 2020-07-28 20:38 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork 2020-07-29 5:09 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork 8 siblings, 0 replies; 10+ messages in thread From: Patchwork @ 2020-07-28 20:13 UTC (permalink / raw) To: Chris Wilson; +Cc: intel-gfx == Series Details == Series: series starting with [1/7] drm/i915: Add a couple of missing i915_active_fini() URL : https://patchwork.freedesktop.org/series/79992/ State : warning == Summary == $ dim sparse --fast origin/drm-tip Sparse version: v0.6.0 Fast mode used, each commit won't be checked separately. _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [1/7] drm/i915: Add a couple of missing i915_active_fini() 2020-07-28 15:30 [Intel-gfx] [PATCH 1/7] drm/i915: Add a couple of missing i915_active_fini() Chris Wilson ` (6 preceding siblings ...) 2020-07-28 20:13 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for series starting with [1/7] drm/i915: Add a couple of missing i915_active_fini() Patchwork @ 2020-07-28 20:38 ` Patchwork 2020-07-29 5:09 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork 8 siblings, 0 replies; 10+ messages in thread From: Patchwork @ 2020-07-28 20:38 UTC (permalink / raw) To: Chris Wilson; +Cc: intel-gfx [-- Attachment #1.1: Type: text/plain, Size: 7882 bytes --] == Series Details == Series: series starting with [1/7] drm/i915: Add a couple of missing i915_active_fini() URL : https://patchwork.freedesktop.org/series/79992/ State : success == Summary == CI Bug Log - changes from CI_DRM_8807 -> Patchwork_18257 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/index.html Known issues ------------ Here are the changes found in Patchwork_18257 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_exec_fence@basic-busy@vecs0: - fi-bsw-kefka: [PASS][1] -> [DMESG-WARN][2] ([i915#1982]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/fi-bsw-kefka/igt@gem_exec_fence@basic-busy@vecs0.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/fi-bsw-kefka/igt@gem_exec_fence@basic-busy@vecs0.html * igt@kms_chamelium@common-hpd-after-suspend: - fi-kbl-7500u: [PASS][3] -> [DMESG-WARN][4] ([i915#2203]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/fi-kbl-7500u/igt@kms_chamelium@common-hpd-after-suspend.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/fi-kbl-7500u/igt@kms_chamelium@common-hpd-after-suspend.html * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy: - fi-icl-u2: [PASS][5] -> [DMESG-WARN][6] ([i915#1982]) +3 similar issues [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/fi-icl-u2/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/fi-icl-u2/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html * igt@vgem_basic@setversion: - fi-tgl-y: [PASS][7] -> [DMESG-WARN][8] ([i915#402]) +1 similar issue [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/fi-tgl-y/igt@vgem_basic@setversion.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/fi-tgl-y/igt@vgem_basic@setversion.html #### Possible fixes #### * igt@gem_exec_suspend@basic-s3: - fi-tgl-u2: [FAIL][9] ([i915#1888]) -> [PASS][10] [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/fi-tgl-u2/igt@gem_exec_suspend@basic-s3.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/fi-tgl-u2/igt@gem_exec_suspend@basic-s3.html * igt@gem_flink_basic@basic: - fi-tgl-y: [DMESG-WARN][11] ([i915#402]) -> [PASS][12] +1 similar issue [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/fi-tgl-y/igt@gem_flink_basic@basic.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/fi-tgl-y/igt@gem_flink_basic@basic.html * igt@i915_pm_rpm@module-reload: - fi-bsw-kefka: [DMESG-WARN][13] ([i915#1982]) -> [PASS][14] +2 similar issues [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/fi-bsw-kefka/igt@i915_pm_rpm@module-reload.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/fi-bsw-kefka/igt@i915_pm_rpm@module-reload.html * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic: - fi-bsw-n3050: [DMESG-WARN][15] ([i915#1982]) -> [PASS][16] +1 similar issue [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/fi-bsw-n3050/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/fi-bsw-n3050/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html * igt@kms_flip@basic-flip-vs-wf_vblank@c-edp1: - fi-icl-u2: [DMESG-WARN][17] ([i915#1982]) -> [PASS][18] [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/fi-icl-u2/igt@kms_flip@basic-flip-vs-wf_vblank@c-edp1.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/fi-icl-u2/igt@kms_flip@basic-flip-vs-wf_vblank@c-edp1.html #### Warnings #### * igt@gem_exec_suspend@basic-s0: - fi-kbl-x1275: [DMESG-WARN][19] ([i915#1982] / [i915#62] / [i915#92] / [i915#95]) -> [DMESG-WARN][20] ([i915#62] / [i915#92]) [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/fi-kbl-x1275/igt@gem_exec_suspend@basic-s0.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/fi-kbl-x1275/igt@gem_exec_suspend@basic-s0.html * igt@gem_exec_suspend@basic-s3: - fi-kbl-x1275: [DMESG-WARN][21] ([i915#1982] / [i915#62] / [i915#92] / [i915#95]) -> [DMESG-WARN][22] ([i915#62] / [i915#92] / [i915#95]) [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/fi-kbl-x1275/igt@gem_exec_suspend@basic-s3.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/fi-kbl-x1275/igt@gem_exec_suspend@basic-s3.html * igt@i915_pm_rpm@module-reload: - fi-kbl-x1275: [SKIP][23] ([fdo#109271]) -> [DMESG-FAIL][24] ([i915#62]) [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/fi-kbl-x1275/igt@i915_pm_rpm@module-reload.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/fi-kbl-x1275/igt@i915_pm_rpm@module-reload.html * igt@kms_force_connector_basic@force-connector-state: - fi-kbl-x1275: [DMESG-WARN][25] ([i915#62] / [i915#92] / [i915#95]) -> [DMESG-WARN][26] ([i915#62] / [i915#92]) +2 similar issues [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/fi-kbl-x1275/igt@kms_force_connector_basic@force-connector-state.html [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/fi-kbl-x1275/igt@kms_force_connector_basic@force-connector-state.html * igt@kms_force_connector_basic@force-edid: - fi-kbl-x1275: [DMESG-WARN][27] ([i915#62] / [i915#92]) -> [DMESG-WARN][28] ([i915#62] / [i915#92] / [i915#95]) +4 similar issues [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/fi-kbl-x1275/igt@kms_force_connector_basic@force-edid.html [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/fi-kbl-x1275/igt@kms_force_connector_basic@force-edid.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [i915#1888]: https://gitlab.freedesktop.org/drm/intel/issues/1888 [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982 [i915#2203]: https://gitlab.freedesktop.org/drm/intel/issues/2203 [i915#402]: https://gitlab.freedesktop.org/drm/intel/issues/402 [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62 [i915#92]: https://gitlab.freedesktop.org/drm/intel/issues/92 [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95 Participating hosts (43 -> 37) ------------------------------ Missing (6): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-byt-clapper fi-bdw-samus Build changes ------------- * Linux: CI_DRM_8807 -> Patchwork_18257 CI-20190529: 20190529 CI_DRM_8807: 494850d613c74f24a5799710b346faa5cd12a407 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_5749: 2fef871e791ceab7841b899691c443167550173d @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_18257: 88d49f69a5282f430224b3f407c495c7c7b12044 @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == 88d49f69a528 drm/i915: Provide a fastpath for waiting on vma bindings 02b8a479ef0a drm/i915: Reduce locking around i915_active_acquire_preallocate_barrier() 7163180458a2 drm/i915: Make the stale cached active node available for any timeline 6add6ea53128 drm/i915: Keep the most recently used active-fence upon discard 531205820e80 drm/i915: Export a preallocate variant of i915_active_acquire() 791bf03ed72b drm/i915: Skip taking acquire mutex for no ref->active callback b5e1f19b446e drm/i915: Add a couple of missing i915_active_fini() == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/index.html [-- Attachment #1.2: Type: text/html, Size: 10558 bytes --] [-- Attachment #2: Type: text/plain, Size: 160 bytes --] _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 10+ messages in thread
* [Intel-gfx] ✗ Fi.CI.IGT: failure for series starting with [1/7] drm/i915: Add a couple of missing i915_active_fini() 2020-07-28 15:30 [Intel-gfx] [PATCH 1/7] drm/i915: Add a couple of missing i915_active_fini() Chris Wilson ` (7 preceding siblings ...) 2020-07-28 20:38 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork @ 2020-07-29 5:09 ` Patchwork 8 siblings, 0 replies; 10+ messages in thread From: Patchwork @ 2020-07-29 5:09 UTC (permalink / raw) To: Chris Wilson; +Cc: intel-gfx [-- Attachment #1.1: Type: text/plain, Size: 19940 bytes --] == Series Details == Series: series starting with [1/7] drm/i915: Add a couple of missing i915_active_fini() URL : https://patchwork.freedesktop.org/series/79992/ State : failure == Summary == CI Bug Log - changes from CI_DRM_8807_full -> Patchwork_18257_full ==================================================== Summary ------- **FAILURE** Serious unknown changes coming with Patchwork_18257_full absolutely need to be verified manually. If you think the reported changes have nothing to do with the changes introduced in Patchwork_18257_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_18257_full: ### IGT changes ### #### Possible regressions #### * igt@kms_flip@2x-nonexisting-fb-interruptible@ac-vga1-hdmi-a1: - shard-hsw: [PASS][1] -> [INCOMPLETE][2] +2 similar issues [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-hsw8/igt@kms_flip@2x-nonexisting-fb-interruptible@ac-vga1-hdmi-a1.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-hsw1/igt@kms_flip@2x-nonexisting-fb-interruptible@ac-vga1-hdmi-a1.html * igt@kms_flip@2x-nonexisting-fb@bc-vga1-hdmi-a1: - shard-hsw: NOTRUN -> [INCOMPLETE][3] [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-hsw8/igt@kms_flip@2x-nonexisting-fb@bc-vga1-hdmi-a1.html Known issues ------------ Here are the changes found in Patchwork_18257_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_exec_whisper@basic-queues-priority: - shard-glk: [PASS][4] -> [DMESG-WARN][5] ([i915#118] / [i915#95]) [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-glk9/igt@gem_exec_whisper@basic-queues-priority.html [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-glk3/igt@gem_exec_whisper@basic-queues-priority.html * igt@gem_partial_pwrite_pread@reads: - shard-apl: [PASS][6] -> [FAIL][7] ([i915#1635]) [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-apl2/igt@gem_partial_pwrite_pread@reads.html [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-apl3/igt@gem_partial_pwrite_pread@reads.html * igt@gem_workarounds@suspend-resume: - shard-skl: [PASS][8] -> [INCOMPLETE][9] ([i915#198]) [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-skl3/igt@gem_workarounds@suspend-resume.html [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-skl10/igt@gem_workarounds@suspend-resume.html * igt@i915_pm_dc@dc6-psr: - shard-skl: [PASS][10] -> [FAIL][11] ([i915#454]) [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-skl7/igt@i915_pm_dc@dc6-psr.html [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-skl2/igt@i915_pm_dc@dc6-psr.html * igt@i915_suspend@forcewake: - shard-skl: [PASS][12] -> [INCOMPLETE][13] ([i915#636]) [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-skl6/igt@i915_suspend@forcewake.html [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-skl8/igt@i915_suspend@forcewake.html * igt@kms_atomic_transition@plane-all-transition-fencing@edp-1-pipe-c: - shard-tglb: [PASS][14] -> [INCOMPLETE][15] ([i915#2242]) +1 similar issue [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-tglb1/igt@kms_atomic_transition@plane-all-transition-fencing@edp-1-pipe-c.html [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-tglb5/igt@kms_atomic_transition@plane-all-transition-fencing@edp-1-pipe-c.html * igt@kms_big_fb@x-tiled-64bpp-rotate-0: - shard-glk: [PASS][16] -> [DMESG-FAIL][17] ([i915#118] / [i915#95]) +1 similar issue [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-glk1/igt@kms_big_fb@x-tiled-64bpp-rotate-0.html [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-glk8/igt@kms_big_fb@x-tiled-64bpp-rotate-0.html * igt@kms_big_fb@y-tiled-16bpp-rotate-0: - shard-skl: [PASS][18] -> [DMESG-WARN][19] ([i915#1982]) +14 similar issues [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-skl6/igt@kms_big_fb@y-tiled-16bpp-rotate-0.html [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-skl1/igt@kms_big_fb@y-tiled-16bpp-rotate-0.html * igt@kms_cursor_edge_walk@pipe-b-256x256-right-edge: - shard-apl: [PASS][20] -> [DMESG-WARN][21] ([i915#1635] / [i915#1982]) [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-apl3/igt@kms_cursor_edge_walk@pipe-b-256x256-right-edge.html [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-apl1/igt@kms_cursor_edge_walk@pipe-b-256x256-right-edge.html * igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic: - shard-hsw: [PASS][22] -> [FAIL][23] ([i915#96]) [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-hsw1/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic.html [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-hsw8/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic.html * igt@kms_cursor_legacy@cursora-vs-flipb-varying-size: - shard-glk: [PASS][24] -> [INCOMPLETE][25] ([i915#2241]) [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-glk2/igt@kms_cursor_legacy@cursora-vs-flipb-varying-size.html [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-glk1/igt@kms_cursor_legacy@cursora-vs-flipb-varying-size.html * igt@kms_flip@flip-vs-expired-vblank@a-dp1: - shard-apl: [PASS][26] -> [FAIL][27] ([i915#1635] / [i915#79]) [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-apl8/igt@kms_flip@flip-vs-expired-vblank@a-dp1.html [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-apl7/igt@kms_flip@flip-vs-expired-vblank@a-dp1.html * igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a1: - shard-glk: [PASS][28] -> [FAIL][29] ([i915#79]) [28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-glk9/igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a1.html [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-glk3/igt@kms_flip@flip-vs-expired-vblank@b-hdmi-a1.html * igt@kms_flip@nonexisting-fb@a-edp1: - shard-tglb: [PASS][30] -> [INCOMPLETE][31] ([i915#2240]) [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-tglb6/igt@kms_flip@nonexisting-fb@a-edp1.html [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-tglb6/igt@kms_flip@nonexisting-fb@a-edp1.html * igt@kms_flip@nonexisting-fb@b-dp1: - shard-kbl: [PASS][32] -> [INCOMPLETE][33] ([i915#2240]) [32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-kbl6/igt@kms_flip@nonexisting-fb@b-dp1.html [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-kbl1/igt@kms_flip@nonexisting-fb@b-dp1.html * igt@kms_frontbuffer_tracking@fbc-badstride: - shard-glk: [PASS][34] -> [DMESG-WARN][35] ([i915#1982]) [34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-glk3/igt@kms_frontbuffer_tracking@fbc-badstride.html [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-glk7/igt@kms_frontbuffer_tracking@fbc-badstride.html * igt@kms_frontbuffer_tracking@fbc-suspend: - shard-kbl: [PASS][36] -> [DMESG-WARN][37] ([i915#180]) +4 similar issues [36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-kbl1/igt@kms_frontbuffer_tracking@fbc-suspend.html [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-kbl4/igt@kms_frontbuffer_tracking@fbc-suspend.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu: - shard-tglb: [PASS][38] -> [DMESG-WARN][39] ([i915#1982]) +2 similar issues [38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-tglb3/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu.html [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-tglb2/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-mmap-cpu.html * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes: - shard-kbl: [PASS][40] -> [INCOMPLETE][41] ([i915#155]) [40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-kbl2/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes.html [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-kbl3/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes.html * igt@kms_plane_alpha_blend@pipe-b-constant-alpha-min: - shard-skl: [PASS][42] -> [FAIL][43] ([fdo#108145] / [i915#265]) [42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-skl4/igt@kms_plane_alpha_blend@pipe-b-constant-alpha-min.html [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-skl1/igt@kms_plane_alpha_blend@pipe-b-constant-alpha-min.html * igt@kms_plane_alpha_blend@pipe-c-coverage-7efc: - shard-skl: [PASS][44] -> [DMESG-FAIL][45] ([fdo#108145] / [i915#1982]) [44]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-skl10/igt@kms_plane_alpha_blend@pipe-c-coverage-7efc.html [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-skl5/igt@kms_plane_alpha_blend@pipe-c-coverage-7efc.html * igt@kms_psr@psr2_sprite_blt: - shard-iclb: [PASS][46] -> [SKIP][47] ([fdo#109441]) +1 similar issue [46]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-iclb2/igt@kms_psr@psr2_sprite_blt.html [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-iclb5/igt@kms_psr@psr2_sprite_blt.html * igt@perf@blocking-parameterized: - shard-iclb: [PASS][48] -> [FAIL][49] ([i915#1542]) [48]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-iclb4/igt@perf@blocking-parameterized.html [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-iclb2/igt@perf@blocking-parameterized.html #### Possible fixes #### * igt@gem_eio@in-flight-suspend: - shard-skl: [DMESG-WARN][50] ([i915#1982]) -> [PASS][51] +5 similar issues [50]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-skl7/igt@gem_eio@in-flight-suspend.html [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-skl8/igt@gem_eio@in-flight-suspend.html * igt@gem_exec_whisper@basic-forked: - shard-glk: [DMESG-WARN][52] ([i915#118] / [i915#95]) -> [PASS][53] [52]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-glk8/igt@gem_exec_whisper@basic-forked.html [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-glk5/igt@gem_exec_whisper@basic-forked.html * igt@gem_huc_copy@huc-copy: - shard-tglb: [SKIP][54] ([i915#2190]) -> [PASS][55] [54]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-tglb6/igt@gem_huc_copy@huc-copy.html [55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-tglb7/igt@gem_huc_copy@huc-copy.html * igt@kms_atomic_transition@plane-all-transition@edp-1-pipe-a: - shard-tglb: [INCOMPLETE][56] ([i915#2242]) -> [PASS][57] +1 similar issue [56]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-tglb6/igt@kms_atomic_transition@plane-all-transition@edp-1-pipe-a.html [57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-tglb8/igt@kms_atomic_transition@plane-all-transition@edp-1-pipe-a.html * igt@kms_big_fb@linear-64bpp-rotate-0: - shard-glk: [DMESG-FAIL][58] ([i915#118] / [i915#95]) -> [PASS][59] [58]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-glk8/igt@kms_big_fb@linear-64bpp-rotate-0.html [59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-glk2/igt@kms_big_fb@linear-64bpp-rotate-0.html * igt@kms_big_fb@yf-tiled-32bpp-rotate-270: - shard-apl: [DMESG-WARN][60] ([i915#1635] / [i915#1982]) -> [PASS][61] [60]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-apl4/igt@kms_big_fb@yf-tiled-32bpp-rotate-270.html [61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-apl8/igt@kms_big_fb@yf-tiled-32bpp-rotate-270.html * igt@kms_cursor_crc@pipe-c-cursor-suspend: - shard-skl: [INCOMPLETE][62] ([i915#300]) -> [PASS][63] [62]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-skl1/igt@kms_cursor_crc@pipe-c-cursor-suspend.html [63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-skl8/igt@kms_cursor_crc@pipe-c-cursor-suspend.html * igt@kms_cursor_edge_walk@pipe-c-64x64-top-edge: - shard-glk: [DMESG-WARN][64] ([i915#1982]) -> [PASS][65] [64]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-glk9/igt@kms_cursor_edge_walk@pipe-c-64x64-top-edge.html [65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-glk3/igt@kms_cursor_edge_walk@pipe-c-64x64-top-edge.html * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-hdmi-a1-hdmi-a2: - shard-glk: [FAIL][66] ([i915#79]) -> [PASS][67] [66]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-glk7/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-hdmi-a1-hdmi-a2.html [67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-glk4/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-hdmi-a1-hdmi-a2.html * igt@kms_flip@flip-vs-suspend-interruptible@a-dp1: - shard-kbl: [DMESG-WARN][68] ([i915#180]) -> [PASS][69] +11 similar issues [68]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-kbl2/igt@kms_flip@flip-vs-suspend-interruptible@a-dp1.html [69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-kbl6/igt@kms_flip@flip-vs-suspend-interruptible@a-dp1.html * igt@kms_flip@nonexisting-fb@a-edp1: - shard-iclb: [INCOMPLETE][70] ([i915#2240]) -> [PASS][71] [70]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-iclb4/igt@kms_flip@nonexisting-fb@a-edp1.html [71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-iclb1/igt@kms_flip@nonexisting-fb@a-edp1.html * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-pwrite: - shard-iclb: [DMESG-WARN][72] ([i915#1982]) -> [PASS][73] [72]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-iclb8/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-pwrite.html [73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-iclb6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-pwrite.html * igt@kms_frontbuffer_tracking@fbcpsr-stridechange: - shard-tglb: [DMESG-WARN][74] ([i915#1982]) -> [PASS][75] +1 similar issue [74]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-tglb5/igt@kms_frontbuffer_tracking@fbcpsr-stridechange.html [75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-tglb7/igt@kms_frontbuffer_tracking@fbcpsr-stridechange.html * igt@kms_frontbuffer_tracking@psr-1p-pri-indfb-multidraw: - shard-iclb: [INCOMPLETE][76] ([i915#123]) -> [PASS][77] [76]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-iclb1/igt@kms_frontbuffer_tracking@psr-1p-pri-indfb-multidraw.html [77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-iclb7/igt@kms_frontbuffer_tracking@psr-1p-pri-indfb-multidraw.html * igt@kms_hdr@bpc-switch-dpms: - shard-skl: [FAIL][78] ([i915#1188]) -> [PASS][79] +1 similar issue [78]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-skl6/igt@kms_hdr@bpc-switch-dpms.html [79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-skl1/igt@kms_hdr@bpc-switch-dpms.html * igt@kms_plane_cursor@pipe-b-viewport-size-128: - shard-hsw: [INCOMPLETE][80] -> [PASS][81] +1 similar issue [80]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-hsw6/igt@kms_plane_cursor@pipe-b-viewport-size-128.html [81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-hsw8/igt@kms_plane_cursor@pipe-b-viewport-size-128.html * igt@kms_psr@psr2_cursor_mmap_cpu: - shard-iclb: [SKIP][82] ([fdo#109441]) -> [PASS][83] +1 similar issue [82]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-iclb6/igt@kms_psr@psr2_cursor_mmap_cpu.html [83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-iclb2/igt@kms_psr@psr2_cursor_mmap_cpu.html #### Warnings #### * igt@kms_content_protection@atomic-dpms: - shard-kbl: [TIMEOUT][84] ([i915#1319] / [i915#1958] / [i915#2119]) -> [TIMEOUT][85] ([i915#1319] / [i915#2119]) [84]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-kbl6/igt@kms_content_protection@atomic-dpms.html [85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-kbl1/igt@kms_content_protection@atomic-dpms.html * igt@kms_plane_alpha_blend@pipe-a-alpha-basic: - shard-skl: [FAIL][86] ([fdo#108145] / [i915#265]) -> [DMESG-FAIL][87] ([fdo#108145] / [i915#1982]) +1 similar issue [86]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8807/shard-skl1/igt@kms_plane_alpha_blend@pipe-a-alpha-basic.html [87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_18257/shard-skl5/igt@kms_plane_alpha_blend@pipe-a-alpha-basic.html [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145 [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441 [i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118 [i915#1188]: https://gitlab.freedesktop.org/drm/intel/issues/1188 [i915#123]: https://gitlab.freedesktop.org/drm/intel/issues/123 [i915#1319]: https://gitlab.freedesktop.org/drm/intel/issues/1319 [i915#1542]: https://gitlab.freedesktop.org/drm/intel/issues/1542 [i915#155]: https://gitlab.freedesktop.org/drm/intel/issues/155 [i915#1635]: https://gitlab.freedesktop.org/drm/intel/issues/1635 [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180 [i915#1958]: https://gitlab.freedesktop.org/drm/intel/issues/1958 [i915#198]: https://gitlab.freedesktop.org/drm/intel/issues/198 [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982 [i915#2119]: https://gitlab.freedesktop.org/drm/intel/issues/2119 [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190 [i915#2240]: https://gitlab.freedesktop.org/drm/intel/issues/2240 [i915#2241]: https://gitlab.freedesktop.org/drm/intel/issues/2241 [i915#2242]: https://gitlab.freedesktop.org/drm/intel/issues/2242 [i915#265]: https://gitlab.freedesktop.org/drm/intel/issues/265 [i915#300]: https://gitlab.freedesktop.org/drm/intel/issues/300 [i915#454]: https://gitlab.freedesktop.org/drm/intel/issues/454 [i915#636]: https://gitlab.freedesktop.org/drm/intel/issues/636 [i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79 [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95 [i915#96]: https://gitlab.freedesktop.org/drm/intel/issues/96 Participating hosts (10 -> 11) ------------------------------ Additional (1): pig-icl-1065g7 Build changes ------------- * Linux: CI_DRM_8807 -> Patchwork_18257 CI-20190529: 20190529 CI_DRM_8807: 494850d613c74f24a5799710b346faa5cd12a407 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_5749: 2fef871e791ceab7841b899691c443167550173d @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_18257: 88d49f69a5282f430224b3f407c495c7c7b12044 @ 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_18257/index.html [-- Attachment #1.2: Type: text/html, Size: 23779 bytes --] [-- Attachment #2: Type: text/plain, Size: 160 bytes --] _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2020-07-29 5:09 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-07-28 15:30 [Intel-gfx] [PATCH 1/7] drm/i915: Add a couple of missing i915_active_fini() Chris Wilson 2020-07-28 15:30 ` [Intel-gfx] [PATCH 2/7] drm/i915: Skip taking acquire mutex for no ref->active callback Chris Wilson 2020-07-28 15:30 ` [Intel-gfx] [PATCH 3/7] drm/i915: Export a preallocate variant of i915_active_acquire() Chris Wilson 2020-07-28 15:30 ` [Intel-gfx] [PATCH 4/7] drm/i915: Keep the most recently used active-fence upon discard Chris Wilson 2020-07-28 15:30 ` [Intel-gfx] [PATCH 5/7] drm/i915: Make the stale cached active node available for any timeline Chris Wilson 2020-07-28 15:30 ` [Intel-gfx] [PATCH 6/7] drm/i915: Reduce locking around i915_active_acquire_preallocate_barrier() Chris Wilson 2020-07-28 15:30 ` [Intel-gfx] [PATCH 7/7] drm/i915: Provide a fastpath for waiting on vma bindings Chris Wilson 2020-07-28 20:13 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for series starting with [1/7] drm/i915: Add a couple of missing i915_active_fini() Patchwork 2020-07-28 20:38 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork 2020-07-29 5:09 ` [Intel-gfx] ✗ 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.