diff options
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | 13 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/scheduler/gpu_scheduler.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/scheduler/gpu_scheduler.h | 1 |
3 files changed, 8 insertions, 7 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c index f0fa48511f41..be4698b0b33b 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | |||
@@ -86,7 +86,7 @@ int amdgpu_job_alloc_with_ib(struct amdgpu_device *adev, unsigned size, | |||
86 | return r; | 86 | return r; |
87 | } | 87 | } |
88 | 88 | ||
89 | void amdgpu_job_free(struct amdgpu_job *job) | 89 | static void amdgpu_job_free_resources(struct amdgpu_job *job) |
90 | { | 90 | { |
91 | struct fence *f; | 91 | struct fence *f; |
92 | unsigned i; | 92 | unsigned i; |
@@ -100,9 +100,6 @@ void amdgpu_job_free(struct amdgpu_job *job) | |||
100 | 100 | ||
101 | amdgpu_bo_unref(&job->uf_bo); | 101 | amdgpu_bo_unref(&job->uf_bo); |
102 | amdgpu_sync_free(&job->sync); | 102 | amdgpu_sync_free(&job->sync); |
103 | |||
104 | if (!job->base.use_sched) | ||
105 | kfree(job); | ||
106 | } | 103 | } |
107 | 104 | ||
108 | void amdgpu_job_free_func(struct kref *refcount) | 105 | void amdgpu_job_free_func(struct kref *refcount) |
@@ -111,6 +108,12 @@ void amdgpu_job_free_func(struct kref *refcount) | |||
111 | kfree(job); | 108 | kfree(job); |
112 | } | 109 | } |
113 | 110 | ||
111 | void amdgpu_job_free(struct amdgpu_job *job) | ||
112 | { | ||
113 | amdgpu_job_free_resources(job); | ||
114 | kfree(job); | ||
115 | } | ||
116 | |||
114 | int amdgpu_job_submit(struct amdgpu_job *job, struct amdgpu_ring *ring, | 117 | int amdgpu_job_submit(struct amdgpu_job *job, struct amdgpu_ring *ring, |
115 | struct amd_sched_entity *entity, void *owner, | 118 | struct amd_sched_entity *entity, void *owner, |
116 | struct fence **f) | 119 | struct fence **f) |
@@ -187,7 +190,7 @@ static struct fence *amdgpu_job_run(struct amd_sched_job *sched_job) | |||
187 | 190 | ||
188 | err: | 191 | err: |
189 | job->fence = fence; | 192 | job->fence = fence; |
190 | amdgpu_job_free(job); | 193 | amdgpu_job_free_resources(job); |
191 | return fence; | 194 | return fence; |
192 | } | 195 | } |
193 | 196 | ||
diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c index f3fd80b93a20..e8ee90fa6899 100644 --- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c +++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c | |||
@@ -373,7 +373,6 @@ void amd_sched_entity_push_job(struct amd_sched_job *sched_job) | |||
373 | { | 373 | { |
374 | struct amd_sched_entity *entity = sched_job->s_entity; | 374 | struct amd_sched_entity *entity = sched_job->s_entity; |
375 | 375 | ||
376 | sched_job->use_sched = 1; | ||
377 | fence_add_callback(&sched_job->s_fence->base, | 376 | fence_add_callback(&sched_job->s_fence->base, |
378 | &sched_job->cb_free_job, amd_sched_free_job); | 377 | &sched_job->cb_free_job, amd_sched_free_job); |
379 | trace_amd_sched_job(sched_job); | 378 | trace_amd_sched_job(sched_job); |
diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h index ec55b9f073d1..7e333fa08539 100644 --- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h +++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h | |||
@@ -82,7 +82,6 @@ struct amd_sched_job { | |||
82 | struct amd_gpu_scheduler *sched; | 82 | struct amd_gpu_scheduler *sched; |
83 | struct amd_sched_entity *s_entity; | 83 | struct amd_sched_entity *s_entity; |
84 | struct amd_sched_fence *s_fence; | 84 | struct amd_sched_fence *s_fence; |
85 | bool use_sched; /* true if the job goes to scheduler */ | ||
86 | struct fence_cb cb_free_job; | 85 | struct fence_cb cb_free_job; |
87 | struct work_struct work_free_job; | 86 | struct work_struct work_free_job; |
88 | struct list_head node; | 87 | struct list_head node; |