<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<p style="font-family:Arial;font-size:11pt;color:#0078D7;margin:5pt;" align="Left">
[AMD Official Use Only - Internal Distribution Only]<br>
</p>
<br>
<div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
No objections from me.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Thanks!</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Alex</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Christian König <ckoenig.leichtzumerken@gmail.com><br>
<b>Sent:</b> Monday, April 26, 2021 2:49 AM<br>
<b>To:</b> Deucher, Alexander <Alexander.Deucher@amd.com><br>
<b>Cc:</b> Nieto, David M <David.Nieto@amd.com>; Sun, Roy <Roy.Sun@amd.com>; amd-gfx list <amd-gfx@lists.freedesktop.org><br>
<b>Subject:</b> Re: [PATCH 1/2] drm/scheduler: Change scheduled fence track</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">Hey Alex,<br>
<br>
any objections that we merge those two patches through drm-misc-next?<br>
<br>
Thanks,<br>
Christian.<br>
<br>
Am 26.04.21 um 08:27 schrieb Roy Sun:<br>
> Update the timestamp of scheduled fence on HW<br>
> completion of the previous fences<br>
><br>
> This allow more accurate tracking of the fence<br>
> execution in HW<br>
><br>
> Signed-off-by: David M Nieto <david.nieto@amd.com><br>
> Signed-off-by: Roy Sun <Roy.Sun@amd.com><br>
> ---<br>
>   drivers/gpu/drm/scheduler/sched_main.c | 12 ++++++++++--<br>
>   1 file changed, 10 insertions(+), 2 deletions(-)<br>
><br>
> diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c<br>
> index 92d8de24d0a1..f8e39ab0c41b 100644<br>
> --- a/drivers/gpu/drm/scheduler/sched_main.c<br>
> +++ b/drivers/gpu/drm/scheduler/sched_main.c<br>
> @@ -515,7 +515,7 @@ void drm_sched_resubmit_jobs(struct drm_gpu_scheduler *sched)<br>
>   EXPORT_SYMBOL(drm_sched_resubmit_jobs);<br>
>   <br>
>   /**<br>
> - * drm_sched_resubmit_jobs_ext - helper to relunch certain number of jobs from mirror ring list<br>
> + * drm_sched_resubmit_jobs_ext - helper to relaunch certain number of jobs from pending list<br>
>    *<br>
>    * @sched: scheduler instance<br>
>    * @max: job numbers to relaunch<br>
> @@ -671,7 +671,7 @@ drm_sched_select_entity(struct drm_gpu_scheduler *sched)<br>
>   static struct drm_sched_job *<br>
>   drm_sched_get_cleanup_job(struct drm_gpu_scheduler *sched)<br>
>   {<br>
> -     struct drm_sched_job *job;<br>
> +     struct drm_sched_job *job, *next;<br>
>   <br>
>        /*<br>
>         * Don't destroy jobs while the timeout worker is running  OR thread<br>
> @@ -690,6 +690,14 @@ drm_sched_get_cleanup_job(struct drm_gpu_scheduler *sched)<br>
>        if (job && dma_fence_is_signaled(&job->s_fence->finished)) {<br>
>                /* remove job from pending_list */<br>
>                list_del_init(&job->list);<br>
> We just need to record the scheduled time of the next job. So we<br>
> need not to check the rest job.<br>
> +             /* account for the next fence in the queue */<br>
> +             next = list_first_entry_or_null(&sched->pending_list,<br>
> +                             struct drm_sched_job, list);<br>
> +             if (next && test_bit(DMA_FENCE_FLAG_TIMESTAMP_BIT,<br>
> +                     &job->s_fence->finished.flags)) {<br>
> +                     next->s_fence->scheduled.timestamp =<br>
> +                             job->s_fence->finished.timestamp;<br>
> +             }<br>
>        } else {<br>
>                job = NULL;<br>
>                /* queue timeout for next job */<br>
<br>
</div>
</span></font></div>
</div>
</body>
</html>