aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2016-02-01 05:56:35 -0500
committerAlex Deucher <alexander.deucher@amd.com>2016-02-10 14:17:21 -0500
commitec72b8006c1e69f633e3def3e3b3c7c6318d271c (patch)
tree2be40bec1e855f1486bdec058c8099510e7ba9d0 /drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
parentb07c60c0652c497af0c42c1278941f7c5a187fe9 (diff)
drm/amdgpu: directly return fence from ib_schedule
Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
index 84453c1c4b07..cabb0fc28610 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
@@ -88,7 +88,7 @@ static struct fence *amdgpu_sched_dependency(struct amd_sched_job *sched_job)
88 88
89static struct fence *amdgpu_sched_run_job(struct amd_sched_job *sched_job) 89static struct fence *amdgpu_sched_run_job(struct amd_sched_job *sched_job)
90{ 90{
91 struct amdgpu_fence *fence = NULL; 91 struct fence *fence = NULL;
92 struct amdgpu_job *job; 92 struct amdgpu_job *job;
93 int r; 93 int r;
94 94
@@ -98,21 +98,19 @@ static struct fence *amdgpu_sched_run_job(struct amd_sched_job *sched_job)
98 } 98 }
99 job = to_amdgpu_job(sched_job); 99 job = to_amdgpu_job(sched_job);
100 trace_amdgpu_sched_run_job(job); 100 trace_amdgpu_sched_run_job(job);
101 r = amdgpu_ib_schedule(job->ring, job->num_ibs, job->ibs, job->owner); 101 r = amdgpu_ib_schedule(job->ring, job->num_ibs, job->ibs,
102 job->owner, &fence);
102 if (r) { 103 if (r) {
103 DRM_ERROR("Error scheduling IBs (%d)\n", r); 104 DRM_ERROR("Error scheduling IBs (%d)\n", r);
104 goto err; 105 goto err;
105 } 106 }
106 107
107 fence = job->ibs[job->num_ibs - 1].fence;
108 fence_get(&fence->base);
109
110err: 108err:
111 if (job->free_job) 109 if (job->free_job)
112 job->free_job(job); 110 job->free_job(job);
113 111
114 kfree(job); 112 kfree(job);
115 return fence ? &fence->base : NULL; 113 return fence;
116} 114}
117 115
118struct amd_sched_backend_ops amdgpu_sched_ops = { 116struct amd_sched_backend_ops amdgpu_sched_ops = {