aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2016-01-31 06:29:04 -0500
committerAlex Deucher <alexander.deucher@amd.com>2016-02-10 14:17:20 -0500
commitb07c60c0652c497af0c42c1278941f7c5a187fe9 (patch)
treed19e6dfc68fe4b25032c19ceae0e5be0f7e9c25d /drivers/gpu/drm
parent9e5d53094c5366a9a14e0694e45e794902cc2c04 (diff)
drm/amdgpu: move ring from IBs into job
We can't submit to multiple rings at the same time anyway. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Alex Deucher <alexander.deucer@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu.h6
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c33
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c11
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c5
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h8
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c2
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c2
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c4
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c6
-rw-r--r--drivers/gpu/drm/amd/amdgpu/cik_sdma.c2
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c2
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c4
-rw-r--r--drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c2
-rw-r--r--drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c2
14 files changed, 45 insertions, 44 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index c23eea308991..dd6dd23fb3c7 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -771,7 +771,6 @@ struct amdgpu_ib {
771 uint32_t length_dw; 771 uint32_t length_dw;
772 uint64_t gpu_addr; 772 uint64_t gpu_addr;
773 uint32_t *ptr; 773 uint32_t *ptr;
774 struct amdgpu_ring *ring;
775 struct amdgpu_fence *fence; 774 struct amdgpu_fence *fence;
776 struct amdgpu_user_fence *user; 775 struct amdgpu_user_fence *user;
777 bool grabbed_vmid; 776 bool grabbed_vmid;
@@ -1178,10 +1177,10 @@ struct amdgpu_gfx {
1178 unsigned ce_ram_size; 1177 unsigned ce_ram_size;
1179}; 1178};
1180 1179
1181int amdgpu_ib_get(struct amdgpu_ring *ring, struct amdgpu_vm *vm, 1180int amdgpu_ib_get(struct amdgpu_device *adev, struct amdgpu_vm *vm,
1182 unsigned size, struct amdgpu_ib *ib); 1181 unsigned size, struct amdgpu_ib *ib);
1183void amdgpu_ib_free(struct amdgpu_device *adev, struct amdgpu_ib *ib); 1182void amdgpu_ib_free(struct amdgpu_device *adev, struct amdgpu_ib *ib);
1184int amdgpu_ib_schedule(struct amdgpu_device *adev, unsigned num_ibs, 1183int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,
1185 struct amdgpu_ib *ib, void *owner); 1184 struct amdgpu_ib *ib, void *owner);
1186int amdgpu_ib_pool_init(struct amdgpu_device *adev); 1185int amdgpu_ib_pool_init(struct amdgpu_device *adev);
1187void amdgpu_ib_pool_fini(struct amdgpu_device *adev); 1186void amdgpu_ib_pool_fini(struct amdgpu_device *adev);
@@ -1239,6 +1238,7 @@ struct amdgpu_cs_parser {
1239struct amdgpu_job { 1238struct amdgpu_job {
1240 struct amd_sched_job base; 1239 struct amd_sched_job base;
1241 struct amdgpu_device *adev; 1240 struct amdgpu_device *adev;
1241 struct amdgpu_ring *ring;
1242 struct amdgpu_ib *ibs; 1242 struct amdgpu_ib *ibs;
1243 uint32_t num_ibs; 1243 uint32_t num_ibs;
1244 void *owner; 1244 void *owner;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
index 8f3b72f5c91c..d928165bfc33 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
@@ -542,26 +542,25 @@ static int amdgpu_bo_vm_update_pte(struct amdgpu_cs_parser *p,
542} 542}
543 543
544static int amdgpu_cs_ib_vm_chunk(struct amdgpu_device *adev, 544static int amdgpu_cs_ib_vm_chunk(struct amdgpu_device *adev,
545 struct amdgpu_cs_parser *parser) 545 struct amdgpu_cs_parser *p)
546{ 546{
547 struct amdgpu_fpriv *fpriv = parser->filp->driver_priv; 547 struct amdgpu_fpriv *fpriv = p->filp->driver_priv;
548 struct amdgpu_vm *vm = &fpriv->vm; 548 struct amdgpu_vm *vm = &fpriv->vm;
549 struct amdgpu_ring *ring; 549 struct amdgpu_ring *ring = p->job->ring;
550 int i, r; 550 int i, r;
551 551
552 /* Only for UVD/VCE VM emulation */ 552 /* Only for UVD/VCE VM emulation */
553 for (i = 0; i < parser->job->num_ibs; i++) { 553 if (ring->funcs->parse_cs) {
554 ring = parser->job->ibs[i].ring; 554 for (i = 0; i < p->job->num_ibs; i++) {
555 if (ring->funcs->parse_cs) { 555 r = amdgpu_ring_parse_cs(ring, p, i);
556 r = amdgpu_ring_parse_cs(ring, parser, i);
557 if (r) 556 if (r)
558 return r; 557 return r;
559 } 558 }
560 } 559 }
561 560
562 r = amdgpu_bo_vm_update_pte(parser, vm); 561 r = amdgpu_bo_vm_update_pte(p, vm);
563 if (!r) 562 if (!r)
564 amdgpu_cs_sync_rings(parser); 563 amdgpu_cs_sync_rings(p);
565 564
566 return r; 565 return r;
567} 566}
@@ -603,6 +602,11 @@ static int amdgpu_cs_ib_fill(struct amdgpu_device *adev,
603 if (r) 602 if (r)
604 return r; 603 return r;
605 604
605 if (parser->job->ring && parser->job->ring != ring)
606 return -EINVAL;
607
608 parser->job->ring = ring;
609
606 if (ring->funcs->parse_cs) { 610 if (ring->funcs->parse_cs) {
607 struct amdgpu_bo_va_mapping *m; 611 struct amdgpu_bo_va_mapping *m;
608 struct amdgpu_bo *aobj = NULL; 612 struct amdgpu_bo *aobj = NULL;
@@ -631,7 +635,7 @@ static int amdgpu_cs_ib_fill(struct amdgpu_device *adev,
631 offset = ((uint64_t)m->it.start) * AMDGPU_GPU_PAGE_SIZE; 635 offset = ((uint64_t)m->it.start) * AMDGPU_GPU_PAGE_SIZE;
632 kptr += chunk_ib->va_start - offset; 636 kptr += chunk_ib->va_start - offset;
633 637
634 r = amdgpu_ib_get(ring, NULL, chunk_ib->ib_bytes, ib); 638 r = amdgpu_ib_get(adev, NULL, chunk_ib->ib_bytes, ib);
635 if (r) { 639 if (r) {
636 DRM_ERROR("Failed to get ib !\n"); 640 DRM_ERROR("Failed to get ib !\n");
637 return r; 641 return r;
@@ -640,7 +644,7 @@ static int amdgpu_cs_ib_fill(struct amdgpu_device *adev,
640 memcpy(ib->ptr, kptr, chunk_ib->ib_bytes); 644 memcpy(ib->ptr, kptr, chunk_ib->ib_bytes);
641 amdgpu_bo_kunmap(aobj); 645 amdgpu_bo_kunmap(aobj);
642 } else { 646 } else {
643 r = amdgpu_ib_get(ring, vm, 0, ib); 647 r = amdgpu_ib_get(adev, vm, 0, ib);
644 if (r) { 648 if (r) {
645 DRM_ERROR("Failed to get ib !\n"); 649 DRM_ERROR("Failed to get ib !\n");
646 return r; 650 return r;
@@ -680,8 +684,8 @@ static int amdgpu_cs_ib_fill(struct amdgpu_device *adev,
680 struct amdgpu_ib *ib = &parser->job->ibs[parser->job->num_ibs - 1]; 684 struct amdgpu_ib *ib = &parser->job->ibs[parser->job->num_ibs - 1];
681 685
682 /* UVD & VCE fw doesn't support user fences */ 686 /* UVD & VCE fw doesn't support user fences */
683 if (ib->ring->type == AMDGPU_RING_TYPE_UVD || 687 if (parser->job->ring->type == AMDGPU_RING_TYPE_UVD ||
684 ib->ring->type == AMDGPU_RING_TYPE_VCE) 688 parser->job->ring->type == AMDGPU_RING_TYPE_VCE)
685 return -EINVAL; 689 return -EINVAL;
686 690
687 ib->user = &parser->job->uf; 691 ib->user = &parser->job->uf;
@@ -757,7 +761,7 @@ static int amdgpu_cs_free_job(struct amdgpu_job *job)
757static int amdgpu_cs_submit(struct amdgpu_cs_parser *p, 761static int amdgpu_cs_submit(struct amdgpu_cs_parser *p,
758 union drm_amdgpu_cs *cs) 762 union drm_amdgpu_cs *cs)
759{ 763{
760 struct amdgpu_ring * ring = p->job->ibs->ring; 764 struct amdgpu_ring *ring = p->job->ring;
761 struct amd_sched_fence *fence; 765 struct amd_sched_fence *fence;
762 struct amdgpu_job *job; 766 struct amdgpu_job *job;
763 767
@@ -766,7 +770,6 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p,
766 770
767 job->base.sched = &ring->sched; 771 job->base.sched = &ring->sched;
768 job->base.s_entity = &p->ctx->rings[ring->idx].entity; 772 job->base.s_entity = &p->ctx->rings[ring->idx].entity;
769 job->adev = p->adev;
770 job->owner = p->filp; 773 job->owner = p->filp;
771 job->free_job = amdgpu_cs_free_job; 774 job->free_job = amdgpu_cs_free_job;
772 775
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
index b6737707eda2..47196ec593fc 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
@@ -55,10 +55,9 @@ static int amdgpu_debugfs_sa_init(struct amdgpu_device *adev);
55 * suballocator. 55 * suballocator.
56 * Returns 0 on success, error on failure. 56 * Returns 0 on success, error on failure.
57 */ 57 */
58int amdgpu_ib_get(struct amdgpu_ring *ring, struct amdgpu_vm *vm, 58int amdgpu_ib_get(struct amdgpu_device *adev, struct amdgpu_vm *vm,
59 unsigned size, struct amdgpu_ib *ib) 59 unsigned size, struct amdgpu_ib *ib)
60{ 60{
61 struct amdgpu_device *adev = ring->adev;
62 int r; 61 int r;
63 62
64 if (size) { 63 if (size) {
@@ -77,7 +76,6 @@ int amdgpu_ib_get(struct amdgpu_ring *ring, struct amdgpu_vm *vm,
77 76
78 amdgpu_sync_create(&ib->sync); 77 amdgpu_sync_create(&ib->sync);
79 78
80 ib->ring = ring;
81 ib->vm = vm; 79 ib->vm = vm;
82 80
83 return 0; 81 return 0;
@@ -120,11 +118,11 @@ void amdgpu_ib_free(struct amdgpu_device *adev, struct amdgpu_ib *ib)
120 * a CONST_IB), it will be put on the ring prior to the DE IB. Prior 118 * a CONST_IB), it will be put on the ring prior to the DE IB. Prior
121 * to SI there was just a DE IB. 119 * to SI there was just a DE IB.
122 */ 120 */
123int amdgpu_ib_schedule(struct amdgpu_device *adev, unsigned num_ibs, 121int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,
124 struct amdgpu_ib *ibs, void *owner) 122 struct amdgpu_ib *ibs, void *owner)
125{ 123{
124 struct amdgpu_device *adev = ring->adev;
126 struct amdgpu_ib *ib = &ibs[0]; 125 struct amdgpu_ib *ib = &ibs[0];
127 struct amdgpu_ring *ring;
128 struct amdgpu_ctx *ctx, *old_ctx; 126 struct amdgpu_ctx *ctx, *old_ctx;
129 struct amdgpu_vm *vm; 127 struct amdgpu_vm *vm;
130 unsigned i; 128 unsigned i;
@@ -133,7 +131,6 @@ int amdgpu_ib_schedule(struct amdgpu_device *adev, unsigned num_ibs,
133 if (num_ibs == 0) 131 if (num_ibs == 0)
134 return -EINVAL; 132 return -EINVAL;
135 133
136 ring = ibs->ring;
137 ctx = ibs->ctx; 134 ctx = ibs->ctx;
138 vm = ibs->vm; 135 vm = ibs->vm;
139 136
@@ -178,7 +175,7 @@ int amdgpu_ib_schedule(struct amdgpu_device *adev, unsigned num_ibs,
178 for (i = 0; i < num_ibs; ++i) { 175 for (i = 0; i < num_ibs; ++i) {
179 ib = &ibs[i]; 176 ib = &ibs[i];
180 177
181 if (ib->ring != ring || ib->ctx != ctx || ib->vm != vm) { 178 if (ib->ctx != ctx || ib->vm != vm) {
182 ring->current_ctx = old_ctx; 179 ring->current_ctx = old_ctx;
183 amdgpu_ring_undo(ring); 180 amdgpu_ring_undo(ring);
184 return -EINVAL; 181 return -EINVAL;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
index 10d098e33707..84453c1c4b07 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c
@@ -70,7 +70,7 @@ static struct fence *amdgpu_sched_dependency(struct amd_sched_job *sched_job)
70 struct fence *fence = amdgpu_sync_get_fence(sync); 70 struct fence *fence = amdgpu_sync_get_fence(sync);
71 71
72 if (fence == NULL && vm && !job->ibs->grabbed_vmid) { 72 if (fence == NULL && vm && !job->ibs->grabbed_vmid) {
73 struct amdgpu_ring *ring = job->ibs->ring; 73 struct amdgpu_ring *ring = job->ring;
74 int r; 74 int r;
75 75
76 r = amdgpu_vm_grab_id(vm, ring, sync, 76 r = amdgpu_vm_grab_id(vm, ring, sync,
@@ -98,7 +98,7 @@ static struct fence *amdgpu_sched_run_job(struct amd_sched_job *sched_job)
98 } 98 }
99 job = to_amdgpu_job(sched_job); 99 job = to_amdgpu_job(sched_job);
100 trace_amdgpu_sched_run_job(job); 100 trace_amdgpu_sched_run_job(job);
101 r = amdgpu_ib_schedule(job->adev, job->num_ibs, job->ibs, job->owner); 101 r = amdgpu_ib_schedule(job->ring, job->num_ibs, job->ibs, job->owner);
102 if (r) { 102 if (r) {
103 DRM_ERROR("Error scheduling IBs (%d)\n", r); 103 DRM_ERROR("Error scheduling IBs (%d)\n", r);
104 goto err; 104 goto err;
@@ -142,6 +142,7 @@ int amdgpu_sched_ib_submit_kernel_helper(struct amdgpu_device *adev,
142 *f = fence_get(&job->base.s_fence->base); 142 *f = fence_get(&job->base.s_fence->base);
143 143
144 job->adev = adev; 144 job->adev = adev;
145 job->ring = ring;
145 job->ibs = ibs; 146 job->ibs = ibs;
146 job->num_ibs = num_ibs; 147 job->num_ibs = num_ibs;
147 job->owner = owner; 148 job->owner = owner;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
index f808b5a6e52b..9ca3735c563c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
@@ -38,10 +38,10 @@ TRACE_EVENT(amdgpu_cs,
38 38
39 TP_fast_assign( 39 TP_fast_assign(
40 __entry->bo_list = p->bo_list; 40 __entry->bo_list = p->bo_list;
41 __entry->ring = p->job->ibs[i].ring->idx; 41 __entry->ring = p->job->ring->idx;
42 __entry->dw = p->job->ibs[i].length_dw; 42 __entry->dw = p->job->ibs[i].length_dw;
43 __entry->fences = amdgpu_fence_count_emitted( 43 __entry->fences = amdgpu_fence_count_emitted(
44 p->job->ibs[i].ring); 44 p->job->ring);
45 ), 45 ),
46 TP_printk("bo_list=%p, ring=%u, dw=%u, fences=%u", 46 TP_printk("bo_list=%p, ring=%u, dw=%u, fences=%u",
47 __entry->bo_list, __entry->ring, __entry->dw, 47 __entry->bo_list, __entry->ring, __entry->dw,
@@ -65,7 +65,7 @@ TRACE_EVENT(amdgpu_cs_ioctl,
65 __entry->sched_job = &job->base; 65 __entry->sched_job = &job->base;
66 __entry->ib = job->ibs; 66 __entry->ib = job->ibs;
67 __entry->fence = &job->base.s_fence->base; 67 __entry->fence = &job->base.s_fence->base;
68 __entry->ring_name = job->ibs[0].ring->name; 68 __entry->ring_name = job->ring->name;
69 __entry->num_ibs = job->num_ibs; 69 __entry->num_ibs = job->num_ibs;
70 ), 70 ),
71 TP_printk("adev=%p, sched_job=%p, first ib=%p, sched fence=%p, ring name:%s, num_ibs:%u", 71 TP_printk("adev=%p, sched_job=%p, first ib=%p, sched fence=%p, ring name:%s, num_ibs:%u",
@@ -90,7 +90,7 @@ TRACE_EVENT(amdgpu_sched_run_job,
90 __entry->sched_job = &job->base; 90 __entry->sched_job = &job->base;
91 __entry->ib = job->ibs; 91 __entry->ib = job->ibs;
92 __entry->fence = &job->base.s_fence->base; 92 __entry->fence = &job->base.s_fence->base;
93 __entry->ring_name = job->ibs[0].ring->name; 93 __entry->ring_name = job->ring->name;
94 __entry->num_ibs = job->num_ibs; 94 __entry->num_ibs = job->num_ibs;
95 ), 95 ),
96 TP_printk("adev=%p, sched_job=%p, first ib=%p, sched fence=%p, ring name:%s, num_ibs:%u", 96 TP_printk("adev=%p, sched_job=%p, first ib=%p, sched fence=%p, ring name:%s, num_ibs:%u",
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index a7354798f087..6b63dcc3a773 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -1030,7 +1030,7 @@ int amdgpu_copy_buffer(struct amdgpu_ring *ring,
1030 if (!ib) 1030 if (!ib)
1031 return -ENOMEM; 1031 return -ENOMEM;
1032 1032
1033 r = amdgpu_ib_get(ring, NULL, num_dw * 4, ib); 1033 r = amdgpu_ib_get(adev, NULL, num_dw * 4, ib);
1034 if (r) { 1034 if (r) {
1035 kfree(ib); 1035 kfree(ib);
1036 return r; 1036 return r;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
index f2bd2334bbe6..46f2bdb76d20 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
@@ -867,7 +867,7 @@ static int amdgpu_uvd_send_msg(struct amdgpu_ring *ring,
867 r = -ENOMEM; 867 r = -ENOMEM;
868 goto err; 868 goto err;
869 } 869 }
870 r = amdgpu_ib_get(ring, NULL, 64, ib); 870 r = amdgpu_ib_get(adev, NULL, 64, ib);
871 if (r) 871 if (r)
872 goto err1; 872 goto err1;
873 873
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
index 66b7bfafca24..bcbe4167d7b1 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
@@ -377,7 +377,7 @@ int amdgpu_vce_get_create_msg(struct amdgpu_ring *ring, uint32_t handle,
377 ib = kzalloc(sizeof(struct amdgpu_ib), GFP_KERNEL); 377 ib = kzalloc(sizeof(struct amdgpu_ib), GFP_KERNEL);
378 if (!ib) 378 if (!ib)
379 return -ENOMEM; 379 return -ENOMEM;
380 r = amdgpu_ib_get(ring, NULL, ib_size_dw * 4, ib); 380 r = amdgpu_ib_get(adev, NULL, ib_size_dw * 4, ib);
381 if (r) { 381 if (r) {
382 DRM_ERROR("amdgpu: failed to get ib (%d).\n", r); 382 DRM_ERROR("amdgpu: failed to get ib (%d).\n", r);
383 kfree(ib); 383 kfree(ib);
@@ -463,7 +463,7 @@ int amdgpu_vce_get_destroy_msg(struct amdgpu_ring *ring, uint32_t handle,
463 if (!ib) 463 if (!ib)
464 return -ENOMEM; 464 return -ENOMEM;
465 465
466 r = amdgpu_ib_get(ring, NULL, ib_size_dw * 4, ib); 466 r = amdgpu_ib_get(adev, NULL, ib_size_dw * 4, ib);
467 if (r) { 467 if (r) {
468 kfree(ib); 468 kfree(ib);
469 DRM_ERROR("amdgpu: failed to get ib (%d).\n", r); 469 DRM_ERROR("amdgpu: failed to get ib (%d).\n", r);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index d0acc9c0fd7f..b68642b47b7b 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -355,7 +355,7 @@ static int amdgpu_vm_clear_bo(struct amdgpu_device *adev,
355 if (!ib) 355 if (!ib)
356 goto error; 356 goto error;
357 357
358 r = amdgpu_ib_get(ring, NULL, 64, ib); 358 r = amdgpu_ib_get(adev, NULL, 64, ib);
359 if (r) 359 if (r)
360 goto error_free; 360 goto error_free;
361 361
@@ -448,7 +448,7 @@ int amdgpu_vm_update_page_directory(struct amdgpu_device *adev,
448 if (!ib) 448 if (!ib)
449 return -ENOMEM; 449 return -ENOMEM;
450 450
451 r = amdgpu_ib_get(ring, NULL, ndw * 4, ib); 451 r = amdgpu_ib_get(adev, NULL, ndw * 4, ib);
452 if (r) { 452 if (r) {
453 kfree(ib); 453 kfree(ib);
454 return r; 454 return r;
@@ -737,7 +737,7 @@ static int amdgpu_vm_bo_update_mapping(struct amdgpu_device *adev,
737 if (!ib) 737 if (!ib)
738 return -ENOMEM; 738 return -ENOMEM;
739 739
740 r = amdgpu_ib_get(ring, NULL, ndw * 4, ib); 740 r = amdgpu_ib_get(adev, NULL, ndw * 4, ib);
741 if (r) { 741 if (r) {
742 kfree(ib); 742 kfree(ib);
743 return r; 743 return r;
diff --git a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
index 1007a98f775b..f352d7559686 100644
--- a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
+++ b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
@@ -621,7 +621,7 @@ static int cik_sdma_ring_test_ib(struct amdgpu_ring *ring)
621 tmp = 0xCAFEDEAD; 621 tmp = 0xCAFEDEAD;
622 adev->wb.wb[index] = cpu_to_le32(tmp); 622 adev->wb.wb[index] = cpu_to_le32(tmp);
623 memset(&ib, 0, sizeof(ib)); 623 memset(&ib, 0, sizeof(ib));
624 r = amdgpu_ib_get(ring, NULL, 256, &ib); 624 r = amdgpu_ib_get(adev, NULL, 256, &ib);
625 if (r) { 625 if (r) {
626 DRM_ERROR("amdgpu: failed to get ib (%d).\n", r); 626 DRM_ERROR("amdgpu: failed to get ib (%d).\n", r);
627 goto err0; 627 goto err0;
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
index 40159d529e5b..5f57a820dacb 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
@@ -2631,7 +2631,7 @@ static int gfx_v7_0_ring_test_ib(struct amdgpu_ring *ring)
2631 } 2631 }
2632 WREG32(scratch, 0xCAFEDEAD); 2632 WREG32(scratch, 0xCAFEDEAD);
2633 memset(&ib, 0, sizeof(ib)); 2633 memset(&ib, 0, sizeof(ib));
2634 r = amdgpu_ib_get(ring, NULL, 256, &ib); 2634 r = amdgpu_ib_get(adev, NULL, 256, &ib);
2635 if (r) { 2635 if (r) {
2636 DRM_ERROR("amdgpu: failed to get ib (%d).\n", r); 2636 DRM_ERROR("amdgpu: failed to get ib (%d).\n", r);
2637 goto err1; 2637 goto err1;
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
index 2ca36606c2ef..dbfa895c2ae5 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
@@ -699,7 +699,7 @@ static int gfx_v8_0_ring_test_ib(struct amdgpu_ring *ring)
699 } 699 }
700 WREG32(scratch, 0xCAFEDEAD); 700 WREG32(scratch, 0xCAFEDEAD);
701 memset(&ib, 0, sizeof(ib)); 701 memset(&ib, 0, sizeof(ib));
702 r = amdgpu_ib_get(ring, NULL, 256, &ib); 702 r = amdgpu_ib_get(adev, NULL, 256, &ib);
703 if (r) { 703 if (r) {
704 DRM_ERROR("amdgpu: failed to get ib (%d).\n", r); 704 DRM_ERROR("amdgpu: failed to get ib (%d).\n", r);
705 goto err1; 705 goto err1;
@@ -1171,7 +1171,7 @@ static int gfx_v8_0_do_edc_gpr_workarounds(struct amdgpu_device *adev)
1171 1171
1172 /* allocate an indirect buffer to put the commands in */ 1172 /* allocate an indirect buffer to put the commands in */
1173 memset(&ib, 0, sizeof(ib)); 1173 memset(&ib, 0, sizeof(ib));
1174 r = amdgpu_ib_get(ring, NULL, total_size, &ib); 1174 r = amdgpu_ib_get(adev, NULL, total_size, &ib);
1175 if (r) { 1175 if (r) {
1176 DRM_ERROR("amdgpu: failed to get ib (%d).\n", r); 1176 DRM_ERROR("amdgpu: failed to get ib (%d).\n", r);
1177 return r; 1177 return r;
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
index 5dfb13c56b90..49ec93cc7166 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
@@ -674,7 +674,7 @@ static int sdma_v2_4_ring_test_ib(struct amdgpu_ring *ring)
674 tmp = 0xCAFEDEAD; 674 tmp = 0xCAFEDEAD;
675 adev->wb.wb[index] = cpu_to_le32(tmp); 675 adev->wb.wb[index] = cpu_to_le32(tmp);
676 memset(&ib, 0, sizeof(ib)); 676 memset(&ib, 0, sizeof(ib));
677 r = amdgpu_ib_get(ring, NULL, 256, &ib); 677 r = amdgpu_ib_get(adev, NULL, 256, &ib);
678 if (r) { 678 if (r) {
679 DRM_ERROR("amdgpu: failed to get ib (%d).\n", r); 679 DRM_ERROR("amdgpu: failed to get ib (%d).\n", r);
680 goto err0; 680 goto err0;
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
index 999a169299f0..8fe150f02634 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
@@ -825,7 +825,7 @@ static int sdma_v3_0_ring_test_ib(struct amdgpu_ring *ring)
825 tmp = 0xCAFEDEAD; 825 tmp = 0xCAFEDEAD;
826 adev->wb.wb[index] = cpu_to_le32(tmp); 826 adev->wb.wb[index] = cpu_to_le32(tmp);
827 memset(&ib, 0, sizeof(ib)); 827 memset(&ib, 0, sizeof(ib));
828 r = amdgpu_ib_get(ring, NULL, 256, &ib); 828 r = amdgpu_ib_get(adev, NULL, 256, &ib);
829 if (r) { 829 if (r) {
830 DRM_ERROR("amdgpu: failed to get ib (%d).\n", r); 830 DRM_ERROR("amdgpu: failed to get ib (%d).\n", r);
831 goto err0; 831 goto err0;