[AMD Official Use Only - Internal Distribution Only] That said, it would be easier for me to merge through the AMD tree since a relatively big AMD feature depends on it. Not sure how much conflict potential there is if this goes through the AMD tree. Alex ________________________________ From: amd-gfx on behalf of Deucher, Alexander Sent: Monday, April 26, 2021 3:24 PM To: Christian König Cc: amd-gfx list ; Sun, Roy ; Nieto, David M Subject: Re: [PATCH 1/2] drm/scheduler: Change scheduled fence track [AMD Official Use Only - Internal Distribution Only] [AMD Official Use Only - Internal Distribution Only] No objections from me. Thanks! Alex ________________________________ From: Christian König Sent: Monday, April 26, 2021 2:49 AM To: Deucher, Alexander Cc: Nieto, David M ; Sun, Roy ; amd-gfx list Subject: Re: [PATCH 1/2] drm/scheduler: Change scheduled fence track Hey Alex, any objections that we merge those two patches through drm-misc-next? Thanks, Christian. Am 26.04.21 um 08:27 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 > Signed-off-by: Roy Sun > --- > drivers/gpu/drm/scheduler/sched_main.c | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c > index 92d8de24d0a1..f8e39ab0c41b 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 relaunch certain number of jobs from pending list > * > * @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,14 @@ 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); > We just need to record the scheduled time of the next job. So we > need not to check the rest job. > + /* account for the next fence in the queue */ > + next = list_first_entry_or_null(&sched->pending_list, > + struct drm_sched_job, list); > + if (next && test_bit(DMA_FENCE_FLAG_TIMESTAMP_BIT, > + &job->s_fence->finished.flags)) { > + next->s_fence->scheduled.timestamp = > + job->s_fence->finished.timestamp; > + } > } else { > job = NULL; > /* queue timeout for next job */