aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c34
1 files changed, 17 insertions, 17 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
index 039bd1f748f0..d13d01511694 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
@@ -29,10 +29,16 @@
29 29
30static int amdgpu_sched_prepare_job(struct amd_gpu_scheduler *sched, 30static int amdgpu_sched_prepare_job(struct amd_gpu_scheduler *sched,
31 struct amd_sched_entity *entity, 31 struct amd_sched_entity *entity,
32 void *job) 32 struct amd_sched_job *job)
33{ 33{
34 int r = 0; 34 int r = 0;
35 struct amdgpu_cs_parser *sched_job = (struct amdgpu_cs_parser *)job; 35 struct amdgpu_cs_parser *sched_job;
36 if (!job || !job->data) {
37 DRM_ERROR("job is null\n");
38 return -EINVAL;
39 }
40
41 sched_job = (struct amdgpu_cs_parser *)job->data;
36 if (sched_job->prepare_job) { 42 if (sched_job->prepare_job) {
37 r = sched_job->prepare_job(sched_job); 43 r = sched_job->prepare_job(sched_job);
38 if (r) { 44 if (r) {
@@ -51,11 +57,11 @@ static struct fence *amdgpu_sched_run_job(struct amd_gpu_scheduler *sched,
51 struct amdgpu_cs_parser *sched_job; 57 struct amdgpu_cs_parser *sched_job;
52 struct amdgpu_fence *fence; 58 struct amdgpu_fence *fence;
53 59
54 if (!job || !job->job) { 60 if (!job || !job->data) {
55 DRM_ERROR("job is null\n"); 61 DRM_ERROR("job is null\n");
56 return NULL; 62 return NULL;
57 } 63 }
58 sched_job = (struct amdgpu_cs_parser *)job->job; 64 sched_job = (struct amdgpu_cs_parser *)job->data;
59 mutex_lock(&sched_job->job_lock); 65 mutex_lock(&sched_job->job_lock);
60 r = amdgpu_ib_schedule(sched_job->adev, 66 r = amdgpu_ib_schedule(sched_job->adev,
61 sched_job->num_ibs, 67 sched_job->num_ibs,
@@ -83,22 +89,16 @@ err:
83 return NULL; 89 return NULL;
84} 90}
85 91
86static void amdgpu_sched_process_job(struct amd_gpu_scheduler *sched, void *job) 92static void amdgpu_sched_process_job(struct amd_gpu_scheduler *sched,
93 struct amd_sched_job *job)
87{ 94{
88 struct amdgpu_cs_parser *sched_job = NULL; 95 struct amdgpu_cs_parser *sched_job;
89 struct amdgpu_fence *fence = NULL;
90 struct amdgpu_ring *ring = NULL;
91 struct amdgpu_device *adev = NULL;
92 96
93 if (!job) 97 if (!job || !job->data) {
94 return; 98 DRM_ERROR("job is null\n");
95 sched_job = (struct amdgpu_cs_parser *)job;
96 fence = sched_job->ibs[sched_job->num_ibs - 1].fence;
97 if (!fence)
98 return; 99 return;
99 ring = fence->ring; 100 }
100 adev = ring->adev; 101 sched_job = (struct amdgpu_cs_parser *)job->data;
101
102 schedule_work(&sched_job->job_work); 102 schedule_work(&sched_job->job_work);
103} 103}
104 104