[Intel-gfx] [PATCH 2/9] drm/i915: Pull waiting on an external dma-fence into its routine

Mika Kuoppala mika.kuoppala at linux.intel.com
Fri May 8 10:19:25 UTC 2020


Chris Wilson <chris at chris-wilson.co.uk> writes:

> 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 at chris-wilson.co.uk>
> ---
>  drivers/gpu/drm/i915/i915_request.c | 16 ++++++++++------
>  1 file changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c
> index be2ce9065a29..94189c7d43cd 100644
> --- a/drivers/gpu/drm/i915/i915_request.c
> +++ b/drivers/gpu/drm/i915/i915_request.c
> @@ -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);

For us (rq, rq), for external (rq, fence).

It looks neat for a reader. But then, how can external fence have
a context?

-Mika

>  		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);
> -- 
> 2.20.1


More information about the Intel-gfx mailing list