aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2018-09-17 09:41:45 -0400
committerAlex Deucher <alexander.deucher@amd.com>2018-09-26 22:09:21 -0400
commitf54b30d70bc606f7a154edba5883c7fa23838e9f (patch)
tree23cb75c552eae7e36939f580296d43ca1f1ada66 /drivers/gpu
parent0dd1e5bbecd75b6977d47be39f85af1bda524006 (diff)
drm/amdgpu: make function pointers mandatory
We always want those to be setup correctly. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Huang Rui <ray.huang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/cik_ih.c3
-rw-r--r--drivers/gpu/drm/amd/amdgpu/cik_sdma.c20
-rw-r--r--drivers/gpu/drm/amd/amdgpu/cz_ih.c3
-rw-r--r--drivers/gpu/drm/amd/amdgpu/dce_v10_0.c3
-rw-r--r--drivers/gpu/drm/amd/amdgpu/dce_v11_0.c3
-rw-r--r--drivers/gpu/drm/amd/amdgpu/dce_v6_0.c3
-rw-r--r--drivers/gpu/drm/amd/amdgpu/dce_v8_0.c3
-rw-r--r--drivers/gpu/drm/amd/amdgpu/dce_virtual.c3
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c3
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c3
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c3
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c3
-rw-r--r--drivers/gpu/drm/amd/amdgpu/iceland_ih.c3
-rw-r--r--drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c20
-rw-r--r--drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c20
-rw-r--r--drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c20
-rw-r--r--drivers/gpu/drm/amd/amdgpu/si_dma.c20
-rw-r--r--drivers/gpu/drm/amd/amdgpu/si_ih.c3
-rw-r--r--drivers/gpu/drm/amd/amdgpu/tonga_ih.c3
-rw-r--r--drivers/gpu/drm/amd/amdgpu/vega10_ih.c3
20 files changed, 55 insertions, 90 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/cik_ih.c b/drivers/gpu/drm/amd/amdgpu/cik_ih.c
index 44d10c2172f6..e75183e09820 100644
--- a/drivers/gpu/drm/amd/amdgpu/cik_ih.c
+++ b/drivers/gpu/drm/amd/amdgpu/cik_ih.c
@@ -468,8 +468,7 @@ static const struct amdgpu_ih_funcs cik_ih_funcs = {
468 468
469static void cik_ih_set_interrupt_funcs(struct amdgpu_device *adev) 469static void cik_ih_set_interrupt_funcs(struct amdgpu_device *adev)
470{ 470{
471 if (adev->irq.ih_funcs == NULL) 471 adev->irq.ih_funcs = &cik_ih_funcs;
472 adev->irq.ih_funcs = &cik_ih_funcs;
473} 472}
474 473
475const struct amdgpu_ip_block_version cik_ih_ip_block = 474const struct amdgpu_ip_block_version cik_ih_ip_block =
diff --git a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
index 154b1499b07e..ee9d5c92edb1 100644
--- a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
+++ b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
@@ -1370,10 +1370,8 @@ static const struct amdgpu_buffer_funcs cik_sdma_buffer_funcs = {
1370 1370
1371static void cik_sdma_set_buffer_funcs(struct amdgpu_device *adev) 1371static void cik_sdma_set_buffer_funcs(struct amdgpu_device *adev)
1372{ 1372{
1373 if (adev->mman.buffer_funcs == NULL) { 1373 adev->mman.buffer_funcs = &cik_sdma_buffer_funcs;
1374 adev->mman.buffer_funcs = &cik_sdma_buffer_funcs; 1374 adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
1375 adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
1376 }
1377} 1375}
1378 1376
1379static const struct amdgpu_vm_pte_funcs cik_sdma_vm_pte_funcs = { 1377static const struct amdgpu_vm_pte_funcs cik_sdma_vm_pte_funcs = {
@@ -1389,15 +1387,13 @@ static void cik_sdma_set_vm_pte_funcs(struct amdgpu_device *adev)
1389 struct drm_gpu_scheduler *sched; 1387 struct drm_gpu_scheduler *sched;
1390 unsigned i; 1388 unsigned i;
1391 1389
1392 if (adev->vm_manager.vm_pte_funcs == NULL) { 1390 adev->vm_manager.vm_pte_funcs = &cik_sdma_vm_pte_funcs;
1393 adev->vm_manager.vm_pte_funcs = &cik_sdma_vm_pte_funcs; 1391 for (i = 0; i < adev->sdma.num_instances; i++) {
1394 for (i = 0; i < adev->sdma.num_instances; i++) { 1392 sched = &adev->sdma.instance[i].ring.sched;
1395 sched = &adev->sdma.instance[i].ring.sched; 1393 adev->vm_manager.vm_pte_rqs[i] =
1396 adev->vm_manager.vm_pte_rqs[i] = 1394 &sched->sched_rq[DRM_SCHED_PRIORITY_KERNEL];
1397 &sched->sched_rq[DRM_SCHED_PRIORITY_KERNEL];
1398 }
1399 adev->vm_manager.vm_pte_num_rqs = adev->sdma.num_instances;
1400 } 1395 }
1396 adev->vm_manager.vm_pte_num_rqs = adev->sdma.num_instances;
1401} 1397}
1402 1398
1403const struct amdgpu_ip_block_version cik_sdma_ip_block = 1399const struct amdgpu_ip_block_version cik_sdma_ip_block =
diff --git a/drivers/gpu/drm/amd/amdgpu/cz_ih.c b/drivers/gpu/drm/amd/amdgpu/cz_ih.c
index 960c29e17da6..9385da1e1e40 100644
--- a/drivers/gpu/drm/amd/amdgpu/cz_ih.c
+++ b/drivers/gpu/drm/amd/amdgpu/cz_ih.c
@@ -449,8 +449,7 @@ static const struct amdgpu_ih_funcs cz_ih_funcs = {
449 449
450static void cz_ih_set_interrupt_funcs(struct amdgpu_device *adev) 450static void cz_ih_set_interrupt_funcs(struct amdgpu_device *adev)
451{ 451{
452 if (adev->irq.ih_funcs == NULL) 452 adev->irq.ih_funcs = &cz_ih_funcs;
453 adev->irq.ih_funcs = &cz_ih_funcs;
454} 453}
455 454
456const struct amdgpu_ip_block_version cz_ih_ip_block = 455const struct amdgpu_ip_block_version cz_ih_ip_block =
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
index 3916aa6cc4ec..89c09c396fe6 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
@@ -3570,8 +3570,7 @@ static const struct amdgpu_display_funcs dce_v10_0_display_funcs = {
3570 3570
3571static void dce_v10_0_set_display_funcs(struct amdgpu_device *adev) 3571static void dce_v10_0_set_display_funcs(struct amdgpu_device *adev)
3572{ 3572{
3573 if (adev->mode_info.funcs == NULL) 3573 adev->mode_info.funcs = &dce_v10_0_display_funcs;
3574 adev->mode_info.funcs = &dce_v10_0_display_funcs;
3575} 3574}
3576 3575
3577static const struct amdgpu_irq_src_funcs dce_v10_0_crtc_irq_funcs = { 3576static const struct amdgpu_irq_src_funcs dce_v10_0_crtc_irq_funcs = {
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
index 4ffb612a4e53..cf6faaa05dbb 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
@@ -3702,8 +3702,7 @@ static const struct amdgpu_display_funcs dce_v11_0_display_funcs = {
3702 3702
3703static void dce_v11_0_set_display_funcs(struct amdgpu_device *adev) 3703static void dce_v11_0_set_display_funcs(struct amdgpu_device *adev)
3704{ 3704{
3705 if (adev->mode_info.funcs == NULL) 3705 adev->mode_info.funcs = &dce_v11_0_display_funcs;
3706 adev->mode_info.funcs = &dce_v11_0_display_funcs;
3707} 3706}
3708 3707
3709static const struct amdgpu_irq_src_funcs dce_v11_0_crtc_irq_funcs = { 3708static const struct amdgpu_irq_src_funcs dce_v11_0_crtc_irq_funcs = {
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
index 480c5348a14f..371aa05bf537 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
@@ -3376,8 +3376,7 @@ static const struct amdgpu_display_funcs dce_v6_0_display_funcs = {
3376 3376
3377static void dce_v6_0_set_display_funcs(struct amdgpu_device *adev) 3377static void dce_v6_0_set_display_funcs(struct amdgpu_device *adev)
3378{ 3378{
3379 if (adev->mode_info.funcs == NULL) 3379 adev->mode_info.funcs = &dce_v6_0_display_funcs;
3380 adev->mode_info.funcs = &dce_v6_0_display_funcs;
3381} 3380}
3382 3381
3383static const struct amdgpu_irq_src_funcs dce_v6_0_crtc_irq_funcs = { 3382static const struct amdgpu_irq_src_funcs dce_v6_0_crtc_irq_funcs = {
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
index 797196476c94..30e76f2407c2 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
@@ -3458,8 +3458,7 @@ static const struct amdgpu_display_funcs dce_v8_0_display_funcs = {
3458 3458
3459static void dce_v8_0_set_display_funcs(struct amdgpu_device *adev) 3459static void dce_v8_0_set_display_funcs(struct amdgpu_device *adev)
3460{ 3460{
3461 if (adev->mode_info.funcs == NULL) 3461 adev->mode_info.funcs = &dce_v8_0_display_funcs;
3462 adev->mode_info.funcs = &dce_v8_0_display_funcs;
3463} 3462}
3464 3463
3465static const struct amdgpu_irq_src_funcs dce_v8_0_crtc_irq_funcs = { 3464static const struct amdgpu_irq_src_funcs dce_v8_0_crtc_irq_funcs = {
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
index 15257634a53a..2cc480d65394 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c
@@ -649,8 +649,7 @@ static const struct amdgpu_display_funcs dce_virtual_display_funcs = {
649 649
650static void dce_virtual_set_display_funcs(struct amdgpu_device *adev) 650static void dce_virtual_set_display_funcs(struct amdgpu_device *adev)
651{ 651{
652 if (adev->mode_info.funcs == NULL) 652 adev->mode_info.funcs = &dce_virtual_display_funcs;
653 adev->mode_info.funcs = &dce_virtual_display_funcs;
654} 653}
655 654
656static int dce_virtual_pageflip(struct amdgpu_device *adev, 655static int dce_virtual_pageflip(struct amdgpu_device *adev,
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
index 4411463ca719..3b8ac4442f06 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
@@ -1180,8 +1180,7 @@ static const struct amdgpu_irq_src_funcs gmc_v6_0_irq_funcs = {
1180 1180
1181static void gmc_v6_0_set_gmc_funcs(struct amdgpu_device *adev) 1181static void gmc_v6_0_set_gmc_funcs(struct amdgpu_device *adev)
1182{ 1182{
1183 if (adev->gmc.gmc_funcs == NULL) 1183 adev->gmc.gmc_funcs = &gmc_v6_0_gmc_funcs;
1184 adev->gmc.gmc_funcs = &gmc_v6_0_gmc_funcs;
1185} 1184}
1186 1185
1187static void gmc_v6_0_set_irq_funcs(struct amdgpu_device *adev) 1186static void gmc_v6_0_set_irq_funcs(struct amdgpu_device *adev)
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
index ae776ce9a415..899634ce4238 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
@@ -1388,8 +1388,7 @@ static const struct amdgpu_irq_src_funcs gmc_v7_0_irq_funcs = {
1388 1388
1389static void gmc_v7_0_set_gmc_funcs(struct amdgpu_device *adev) 1389static void gmc_v7_0_set_gmc_funcs(struct amdgpu_device *adev)
1390{ 1390{
1391 if (adev->gmc.gmc_funcs == NULL) 1391 adev->gmc.gmc_funcs = &gmc_v7_0_gmc_funcs;
1392 adev->gmc.gmc_funcs = &gmc_v7_0_gmc_funcs;
1393} 1392}
1394 1393
1395static void gmc_v7_0_set_irq_funcs(struct amdgpu_device *adev) 1394static void gmc_v7_0_set_irq_funcs(struct amdgpu_device *adev)
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
index 53ae49b8bde8..79143ca7cfac 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
@@ -1733,8 +1733,7 @@ static const struct amdgpu_irq_src_funcs gmc_v8_0_irq_funcs = {
1733 1733
1734static void gmc_v8_0_set_gmc_funcs(struct amdgpu_device *adev) 1734static void gmc_v8_0_set_gmc_funcs(struct amdgpu_device *adev)
1735{ 1735{
1736 if (adev->gmc.gmc_funcs == NULL) 1736 adev->gmc.gmc_funcs = &gmc_v8_0_gmc_funcs;
1737 adev->gmc.gmc_funcs = &gmc_v8_0_gmc_funcs;
1738} 1737}
1739 1738
1740static void gmc_v8_0_set_irq_funcs(struct amdgpu_device *adev) 1739static void gmc_v8_0_set_irq_funcs(struct amdgpu_device *adev)
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
index aad3c7c5fb3a..f35d7a554ad5 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
@@ -593,8 +593,7 @@ static const struct amdgpu_gmc_funcs gmc_v9_0_gmc_funcs = {
593 593
594static void gmc_v9_0_set_gmc_funcs(struct amdgpu_device *adev) 594static void gmc_v9_0_set_gmc_funcs(struct amdgpu_device *adev)
595{ 595{
596 if (adev->gmc.gmc_funcs == NULL) 596 adev->gmc.gmc_funcs = &gmc_v9_0_gmc_funcs;
597 adev->gmc.gmc_funcs = &gmc_v9_0_gmc_funcs;
598} 597}
599 598
600static int gmc_v9_0_early_init(void *handle) 599static int gmc_v9_0_early_init(void *handle)
diff --git a/drivers/gpu/drm/amd/amdgpu/iceland_ih.c b/drivers/gpu/drm/amd/amdgpu/iceland_ih.c
index 842c4b677b4d..45ef0a818e11 100644
--- a/drivers/gpu/drm/amd/amdgpu/iceland_ih.c
+++ b/drivers/gpu/drm/amd/amdgpu/iceland_ih.c
@@ -447,8 +447,7 @@ static const struct amdgpu_ih_funcs iceland_ih_funcs = {
447 447
448static void iceland_ih_set_interrupt_funcs(struct amdgpu_device *adev) 448static void iceland_ih_set_interrupt_funcs(struct amdgpu_device *adev)
449{ 449{
450 if (adev->irq.ih_funcs == NULL) 450 adev->irq.ih_funcs = &iceland_ih_funcs;
451 adev->irq.ih_funcs = &iceland_ih_funcs;
452} 451}
453 452
454const struct amdgpu_ip_block_version iceland_ih_ip_block = 453const struct amdgpu_ip_block_version iceland_ih_ip_block =
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
index c403bdf8ad70..0c5a576dee13 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
@@ -1296,10 +1296,8 @@ static const struct amdgpu_buffer_funcs sdma_v2_4_buffer_funcs = {
1296 1296
1297static void sdma_v2_4_set_buffer_funcs(struct amdgpu_device *adev) 1297static void sdma_v2_4_set_buffer_funcs(struct amdgpu_device *adev)
1298{ 1298{
1299 if (adev->mman.buffer_funcs == NULL) { 1299 adev->mman.buffer_funcs = &sdma_v2_4_buffer_funcs;
1300 adev->mman.buffer_funcs = &sdma_v2_4_buffer_funcs; 1300 adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
1301 adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
1302 }
1303} 1301}
1304 1302
1305static const struct amdgpu_vm_pte_funcs sdma_v2_4_vm_pte_funcs = { 1303static const struct amdgpu_vm_pte_funcs sdma_v2_4_vm_pte_funcs = {
@@ -1315,15 +1313,13 @@ static void sdma_v2_4_set_vm_pte_funcs(struct amdgpu_device *adev)
1315 struct drm_gpu_scheduler *sched; 1313 struct drm_gpu_scheduler *sched;
1316 unsigned i; 1314 unsigned i;
1317 1315
1318 if (adev->vm_manager.vm_pte_funcs == NULL) { 1316 adev->vm_manager.vm_pte_funcs = &sdma_v2_4_vm_pte_funcs;
1319 adev->vm_manager.vm_pte_funcs = &sdma_v2_4_vm_pte_funcs; 1317 for (i = 0; i < adev->sdma.num_instances; i++) {
1320 for (i = 0; i < adev->sdma.num_instances; i++) { 1318 sched = &adev->sdma.instance[i].ring.sched;
1321 sched = &adev->sdma.instance[i].ring.sched; 1319 adev->vm_manager.vm_pte_rqs[i] =
1322 adev->vm_manager.vm_pte_rqs[i] = 1320 &sched->sched_rq[DRM_SCHED_PRIORITY_KERNEL];
1323 &sched->sched_rq[DRM_SCHED_PRIORITY_KERNEL];
1324 }
1325 adev->vm_manager.vm_pte_num_rqs = adev->sdma.num_instances;
1326 } 1321 }
1322 adev->vm_manager.vm_pte_num_rqs = adev->sdma.num_instances;
1327} 1323}
1328 1324
1329const struct amdgpu_ip_block_version sdma_v2_4_ip_block = 1325const struct amdgpu_ip_block_version sdma_v2_4_ip_block =
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
index 2677d6a1bf42..2587b8de918a 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
@@ -1736,10 +1736,8 @@ static const struct amdgpu_buffer_funcs sdma_v3_0_buffer_funcs = {
1736 1736
1737static void sdma_v3_0_set_buffer_funcs(struct amdgpu_device *adev) 1737static void sdma_v3_0_set_buffer_funcs(struct amdgpu_device *adev)
1738{ 1738{
1739 if (adev->mman.buffer_funcs == NULL) { 1739 adev->mman.buffer_funcs = &sdma_v3_0_buffer_funcs;
1740 adev->mman.buffer_funcs = &sdma_v3_0_buffer_funcs; 1740 adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
1741 adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
1742 }
1743} 1741}
1744 1742
1745static const struct amdgpu_vm_pte_funcs sdma_v3_0_vm_pte_funcs = { 1743static const struct amdgpu_vm_pte_funcs sdma_v3_0_vm_pte_funcs = {
@@ -1755,15 +1753,13 @@ static void sdma_v3_0_set_vm_pte_funcs(struct amdgpu_device *adev)
1755 struct drm_gpu_scheduler *sched; 1753 struct drm_gpu_scheduler *sched;
1756 unsigned i; 1754 unsigned i;
1757 1755
1758 if (adev->vm_manager.vm_pte_funcs == NULL) { 1756 adev->vm_manager.vm_pte_funcs = &sdma_v3_0_vm_pte_funcs;
1759 adev->vm_manager.vm_pte_funcs = &sdma_v3_0_vm_pte_funcs; 1757 for (i = 0; i < adev->sdma.num_instances; i++) {
1760 for (i = 0; i < adev->sdma.num_instances; i++) { 1758 sched = &adev->sdma.instance[i].ring.sched;
1761 sched = &adev->sdma.instance[i].ring.sched; 1759 adev->vm_manager.vm_pte_rqs[i] =
1762 adev->vm_manager.vm_pte_rqs[i] = 1760 &sched->sched_rq[DRM_SCHED_PRIORITY_KERNEL];
1763 &sched->sched_rq[DRM_SCHED_PRIORITY_KERNEL];
1764 }
1765 adev->vm_manager.vm_pte_num_rqs = adev->sdma.num_instances;
1766 } 1761 }
1762 adev->vm_manager.vm_pte_num_rqs = adev->sdma.num_instances;
1767} 1763}
1768 1764
1769const struct amdgpu_ip_block_version sdma_v3_0_ip_block = 1765const struct amdgpu_ip_block_version sdma_v3_0_ip_block =
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
index 9da4a1bff5c5..a3e2ed15fff2 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
@@ -1807,10 +1807,8 @@ static const struct amdgpu_buffer_funcs sdma_v4_0_buffer_funcs = {
1807 1807
1808static void sdma_v4_0_set_buffer_funcs(struct amdgpu_device *adev) 1808static void sdma_v4_0_set_buffer_funcs(struct amdgpu_device *adev)
1809{ 1809{
1810 if (adev->mman.buffer_funcs == NULL) { 1810 adev->mman.buffer_funcs = &sdma_v4_0_buffer_funcs;
1811 adev->mman.buffer_funcs = &sdma_v4_0_buffer_funcs; 1811 adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
1812 adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
1813 }
1814} 1812}
1815 1813
1816static const struct amdgpu_vm_pte_funcs sdma_v4_0_vm_pte_funcs = { 1814static const struct amdgpu_vm_pte_funcs sdma_v4_0_vm_pte_funcs = {
@@ -1826,15 +1824,13 @@ static void sdma_v4_0_set_vm_pte_funcs(struct amdgpu_device *adev)
1826 struct drm_gpu_scheduler *sched; 1824 struct drm_gpu_scheduler *sched;
1827 unsigned i; 1825 unsigned i;
1828 1826
1829 if (adev->vm_manager.vm_pte_funcs == NULL) { 1827 adev->vm_manager.vm_pte_funcs = &sdma_v4_0_vm_pte_funcs;
1830 adev->vm_manager.vm_pte_funcs = &sdma_v4_0_vm_pte_funcs; 1828 for (i = 0; i < adev->sdma.num_instances; i++) {
1831 for (i = 0; i < adev->sdma.num_instances; i++) { 1829 sched = &adev->sdma.instance[i].ring.sched;
1832 sched = &adev->sdma.instance[i].ring.sched; 1830 adev->vm_manager.vm_pte_rqs[i] =
1833 adev->vm_manager.vm_pte_rqs[i] = 1831 &sched->sched_rq[DRM_SCHED_PRIORITY_KERNEL];
1834 &sched->sched_rq[DRM_SCHED_PRIORITY_KERNEL];
1835 }
1836 adev->vm_manager.vm_pte_num_rqs = adev->sdma.num_instances;
1837 } 1832 }
1833 adev->vm_manager.vm_pte_num_rqs = adev->sdma.num_instances;
1838} 1834}
1839 1835
1840const struct amdgpu_ip_block_version sdma_v4_0_ip_block = { 1836const struct amdgpu_ip_block_version sdma_v4_0_ip_block = {
diff --git a/drivers/gpu/drm/amd/amdgpu/si_dma.c b/drivers/gpu/drm/amd/amdgpu/si_dma.c
index fafaf259b17b..c3510a703f9f 100644
--- a/drivers/gpu/drm/amd/amdgpu/si_dma.c
+++ b/drivers/gpu/drm/amd/amdgpu/si_dma.c
@@ -863,10 +863,8 @@ static const struct amdgpu_buffer_funcs si_dma_buffer_funcs = {
863 863
864static void si_dma_set_buffer_funcs(struct amdgpu_device *adev) 864static void si_dma_set_buffer_funcs(struct amdgpu_device *adev)
865{ 865{
866 if (adev->mman.buffer_funcs == NULL) { 866 adev->mman.buffer_funcs = &si_dma_buffer_funcs;
867 adev->mman.buffer_funcs = &si_dma_buffer_funcs; 867 adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
868 adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].ring;
869 }
870} 868}
871 869
872static const struct amdgpu_vm_pte_funcs si_dma_vm_pte_funcs = { 870static const struct amdgpu_vm_pte_funcs si_dma_vm_pte_funcs = {
@@ -882,15 +880,13 @@ static void si_dma_set_vm_pte_funcs(struct amdgpu_device *adev)
882 struct drm_gpu_scheduler *sched; 880 struct drm_gpu_scheduler *sched;
883 unsigned i; 881 unsigned i;
884 882
885 if (adev->vm_manager.vm_pte_funcs == NULL) { 883 adev->vm_manager.vm_pte_funcs = &si_dma_vm_pte_funcs;
886 adev->vm_manager.vm_pte_funcs = &si_dma_vm_pte_funcs; 884 for (i = 0; i < adev->sdma.num_instances; i++) {
887 for (i = 0; i < adev->sdma.num_instances; i++) { 885 sched = &adev->sdma.instance[i].ring.sched;
888 sched = &adev->sdma.instance[i].ring.sched; 886 adev->vm_manager.vm_pte_rqs[i] =
889 adev->vm_manager.vm_pte_rqs[i] = 887 &sched->sched_rq[DRM_SCHED_PRIORITY_KERNEL];
890 &sched->sched_rq[DRM_SCHED_PRIORITY_KERNEL];
891 }
892 adev->vm_manager.vm_pte_num_rqs = adev->sdma.num_instances;
893 } 888 }
889 adev->vm_manager.vm_pte_num_rqs = adev->sdma.num_instances;
894} 890}
895 891
896const struct amdgpu_ip_block_version si_dma_ip_block = 892const struct amdgpu_ip_block_version si_dma_ip_block =
diff --git a/drivers/gpu/drm/amd/amdgpu/si_ih.c b/drivers/gpu/drm/amd/amdgpu/si_ih.c
index 60dad63098a2..97711d327527 100644
--- a/drivers/gpu/drm/amd/amdgpu/si_ih.c
+++ b/drivers/gpu/drm/amd/amdgpu/si_ih.c
@@ -308,8 +308,7 @@ static const struct amdgpu_ih_funcs si_ih_funcs = {
308 308
309static void si_ih_set_interrupt_funcs(struct amdgpu_device *adev) 309static void si_ih_set_interrupt_funcs(struct amdgpu_device *adev)
310{ 310{
311 if (adev->irq.ih_funcs == NULL) 311 adev->irq.ih_funcs = &si_ih_funcs;
312 adev->irq.ih_funcs = &si_ih_funcs;
313} 312}
314 313
315const struct amdgpu_ip_block_version si_ih_ip_block = 314const struct amdgpu_ip_block_version si_ih_ip_block =
diff --git a/drivers/gpu/drm/amd/amdgpu/tonga_ih.c b/drivers/gpu/drm/amd/amdgpu/tonga_ih.c
index 52853d8a8fdd..a79a3776888a 100644
--- a/drivers/gpu/drm/amd/amdgpu/tonga_ih.c
+++ b/drivers/gpu/drm/amd/amdgpu/tonga_ih.c
@@ -513,8 +513,7 @@ static const struct amdgpu_ih_funcs tonga_ih_funcs = {
513 513
514static void tonga_ih_set_interrupt_funcs(struct amdgpu_device *adev) 514static void tonga_ih_set_interrupt_funcs(struct amdgpu_device *adev)
515{ 515{
516 if (adev->irq.ih_funcs == NULL) 516 adev->irq.ih_funcs = &tonga_ih_funcs;
517 adev->irq.ih_funcs = &tonga_ih_funcs;
518} 517}
519 518
520const struct amdgpu_ip_block_version tonga_ih_ip_block = 519const struct amdgpu_ip_block_version tonga_ih_ip_block =
diff --git a/drivers/gpu/drm/amd/amdgpu/vega10_ih.c b/drivers/gpu/drm/amd/amdgpu/vega10_ih.c
index acbe5a770207..37487b4cbd6e 100644
--- a/drivers/gpu/drm/amd/amdgpu/vega10_ih.c
+++ b/drivers/gpu/drm/amd/amdgpu/vega10_ih.c
@@ -494,8 +494,7 @@ static const struct amdgpu_ih_funcs vega10_ih_funcs = {
494 494
495static void vega10_ih_set_interrupt_funcs(struct amdgpu_device *adev) 495static void vega10_ih_set_interrupt_funcs(struct amdgpu_device *adev)
496{ 496{
497 if (adev->irq.ih_funcs == NULL) 497 adev->irq.ih_funcs = &vega10_ih_funcs;
498 adev->irq.ih_funcs = &vega10_ih_funcs;
499} 498}
500 499
501const struct amdgpu_ip_block_version vega10_ih_ip_block = 500const struct amdgpu_ip_block_version vega10_ih_ip_block =