[Intel-gfx] [PATCH 1/2] drm/i915: Only defer freeing of fence callback when also using the timer
Tvrtko Ursulin
tvrtko.ursulin at linux.intel.com
Mon Jan 15 10:00:48 UTC 2018
On 15/01/2018 09:06, Chris Wilson wrote:
> Without an accompanying timer (for internal fences), we can free the
> fence callback immediately as we do not need to employ the RCU barrier
> to serialise with the timer. By avoiding the RCU delay, we can avoid the
> extra mempressure under heavy inter-engine request utilisation.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
> ---
> drivers/gpu/drm/i915/i915_sw_fence.c | 13 ++++++++++---
> 1 file changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_sw_fence.c b/drivers/gpu/drm/i915/i915_sw_fence.c
> index 3669f5eeb91e..13021326d777 100644
> --- a/drivers/gpu/drm/i915/i915_sw_fence.c
> +++ b/drivers/gpu/drm/i915/i915_sw_fence.c
> @@ -398,7 +398,12 @@ static void dma_i915_sw_fence_wake(struct dma_fence *dma,
> if (fence)
> i915_sw_fence_complete(fence);
>
> - irq_work_queue(&cb->work);
> + if (cb->dma) {
> + irq_work_queue(&cb->work);
> + return;
> + }
> +
> + kfree(cb);
> }
>
> static void irq_i915_sw_fence_work(struct irq_work *wrk)
> @@ -437,10 +442,12 @@ int i915_sw_fence_await_dma_fence(struct i915_sw_fence *fence,
> i915_sw_fence_await(fence);
>
> cb->dma = NULL;
> - timer_setup(&cb->timer, timer_i915_sw_fence_wake, TIMER_IRQSAFE);
> - init_irq_work(&cb->work, irq_i915_sw_fence_work);
> if (timeout) {
> cb->dma = dma_fence_get(dma);
> + init_irq_work(&cb->work, irq_i915_sw_fence_work);
> +
> + timer_setup(&cb->timer,
> + timer_i915_sw_fence_wake, TIMER_IRQSAFE);
> mod_timer(&cb->timer, round_jiffies_up(jiffies + timeout));
> }
>
>
Looks straightforward enough and I can't spot any problems with it. It
would be good to have mentioned in the commit under which
tests/benchmarks can the improvement be observed and how.
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
Regards,
Tvrtko
More information about the Intel-gfx
mailing list