Commit beb311ff authored by Lucas Stach's avatar Lucas Stach
Browse files

drm/etnaviv: reduce number of ktime_get calls in IRQ handler



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: default avatarLucas Stach <l.stach@pengutronix.de>
Reviewed-by: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: default avatarChristian Gmeiner <cgmeiner@igalia.com>
parent 58979ad6
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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);
		}