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

Nirmoy nirmodas at amd.com
Fri Apr 16 13:50:01 UTC 2021


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 at amd.com>
>> Signed-off-by: Roy Sun <Roy.Sun at amd.com>
>
> Reviewed-by: Christian König <christian.koenig at amd.com> 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 at amd.com>. 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 */
>


More information about the amd-gfx mailing list