aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunwei Zhang <Jerry.Zhang@amd.com>2015-09-08 21:05:55 -0400
committerAlex Deucher <alexander.deucher@amd.com>2015-09-23 17:23:36 -0400
commit4c7eb91cae88fd2aa101750d6825b4176f85ffb2 (patch)
tree852e67d3ae0e4bad92b8405ea9bf46fae1ac0d47
parentbf60efd353f68e5dec1a177b5cbe4da07c819569 (diff)
drm/amdgpu: refine the job naming for amdgpu_job and amdgpu_sched_job
Use consistent naming across functions. Reviewed-by: Christian König <christian.koenig@amd.com> Reviewed-by: David Zhou <david1.zhou@amd.com> Signed-off-by: Junwei Zhang <Jerry.Zhang@amd.com>
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu.h2
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c14
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c36
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c6
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c6
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c8
-rw-r--r--drivers/gpu/drm/amd/scheduler/gpu_scheduler.c64
-rw-r--r--drivers/gpu/drm/amd/scheduler/gpu_scheduler.h4
8 files changed, 71 insertions, 69 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index e587e20074d3..58fe9fab8192 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -1275,7 +1275,7 @@ struct amdgpu_job {
1275 uint32_t num_ibs; 1275 uint32_t num_ibs;
1276 struct mutex job_lock; 1276 struct mutex job_lock;
1277 struct amdgpu_user_fence uf; 1277 struct amdgpu_user_fence uf;
1278 int (*free_job)(struct amdgpu_job *sched_job); 1278 int (*free_job)(struct amdgpu_job *job);
1279}; 1279};
1280 1280
1281static inline u32 amdgpu_get_ib_value(struct amdgpu_cs_parser *p, uint32_t ib_idx, int idx) 1281static inline u32 amdgpu_get_ib_value(struct amdgpu_cs_parser *p, uint32_t ib_idx, int idx)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
index 4b92e3836684..4c1698861c42 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
@@ -778,15 +778,15 @@ static int amdgpu_cs_dependencies(struct amdgpu_device *adev,
778 return 0; 778 return 0;
779} 779}
780 780
781static int amdgpu_cs_free_job(struct amdgpu_job *sched_job) 781static int amdgpu_cs_free_job(struct amdgpu_job *job)
782{ 782{
783 int i; 783 int i;
784 if (sched_job->ibs) 784 if (job->ibs)
785 for (i = 0; i < sched_job->num_ibs; i++) 785 for (i = 0; i < job->num_ibs; i++)
786 amdgpu_ib_free(sched_job->adev, &sched_job->ibs[i]); 786 amdgpu_ib_free(job->adev, &job->ibs[i]);
787 kfree(sched_job->ibs); 787 kfree(job->ibs);
788 if (sched_job->uf.bo) 788 if (job->uf.bo)
789 drm_gem_object_unreference_unlocked(&sched_job->uf.bo->gem_base); 789 drm_gem_object_unreference_unlocked(&job->uf.bo->gem_base);
790 return 0; 790 return 0;
791} 791}
792 792
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
index 5724a81fbf5e..af1a3dabd190 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
@@ -27,42 +27,42 @@
27#include <drm/drmP.h> 27#include <drm/drmP.h>
28#include "amdgpu.h" 28#include "amdgpu.h"
29 29
30static struct fence *amdgpu_sched_dependency(struct amd_sched_job *job) 30static struct fence *amdgpu_sched_dependency(struct amd_sched_job *sched_job)
31{ 31{
32 struct amdgpu_job *sched_job = (struct amdgpu_job *)job; 32 struct amdgpu_job *job = (struct amdgpu_job *)sched_job;
33 return amdgpu_sync_get_fence(&sched_job->ibs->sync); 33 return amdgpu_sync_get_fence(&job->ibs->sync);
34} 34}
35 35
36static struct fence *amdgpu_sched_run_job(struct amd_sched_job *job) 36static struct fence *amdgpu_sched_run_job(struct amd_sched_job *sched_job)
37{ 37{
38 struct amdgpu_fence *fence = NULL; 38 struct amdgpu_fence *fence = NULL;
39 struct amdgpu_job *sched_job; 39 struct amdgpu_job *job;
40 int r; 40 int r;
41 41
42 if (!job) { 42 if (!sched_job) {
43 DRM_ERROR("job is null\n"); 43 DRM_ERROR("job is null\n");
44 return NULL; 44 return NULL;
45 } 45 }
46 sched_job = (struct amdgpu_job *)job; 46 job = (struct amdgpu_job *)sched_job;
47 mutex_lock(&sched_job->job_lock); 47 mutex_lock(&job->job_lock);
48 r = amdgpu_ib_schedule(sched_job->adev, 48 r = amdgpu_ib_schedule(job->adev,
49 sched_job->num_ibs, 49 job->num_ibs,
50 sched_job->ibs, 50 job->ibs,
51 sched_job->base.owner); 51 job->base.owner);
52 if (r) { 52 if (r) {
53 DRM_ERROR("Error scheduling IBs (%d)\n", r); 53 DRM_ERROR("Error scheduling IBs (%d)\n", r);
54 goto err; 54 goto err;
55 } 55 }
56 56
57 fence = amdgpu_fence_ref(sched_job->ibs[sched_job->num_ibs - 1].fence); 57 fence = amdgpu_fence_ref(job->ibs[job->num_ibs - 1].fence);
58 58
59err: 59err:
60 if (sched_job->free_job) 60 if (job->free_job)
61 sched_job->free_job(sched_job); 61 job->free_job(job);
62 62
63 mutex_unlock(&sched_job->job_lock); 63 mutex_unlock(&job->job_lock);
64 fence_put(&sched_job->base.s_fence->base); 64 fence_put(&job->base.s_fence->base);
65 kfree(sched_job); 65 kfree(job);
66 return fence ? &fence->base : NULL; 66 return fence ? &fence->base : NULL;
67} 67}
68 68
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
index 3cc86631d5d6..1a8e43b3039e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
@@ -805,10 +805,10 @@ int amdgpu_uvd_ring_parse_cs(struct amdgpu_cs_parser *parser, uint32_t ib_idx)
805} 805}
806 806
807static int amdgpu_uvd_free_job( 807static int amdgpu_uvd_free_job(
808 struct amdgpu_job *sched_job) 808 struct amdgpu_job *job)
809{ 809{
810 amdgpu_ib_free(sched_job->adev, sched_job->ibs); 810 amdgpu_ib_free(job->adev, job->ibs);
811 kfree(sched_job->ibs); 811 kfree(job->ibs);
812 return 0; 812 return 0;
813} 813}
814 814
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
index c90caf810e4a..74f2038ac747 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
@@ -342,10 +342,10 @@ void amdgpu_vce_free_handles(struct amdgpu_device *adev, struct drm_file *filp)
342} 342}
343 343
344static int amdgpu_vce_free_job( 344static int amdgpu_vce_free_job(
345 struct amdgpu_job *sched_job) 345 struct amdgpu_job *job)
346{ 346{
347 amdgpu_ib_free(sched_job->adev, sched_job->ibs); 347 amdgpu_ib_free(job->adev, job->ibs);
348 kfree(sched_job->ibs); 348 kfree(job->ibs);
349 return 0; 349 return 0;
350} 350}
351 351
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index d30fbecac26e..1e14531353e0 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -316,12 +316,12 @@ static void amdgpu_vm_update_pages(struct amdgpu_device *adev,
316 } 316 }
317} 317}
318 318
319int amdgpu_vm_free_job(struct amdgpu_job *sched_job) 319int amdgpu_vm_free_job(struct amdgpu_job *job)
320{ 320{
321 int i; 321 int i;
322 for (i = 0; i < sched_job->num_ibs; i++) 322 for (i = 0; i < job->num_ibs; i++)
323 amdgpu_ib_free(sched_job->adev, &sched_job->ibs[i]); 323 amdgpu_ib_free(job->adev, &job->ibs[i]);
324 kfree(sched_job->ibs); 324 kfree(job->ibs);
325 return 0; 325 return 0;
326} 326}
327 327
diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c
index 191fd513d979..5c8dcf89297a 100644
--- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c
+++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c
@@ -68,29 +68,29 @@ static struct amd_sched_job *
68amd_sched_rq_select_job(struct amd_sched_rq *rq) 68amd_sched_rq_select_job(struct amd_sched_rq *rq)
69{ 69{
70 struct amd_sched_entity *entity; 70 struct amd_sched_entity *entity;
71 struct amd_sched_job *job; 71 struct amd_sched_job *sched_job;
72 72
73 spin_lock(&rq->lock); 73 spin_lock(&rq->lock);
74 74
75 entity = rq->current_entity; 75 entity = rq->current_entity;
76 if (entity) { 76 if (entity) {
77 list_for_each_entry_continue(entity, &rq->entities, list) { 77 list_for_each_entry_continue(entity, &rq->entities, list) {
78 job = amd_sched_entity_pop_job(entity); 78 sched_job = amd_sched_entity_pop_job(entity);
79 if (job) { 79 if (sched_job) {
80 rq->current_entity = entity; 80 rq->current_entity = entity;
81 spin_unlock(&rq->lock); 81 spin_unlock(&rq->lock);
82 return job; 82 return sched_job;
83 } 83 }
84 } 84 }
85 } 85 }
86 86
87 list_for_each_entry(entity, &rq->entities, list) { 87 list_for_each_entry(entity, &rq->entities, list) {
88 88
89 job = amd_sched_entity_pop_job(entity); 89 sched_job = amd_sched_entity_pop_job(entity);
90 if (job) { 90 if (sched_job) {
91 rq->current_entity = entity; 91 rq->current_entity = entity;
92 spin_unlock(&rq->lock); 92 spin_unlock(&rq->lock);
93 return job; 93 return sched_job;
94 } 94 }
95 95
96 if (entity == rq->current_entity) 96 if (entity == rq->current_entity)
@@ -208,15 +208,15 @@ static struct amd_sched_job *
208amd_sched_entity_pop_job(struct amd_sched_entity *entity) 208amd_sched_entity_pop_job(struct amd_sched_entity *entity)
209{ 209{
210 struct amd_gpu_scheduler *sched = entity->scheduler; 210 struct amd_gpu_scheduler *sched = entity->scheduler;
211 struct amd_sched_job *job; 211 struct amd_sched_job *sched_job;
212 212
213 if (ACCESS_ONCE(entity->dependency)) 213 if (ACCESS_ONCE(entity->dependency))
214 return NULL; 214 return NULL;
215 215
216 if (!kfifo_out_peek(&entity->job_queue, &job, sizeof(job))) 216 if (!kfifo_out_peek(&entity->job_queue, &sched_job, sizeof(sched_job)))
217 return NULL; 217 return NULL;
218 218
219 while ((entity->dependency = sched->ops->dependency(job))) { 219 while ((entity->dependency = sched->ops->dependency(sched_job))) {
220 220
221 if (fence_add_callback(entity->dependency, &entity->cb, 221 if (fence_add_callback(entity->dependency, &entity->cb,
222 amd_sched_entity_wakeup)) 222 amd_sched_entity_wakeup))
@@ -225,32 +225,33 @@ amd_sched_entity_pop_job(struct amd_sched_entity *entity)
225 return NULL; 225 return NULL;
226 } 226 }
227 227
228 return job; 228 return sched_job;
229} 229}
230 230
231/** 231/**
232 * Helper to submit a job to the job queue 232 * Helper to submit a job to the job queue
233 * 233 *
234 * @job The pointer to job required to submit 234 * @sched_job The pointer to job required to submit
235 * 235 *
236 * Returns true if we could submit the job. 236 * Returns true if we could submit the job.
237 */ 237 */
238static bool amd_sched_entity_in(struct amd_sched_job *job) 238static bool amd_sched_entity_in(struct amd_sched_job *sched_job)
239{ 239{
240 struct amd_sched_entity *entity = job->s_entity; 240 struct amd_sched_entity *entity = sched_job->s_entity;
241 bool added, first = false; 241 bool added, first = false;
242 242
243 spin_lock(&entity->queue_lock); 243 spin_lock(&entity->queue_lock);
244 added = kfifo_in(&entity->job_queue, &job, sizeof(job)) == sizeof(job); 244 added = kfifo_in(&entity->job_queue, &sched_job,
245 sizeof(sched_job)) == sizeof(sched_job);
245 246
246 if (added && kfifo_len(&entity->job_queue) == sizeof(job)) 247 if (added && kfifo_len(&entity->job_queue) == sizeof(sched_job))
247 first = true; 248 first = true;
248 249
249 spin_unlock(&entity->queue_lock); 250 spin_unlock(&entity->queue_lock);
250 251
251 /* first job wakes up scheduler */ 252 /* first job wakes up scheduler */
252 if (first) 253 if (first)
253 amd_sched_wakeup(job->sched); 254 amd_sched_wakeup(sched_job->sched);
254 255
255 return added; 256 return added;
256} 257}
@@ -258,7 +259,7 @@ static bool amd_sched_entity_in(struct amd_sched_job *job)
258/** 259/**
259 * Submit a job to the job queue 260 * Submit a job to the job queue
260 * 261 *
261 * @job The pointer to job required to submit 262 * @sched_job The pointer to job required to submit
262 * 263 *
263 * Returns 0 for success, negative error code otherwise. 264 * Returns 0 for success, negative error code otherwise.
264 */ 265 */
@@ -304,17 +305,17 @@ static void amd_sched_wakeup(struct amd_gpu_scheduler *sched)
304static struct amd_sched_job * 305static struct amd_sched_job *
305amd_sched_select_job(struct amd_gpu_scheduler *sched) 306amd_sched_select_job(struct amd_gpu_scheduler *sched)
306{ 307{
307 struct amd_sched_job *job; 308 struct amd_sched_job *sched_job;
308 309
309 if (!amd_sched_ready(sched)) 310 if (!amd_sched_ready(sched))
310 return NULL; 311 return NULL;
311 312
312 /* Kernel run queue has higher priority than normal run queue*/ 313 /* Kernel run queue has higher priority than normal run queue*/
313 job = amd_sched_rq_select_job(&sched->kernel_rq); 314 sched_job = amd_sched_rq_select_job(&sched->kernel_rq);
314 if (job == NULL) 315 if (sched_job == NULL)
315 job = amd_sched_rq_select_job(&sched->sched_rq); 316 sched_job = amd_sched_rq_select_job(&sched->sched_rq);
316 317
317 return job; 318 return sched_job;
318} 319}
319 320
320static void amd_sched_process_job(struct fence *f, struct fence_cb *cb) 321static void amd_sched_process_job(struct fence *f, struct fence_cb *cb)
@@ -340,20 +341,20 @@ static int amd_sched_main(void *param)
340 while (!kthread_should_stop()) { 341 while (!kthread_should_stop()) {
341 struct amd_sched_entity *entity; 342 struct amd_sched_entity *entity;
342 struct amd_sched_fence *s_fence; 343 struct amd_sched_fence *s_fence;
343 struct amd_sched_job *job; 344 struct amd_sched_job *sched_job;
344 struct fence *fence; 345 struct fence *fence;
345 346
346 wait_event_interruptible(sched->wake_up_worker, 347 wait_event_interruptible(sched->wake_up_worker,
347 kthread_should_stop() || 348 kthread_should_stop() ||
348 (job = amd_sched_select_job(sched))); 349 (sched_job = amd_sched_select_job(sched)));
349 350
350 if (!job) 351 if (!sched_job)
351 continue; 352 continue;
352 353
353 entity = job->s_entity; 354 entity = sched_job->s_entity;
354 s_fence = job->s_fence; 355 s_fence = sched_job->s_fence;
355 atomic_inc(&sched->hw_rq_count); 356 atomic_inc(&sched->hw_rq_count);
356 fence = sched->ops->run_job(job); 357 fence = sched->ops->run_job(sched_job);
357 if (fence) { 358 if (fence) {
358 r = fence_add_callback(fence, &s_fence->cb, 359 r = fence_add_callback(fence, &s_fence->cb,
359 amd_sched_process_job); 360 amd_sched_process_job);
@@ -367,8 +368,9 @@ static int amd_sched_main(void *param)
367 amd_sched_process_job(NULL, &s_fence->cb); 368 amd_sched_process_job(NULL, &s_fence->cb);
368 } 369 }
369 370
370 count = kfifo_out(&entity->job_queue, &job, sizeof(job)); 371 count = kfifo_out(&entity->job_queue, &sched_job,
371 WARN_ON(count != sizeof(job)); 372 sizeof(sched_job));
373 WARN_ON(count != sizeof(sched_job));
372 wake_up(&sched->job_scheduled); 374 wake_up(&sched->job_scheduled);
373 } 375 }
374 return 0; 376 return 0;
diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h
index ac56d9211f7c..f33df6c70ca0 100644
--- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h
+++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h
@@ -91,8 +91,8 @@ static inline struct amd_sched_fence *to_amd_sched_fence(struct fence *f)
91 * these functions should be implemented in driver side 91 * these functions should be implemented in driver side
92*/ 92*/
93struct amd_sched_backend_ops { 93struct amd_sched_backend_ops {
94 struct fence *(*dependency)(struct amd_sched_job *job); 94 struct fence *(*dependency)(struct amd_sched_job *sched_job);
95 struct fence *(*run_job)(struct amd_sched_job *job); 95 struct fence *(*run_job)(struct amd_sched_job *sched_job);
96}; 96};
97 97
98/** 98/**