OSDN Git Service

drm/i915: Pull waiting on an external dma-fence into its routine
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 8 May 2020 09:29:26 +0000 (10:29 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 8 May 2020 11:39:05 +0000 (12:39 +0100)
As a means for a small code consolidation, but primarily to start
thinking more carefully about internal-vs-external linkage, pull the
pair of i915_sw_fence_await_dma_fence() calls into a common routine.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200508092933.738-2-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_request.c

index be2ce90..94189c7 100644 (file)
@@ -1067,6 +1067,14 @@ i915_request_await_request(struct i915_request *to, struct i915_request *from)
        return 0;
 }
 
+static int
+i915_request_await_external(struct i915_request *rq, struct dma_fence *fence)
+{
+       return i915_sw_fence_await_dma_fence(&rq->submit, fence,
+                                            fence->context ? I915_FENCE_TIMEOUT : 0,
+                                            I915_FENCE_GFP);
+}
+
 int
 i915_request_await_dma_fence(struct i915_request *rq, struct dma_fence *fence)
 {
@@ -1114,9 +1122,7 @@ i915_request_await_dma_fence(struct i915_request *rq, struct dma_fence *fence)
                if (dma_fence_is_i915(fence))
                        ret = i915_request_await_request(rq, to_request(fence));
                else
-                       ret = i915_sw_fence_await_dma_fence(&rq->submit, fence,
-                                                           fence->context ? I915_FENCE_TIMEOUT : 0,
-                                                           I915_FENCE_GFP);
+                       ret = i915_request_await_external(rq, fence);
                if (ret < 0)
                        return ret;
 
@@ -1255,9 +1261,7 @@ i915_request_await_execution(struct i915_request *rq,
                                                             to_request(fence),
                                                             hook);
                else
-                       ret = i915_sw_fence_await_dma_fence(&rq->submit, fence,
-                                                           I915_FENCE_TIMEOUT,
-                                                           GFP_KERNEL);
+                       ret = i915_request_await_external(rq, fence);
                if (ret < 0)
                        return ret;
        } while (--nchild);