* [Intel-gfx] [PATCH 1/6] drm/i915: Hold reference to previous active fence as we queue @ 2020-02-03 9:41 Chris Wilson 2020-02-03 9:41 ` [Intel-gfx] [PATCH 2/6] drm/i915: Initialise basic fence before acquiring seqno Chris Wilson ` (7 more replies) 0 siblings, 8 replies; 14+ messages in thread From: Chris Wilson @ 2020-02-03 9:41 UTC (permalink / raw) To: intel-gfx; +Cc: matthew.auld Take a reference to the previous exclusive fence on the i915_active, as we wish to add an await to it in the caller (and so must prevent it from being freed until we have completed that task). Fixes: e3793468b466 ("drm/i915: Use the async worker to avoid reclaim tainting the ggtt->mutex") Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Matthew Auld <matthew.auld@intel.com> --- drivers/gpu/drm/i915/i915_active.c | 6 +++++- drivers/gpu/drm/i915/i915_vma.c | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_active.c b/drivers/gpu/drm/i915/i915_active.c index da58e5d084f4..9ccb931a733e 100644 --- a/drivers/gpu/drm/i915/i915_active.c +++ b/drivers/gpu/drm/i915/i915_active.c @@ -398,9 +398,13 @@ i915_active_set_exclusive(struct i915_active *ref, struct dma_fence *f) /* We expect the caller to manage the exclusive timeline ordering */ GEM_BUG_ON(i915_active_is_idle(ref)); + rcu_read_lock(); prev = __i915_active_fence_set(&ref->excl, f); - if (!prev) + if (prev) + prev = dma_fence_get_rcu(prev); + else atomic_inc(&ref->count); + rcu_read_unlock(); return prev; } diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c index e801e28de470..74dc3ba59ce5 100644 --- a/drivers/gpu/drm/i915/i915_vma.c +++ b/drivers/gpu/drm/i915/i915_vma.c @@ -422,10 +422,12 @@ int i915_vma_bind(struct i915_vma *vma, * execution and not content or object's backing store lifetime. */ prev = i915_active_set_exclusive(&vma->active, &work->base.dma); - if (prev) + if (prev) { __i915_sw_fence_await_dma_fence(&work->base.chain, prev, &work->cb); + dma_fence_put(prev); + } work->base.dma.error = 0; /* enable the queue_work() */ -- 2.25.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Intel-gfx] [PATCH 2/6] drm/i915: Initialise basic fence before acquiring seqno 2020-02-03 9:41 [Intel-gfx] [PATCH 1/6] drm/i915: Hold reference to previous active fence as we queue Chris Wilson @ 2020-02-03 9:41 ` Chris Wilson 2020-02-03 10:55 ` Tvrtko Ursulin 2020-02-03 9:41 ` [Intel-gfx] [PATCH 3/6] drm/i915/gt: Warn about the hidden i915_vma_pin in timeline_get_seqno Chris Wilson ` (6 subsequent siblings) 7 siblings, 1 reply; 14+ messages in thread From: Chris Wilson @ 2020-02-03 9:41 UTC (permalink / raw) To: intel-gfx; +Cc: matthew.auld Inside the intel_timeline_get_seqno(), we currently track the retirement of the old cachelines by listening to the new request. This requires that the new request is ready to be used and so requires a minimum bit of initialisation prior to getting the new seqno. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Matthew Auld <matthew.auld@intel.com> --- drivers/gpu/drm/i915/i915_request.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c index 78a5f5d3c070..f56b046a32de 100644 --- a/drivers/gpu/drm/i915/i915_request.c +++ b/drivers/gpu/drm/i915/i915_request.c @@ -595,6 +595,8 @@ static void __i915_request_ctor(void *arg) i915_sw_fence_init(&rq->submit, submit_notify); i915_sw_fence_init(&rq->semaphore, semaphore_notify); + dma_fence_init(&rq->fence, &i915_fence_ops, &rq->lock, 0, 0); + rq->file_priv = NULL; rq->capture_list = NULL; @@ -653,25 +655,30 @@ __i915_request_create(struct intel_context *ce, gfp_t gfp) } } - ret = intel_timeline_get_seqno(tl, rq, &seqno); - if (ret) - goto err_free; - rq->i915 = ce->engine->i915; rq->context = ce; rq->engine = ce->engine; rq->ring = ce->ring; rq->execution_mask = ce->engine->mask; + kref_init(&rq->fence.refcount); + rq->fence.flags = 0; + rq->fence.error = 0; + INIT_LIST_HEAD(&rq->fence.cb_list); + + ret = intel_timeline_get_seqno(tl, rq, &seqno); + if (ret) + goto err_free; + + rq->fence.context = tl->fence_context; + rq->fence.seqno = seqno; + RCU_INIT_POINTER(rq->timeline, tl); RCU_INIT_POINTER(rq->hwsp_cacheline, tl->hwsp_cacheline); rq->hwsp_seqno = tl->hwsp_seqno; rq->rcustate = get_state_synchronize_rcu(); /* acts as smp_mb() */ - dma_fence_init(&rq->fence, &i915_fence_ops, &rq->lock, - tl->fence_context, seqno); - /* We bump the ref for the fence chain */ i915_sw_fence_reinit(&i915_request_get(rq)->submit); i915_sw_fence_reinit(&i915_request_get(rq)->semaphore); -- 2.25.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [Intel-gfx] [PATCH 2/6] drm/i915: Initialise basic fence before acquiring seqno 2020-02-03 9:41 ` [Intel-gfx] [PATCH 2/6] drm/i915: Initialise basic fence before acquiring seqno Chris Wilson @ 2020-02-03 10:55 ` Tvrtko Ursulin 2020-02-03 10:58 ` Chris Wilson 0 siblings, 1 reply; 14+ messages in thread From: Tvrtko Ursulin @ 2020-02-03 10:55 UTC (permalink / raw) To: Chris Wilson, intel-gfx; +Cc: matthew.auld On 03/02/2020 09:41, Chris Wilson wrote: > Inside the intel_timeline_get_seqno(), we currently track the retirement > of the old cachelines by listening to the new request. This requires > that the new request is ready to be used and so requires a minimum bit > of initialisation prior to getting the new seqno. > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > Cc: Matthew Auld <matthew.auld@intel.com> > --- > drivers/gpu/drm/i915/i915_request.c | 21 ++++++++++++++------- > 1 file changed, 14 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c > index 78a5f5d3c070..f56b046a32de 100644 > --- a/drivers/gpu/drm/i915/i915_request.c > +++ b/drivers/gpu/drm/i915/i915_request.c > @@ -595,6 +595,8 @@ static void __i915_request_ctor(void *arg) > i915_sw_fence_init(&rq->submit, submit_notify); > i915_sw_fence_init(&rq->semaphore, semaphore_notify); > > + dma_fence_init(&rq->fence, &i915_fence_ops, &rq->lock, 0, 0); > + > rq->file_priv = NULL; > rq->capture_list = NULL; > > @@ -653,25 +655,30 @@ __i915_request_create(struct intel_context *ce, gfp_t gfp) > } > } > > - ret = intel_timeline_get_seqno(tl, rq, &seqno); > - if (ret) > - goto err_free; > - > rq->i915 = ce->engine->i915; > rq->context = ce; > rq->engine = ce->engine; > rq->ring = ce->ring; > rq->execution_mask = ce->engine->mask; > > + kref_init(&rq->fence.refcount); > + rq->fence.flags = 0; > + rq->fence.error = 0; > + INIT_LIST_HEAD(&rq->fence.cb_list); One of these fields the previous user leaves in a non-empty state? Regards, Tvrtko > + > + ret = intel_timeline_get_seqno(tl, rq, &seqno); > + if (ret) > + goto err_free; > + > + rq->fence.context = tl->fence_context; > + rq->fence.seqno = seqno; > + > RCU_INIT_POINTER(rq->timeline, tl); > RCU_INIT_POINTER(rq->hwsp_cacheline, tl->hwsp_cacheline); > rq->hwsp_seqno = tl->hwsp_seqno; > > rq->rcustate = get_state_synchronize_rcu(); /* acts as smp_mb() */ > > - dma_fence_init(&rq->fence, &i915_fence_ops, &rq->lock, > - tl->fence_context, seqno); > - > /* We bump the ref for the fence chain */ > i915_sw_fence_reinit(&i915_request_get(rq)->submit); > i915_sw_fence_reinit(&i915_request_get(rq)->semaphore); > _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Intel-gfx] [PATCH 2/6] drm/i915: Initialise basic fence before acquiring seqno 2020-02-03 10:55 ` Tvrtko Ursulin @ 2020-02-03 10:58 ` Chris Wilson 2020-02-03 11:02 ` Tvrtko Ursulin 0 siblings, 1 reply; 14+ messages in thread From: Chris Wilson @ 2020-02-03 10:58 UTC (permalink / raw) To: Tvrtko Ursulin, intel-gfx; +Cc: matthew.auld Quoting Tvrtko Ursulin (2020-02-03 10:55:52) > > On 03/02/2020 09:41, Chris Wilson wrote: > > Inside the intel_timeline_get_seqno(), we currently track the retirement > > of the old cachelines by listening to the new request. This requires > > that the new request is ready to be used and so requires a minimum bit > > of initialisation prior to getting the new seqno. > > > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > > Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > > Cc: Matthew Auld <matthew.auld@intel.com> > > --- > > drivers/gpu/drm/i915/i915_request.c | 21 ++++++++++++++------- > > 1 file changed, 14 insertions(+), 7 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c > > index 78a5f5d3c070..f56b046a32de 100644 > > --- a/drivers/gpu/drm/i915/i915_request.c > > +++ b/drivers/gpu/drm/i915/i915_request.c > > @@ -595,6 +595,8 @@ static void __i915_request_ctor(void *arg) > > i915_sw_fence_init(&rq->submit, submit_notify); > > i915_sw_fence_init(&rq->semaphore, semaphore_notify); > > > > + dma_fence_init(&rq->fence, &i915_fence_ops, &rq->lock, 0, 0); > > + > > rq->file_priv = NULL; > > rq->capture_list = NULL; > > > > @@ -653,25 +655,30 @@ __i915_request_create(struct intel_context *ce, gfp_t gfp) > > } > > } > > > > - ret = intel_timeline_get_seqno(tl, rq, &seqno); > > - if (ret) > > - goto err_free; > > - > > rq->i915 = ce->engine->i915; > > rq->context = ce; > > rq->engine = ce->engine; > > rq->ring = ce->ring; > > rq->execution_mask = ce->engine->mask; > > > > + kref_init(&rq->fence.refcount); > > + rq->fence.flags = 0; > > + rq->fence.error = 0; > > + INIT_LIST_HEAD(&rq->fence.cb_list); > > One of these fields the previous user leaves in a non-empty state? Yes, we don't reset cb_list after signaling, error and flags hold residuals, but refcount is known to be 0! -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Intel-gfx] [PATCH 2/6] drm/i915: Initialise basic fence before acquiring seqno 2020-02-03 10:58 ` Chris Wilson @ 2020-02-03 11:02 ` Tvrtko Ursulin 0 siblings, 0 replies; 14+ messages in thread From: Tvrtko Ursulin @ 2020-02-03 11:02 UTC (permalink / raw) To: Chris Wilson, intel-gfx; +Cc: matthew.auld On 03/02/2020 10:58, Chris Wilson wrote: > Quoting Tvrtko Ursulin (2020-02-03 10:55:52) >> On 03/02/2020 09:41, Chris Wilson wrote: >>> Inside the intel_timeline_get_seqno(), we currently track the retirement >>> of the old cachelines by listening to the new request. This requires >>> that the new request is ready to be used and so requires a minimum bit >>> of initialisation prior to getting the new seqno. >>> >>> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> >>> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> >>> Cc: Matthew Auld <matthew.auld@intel.com> >>> --- >>> drivers/gpu/drm/i915/i915_request.c | 21 ++++++++++++++------- >>> 1 file changed, 14 insertions(+), 7 deletions(-) >>> >>> diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c >>> index 78a5f5d3c070..f56b046a32de 100644 >>> --- a/drivers/gpu/drm/i915/i915_request.c >>> +++ b/drivers/gpu/drm/i915/i915_request.c >>> @@ -595,6 +595,8 @@ static void __i915_request_ctor(void *arg) >>> i915_sw_fence_init(&rq->submit, submit_notify); >>> i915_sw_fence_init(&rq->semaphore, semaphore_notify); >>> >>> + dma_fence_init(&rq->fence, &i915_fence_ops, &rq->lock, 0, 0); >>> + >>> rq->file_priv = NULL; >>> rq->capture_list = NULL; >>> >>> @@ -653,25 +655,30 @@ __i915_request_create(struct intel_context *ce, gfp_t gfp) >>> } >>> } >>> >>> - ret = intel_timeline_get_seqno(tl, rq, &seqno); >>> - if (ret) >>> - goto err_free; >>> - >>> rq->i915 = ce->engine->i915; >>> rq->context = ce; >>> rq->engine = ce->engine; >>> rq->ring = ce->ring; >>> rq->execution_mask = ce->engine->mask; >>> >>> + kref_init(&rq->fence.refcount); >>> + rq->fence.flags = 0; >>> + rq->fence.error = 0; >>> + INIT_LIST_HEAD(&rq->fence.cb_list); >> >> One of these fields the previous user leaves in a non-empty state? > > Yes, we don't reset cb_list after signaling, error and flags hold > residuals, but refcount is known to be 0! Okay, Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Regards, Tvrtko _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 14+ messages in thread
* [Intel-gfx] [PATCH 3/6] drm/i915/gt: Warn about the hidden i915_vma_pin in timeline_get_seqno 2020-02-03 9:41 [Intel-gfx] [PATCH 1/6] drm/i915: Hold reference to previous active fence as we queue Chris Wilson 2020-02-03 9:41 ` [Intel-gfx] [PATCH 2/6] drm/i915: Initialise basic fence before acquiring seqno Chris Wilson @ 2020-02-03 9:41 ` Chris Wilson 2020-02-03 9:41 ` [Intel-gfx] [PATCH 4/6] drm/i915/selftests: Add a simple rollover for the kernel context Chris Wilson ` (5 subsequent siblings) 7 siblings, 0 replies; 14+ messages in thread From: Chris Wilson @ 2020-02-03 9:41 UTC (permalink / raw) To: intel-gfx; +Cc: matthew.auld On seqno rollover, we need to allocate ourselves a new cacheline. This might incur grabbing a new page and pinning it into the GGTT, with some rather unfortunate lockdep implications. To avoid a mutex, and more specifically pinning in the GGTT from inside the kernel context being used to flush the GGTT in emergencies, we will likely need to lift the next-cacheline allocation to a pre-reservation. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> --- drivers/gpu/drm/i915/gt/intel_timeline.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/gpu/drm/i915/gt/intel_timeline.c b/drivers/gpu/drm/i915/gt/intel_timeline.c index 465f87b65901..54e1e55f3c81 100644 --- a/drivers/gpu/drm/i915/gt/intel_timeline.c +++ b/drivers/gpu/drm/i915/gt/intel_timeline.c @@ -406,6 +406,8 @@ __intel_timeline_get_seqno(struct intel_timeline *tl, void *vaddr; int err; + might_lock(&tl->gt->ggtt->vm.mutex); + /* * If there is an outstanding GPU reference to this cacheline, * such as it being sampled by a HW semaphore on another timeline, -- 2.25.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Intel-gfx] [PATCH 4/6] drm/i915/selftests: Add a simple rollover for the kernel context 2020-02-03 9:41 [Intel-gfx] [PATCH 1/6] drm/i915: Hold reference to previous active fence as we queue Chris Wilson 2020-02-03 9:41 ` [Intel-gfx] [PATCH 2/6] drm/i915: Initialise basic fence before acquiring seqno Chris Wilson 2020-02-03 9:41 ` [Intel-gfx] [PATCH 3/6] drm/i915/gt: Warn about the hidden i915_vma_pin in timeline_get_seqno Chris Wilson @ 2020-02-03 9:41 ` Chris Wilson 2020-02-03 17:32 ` Matthew Auld 2020-02-03 9:41 ` [Intel-gfx] [PATCH 5/6] drm/i915: Flush execution tasklets before checking request status Chris Wilson ` (4 subsequent siblings) 7 siblings, 1 reply; 14+ messages in thread From: Chris Wilson @ 2020-02-03 9:41 UTC (permalink / raw) To: intel-gfx; +Cc: matthew.auld Exercise the seqno wrap paths on the kernel context to provide a small amount of sanity checking and ensure that they are visible to lockdep. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> --- drivers/gpu/drm/i915/gt/selftest_timeline.c | 177 ++++++++++++++++++++ 1 file changed, 177 insertions(+) diff --git a/drivers/gpu/drm/i915/gt/selftest_timeline.c b/drivers/gpu/drm/i915/gt/selftest_timeline.c index e2d78cc22fb4..25edfd7a1544 100644 --- a/drivers/gpu/drm/i915/gt/selftest_timeline.c +++ b/drivers/gpu/drm/i915/gt/selftest_timeline.c @@ -6,6 +6,8 @@ #include <linux/prime_numbers.h> +#include "intel_context.h" +#include "intel_engine_heartbeat.h" #include "intel_engine_pm.h" #include "intel_gt.h" #include "intel_gt_requests.h" @@ -750,6 +752,179 @@ static int live_hwsp_wrap(void *arg) return err; } +static void engine_heartbeat_disable(struct intel_engine_cs *engine, + unsigned long *saved) +{ + *saved = engine->props.heartbeat_interval_ms; + engine->props.heartbeat_interval_ms = 0; + + intel_engine_pm_get(engine); + intel_engine_park_heartbeat(engine); +} + +static void engine_heartbeat_enable(struct intel_engine_cs *engine, + unsigned long saved) +{ + intel_engine_pm_put(engine); + + engine->props.heartbeat_interval_ms = saved; +} + +static int live_hwsp_rollover_kernel(void *arg) +{ + struct intel_gt *gt = arg; + struct intel_engine_cs *engine; + enum intel_engine_id id; + int err = 0; + + /* + * Run the host for long enough, and even the kernel context will + * see a seqno rollover. + */ + + for_each_engine(engine, gt, id) { + struct intel_context *ce = engine->kernel_context; + struct intel_timeline *tl = ce->timeline; + struct i915_request *rq[3] = {}; + unsigned long heartbeat; + int i; + + engine_heartbeat_disable(engine, &heartbeat); + if (intel_gt_wait_for_idle(gt, HZ / 2)) { + err = -EIO; + goto out; + } + + GEM_BUG_ON(i915_active_fence_isset(&tl->last_request)); + tl->seqno = 0; + timeline_rollback(tl); + timeline_rollback(tl); + WRITE_ONCE(*(u32 *)tl->hwsp_seqno, tl->seqno); + + for (i = 0; i < ARRAY_SIZE(rq); i++) { + rq[i] = i915_request_create(ce); + if (IS_ERR(rq[i])) { + err = PTR_ERR(rq[i]); + goto out; + } + + pr_debug("%s: create fence.seqnp:%d\n", + engine->name, lower_32_bits(rq[i]->fence.seqno)); + i915_request_get(rq[i]); + GEM_BUG_ON(rcu_access_pointer(rq[i]->timeline) != tl); + i915_request_add(rq[i]); + } + + /* We expected a wrap! */ + GEM_BUG_ON(rq[2]->fence.seqno > rq[0]->fence.seqno); + + if (i915_request_wait(rq[2], 0, HZ / 5) < 0) { + pr_err("Wait for timeline wrap timed out!\n"); + err = -EIO; + goto out; + } + + for (i = 0; i < ARRAY_SIZE(rq); i++) { + if (!i915_request_completed(rq[i])) { + pr_err("Pre-wrap request not completed!\n"); + err = -EINVAL; + goto out; + } + } + +out: + for (i = 0; i < ARRAY_SIZE(rq); i++) + i915_request_put(rq[i]); + engine_heartbeat_enable(engine, heartbeat); + if (err) + break; + } + + if (igt_flush_test(gt->i915)) + err = -EIO; + + return err; +} + +static int live_hwsp_rollover_user(void *arg) +{ + struct intel_gt *gt = arg; + struct intel_engine_cs *engine; + enum intel_engine_id id; + int err = 0; + + /* + * Simulate a long running user context, and force the seqno wrap + * on the user's timeline. + */ + + for_each_engine(engine, gt, id) { + struct i915_request *rq[3] = {}; + struct intel_timeline *tl; + struct intel_context *ce; + int i; + + ce = intel_context_create(engine); + if (IS_ERR(ce)) + return PTR_ERR(ce); + + err = intel_context_alloc_state(ce); + if (err) + goto out; + + tl = ce->timeline; + if (!tl->has_initial_breadcrumb || !tl->hwsp_cacheline) + goto out; + + timeline_rollback(tl); + timeline_rollback(tl); + WRITE_ONCE(*(u32 *)tl->hwsp_seqno, tl->seqno); + + for (i = 0; i < ARRAY_SIZE(rq); i++) { + rq[i] = intel_context_create_request(ce); + if (IS_ERR(rq[i])) { + err = PTR_ERR(rq[i]); + goto out; + } + + pr_debug("%s: create fence.seqnp:%d\n", + engine->name, lower_32_bits(rq[i]->fence.seqno)); + GEM_BUG_ON(rcu_access_pointer(rq[i]->timeline) != tl); + i915_request_get(rq[i]); + i915_request_add(rq[i]); + } + + /* We expected a wrap! */ + GEM_BUG_ON(rq[2]->fence.seqno > rq[0]->fence.seqno); + + if (i915_request_wait(rq[2], 0, HZ / 5) < 0) { + pr_err("Wait for timeline wrap timed out!\n"); + err = -EIO; + goto out; + } + + for (i = 0; i < ARRAY_SIZE(rq); i++) { + if (!i915_request_completed(rq[i])) { + pr_err("Pre-wrap request not completed!\n"); + err = -EINVAL; + goto out; + } + } + +out: + for (i = 0; i < ARRAY_SIZE(rq); i++) + i915_request_put(rq[i]); + intel_context_put(ce); + if (err) + break; + } + + if (igt_flush_test(gt->i915)) + err = -EIO; + + return err; +} + static int live_hwsp_recycle(void *arg) { struct intel_gt *gt = arg; @@ -827,6 +1002,8 @@ int intel_timeline_live_selftests(struct drm_i915_private *i915) SUBTEST(live_hwsp_engine), SUBTEST(live_hwsp_alternate), SUBTEST(live_hwsp_wrap), + SUBTEST(live_hwsp_rollover_kernel), + SUBTEST(live_hwsp_rollover_user), }; if (intel_gt_is_wedged(&i915->gt)) -- 2.25.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [Intel-gfx] [PATCH 4/6] drm/i915/selftests: Add a simple rollover for the kernel context 2020-02-03 9:41 ` [Intel-gfx] [PATCH 4/6] drm/i915/selftests: Add a simple rollover for the kernel context Chris Wilson @ 2020-02-03 17:32 ` Matthew Auld 2020-02-03 17:37 ` Chris Wilson 0 siblings, 1 reply; 14+ messages in thread From: Matthew Auld @ 2020-02-03 17:32 UTC (permalink / raw) To: Chris Wilson, intel-gfx On 03/02/2020 09:41, Chris Wilson wrote: > Exercise the seqno wrap paths on the kernel context to provide a small > amount of sanity checking and ensure that they are visible to lockdep. > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> > --- > drivers/gpu/drm/i915/gt/selftest_timeline.c | 177 ++++++++++++++++++++ > 1 file changed, 177 insertions(+) > > diff --git a/drivers/gpu/drm/i915/gt/selftest_timeline.c b/drivers/gpu/drm/i915/gt/selftest_timeline.c > index e2d78cc22fb4..25edfd7a1544 100644 > --- a/drivers/gpu/drm/i915/gt/selftest_timeline.c > +++ b/drivers/gpu/drm/i915/gt/selftest_timeline.c > @@ -6,6 +6,8 @@ > > #include <linux/prime_numbers.h> > > +#include "intel_context.h" > +#include "intel_engine_heartbeat.h" > #include "intel_engine_pm.h" > #include "intel_gt.h" > #include "intel_gt_requests.h" > @@ -750,6 +752,179 @@ static int live_hwsp_wrap(void *arg) > return err; > } > > +static void engine_heartbeat_disable(struct intel_engine_cs *engine, > + unsigned long *saved) > +{ > + *saved = engine->props.heartbeat_interval_ms; > + engine->props.heartbeat_interval_ms = 0; > + > + intel_engine_pm_get(engine); > + intel_engine_park_heartbeat(engine); > +} > + > +static void engine_heartbeat_enable(struct intel_engine_cs *engine, > + unsigned long saved) > +{ > + intel_engine_pm_put(engine); > + > + engine->props.heartbeat_interval_ms = saved; > +} > + > +static int live_hwsp_rollover_kernel(void *arg) > +{ > + struct intel_gt *gt = arg; > + struct intel_engine_cs *engine; > + enum intel_engine_id id; > + int err = 0; > + > + /* > + * Run the host for long enough, and even the kernel context will > + * see a seqno rollover. > + */ > + > + for_each_engine(engine, gt, id) { > + struct intel_context *ce = engine->kernel_context; > + struct intel_timeline *tl = ce->timeline; > + struct i915_request *rq[3] = {}; > + unsigned long heartbeat; > + int i; > + > + engine_heartbeat_disable(engine, &heartbeat); > + if (intel_gt_wait_for_idle(gt, HZ / 2)) { > + err = -EIO; > + goto out; > + } > + > + GEM_BUG_ON(i915_active_fence_isset(&tl->last_request)); > + tl->seqno = 0; > + timeline_rollback(tl); > + timeline_rollback(tl); > + WRITE_ONCE(*(u32 *)tl->hwsp_seqno, tl->seqno); > + > + for (i = 0; i < ARRAY_SIZE(rq); i++) { > + rq[i] = i915_request_create(ce); > + if (IS_ERR(rq[i])) { > + err = PTR_ERR(rq[i]); > + goto out; > + } > + > + pr_debug("%s: create fence.seqnp:%d\n", > + engine->name, lower_32_bits(rq[i]->fence.seqno)); > + i915_request_get(rq[i]); > + GEM_BUG_ON(rcu_access_pointer(rq[i]->timeline) != tl); > + i915_request_add(rq[i]); > + } > + > + /* We expected a wrap! */ > + GEM_BUG_ON(rq[2]->fence.seqno > rq[0]->fence.seqno); > + > + if (i915_request_wait(rq[2], 0, HZ / 5) < 0) { > + pr_err("Wait for timeline wrap timed out!\n"); > + err = -EIO; > + goto out; > + } > + > + for (i = 0; i < ARRAY_SIZE(rq); i++) { > + if (!i915_request_completed(rq[i])) { > + pr_err("Pre-wrap request not completed!\n"); > + err = -EINVAL; > + goto out; > + } > + } > + > +out: > + for (i = 0; i < ARRAY_SIZE(rq); i++) > + i915_request_put(rq[i]); !IS_ERR_OR_NULL()? Makes sense, Reviewed-by: Matthew Auld <matthew.auld@intel.com> _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Intel-gfx] [PATCH 4/6] drm/i915/selftests: Add a simple rollover for the kernel context 2020-02-03 17:32 ` Matthew Auld @ 2020-02-03 17:37 ` Chris Wilson 0 siblings, 0 replies; 14+ messages in thread From: Chris Wilson @ 2020-02-03 17:37 UTC (permalink / raw) To: Matthew Auld, intel-gfx Quoting Matthew Auld (2020-02-03 17:32:29) > On 03/02/2020 09:41, Chris Wilson wrote: > > + for (i = 0; i < ARRAY_SIZE(rq); i++) { > > + rq[i] = i915_request_create(ce); > > + if (IS_ERR(rq[i])) { > > + err = PTR_ERR(rq[i]); > > + goto out; > > + } > > + ... > > +out: > > + for (i = 0; i < ARRAY_SIZE(rq); i++) > > + i915_request_put(rq[i]); > > !IS_ERR_OR_NULL()? Oh drat, I let err into rq[]. I'll rework the assignment to avoid putting the ERR_PTR here. -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 14+ messages in thread
* [Intel-gfx] [PATCH 5/6] drm/i915: Flush execution tasklets before checking request status 2020-02-03 9:41 [Intel-gfx] [PATCH 1/6] drm/i915: Hold reference to previous active fence as we queue Chris Wilson ` (2 preceding siblings ...) 2020-02-03 9:41 ` [Intel-gfx] [PATCH 4/6] drm/i915/selftests: Add a simple rollover for the kernel context Chris Wilson @ 2020-02-03 9:41 ` Chris Wilson 2020-02-03 9:41 ` [Intel-gfx] [PATCH 6/6] drm/i915/gt: Yield the timeslice if caught waiting on a user semaphore Chris Wilson ` (3 subsequent siblings) 7 siblings, 0 replies; 14+ messages in thread From: Chris Wilson @ 2020-02-03 9:41 UTC (permalink / raw) To: intel-gfx; +Cc: matthew.auld Rather than flushing the submission tasklets just before we sleep, flush before we check the request status. Ideally this gives us a moment to process the tasklets after sleeping just before we timeout. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> --- drivers/gpu/drm/i915/i915_request.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c index f56b046a32de..5c2bb0b9478b 100644 --- a/drivers/gpu/drm/i915/i915_request.c +++ b/drivers/gpu/drm/i915/i915_request.c @@ -1564,6 +1564,7 @@ long i915_request_wait(struct i915_request *rq, goto out; for (;;) { + intel_engine_flush_submission(rq->engine); set_current_state(state); if (i915_request_completed(rq)) { @@ -1581,7 +1582,6 @@ long i915_request_wait(struct i915_request *rq, break; } - intel_engine_flush_submission(rq->engine); timeout = io_schedule_timeout(timeout); } __set_current_state(TASK_RUNNING); -- 2.25.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [Intel-gfx] [PATCH 6/6] drm/i915/gt: Yield the timeslice if caught waiting on a user semaphore 2020-02-03 9:41 [Intel-gfx] [PATCH 1/6] drm/i915: Hold reference to previous active fence as we queue Chris Wilson ` (3 preceding siblings ...) 2020-02-03 9:41 ` [Intel-gfx] [PATCH 5/6] drm/i915: Flush execution tasklets before checking request status Chris Wilson @ 2020-02-03 9:41 ` Chris Wilson 2020-02-03 10:50 ` [Intel-gfx] [PATCH 1/6] drm/i915: Hold reference to previous active fence as we queue Tvrtko Ursulin ` (2 subsequent siblings) 7 siblings, 0 replies; 14+ messages in thread From: Chris Wilson @ 2020-02-03 9:41 UTC (permalink / raw) To: intel-gfx; +Cc: matthew.auld If we find ourselves waiting on a MI_SEMAPHORE_WAIT, either within the user batch or in our own preamble, the engine raises a GT_WAIT_ON_SEMAPHORE interrupt. We can unmask that interrupt and so respond to a semaphore wait by yielding the timeslice, if we have another context to yield to! The only real complication is that the interrupt is only generated for the start of the semaphore wait, and is asynchronous to our process_csb() -- that is, we may not have registered the timeslice before we see the interrupt. To ensure we don't miss a potential semaphore blocking forward progress (e.g. selftests/live_timeslice_preempt) we mark the interrupt and apply it to the next timeslice regardless of whether it was active at the time. v2: We use semaphores in preempt-to-busy, within the timeslicing implementation itself! Ergo, when we do insert a preemption due to an expired timeslice, the new context may start with the missed semaphore flagged by the retired context and be yielded, ad infinitum. To avoid this, read the context id at the time of the semaphore interrupt and only yield if that context is still active. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> --- drivers/gpu/drm/i915/gt/intel_engine_cs.c | 6 +++ drivers/gpu/drm/i915/gt/intel_engine_types.h | 9 +++++ drivers/gpu/drm/i915/gt/intel_gt_irq.c | 13 ++++++- drivers/gpu/drm/i915/gt/intel_lrc.c | 40 +++++++++++++++++--- drivers/gpu/drm/i915/i915_reg.h | 5 +++ 5 files changed, 65 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c b/drivers/gpu/drm/i915/gt/intel_engine_cs.c index b1c7b1ed6149..f6873b0d9938 100644 --- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c +++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c @@ -1297,6 +1297,12 @@ static void intel_engine_print_registers(struct intel_engine_cs *engine, if (engine->id == RENDER_CLASS && IS_GEN_RANGE(dev_priv, 4, 7)) drm_printf(m, "\tCCID: 0x%08x\n", ENGINE_READ(engine, CCID)); + if (HAS_EXECLISTS(dev_priv)) { + drm_printf(m, "\tEL_CCID: 0x%08x\n", + ENGINE_READ(engine, EXECLIST_CCID)); + drm_printf(m, "\tEL_STATUS: 0x%08x\n", + ENGINE_READ(engine, EXECLIST_STATUS)); + } drm_printf(m, "\tRING_START: 0x%08x\n", ENGINE_READ(engine, RING_START)); drm_printf(m, "\tRING_HEAD: 0x%08x\n", diff --git a/drivers/gpu/drm/i915/gt/intel_engine_types.h b/drivers/gpu/drm/i915/gt/intel_engine_types.h index 45e36d963ea7..8eb7365b4230 100644 --- a/drivers/gpu/drm/i915/gt/intel_engine_types.h +++ b/drivers/gpu/drm/i915/gt/intel_engine_types.h @@ -157,6 +157,15 @@ struct intel_engine_execlists { */ struct i915_priolist default_priolist; + /** + * @yield: CCID at the time of the last semaphore-wait interrupt. + * + * Instead of leaving a semaphore busy-spinning on an engine, we would + * like to switch to another ready context, i.e. yielding the semaphore + * timeslice. + */ + u32 yield; + /** * @error_interrupt: CS Master EIR * diff --git a/drivers/gpu/drm/i915/gt/intel_gt_irq.c b/drivers/gpu/drm/i915/gt/intel_gt_irq.c index f0e7fd95165a..975064edd956 100644 --- a/drivers/gpu/drm/i915/gt/intel_gt_irq.c +++ b/drivers/gpu/drm/i915/gt/intel_gt_irq.c @@ -39,6 +39,13 @@ cs_irq_handler(struct intel_engine_cs *engine, u32 iir) } } + if (iir & GT_WAIT_SEMAPHORE_INTERRUPT) { + WRITE_ONCE(engine->execlists.yield, + ENGINE_READ_FW(engine, EXECLIST_CCID)); + if (del_timer(&engine->execlists.timer)) + tasklet = true; + } + if (iir & GT_CONTEXT_SWITCH_INTERRUPT) tasklet = true; @@ -228,7 +235,8 @@ void gen11_gt_irq_postinstall(struct intel_gt *gt) const u32 irqs = GT_CS_MASTER_ERROR_INTERRUPT | GT_RENDER_USER_INTERRUPT | - GT_CONTEXT_SWITCH_INTERRUPT; + GT_CONTEXT_SWITCH_INTERRUPT | + GT_WAIT_SEMAPHORE_INTERRUPT; struct intel_uncore *uncore = gt->uncore; const u32 dmask = irqs << 16 | irqs; const u32 smask = irqs << 16; @@ -366,7 +374,8 @@ void gen8_gt_irq_postinstall(struct intel_gt *gt) const u32 irqs = GT_CS_MASTER_ERROR_INTERRUPT | GT_RENDER_USER_INTERRUPT | - GT_CONTEXT_SWITCH_INTERRUPT; + GT_CONTEXT_SWITCH_INTERRUPT | + GT_WAIT_SEMAPHORE_INTERRUPT; const u32 gt_interrupts[] = { irqs << GEN8_RCS_IRQ_SHIFT | irqs << GEN8_BCS_IRQ_SHIFT, irqs << GEN8_VCS0_IRQ_SHIFT | irqs << GEN8_VCS1_IRQ_SHIFT, diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c index c196fb90c59f..dd21066d6987 100644 --- a/drivers/gpu/drm/i915/gt/intel_lrc.c +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c @@ -1671,7 +1671,8 @@ static void defer_active(struct intel_engine_cs *engine) } static bool -need_timeslice(struct intel_engine_cs *engine, const struct i915_request *rq) +need_timeslice(const struct intel_engine_cs *engine, + const struct i915_request *rq) { int hint; @@ -1687,6 +1688,31 @@ need_timeslice(struct intel_engine_cs *engine, const struct i915_request *rq) return hint >= effective_prio(rq); } +static bool +timeslice_yield(const struct intel_engine_execlists *el, + const struct i915_request *rq) +{ + /* + * Once bitten, forever smitten! + * + * If the active context ever busy-waited on a semaphore, + * it will be treated as a hog until the end of its timeslice. + * The HW only sends an interrupt on the first miss, and we + * do know if that semaphore has been signaled, or even if it + * is now stuck on another semaphore. Play safe, yield if it + * might be stuck -- it will be given a fresh timeslice in + * the near future. + */ + return upper_32_bits(rq->context->lrc_desc) == READ_ONCE(el->yield); +} + +static bool +timeslice_expired(const struct intel_engine_execlists *el, + const struct i915_request *rq) +{ + return timer_expired(&el->timer) || timeslice_yield(el, rq); +} + static int switch_prio(struct intel_engine_cs *engine, const struct i915_request *rq) { @@ -1702,8 +1728,7 @@ timeslice(const struct intel_engine_cs *engine) return READ_ONCE(engine->props.timeslice_duration_ms); } -static unsigned long -active_timeslice(const struct intel_engine_cs *engine) +static unsigned long active_timeslice(const struct intel_engine_cs *engine) { const struct i915_request *rq = *engine->execlists.active; @@ -1854,13 +1879,14 @@ static void execlists_dequeue(struct intel_engine_cs *engine) last->context->lrc_desc |= CTX_DESC_FORCE_RESTORE; last = NULL; } else if (need_timeslice(engine, last) && - timer_expired(&engine->execlists.timer)) { + timeslice_expired(execlists, last)) { ENGINE_TRACE(engine, - "expired last=%llx:%lld, prio=%d, hint=%d\n", + "expired last=%llx:%lld, prio=%d, hint=%d, yield?=%s\n", last->fence.context, last->fence.seqno, last->sched.attr.priority, - execlists->queue_priority_hint); + execlists->queue_priority_hint, + yesno(timeslice_yield(execlists, last))); ring_set_paused(engine, 1); defer_active(engine); @@ -2120,6 +2146,7 @@ static void execlists_dequeue(struct intel_engine_cs *engine) } clear_ports(port + 1, last_port - port); + WRITE_ONCE(execlists->yield, -1); execlists_submit_ports(engine); set_preempt_timeout(engine); } else { @@ -4342,6 +4369,7 @@ logical_ring_default_irqs(struct intel_engine_cs *engine) engine->irq_enable_mask = GT_RENDER_USER_INTERRUPT << shift; engine->irq_keep_mask = GT_CONTEXT_SWITCH_INTERRUPT << shift; engine->irq_keep_mask |= GT_CS_MASTER_ERROR_INTERRUPT << shift; + engine->irq_keep_mask |= GT_WAIT_SEMAPHORE_INTERRUPT << shift; } static void rcs_submission_override(struct intel_engine_cs *engine) diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h index 0bd431f6a011..a2d8d35b05c5 100644 --- a/drivers/gpu/drm/i915/i915_reg.h +++ b/drivers/gpu/drm/i915/i915_reg.h @@ -3090,6 +3090,7 @@ static inline bool i915_mmio_reg_valid(i915_reg_t reg) #define GT_BSD_CS_ERROR_INTERRUPT (1 << 15) #define GT_BSD_USER_INTERRUPT (1 << 12) #define GT_RENDER_L3_PARITY_ERROR_INTERRUPT_S1 (1 << 11) /* hsw+; rsvd on snb, ivb, vlv */ +#define GT_WAIT_SEMAPHORE_INTERRUPT REG_BIT(11) /* bdw+ */ #define GT_CONTEXT_SWITCH_INTERRUPT (1 << 8) #define GT_RENDER_L3_PARITY_ERROR_INTERRUPT (1 << 5) /* !snb */ #define GT_RENDER_PIPECTL_NOTIFY_INTERRUPT (1 << 4) @@ -4041,6 +4042,10 @@ static inline bool i915_mmio_reg_valid(i915_reg_t reg) #define CCID_EN BIT(0) #define CCID_EXTENDED_STATE_RESTORE BIT(2) #define CCID_EXTENDED_STATE_SAVE BIT(3) + +#define EXECLIST_STATUS(base) _MMIO((base) + 0x234) +#define EXECLIST_CCID(base) _MMIO((base) + 0x238) + /* * Notes on SNB/IVB/VLV context size: * - Power context is saved elsewhere (LLC or stolen) -- 2.25.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [Intel-gfx] [PATCH 1/6] drm/i915: Hold reference to previous active fence as we queue 2020-02-03 9:41 [Intel-gfx] [PATCH 1/6] drm/i915: Hold reference to previous active fence as we queue Chris Wilson ` (4 preceding siblings ...) 2020-02-03 9:41 ` [Intel-gfx] [PATCH 6/6] drm/i915/gt: Yield the timeslice if caught waiting on a user semaphore Chris Wilson @ 2020-02-03 10:50 ` Tvrtko Ursulin 2020-02-03 11:33 ` [Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [1/6] " Patchwork 2020-02-05 17:55 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork 7 siblings, 0 replies; 14+ messages in thread From: Tvrtko Ursulin @ 2020-02-03 10:50 UTC (permalink / raw) To: Chris Wilson, intel-gfx; +Cc: matthew.auld On 03/02/2020 09:41, Chris Wilson wrote: > Take a reference to the previous exclusive fence on the i915_active, as > we wish to add an await to it in the caller (and so must prevent it from > being freed until we have completed that task). > > Fixes: e3793468b466 ("drm/i915: Use the async worker to avoid reclaim tainting the ggtt->mutex") > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Matthew Auld <matthew.auld@intel.com> > --- > drivers/gpu/drm/i915/i915_active.c | 6 +++++- > drivers/gpu/drm/i915/i915_vma.c | 4 +++- > 2 files changed, 8 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_active.c b/drivers/gpu/drm/i915/i915_active.c > index da58e5d084f4..9ccb931a733e 100644 > --- a/drivers/gpu/drm/i915/i915_active.c > +++ b/drivers/gpu/drm/i915/i915_active.c > @@ -398,9 +398,13 @@ i915_active_set_exclusive(struct i915_active *ref, struct dma_fence *f) > /* We expect the caller to manage the exclusive timeline ordering */ > GEM_BUG_ON(i915_active_is_idle(ref)); > > + rcu_read_lock(); > prev = __i915_active_fence_set(&ref->excl, f); > - if (!prev) > + if (prev) > + prev = dma_fence_get_rcu(prev); > + else > atomic_inc(&ref->count); > + rcu_read_unlock(); > > return prev; > } > diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c > index e801e28de470..74dc3ba59ce5 100644 > --- a/drivers/gpu/drm/i915/i915_vma.c > +++ b/drivers/gpu/drm/i915/i915_vma.c > @@ -422,10 +422,12 @@ int i915_vma_bind(struct i915_vma *vma, > * execution and not content or object's backing store lifetime. > */ > prev = i915_active_set_exclusive(&vma->active, &work->base.dma); > - if (prev) > + if (prev) { > __i915_sw_fence_await_dma_fence(&work->base.chain, > prev, > &work->cb); > + dma_fence_put(prev); > + } > > work->base.dma.error = 0; /* enable the queue_work() */ > > Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Regards, Tvrtko _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 14+ messages in thread
* [Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [1/6] drm/i915: Hold reference to previous active fence as we queue 2020-02-03 9:41 [Intel-gfx] [PATCH 1/6] drm/i915: Hold reference to previous active fence as we queue Chris Wilson ` (5 preceding siblings ...) 2020-02-03 10:50 ` [Intel-gfx] [PATCH 1/6] drm/i915: Hold reference to previous active fence as we queue Tvrtko Ursulin @ 2020-02-03 11:33 ` Patchwork 2020-02-05 17:55 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork 7 siblings, 0 replies; 14+ messages in thread From: Patchwork @ 2020-02-03 11:33 UTC (permalink / raw) To: Chris Wilson; +Cc: intel-gfx == Series Details == Series: series starting with [1/6] drm/i915: Hold reference to previous active fence as we queue URL : https://patchwork.freedesktop.org/series/72906/ State : success == Summary == CI Bug Log - changes from CI_DRM_7857 -> Patchwork_16390 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/index.html Known issues ------------ Here are the changes found in Patchwork_16390 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_close_race@basic-threads: - fi-byt-n2820: [PASS][1] -> [TIMEOUT][2] ([fdo#112271] / [i915#1084] / [i915#816]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/fi-byt-n2820/igt@gem_close_race@basic-threads.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/fi-byt-n2820/igt@gem_close_race@basic-threads.html * igt@i915_selftest@live_blt: - fi-ivb-3770: [PASS][3] -> [DMESG-FAIL][4] ([i915#553]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/fi-ivb-3770/igt@i915_selftest@live_blt.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/fi-ivb-3770/igt@i915_selftest@live_blt.html * igt@i915_selftest@live_execlists: - fi-icl-y: [PASS][5] -> [DMESG-FAIL][6] ([fdo#108569]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/fi-icl-y/igt@i915_selftest@live_execlists.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/fi-icl-y/igt@i915_selftest@live_execlists.html * igt@kms_chamelium@hdmi-hpd-fast: - fi-icl-u2: [PASS][7] -> [FAIL][8] ([i915#217]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/fi-icl-u2/igt@kms_chamelium@hdmi-hpd-fast.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/fi-icl-u2/igt@kms_chamelium@hdmi-hpd-fast.html #### Possible fixes #### * igt@i915_selftest@live_blt: - fi-hsw-4770: [DMESG-FAIL][9] ([i915#553] / [i915#725]) -> [PASS][10] [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/fi-hsw-4770/igt@i915_selftest@live_blt.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/fi-hsw-4770/igt@i915_selftest@live_blt.html * igt@i915_selftest@live_gem_contexts: - fi-cfl-guc: [INCOMPLETE][11] ([fdo#106070] / [i915#424]) -> [PASS][12] [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/fi-cfl-guc/igt@i915_selftest@live_gem_contexts.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/fi-cfl-guc/igt@i915_selftest@live_gem_contexts.html #### Warnings #### * igt@i915_selftest@live_blt: - fi-hsw-4770r: [DMESG-FAIL][13] ([i915#553] / [i915#725]) -> [DMESG-FAIL][14] ([i915#725]) [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/fi-hsw-4770r/igt@i915_selftest@live_blt.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/fi-hsw-4770r/igt@i915_selftest@live_blt.html [fdo#106070]: https://bugs.freedesktop.org/show_bug.cgi?id=106070 [fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569 [fdo#112271]: https://bugs.freedesktop.org/show_bug.cgi?id=112271 [i915#1084]: https://gitlab.freedesktop.org/drm/intel/issues/1084 [i915#217]: https://gitlab.freedesktop.org/drm/intel/issues/217 [i915#424]: https://gitlab.freedesktop.org/drm/intel/issues/424 [i915#553]: https://gitlab.freedesktop.org/drm/intel/issues/553 [i915#725]: https://gitlab.freedesktop.org/drm/intel/issues/725 [i915#816]: https://gitlab.freedesktop.org/drm/intel/issues/816 Participating hosts (47 -> 46) ------------------------------ Additional (4): fi-skl-6770hq fi-bdw-5557u fi-bwr-2160 fi-bsw-nick Missing (5): fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-byt-clapper fi-bdw-samus Build changes ------------- * CI: CI-20190529 -> None * Linux: CI_DRM_7857 -> Patchwork_16390 CI-20190529: 20190529 CI_DRM_7857: 8ec40a15b9a930df9e445f17c5e01cdb6f80353a @ git://anongit.freedesktop.org/gfx-ci/linux IGT_5411: 86c6ab8a0b6696bdb2153febd350af7fa02fbb00 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_16390: ecd47ed230f7984724bee23c53df2eaadf036766 @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == ecd47ed230f7 drm/i915/gt: Yield the timeslice if caught waiting on a user semaphore 305f3eb83d44 drm/i915: Flush execution tasklets before checking request status 5091483d11cf drm/i915/selftests: Add a simple rollover for the kernel context f04929eed4fd drm/i915/gt: Warn about the hidden i915_vma_pin in timeline_get_seqno c552180d803d drm/i915: Initialise basic fence before acquiring seqno 2e4d5e78d9b5 drm/i915: Hold reference to previous active fence as we queue == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/index.html _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 14+ messages in thread
* [Intel-gfx] ✓ Fi.CI.IGT: success for series starting with [1/6] drm/i915: Hold reference to previous active fence as we queue 2020-02-03 9:41 [Intel-gfx] [PATCH 1/6] drm/i915: Hold reference to previous active fence as we queue Chris Wilson ` (6 preceding siblings ...) 2020-02-03 11:33 ` [Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [1/6] " Patchwork @ 2020-02-05 17:55 ` Patchwork 7 siblings, 0 replies; 14+ messages in thread From: Patchwork @ 2020-02-05 17:55 UTC (permalink / raw) To: Chris Wilson; +Cc: intel-gfx == Series Details == Series: series starting with [1/6] drm/i915: Hold reference to previous active fence as we queue URL : https://patchwork.freedesktop.org/series/72906/ State : success == Summary == CI Bug Log - changes from CI_DRM_7857_full -> Patchwork_16390_full ==================================================== Summary ------- **SUCCESS** No regressions found. Known issues ------------ Here are the changes found in Patchwork_16390_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_busy@busy-vcs1: - shard-iclb: [PASS][1] -> [SKIP][2] ([fdo#112080]) +3 similar issues [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-iclb4/igt@gem_busy@busy-vcs1.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-iclb3/igt@gem_busy@busy-vcs1.html * igt@gem_exec_schedule@preempt-queue-chain-bsd2: - shard-iclb: [PASS][3] -> [SKIP][4] ([fdo#109276]) +7 similar issues [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-iclb4/igt@gem_exec_schedule@preempt-queue-chain-bsd2.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-iclb3/igt@gem_exec_schedule@preempt-queue-chain-bsd2.html * igt@gem_exec_schedule@preempt-queue-contexts-bsd: - shard-iclb: [PASS][5] -> [SKIP][6] ([fdo#112146]) +1 similar issue [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-iclb8/igt@gem_exec_schedule@preempt-queue-contexts-bsd.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-iclb1/igt@gem_exec_schedule@preempt-queue-contexts-bsd.html * igt@gem_ppgtt@flink-and-close-vma-leak: - shard-tglb: [PASS][7] -> [FAIL][8] ([i915#644]) [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-tglb7/igt@gem_ppgtt@flink-and-close-vma-leak.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-tglb8/igt@gem_ppgtt@flink-and-close-vma-leak.html * igt@kms_cursor_crc@pipe-c-cursor-suspend: - shard-apl: [PASS][9] -> [DMESG-WARN][10] ([i915#180]) +4 similar issues [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-apl7/igt@kms_cursor_crc@pipe-c-cursor-suspend.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-apl4/igt@kms_cursor_crc@pipe-c-cursor-suspend.html * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic: - shard-glk: [PASS][11] -> [FAIL][12] ([i915#72]) [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-glk9/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-glk2/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html * igt@kms_draw_crc@draw-method-xrgb8888-blt-ytiled: - shard-skl: [PASS][13] -> [FAIL][14] ([i915#52] / [i915#54]) [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-skl2/igt@kms_draw_crc@draw-method-xrgb8888-blt-ytiled.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-skl5/igt@kms_draw_crc@draw-method-xrgb8888-blt-ytiled.html * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-wc: - shard-glk: [PASS][15] -> [FAIL][16] ([i915#49]) [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-glk8/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-wc.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-glk1/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-wc.html * igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-plflip-blt: - shard-skl: [PASS][17] -> [FAIL][18] ([i915#49]) +1 similar issue [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-skl2/igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-plflip-blt.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-skl5/igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-plflip-blt.html * igt@kms_plane_alpha_blend@pipe-a-coverage-7efc: - shard-skl: [PASS][19] -> [FAIL][20] ([fdo#108145]) [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-skl2/igt@kms_plane_alpha_blend@pipe-a-coverage-7efc.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-skl5/igt@kms_plane_alpha_blend@pipe-a-coverage-7efc.html * igt@kms_plane_alpha_blend@pipe-b-coverage-7efc: - shard-skl: [PASS][21] -> [FAIL][22] ([fdo#108145] / [i915#265]) [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-skl7/igt@kms_plane_alpha_blend@pipe-b-coverage-7efc.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-skl1/igt@kms_plane_alpha_blend@pipe-b-coverage-7efc.html * igt@kms_psr@psr2_no_drrs: - shard-iclb: [PASS][23] -> [SKIP][24] ([fdo#109441]) +3 similar issues [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-iclb2/igt@kms_psr@psr2_no_drrs.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-iclb4/igt@kms_psr@psr2_no_drrs.html * igt@kms_setmode@basic: - shard-apl: [PASS][25] -> [FAIL][26] ([i915#31]) [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-apl7/igt@kms_setmode@basic.html [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-apl4/igt@kms_setmode@basic.html - shard-skl: [PASS][27] -> [FAIL][28] ([i915#31]) [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-skl2/igt@kms_setmode@basic.html [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-skl5/igt@kms_setmode@basic.html * igt@kms_vblank@pipe-a-ts-continuation-suspend: - shard-kbl: [PASS][29] -> [DMESG-WARN][30] ([i915#180]) +4 similar issues [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-kbl6/igt@kms_vblank@pipe-a-ts-continuation-suspend.html [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-kbl7/igt@kms_vblank@pipe-a-ts-continuation-suspend.html * igt@kms_vblank@pipe-c-ts-continuation-suspend: - shard-skl: [PASS][31] -> [INCOMPLETE][32] ([i915#69]) +2 similar issues [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-skl4/igt@kms_vblank@pipe-c-ts-continuation-suspend.html [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-skl4/igt@kms_vblank@pipe-c-ts-continuation-suspend.html #### Possible fixes #### * igt@gem_exec_parallel@vcs1-fds: - shard-iclb: [SKIP][33] ([fdo#112080]) -> [PASS][34] +6 similar issues [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-iclb8/igt@gem_exec_parallel@vcs1-fds.html [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-iclb1/igt@gem_exec_parallel@vcs1-fds.html * igt@gem_exec_reloc@basic-write-cpu-active: - shard-skl: [DMESG-WARN][35] ([i915#109]) -> [PASS][36] [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-skl2/igt@gem_exec_reloc@basic-write-cpu-active.html [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-skl5/igt@gem_exec_reloc@basic-write-cpu-active.html * igt@gem_exec_schedule@pi-userfault-bsd: - shard-iclb: [SKIP][37] ([i915#677]) -> [PASS][38] [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-iclb4/igt@gem_exec_schedule@pi-userfault-bsd.html [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-iclb3/igt@gem_exec_schedule@pi-userfault-bsd.html * igt@gem_exec_schedule@preempt-queue-bsd1: - shard-iclb: [SKIP][39] ([fdo#109276]) -> [PASS][40] +10 similar issues [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-iclb8/igt@gem_exec_schedule@preempt-queue-bsd1.html [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-iclb1/igt@gem_exec_schedule@preempt-queue-bsd1.html * igt@gem_exec_schedule@preemptive-hang-bsd: - shard-iclb: [SKIP][41] ([fdo#112146]) -> [PASS][42] [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-iclb1/igt@gem_exec_schedule@preemptive-hang-bsd.html [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-iclb7/igt@gem_exec_schedule@preemptive-hang-bsd.html * igt@gem_partial_pwrite_pread@reads-display: - shard-hsw: [FAIL][43] ([i915#694]) -> [PASS][44] [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-hsw7/igt@gem_partial_pwrite_pread@reads-display.html [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-hsw8/igt@gem_partial_pwrite_pread@reads-display.html * igt@gem_workarounds@suspend-resume-fd: - shard-kbl: [DMESG-WARN][45] ([i915#180]) -> [PASS][46] +2 similar issues [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-kbl1/igt@gem_workarounds@suspend-resume-fd.html [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-kbl1/igt@gem_workarounds@suspend-resume-fd.html * igt@i915_pm_rps@waitboost: - shard-iclb: [FAIL][47] ([i915#413]) -> [PASS][48] [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-iclb6/igt@i915_pm_rps@waitboost.html [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-iclb6/igt@i915_pm_rps@waitboost.html * igt@i915_selftest@live_blt: - shard-hsw: [DMESG-FAIL][49] ([i915#770]) -> [PASS][50] [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-hsw1/igt@i915_selftest@live_blt.html [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-hsw1/igt@i915_selftest@live_blt.html * igt@i915_suspend@sysfs-reader: - shard-apl: [DMESG-WARN][51] ([i915#180]) -> [PASS][52] +2 similar issues [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-apl6/igt@i915_suspend@sysfs-reader.html [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-apl7/igt@i915_suspend@sysfs-reader.html * igt@kms_flip@plain-flip-fb-recreate: - shard-skl: [FAIL][53] ([i915#34]) -> [PASS][54] [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-skl7/igt@kms_flip@plain-flip-fb-recreate.html [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-skl1/igt@kms_flip@plain-flip-fb-recreate.html * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-pwrite: - shard-tglb: [SKIP][55] ([i915#668]) -> [PASS][56] +3 similar issues [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-tglb3/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-pwrite.html [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-tglb8/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-pwrite.html * igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min: - shard-skl: [FAIL][57] ([fdo#108145]) -> [PASS][58] +1 similar issue [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-skl6/igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min.html [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-skl1/igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min.html * igt@kms_psr@psr2_primary_mmap_gtt: - shard-iclb: [SKIP][59] ([fdo#109441]) -> [PASS][60] +1 similar issue [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-iclb1/igt@kms_psr@psr2_primary_mmap_gtt.html [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-iclb2/igt@kms_psr@psr2_primary_mmap_gtt.html * igt@kms_vblank@pipe-b-ts-continuation-dpms-suspend: - shard-skl: [INCOMPLETE][61] ([i915#69]) -> [PASS][62] [61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-skl8/igt@kms_vblank@pipe-b-ts-continuation-dpms-suspend.html [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-skl5/igt@kms_vblank@pipe-b-ts-continuation-dpms-suspend.html #### Warnings #### * igt@gem_tiled_blits@interruptible: - shard-hsw: [FAIL][63] ([i915#818]) -> [FAIL][64] ([i915#694]) [63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-hsw2/igt@gem_tiled_blits@interruptible.html [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-hsw4/igt@gem_tiled_blits@interruptible.html * igt@gem_tiled_blits@normal: - shard-hsw: [FAIL][65] ([i915#818]) -> [INCOMPLETE][66] ([i915#61]) [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-hsw5/igt@gem_tiled_blits@normal.html [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-hsw5/igt@gem_tiled_blits@normal.html * igt@i915_pm_rpm@legacy-planes: - shard-snb: [INCOMPLETE][67] ([i915#82]) -> [SKIP][68] ([fdo#109271]) [67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7857/shard-snb6/igt@i915_pm_rpm@legacy-planes.html [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_16390/shard-snb1/igt@i915_pm_rpm@legacy-planes.html [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145 [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271 [fdo#109276]: https://bugs.freedesktop.org/show_bug.cgi?id=109276 [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441 [fdo#112080]: https://bugs.freedesktop.org/show_bug.cgi?id=112080 [fdo#112146]: https://bugs.freedesktop.org/show_bug.cgi?id=112146 [i915#109]: https://gitlab.freedesktop.org/drm/intel/issues/109 [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180 [i915#265]: https://gitlab.freedesktop.org/drm/intel/issues/265 [i915#31]: https://gitlab.freedesktop.org/drm/intel/issues/31 [i915#34]: https://gitlab.freedesktop.org/drm/intel/issues/34 [i915#413]: https://gitlab.freedesktop.org/drm/intel/issues/413 [i915#49]: https://gitlab.freedesktop.org/drm/intel/issues/49 [i915#52]: https://gitlab.freedesktop.org/drm/intel/issues/52 [i915#54]: https://gitlab.freedesktop.org/drm/intel/issues/54 [i915#61]: https://gitlab.freedesktop.org/drm/intel/issues/61 [i915#644]: https://gitlab.freedesktop.org/drm/intel/issues/644 [i915#668]: https://gitlab.freedesktop.org/drm/intel/issues/668 [i915#677]: https://gitlab.freedesktop.org/drm/intel/issues/677 [i915#69]: https://gitlab.freedesktop.org/drm/intel/issues/69 [i915#694]: https://gitlab.freedesktop.org/drm/intel/issues/694 [i915#72]: https://gitlab.freedesktop.org/drm/intel/issues/72 [i915#770]: https://gitlab.freedesktop.org/drm/intel/issues/770 [i915#818]: https://gitlab.freedesktop.org/drm/intel/issues/818 [i915#82]: https://gitlab.freedesktop.org/drm/intel/issues/82 Participating hosts (10 -> 10) ------------------------------ No changes in participating hosts Build changes ------------- * CI: CI-20190529 -> None * Linux: CI_DRM_7857 -> Patchwork_16390 CI-20190529: 20190529 CI_DRM_7857: 8ec40a15b9a930df9e445f17c5e01cdb6f80353a @ git://anongit.freedesktop.org/gfx-ci/linux IGT_5411: 86c6ab8a0b6696bdb2153febd350af7fa02fbb00 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_16390: ecd47ed230f7984724bee23c53df2eaadf036766 @ 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_16390/index.html _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2020-02-05 17:55 UTC | newest] Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-02-03 9:41 [Intel-gfx] [PATCH 1/6] drm/i915: Hold reference to previous active fence as we queue Chris Wilson 2020-02-03 9:41 ` [Intel-gfx] [PATCH 2/6] drm/i915: Initialise basic fence before acquiring seqno Chris Wilson 2020-02-03 10:55 ` Tvrtko Ursulin 2020-02-03 10:58 ` Chris Wilson 2020-02-03 11:02 ` Tvrtko Ursulin 2020-02-03 9:41 ` [Intel-gfx] [PATCH 3/6] drm/i915/gt: Warn about the hidden i915_vma_pin in timeline_get_seqno Chris Wilson 2020-02-03 9:41 ` [Intel-gfx] [PATCH 4/6] drm/i915/selftests: Add a simple rollover for the kernel context Chris Wilson 2020-02-03 17:32 ` Matthew Auld 2020-02-03 17:37 ` Chris Wilson 2020-02-03 9:41 ` [Intel-gfx] [PATCH 5/6] drm/i915: Flush execution tasklets before checking request status Chris Wilson 2020-02-03 9:41 ` [Intel-gfx] [PATCH 6/6] drm/i915/gt: Yield the timeslice if caught waiting on a user semaphore Chris Wilson 2020-02-03 10:50 ` [Intel-gfx] [PATCH 1/6] drm/i915: Hold reference to previous active fence as we queue Tvrtko Ursulin 2020-02-03 11:33 ` [Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [1/6] " Patchwork 2020-02-05 17:55 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.