[Intel-gfx] [PATCH 1/2] drm/i915/selftest: Fix engine timestamp and ktime disparity
Nilawar, Badal
badal.nilawar at intel.com
Wed Mar 1 12:04:05 UTC 2023
LGTM
Reviewed-by: Badal Nilawar <badal.nilawar at intel.com>
On 23-02-2023 15:35, Anshuman Gupta wrote:
> While reading the engine timestamps there can be uncontrollable
> concurrent mmio access via other i915 child drivers and by GuC,
> which is not truly atomic context as expected by this selftest,
> which may cause mmio latency to read the engine timestamps,
> Account such latency to calculate time to read engine timestamp
> such that selftest can validate the timestamp and ktime pair.
>
> Cc: Chris Wilson <chris.p.wilson at intel.com>
> Signed-off-by: Anshuman Gupta <anshuman.gupta at intel.com>
> ---
> drivers/gpu/drm/i915/gt/selftest_gt_pm.c | 2 +-
> drivers/gpu/drm/i915/gt/selftest_rps.c | 4 ++--
> 2 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/selftest_gt_pm.c b/drivers/gpu/drm/i915/gt/selftest_gt_pm.c
> index b46425aeb2f0..0971241707ce 100644
> --- a/drivers/gpu/drm/i915/gt/selftest_gt_pm.c
> +++ b/drivers/gpu/drm/i915/gt/selftest_gt_pm.c
> @@ -63,8 +63,8 @@ static void measure_clocks(struct intel_engine_cs *engine,
>
> udelay(1000);
>
> - dt[i] = ktime_sub(ktime_get(), dt[i]);
> cycles[i] += read_timestamp(engine);
> + dt[i] = ktime_sub(ktime_get(), dt[i]);
> local_irq_enable();
> }
>
> diff --git a/drivers/gpu/drm/i915/gt/selftest_rps.c b/drivers/gpu/drm/i915/gt/selftest_rps.c
> index 6755bbc4ebda..c0cc0dd78c7c 100644
> --- a/drivers/gpu/drm/i915/gt/selftest_rps.c
> +++ b/drivers/gpu/drm/i915/gt/selftest_rps.c
> @@ -299,13 +299,13 @@ int live_rps_clock_interval(void *arg)
> for (i = 0; i < 5; i++) {
> preempt_disable();
>
> - dt_[i] = ktime_get();
> cycles_[i] = -intel_uncore_read_fw(gt->uncore, GEN6_RP_CUR_UP_EI);
> + dt_[i] = ktime_get();
>
> udelay(1000);
>
> - dt_[i] = ktime_sub(ktime_get(), dt_[i]);
> cycles_[i] += intel_uncore_read_fw(gt->uncore, GEN6_RP_CUR_UP_EI);
> + dt_[i] = ktime_sub(ktime_get(), dt_[i]);
>
> preempt_enable();
> }
More information about the Intel-gfx
mailing list