> 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
