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@xxxxxxxxxxxxxxxxxx> > > Cc: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> > > Cc: Matthew Auld <matthew.auld@xxxxxxxxx> > > --- > > 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@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx