[Intel-gfx] [PATCH] drm/i915: Preemptive timeline retirement

Chris Wilson chris at chris-wilson.co.uk
Mon Jan 13 14:05:21 UTC 2020


Quoting Chris Wilson (2020-01-13 14:04:07)
> Currently, we only retire the oldest request on the timeline before
> allocating the next, but only if there is a spare request. However,
> since we rearranged the locking, e.g.  commit df9f85d8582e ("drm/i915:
> Serialise i915_active_fence_set() with itself"), we no longer benefit
> from keeping the active chain intact underneath the struct_mutex. As
> such, retire all completed requests in the client's timeline before
> creating the next, trying to keep our memory and resource usage tight
> and ideally only penalising the heavy users.
> 
> References: df9f85d8582e ("drm/i915: Serialise i915_active_fence_set() with itself")
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> ---
>  drivers/gpu/drm/i915/i915_request.c | 44 ++++-------------------------
>  1 file changed, 5 insertions(+), 39 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c
> index 9ed0d3bc7249..5743edb50688 100644
> --- a/drivers/gpu/drm/i915/i915_request.c
> +++ b/drivers/gpu/drm/i915/i915_request.c
> @@ -558,21 +558,12 @@ request_alloc_slow(struct intel_timeline *tl, gfp_t gfp)
>  {
>         struct i915_request *rq;
>  
> -       if (list_empty(&tl->requests))
> -               goto out;
> +       if (gfpflags_allow_blocking(gfp))

I am an idiot.
-Chris


More information about the Intel-gfx mailing list