diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c | 34 |
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 | ||
30 | static int amdgpu_sched_prepare_job(struct amd_gpu_scheduler *sched, | 30 | static 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 | ||
86 | static void amdgpu_sched_process_job(struct amd_gpu_scheduler *sched, void *job) | 92 | static 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 | ||