On 01/15/2015 01:10 PM, Nick Hoath wrote:
  void intel_execlists_retire_requests(struct intel_engine_cs *ring)
  {
-       struct intel_ctx_submit_request *req, *tmp;
+       struct drm_i915_gem_request *req, *tmp;
        struct drm_i915_private *dev_priv = ring->dev->dev_private;
        unsigned long flags;
        struct list_head retired_list;
@@ -776,7 +771,7 @@ void intel_execlists_retire_requests(struct intel_engine_cs 
*ring)
        spin_unlock_irqrestore(&ring->execlist_lock, flags);

        list_for_each_entry_safe(req, tmp, &retired_list, execlist_link) {
-               struct intel_context *ctx = req->request->ctx;
+               struct intel_context *ctx = req->ctx;
                struct drm_i915_gem_object *ctx_obj =
                                ctx->engine[ring->id].state;

@@ -784,9 +779,8 @@ void intel_execlists_retire_requests(struct intel_engine_cs 
*ring)
                        intel_lr_context_unpin(ring, ctx);
                intel_runtime_pm_put(dev_priv);
                i915_gem_context_unreference(ctx);
-               i915_gem_request_unreference(req->request);
+               i915_gem_request_unreference(req);
                list_del(&req->execlist_link);

It looks like the this req unreference can be the last one in which case list_del explodes. I don't know if it was intended that it cannot be the last unreference, but I have a log which proves it can be. :)

Regards,

Tvrtko
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to