Quoting Tvrtko Ursulin (2018-04-23 11:44:19)
>
> On 23/04/2018 11:13, Chris Wilson wrote:
> > diff --git a/drivers/gpu/drm/i915/i915_gem.c
> > b/drivers/gpu/drm/i915/i915_gem.c
> > index 0097a77fae8d..1635975dbc16 100644
> > --- a/drivers/gpu/drm/i915/i915_gem.c
> > +++ b/drivers/gpu/drm/i915/i915_gem.c
> > @@ -3110,10 +3110,10 @@ static void engine_skip_context(struct i915_request
> > *request)
> > {
> > struct intel_engine_cs *engine = request->engine;
> > struct i915_gem_context *hung_ctx = request->ctx;
> > - struct intel_timeline *timeline;
> > + struct intel_timeline *timeline = request->timeline;
> > unsigned long flags;
> >
> > - timeline = i915_gem_context_lookup_timeline(hung_ctx, engine);
> > + GEM_BUG_ON(timeline == engine->timeline);
>
> Isn't this the guilty request, so would be on the engine timeline?
request->timeline is always the client timeline, so we can move it back
to the client on being preempted.
> > diff --git a/drivers/gpu/drm/i915/i915_request.c
> > b/drivers/gpu/drm/i915/i915_request.c
> > index 534b8d684cef..35869afdb199 100644
> > --- a/drivers/gpu/drm/i915/i915_request.c
> > +++ b/drivers/gpu/drm/i915/i915_request.c
> > @@ -639,6 +639,7 @@ i915_request_alloc(struct intel_engine_cs *engine,
> > struct i915_gem_context *ctx)
> > if (IS_ERR(ring))
> > return ERR_CAST(ring);
> > GEM_BUG_ON(!ring);
> > + GEM_BUG_ON(ring->timeline == engine->timeline);
>
> It's debugging only but feels out of place. Put it in
> intel_engine_create_ring?
Not quite, I can move it down, the point is that rq->timeline !=
engine->timeline. Maybe a bit of s/rq->timeline/rq->user_timeline/?
-Chris
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx