diff options
author | Andrey Grodzovsky <andrey.grodzovsky@amd.com> | 2017-10-24 13:30:16 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-12-04 16:33:11 -0500 |
commit | a4176cb484ac457a08b44c93da06fce09c6e281c (patch) | |
tree | 65a7ee568e4c895812bdee38d1675280c838d7f2 /drivers/gpu/drm/amd/amdgpu | |
parent | 83f4b1180155f2d65472ce943a1f051215030560 (diff) |
drm/amdgpu: Remove job->s_entity to avoid keeping reference to stale pointer.
Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | 7 |
2 files changed, 5 insertions, 4 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c index 16947bad5b49..bf1aad00bb8d 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | |||
@@ -1203,7 +1203,7 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p, | |||
1203 | amdgpu_ring_priority_get(job->ring, job->base.s_priority); | 1203 | amdgpu_ring_priority_get(job->ring, job->base.s_priority); |
1204 | 1204 | ||
1205 | trace_amdgpu_cs_ioctl(job); | 1205 | trace_amdgpu_cs_ioctl(job); |
1206 | amd_sched_entity_push_job(&job->base); | 1206 | amd_sched_entity_push_job(&job->base, entity); |
1207 | 1207 | ||
1208 | ttm_eu_fence_buffer_objects(&p->ticket, &p->validated, p->fence); | 1208 | ttm_eu_fence_buffer_objects(&p->ticket, &p->validated, p->fence); |
1209 | amdgpu_mn_unlock(p->mn); | 1209 | amdgpu_mn_unlock(p->mn); |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c index a58e3c5dd84b..f60662e03761 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | |||
@@ -142,12 +142,13 @@ int amdgpu_job_submit(struct amdgpu_job *job, struct amdgpu_ring *ring, | |||
142 | *f = dma_fence_get(&job->base.s_fence->finished); | 142 | *f = dma_fence_get(&job->base.s_fence->finished); |
143 | amdgpu_job_free_resources(job); | 143 | amdgpu_job_free_resources(job); |
144 | amdgpu_ring_priority_get(job->ring, job->base.s_priority); | 144 | amdgpu_ring_priority_get(job->ring, job->base.s_priority); |
145 | amd_sched_entity_push_job(&job->base); | 145 | amd_sched_entity_push_job(&job->base, entity); |
146 | 146 | ||
147 | return 0; | 147 | return 0; |
148 | } | 148 | } |
149 | 149 | ||
150 | static struct dma_fence *amdgpu_job_dependency(struct amd_sched_job *sched_job) | 150 | static struct dma_fence *amdgpu_job_dependency(struct amd_sched_job *sched_job, |
151 | struct amd_sched_entity *s_entity) | ||
151 | { | 152 | { |
152 | struct amdgpu_job *job = to_amdgpu_job(sched_job); | 153 | struct amdgpu_job *job = to_amdgpu_job(sched_job); |
153 | struct amdgpu_vm *vm = job->vm; | 154 | struct amdgpu_vm *vm = job->vm; |
@@ -155,7 +156,7 @@ static struct dma_fence *amdgpu_job_dependency(struct amd_sched_job *sched_job) | |||
155 | struct dma_fence *fence = amdgpu_sync_get_fence(&job->dep_sync); | 156 | struct dma_fence *fence = amdgpu_sync_get_fence(&job->dep_sync); |
156 | int r; | 157 | int r; |
157 | 158 | ||
158 | if (amd_sched_dependency_optimized(fence, sched_job->s_entity)) { | 159 | if (amd_sched_dependency_optimized(fence, s_entity)) { |
159 | r = amdgpu_sync_fence(job->adev, &job->sched_sync, fence); | 160 | r = amdgpu_sync_fence(job->adev, &job->sched_sync, fence); |
160 | if (r) | 161 | if (r) |
161 | DRM_ERROR("Error adding fence to sync (%d)\n", r); | 162 | DRM_ERROR("Error adding fence to sync (%d)\n", r); |