OSDN Git Service

drm/i915/gt: Hold request reference while waiting for w/a verification
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 21 Nov 2019 09:33:26 +0000 (09:33 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 21 Nov 2019 11:54:46 +0000 (11:54 +0000)
As we wait upon a request, we must be holding a reference to it, and be
wary that i915_request_add() consumes the passed in reference.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191121093326.134774-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gt/intel_workarounds.c

index 399acae..226bd4c 100644 (file)
@@ -1592,16 +1592,17 @@ static int engine_wa_list_verify(struct intel_context *ce,
        if (err)
                goto err_vma;
 
+       i915_request_get(rq);
        i915_request_add(rq);
        if (i915_request_wait(rq, 0, HZ / 5) < 0) {
                err = -ETIME;
-               goto err_vma;
+               goto err_rq;
        }
 
        results = i915_gem_object_pin_map(vma->obj, I915_MAP_WB);
        if (IS_ERR(results)) {
                err = PTR_ERR(results);
-               goto err_vma;
+               goto err_rq;
        }
 
        err = 0;
@@ -1615,6 +1616,8 @@ static int engine_wa_list_verify(struct intel_context *ce,
 
        i915_gem_object_unpin_map(vma->obj);
 
+err_rq:
+       i915_request_put(rq);
 err_vma:
        i915_vma_unpin(vma);
        i915_vma_put(vma);