> Wait for the GPU to wake up from the semaphore before measuring the
>time, so that we coordinate the sampling on both the CPU and GPU for
> more accurate comparisons.
>
>Reported-by: Bruce Chang <[email protected]>
> Signed-off-by: Chris Wilson <[email protected]>
> Cc: CQ Tang <[email protected]>
> ---
>  drivers/gpu/drm/i915/gt/selftest_engine_pm.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/selftest_engine_pm.c 
> b/drivers/gpu/drm/i915/gt/selftest_engine_pm.c
>index 3ce8cb3329f3..007a7c790778 100644
> --- a/drivers/gpu/drm/i915/gt/selftest_engine_pm.c
> +++ b/drivers/gpu/drm/i915/gt/selftest_engine_pm.c
> @@ -111,8 +111,10 @@ static int __measure_timestamps(struct intel_context *ce,
>
>         /* Run the request for a 100us, sampling timestamps before/after */
>          preempt_disable();
> -       *dt = local_clock();
>         write_semaphore(&sema[2], 0);
> +       while (READ_ONCE(sema[1]) == 0) /* wait for the gpu to catch up */
> +               cpu_relax();
> +       *dt = local_clock();
>          udelay(100);
>         *dt = local_clock() - *dt;
>          write_semaphore(&sema[2], 1);
> --
>2.20.1
>

This trick should work!
Thanks!

Reviewed-by: Bruce Chang <[email protected]>

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to