diff options
Diffstat (limited to 'drivers/gpu/drm/amd')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/scheduler/gpu_scheduler.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/scheduler/gpu_scheduler.h | 3 |
10 files changed, 13 insertions, 11 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c index c184468e2b2b..bb5a46a000ee 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c | |||
@@ -90,7 +90,7 @@ static int amdgpu_ctx_init(struct amdgpu_device *adev, | |||
90 | continue; | 90 | continue; |
91 | 91 | ||
92 | r = amd_sched_entity_init(&ring->sched, &ctx->rings[i].entity, | 92 | r = amd_sched_entity_init(&ring->sched, &ctx->rings[i].entity, |
93 | rq, amdgpu_sched_jobs); | 93 | rq, amdgpu_sched_jobs, NULL); |
94 | if (r) | 94 | if (r) |
95 | goto failed; | 95 | goto failed; |
96 | } | 96 | } |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c index ad5bf86ee8a3..bdefc7b9fcff 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | |||
@@ -110,7 +110,7 @@ static int amdgpu_ttm_global_init(struct amdgpu_device *adev) | |||
110 | ring = adev->mman.buffer_funcs_ring; | 110 | ring = adev->mman.buffer_funcs_ring; |
111 | rq = &ring->sched.sched_rq[AMD_SCHED_PRIORITY_KERNEL]; | 111 | rq = &ring->sched.sched_rq[AMD_SCHED_PRIORITY_KERNEL]; |
112 | r = amd_sched_entity_init(&ring->sched, &adev->mman.entity, | 112 | r = amd_sched_entity_init(&ring->sched, &adev->mman.entity, |
113 | rq, amdgpu_sched_jobs); | 113 | rq, amdgpu_sched_jobs, NULL); |
114 | if (r) { | 114 | if (r) { |
115 | DRM_ERROR("Failed setting up TTM BO move run queue.\n"); | 115 | DRM_ERROR("Failed setting up TTM BO move run queue.\n"); |
116 | goto error_entity; | 116 | goto error_entity; |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c index e8bd50cf9785..6604771356cd 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c | |||
@@ -232,7 +232,7 @@ int amdgpu_uvd_sw_init(struct amdgpu_device *adev) | |||
232 | ring = &adev->uvd.ring; | 232 | ring = &adev->uvd.ring; |
233 | rq = &ring->sched.sched_rq[AMD_SCHED_PRIORITY_NORMAL]; | 233 | rq = &ring->sched.sched_rq[AMD_SCHED_PRIORITY_NORMAL]; |
234 | r = amd_sched_entity_init(&ring->sched, &adev->uvd.entity, | 234 | r = amd_sched_entity_init(&ring->sched, &adev->uvd.entity, |
235 | rq, amdgpu_sched_jobs); | 235 | rq, amdgpu_sched_jobs, NULL); |
236 | if (r != 0) { | 236 | if (r != 0) { |
237 | DRM_ERROR("Failed setting up UVD run queue.\n"); | 237 | DRM_ERROR("Failed setting up UVD run queue.\n"); |
238 | return r; | 238 | return r; |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c index 2918de2f39ec..873c99518954 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | |||
@@ -176,7 +176,7 @@ int amdgpu_vce_sw_init(struct amdgpu_device *adev, unsigned long size) | |||
176 | ring = &adev->vce.ring[0]; | 176 | ring = &adev->vce.ring[0]; |
177 | rq = &ring->sched.sched_rq[AMD_SCHED_PRIORITY_NORMAL]; | 177 | rq = &ring->sched.sched_rq[AMD_SCHED_PRIORITY_NORMAL]; |
178 | r = amd_sched_entity_init(&ring->sched, &adev->vce.entity, | 178 | r = amd_sched_entity_init(&ring->sched, &adev->vce.entity, |
179 | rq, amdgpu_sched_jobs); | 179 | rq, amdgpu_sched_jobs, NULL); |
180 | if (r != 0) { | 180 | if (r != 0) { |
181 | DRM_ERROR("Failed setting up VCE run queue.\n"); | 181 | DRM_ERROR("Failed setting up VCE run queue.\n"); |
182 | return r; | 182 | return r; |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c index 041e0121590c..96df21cca85d 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | |||
@@ -106,7 +106,7 @@ int amdgpu_vcn_sw_init(struct amdgpu_device *adev) | |||
106 | ring = &adev->vcn.ring_dec; | 106 | ring = &adev->vcn.ring_dec; |
107 | rq = &ring->sched.sched_rq[AMD_SCHED_PRIORITY_NORMAL]; | 107 | rq = &ring->sched.sched_rq[AMD_SCHED_PRIORITY_NORMAL]; |
108 | r = amd_sched_entity_init(&ring->sched, &adev->vcn.entity_dec, | 108 | r = amd_sched_entity_init(&ring->sched, &adev->vcn.entity_dec, |
109 | rq, amdgpu_sched_jobs); | 109 | rq, amdgpu_sched_jobs, NULL); |
110 | if (r != 0) { | 110 | if (r != 0) { |
111 | DRM_ERROR("Failed setting up VCN dec run queue.\n"); | 111 | DRM_ERROR("Failed setting up VCN dec run queue.\n"); |
112 | return r; | 112 | return r; |
@@ -115,7 +115,7 @@ int amdgpu_vcn_sw_init(struct amdgpu_device *adev) | |||
115 | ring = &adev->vcn.ring_enc[0]; | 115 | ring = &adev->vcn.ring_enc[0]; |
116 | rq = &ring->sched.sched_rq[AMD_SCHED_PRIORITY_NORMAL]; | 116 | rq = &ring->sched.sched_rq[AMD_SCHED_PRIORITY_NORMAL]; |
117 | r = amd_sched_entity_init(&ring->sched, &adev->vcn.entity_enc, | 117 | r = amd_sched_entity_init(&ring->sched, &adev->vcn.entity_enc, |
118 | rq, amdgpu_sched_jobs); | 118 | rq, amdgpu_sched_jobs, NULL); |
119 | if (r != 0) { | 119 | if (r != 0) { |
120 | DRM_ERROR("Failed setting up VCN enc run queue.\n"); | 120 | DRM_ERROR("Failed setting up VCN enc run queue.\n"); |
121 | return r; | 121 | return r; |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index c8c26f21993c..1e727da2bb64 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | |||
@@ -2637,7 +2637,7 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm, | |||
2637 | ring = adev->vm_manager.vm_pte_rings[ring_instance]; | 2637 | ring = adev->vm_manager.vm_pte_rings[ring_instance]; |
2638 | rq = &ring->sched.sched_rq[AMD_SCHED_PRIORITY_KERNEL]; | 2638 | rq = &ring->sched.sched_rq[AMD_SCHED_PRIORITY_KERNEL]; |
2639 | r = amd_sched_entity_init(&ring->sched, &vm->entity, | 2639 | r = amd_sched_entity_init(&ring->sched, &vm->entity, |
2640 | rq, amdgpu_sched_jobs); | 2640 | rq, amdgpu_sched_jobs, NULL); |
2641 | if (r) | 2641 | if (r) |
2642 | return r; | 2642 | return r; |
2643 | 2643 | ||
diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c b/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c index 920910ac8663..246dfd74f5c9 100644 --- a/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c +++ b/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c | |||
@@ -416,7 +416,7 @@ static int uvd_v6_0_sw_init(void *handle) | |||
416 | ring = &adev->uvd.ring_enc[0]; | 416 | ring = &adev->uvd.ring_enc[0]; |
417 | rq = &ring->sched.sched_rq[AMD_SCHED_PRIORITY_NORMAL]; | 417 | rq = &ring->sched.sched_rq[AMD_SCHED_PRIORITY_NORMAL]; |
418 | r = amd_sched_entity_init(&ring->sched, &adev->uvd.entity_enc, | 418 | r = amd_sched_entity_init(&ring->sched, &adev->uvd.entity_enc, |
419 | rq, amdgpu_sched_jobs); | 419 | rq, amdgpu_sched_jobs, NULL); |
420 | if (r) { | 420 | if (r) { |
421 | DRM_ERROR("Failed setting up UVD ENC run queue.\n"); | 421 | DRM_ERROR("Failed setting up UVD ENC run queue.\n"); |
422 | return r; | 422 | return r; |
diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c b/drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c index 6634545060fd..762ff3901a7a 100644 --- a/drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c +++ b/drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c | |||
@@ -418,7 +418,7 @@ static int uvd_v7_0_sw_init(void *handle) | |||
418 | ring = &adev->uvd.ring_enc[0]; | 418 | ring = &adev->uvd.ring_enc[0]; |
419 | rq = &ring->sched.sched_rq[AMD_SCHED_PRIORITY_NORMAL]; | 419 | rq = &ring->sched.sched_rq[AMD_SCHED_PRIORITY_NORMAL]; |
420 | r = amd_sched_entity_init(&ring->sched, &adev->uvd.entity_enc, | 420 | r = amd_sched_entity_init(&ring->sched, &adev->uvd.entity_enc, |
421 | rq, amdgpu_sched_jobs); | 421 | rq, amdgpu_sched_jobs, NULL); |
422 | if (r) { | 422 | if (r) { |
423 | DRM_ERROR("Failed setting up UVD ENC run queue.\n"); | 423 | DRM_ERROR("Failed setting up UVD ENC run queue.\n"); |
424 | return r; | 424 | return r; |
diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c index 5a1ece2774b5..764606ce3541 100644 --- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c +++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c | |||
@@ -121,7 +121,7 @@ amd_sched_rq_select_entity(struct amd_sched_rq *rq) | |||
121 | int amd_sched_entity_init(struct amd_gpu_scheduler *sched, | 121 | int amd_sched_entity_init(struct amd_gpu_scheduler *sched, |
122 | struct amd_sched_entity *entity, | 122 | struct amd_sched_entity *entity, |
123 | struct amd_sched_rq *rq, | 123 | struct amd_sched_rq *rq, |
124 | uint32_t jobs) | 124 | uint32_t jobs, atomic_t *guilty) |
125 | { | 125 | { |
126 | int r; | 126 | int r; |
127 | 127 | ||
@@ -132,6 +132,7 @@ int amd_sched_entity_init(struct amd_gpu_scheduler *sched, | |||
132 | INIT_LIST_HEAD(&entity->list); | 132 | INIT_LIST_HEAD(&entity->list); |
133 | entity->rq = rq; | 133 | entity->rq = rq; |
134 | entity->sched = sched; | 134 | entity->sched = sched; |
135 | entity->guilty = guilty; | ||
135 | 136 | ||
136 | spin_lock_init(&entity->rq_lock); | 137 | spin_lock_init(&entity->rq_lock); |
137 | spin_lock_init(&entity->queue_lock); | 138 | spin_lock_init(&entity->queue_lock); |
diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h index 3ea75a2f35d4..a05994c60b34 100644 --- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h +++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.h | |||
@@ -63,6 +63,7 @@ struct amd_sched_entity { | |||
63 | 63 | ||
64 | struct dma_fence *dependency; | 64 | struct dma_fence *dependency; |
65 | struct dma_fence_cb cb; | 65 | struct dma_fence_cb cb; |
66 | atomic_t *guilty; /* points to ctx's guilty */ | ||
66 | }; | 67 | }; |
67 | 68 | ||
68 | /** | 69 | /** |
@@ -155,7 +156,7 @@ void amd_sched_fini(struct amd_gpu_scheduler *sched); | |||
155 | int amd_sched_entity_init(struct amd_gpu_scheduler *sched, | 156 | int amd_sched_entity_init(struct amd_gpu_scheduler *sched, |
156 | struct amd_sched_entity *entity, | 157 | struct amd_sched_entity *entity, |
157 | struct amd_sched_rq *rq, | 158 | struct amd_sched_rq *rq, |
158 | uint32_t jobs); | 159 | uint32_t jobs, atomic_t* guilty); |
159 | void amd_sched_entity_fini(struct amd_gpu_scheduler *sched, | 160 | void amd_sched_entity_fini(struct amd_gpu_scheduler *sched, |
160 | struct amd_sched_entity *entity); | 161 | struct amd_sched_entity *entity); |
161 | void amd_sched_entity_push_job(struct amd_sched_job *sched_job); | 162 | void amd_sched_entity_push_job(struct amd_sched_job *sched_job); |