Commit ac938052 authored by Chris Wilson's avatar Chris Wilson
Browse files

drm/i915: Pull waiting on an external dma-fence into its routine



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: default avatarChris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200508092933.738-2-chris@chris-wilson.co.uk
parent 2045d666
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -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);