drm/amdgpu: use sched fence if possible
authorMonk Liu <Monk.Liu@amd.com>
Thu, 17 Mar 2016 05:57:09 +0000 (13:57 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 17 Mar 2016 15:54:53 +0000 (11:54 -0400)
when preemption feature lands, the SA bo should rely on sched
fence, because hw fence will be invalid after its job preempted
or skipped.

Signed-off-by: Monk Liu <Monk.Liu@amd.com>
Reviewed-by: Chunming Zhou <david1.zhou@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c

index 063064c9351f4240082827d82e4de6d77eccfb5b..9c9b19e2f353b4f1d52a405164038078262c74f7 100644 (file)
@@ -70,9 +70,12 @@ int amdgpu_job_alloc_with_ib(struct amdgpu_device *adev, unsigned size,
 void amdgpu_job_free(struct amdgpu_job *job)
 {
        unsigned i;
+       struct fence *f;
+       /* use sched fence if available */
+       f = (job->base.s_fence)? &job->base.s_fence->base : job->fence;
 
        for (i = 0; i < job->num_ibs; ++i)
-               amdgpu_sa_bo_free(job->adev, &job->ibs[i].sa_bo, job->fence);
+               amdgpu_sa_bo_free(job->adev, &job->ibs[i].sa_bo, f);
        fence_put(job->fence);
 
        amdgpu_bo_unref(&job->uf.bo);