Re: [PATCH 1/2] drm/scheduler: Change scheduled fence track

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 4/16/21 1:26 PM, Christian König wrote:
Am 16.04.21 um 07:04 schrieb Roy Sun:
Update the timestamp of scheduled fence on HW
completion of the previous fences

This allow more accurate tracking of the fence
execution in HW

Signed-off-by: David M Nieto <david.nieto@xxxxxxx>
Signed-off-by: Roy Sun <Roy.Sun@xxxxxxx>

Reviewed-by: Christian König <christian.koenig@xxxxxxx> for the series.

Nirmoy if you are idle again could you give that a testing round? I don't expect it to cause trouble, just want to double check that we haven't forgotten taking a lock or stuff like that.


Looks good, Tested-by: Nirmoy Das <nirmoy.das@xxxxxxx>. One minor typo below:


Thanks,
Christian.

---
  drivers/gpu/drm/scheduler/sched_main.c | 11 +++++++++--
  1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c
index 92d8de24d0a1..4e5d8d4af010 100644
--- a/drivers/gpu/drm/scheduler/sched_main.c
+++ b/drivers/gpu/drm/scheduler/sched_main.c
@@ -515,7 +515,7 @@ void drm_sched_resubmit_jobs(struct drm_gpu_scheduler *sched)
  EXPORT_SYMBOL(drm_sched_resubmit_jobs);
    /**
- * drm_sched_resubmit_jobs_ext - helper to relunch certain number of jobs from mirror ring list + * drm_sched_resubmit_jobs_ext - helper to relunch certain number of jobs from pending list


relunch -> relaunch


Regards,

Nirmoy


   *
   * @sched: scheduler instance
   * @max: job numbers to relaunch
@@ -671,7 +671,7 @@ drm_sched_select_entity(struct drm_gpu_scheduler *sched)
  static struct drm_sched_job *
  drm_sched_get_cleanup_job(struct drm_gpu_scheduler *sched)
  {
-    struct drm_sched_job *job;
+    struct drm_sched_job *job, *next;
        /*
       * Don't destroy jobs while the timeout worker is running OR thread @@ -690,6 +690,13 @@ drm_sched_get_cleanup_job(struct drm_gpu_scheduler *sched)
      if (job && dma_fence_is_signaled(&job->s_fence->finished)) {
          /* remove job from pending_list */
          list_del_init(&job->list);
+        /* account for the next fence in the queue */
+        next = list_first_entry_or_null(&sched->pending_list,
+                struct drm_sched_job, list);
+        if (next) {
+            next->s_fence->scheduled.timestamp =
+                job->s_fence->finished.timestamp;
+        }
      } else {
          job = NULL;
          /* queue timeout for next job */

_______________________________________________
amd-gfx mailing list
amd-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/amd-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux