regression with d6c650c0a8f6f671e49553725e1db541376d95f2

Liu, Monk Monk.Liu at amd.com
Fri Oct 13 07:24:35 UTC 2017


commit d6c650c0a8f6f671e49553725e1db541376d95f2
Author: Nicolai Hähnle <nicolai.haehnle at amd.com>
@@ -611,6 +611,10 @@ static int amd_sched_main(void *param)

                fence = sched->ops->run_job(sched_job);
                amd_sched_fence_scheduled(s_fence);
+
+               /* amd_sched_process_job drops the job's reference of the fence. */
+               sched_job->s_fence = NULL;
+
                if (fence) {
                        s_fence->parent = dma_fence_get(fence);
                        r = dma_fence_add_callback(fence, &s_fence->cb,


Hi Nicolai


with this patch, you will break "amdgpu_sched_hw_job_reset()"routine:

void amd_sched_hw_job_reset(struct amd_gpu_scheduler *sched)
{
    struct amd_sched_job *s_job;

    spin_lock(&sched->job_list_lock);
    list_for_each_entry_reverse(s_job, &sched->ring_mirror_list, node) {
        if (s_job->s_fence->parent &&
         fence_remove_callback(s_job->s_fence->parent,
                     &s_job->s_fence->cb)) {
            fence_put(s_job->s_fence->parent);
            s_job->s_fence->parent = NULL;
            atomic_dec(&sched->hw_rq_count);
        }
    }
    spin_unlock(&sched->job_list_lock);
}


see that without sched_job->s_fence, you cannot remove the callback from its hw fence,


any idea??


BR Monk


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20171013/e0a2efa6/attachment.html>


More information about the amd-gfx mailing list