drm/v3d: Create function to update a set of GPU stats
authorMaíra Canal <mcanal@igalia.com>
Sat, 20 Apr 2024 21:32:11 +0000 (18:32 -0300)
committerMaíra Canal <mcanal@igalia.com>
Tue, 23 Apr 2024 22:32:47 +0000 (19:32 -0300)
Given a set of GPU stats, that is, a `struct v3d_stats` related to a
queue in a given context, create a function that can update this set
of GPU stats.

Signed-off-by: Maíra Canal <mcanal@igalia.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Reviewed-by: Jose Maria Casanova Crespo <jmcasanova@igalia.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240420213632.339941-5-mcanal@igalia.com
drivers/gpu/drm/v3d/v3d_sched.c

index b6b5542c3fcf94fa694a5cf591f259480326a337..b9614944931c81c051fa92839d9908461ea3295f 100644 (file)
@@ -118,6 +118,14 @@ v3d_job_start_stats(struct v3d_job *job, enum v3d_queue queue)
        global_stats->start_ns = now;
 }
 
+static void
+v3d_stats_update(struct v3d_stats *stats, u64 now)
+{
+       stats->enabled_ns += now - stats->start_ns;
+       stats->jobs_completed++;
+       stats->start_ns = 0;
+}
+
 void
 v3d_job_update_stats(struct v3d_job *job, enum v3d_queue queue)
 {
@@ -127,13 +135,8 @@ v3d_job_update_stats(struct v3d_job *job, enum v3d_queue queue)
        struct v3d_stats *local_stats = &file->stats[queue];
        u64 now = local_clock();
 
-       local_stats->enabled_ns += now - local_stats->start_ns;
-       local_stats->jobs_completed++;
-       local_stats->start_ns = 0;
-
-       global_stats->enabled_ns += now - global_stats->start_ns;
-       global_stats->jobs_completed++;
-       global_stats->start_ns = 0;
+       v3d_stats_update(local_stats, now);
+       v3d_stats_update(global_stats, now);
 }
 
 static struct dma_fence *v3d_bin_job_run(struct drm_sched_job *sched_job)