Re: [Intel-gfx] [PATCH] drm/i915/selftest: Disable IRQ for timestamp calculation

2021-12-01 Thread Dixit, Ashutosh
On Tue, 30 Nov 2021 05:20:05 -0800, Anshuman Gupta wrote:
>
> gt_pm selftest calculates engine ticks cycles and wall time
> cycles by delta of respective engine elapsed TIMESTAMP and ktime
> for period of 1000us.
> It compares the engine ticks cycles with wall time cycles.
>
> Disable local cpu interrupt so that interrupt handler does not
> switch out the thread during measure_clocks() and prevent
> miscalculation of engine tick cycles.

Reviewed-by: Ashutosh Dixit 

> v2:
> - nuke preempt_{disable,enable}, as disable_local_irq()
>   disable the preemption. (Chris)
>
> Cc: Chris P Wilson 
> Cc: Badal Nilawar 
> Cc: Ashutosh Dixit 
> Signed-off-by: Anshuman Gupta 
> ---
>  drivers/gpu/drm/i915/gt/selftest_gt_pm.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/selftest_gt_pm.c 
> b/drivers/gpu/drm/i915/gt/selftest_gt_pm.c
> index b9441217ca3d..55c5cdb99f45 100644
> --- a/drivers/gpu/drm/i915/gt/selftest_gt_pm.c
> +++ b/drivers/gpu/drm/i915/gt/selftest_gt_pm.c
> @@ -43,7 +43,7 @@ static void measure_clocks(struct intel_engine_cs *engine,
>   int i;
>
>   for (i = 0; i < 5; i++) {
> - preempt_disable();
> + local_irq_disable();
>   cycles[i] = -ENGINE_READ_FW(engine, RING_TIMESTAMP);
>   dt[i] = ktime_get();
>
> @@ -51,7 +51,7 @@ static void measure_clocks(struct intel_engine_cs *engine,
>
>   dt[i] = ktime_sub(ktime_get(), dt[i]);
>   cycles[i] += ENGINE_READ_FW(engine, RING_TIMESTAMP);
> - preempt_enable();
> + local_irq_enable();
>   }
>
>   /* Use the median of both cycle/dt; close enough */
> --
> 2.26.2
>


[Intel-gfx] [PATCH] drm/i915/selftest: Disable IRQ for timestamp calculation

2021-11-30 Thread Anshuman Gupta
gt_pm selftest calculates engine ticks cycles and wall time
cycles by delta of respective engine elapsed TIMESTAMP and ktime
for period of 1000us.
It compares the engine ticks cycles with wall time cycles.

Disable local cpu interrupt so that interrupt handler does not
switch out the thread during measure_clocks() and prevent
miscalculation of engine tick cycles.

v2:
- nuke preempt_{disable,enable}, as disable_local_irq()
  disable the preemption. (Chris)

Cc: Chris P Wilson 
Cc: Badal Nilawar 
Cc: Ashutosh Dixit 
Signed-off-by: Anshuman Gupta 
---
 drivers/gpu/drm/i915/gt/selftest_gt_pm.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/selftest_gt_pm.c 
b/drivers/gpu/drm/i915/gt/selftest_gt_pm.c
index b9441217ca3d..55c5cdb99f45 100644
--- a/drivers/gpu/drm/i915/gt/selftest_gt_pm.c
+++ b/drivers/gpu/drm/i915/gt/selftest_gt_pm.c
@@ -43,7 +43,7 @@ static void measure_clocks(struct intel_engine_cs *engine,
int i;
 
for (i = 0; i < 5; i++) {
-   preempt_disable();
+   local_irq_disable();
cycles[i] = -ENGINE_READ_FW(engine, RING_TIMESTAMP);
dt[i] = ktime_get();
 
@@ -51,7 +51,7 @@ static void measure_clocks(struct intel_engine_cs *engine,
 
dt[i] = ktime_sub(ktime_get(), dt[i]);
cycles[i] += ENGINE_READ_FW(engine, RING_TIMESTAMP);
-   preempt_enable();
+   local_irq_enable();
}
 
/* Use the median of both cycle/dt; close enough */
-- 
2.26.2