[PATCH] drm/etnaviv: reduce number of ktime_get calls in IRQ handler
Christian Gmeiner
christian.gmeiner at gmail.com
Mon Jun 24 13:10:46 UTC 2024
>
> A single IRQ might signal the completion of multiple jobs/fences
> at once. There is no point in attaching a new timestamp to each
> fence that only differs in when exactly the IRQ handler was able
> to process this fence.
>
> Get a single timestamp when the IRQ handler has determined that
> there are completed jobs and reuse this for all fences that get
> signalled by the handler.
>
> Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
Reviewed-by: Christian Gmeiner <cgmeiner at igalia.com>
> ---
> drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
> index 7502c55199b8..7c7f97793ddd 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c
> @@ -1548,6 +1548,7 @@ static irqreturn_t irq_handler(int irq, void *data)
> u32 intr = gpu_read(gpu, VIVS_HI_INTR_ACKNOWLEDGE);
>
> if (intr != 0) {
> + ktime_t now = ktime_get();
> int event;
>
> pm_runtime_mark_last_busy(gpu->dev);
> @@ -1597,7 +1598,7 @@ static irqreturn_t irq_handler(int irq, void *data)
> */
> if (fence_after(fence->seqno, gpu->completed_fence))
> gpu->completed_fence = fence->seqno;
> - dma_fence_signal(fence);
> + dma_fence_signal_timestamp(fence, now);
>
> event_free(gpu, event);
> }
> --
> 2.39.2
>
--
greets
--
Christian Gmeiner, MSc
https://christian-gmeiner.info/privacypolicy
More information about the etnaviv
mailing list