Quoting Ankit Navik (2019-03-14 08:36:53)
>  static inline bool i915_gem_context_is_closed(const struct i915_gem_context 
> *ctx)
> diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c 
> b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> index 02adcaf..a38963b 100644
> --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> @@ -2475,6 +2475,8 @@ i915_gem_do_execbuffer(struct drm_device *dev,
>          */
>         eb.request->batch = eb.batch;
>  
> +       atomic_inc(&eb.ctx->req_cnt);
> +
>         trace_i915_request_queue(eb.request, eb.batch_flags);
>         err = eb_submit(&eb);
>  err_request:
> diff --git a/drivers/gpu/drm/i915/intel_lrc.c 
> b/drivers/gpu/drm/i915/intel_lrc.c
> index 34a0866..d0af37d 100644
> --- a/drivers/gpu/drm/i915/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/intel_lrc.c
> @@ -780,6 +780,9 @@ static void execlists_dequeue(struct intel_engine_cs 
> *engine)
>  
>                         last = rq;
>                         submit = true;
> +
> +                       if (atomic_read(&rq->gem_context->req_cnt) > 0)
> +                               atomic_dec(&rq->gem_context->req_cnt);

Not atomic. But is this not a clue that you've got the model wrong?

If only we were already tracking requests within contexts.
-Chris
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to