Signed-off-by: Tom St Denis <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 46 ++++++++++++++++----------
 1 file changed, 28 insertions(+), 18 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c 
b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
index 33a62d5a4949..b7f6db39d357 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
@@ -1115,7 +1115,8 @@ static int sdma_v4_0_start(struct amdgpu_device *adev)
 
                WREG32_SDMA(i, mmSDMA0_SEM_WAIT_FAIL_TIMER_CNTL, 0);
                sdma_v4_0_gfx_resume(adev, i);
-               sdma_v4_0_page_resume(adev, i);
+               if (!(adev->flags & AMD_IS_APU))
+                       sdma_v4_0_page_resume(adev, i);
 
                /* set utc l1 enable flag always to 1 */
                temp = RREG32_SDMA(i, mmSDMA0_CNTL);
@@ -1522,18 +1523,20 @@ static int sdma_v4_0_sw_init(void *handle)
                if (r)
                        return r;
 
-               ring = &adev->sdma.instance[i].page;
-               ring->ring_obj = NULL;
-               ring->use_doorbell = false;
-
-               sprintf(ring->name, "page%d", i);
-               r = amdgpu_ring_init(adev, ring, 1024,
-                                    &adev->sdma.trap_irq,
-                                    (i == 0) ?
-                                    AMDGPU_SDMA_IRQ_TRAP0 :
-                                    AMDGPU_SDMA_IRQ_TRAP1);
-               if (r)
-                       return r;
+               if (!(adev->flags & AMD_IS_APU)) {
+                       ring = &adev->sdma.instance[i].page;
+                       ring->ring_obj = NULL;
+                       ring->use_doorbell = false;
+
+                       sprintf(ring->name, "page%d", i);
+                       r = amdgpu_ring_init(adev, ring, 1024,
+                                            &adev->sdma.trap_irq,
+                                            (i == 0) ?
+                                            AMDGPU_SDMA_IRQ_TRAP0 :
+                                            AMDGPU_SDMA_IRQ_TRAP1);
+                       if (r)
+                               return r;
+               }
        }
 
        return r;
@@ -1546,7 +1549,8 @@ static int sdma_v4_0_sw_fini(void *handle)
 
        for (i = 0; i < adev->sdma.num_instances; i++) {
                amdgpu_ring_fini(&adev->sdma.instance[i].ring);
-               amdgpu_ring_fini(&adev->sdma.instance[i].page);
+               if (!(adev->flags & AMD_IS_APU))
+                       amdgpu_ring_fini(&adev->sdma.instance[i].page);
        }
 
        for (i = 0; i < adev->sdma.num_instances; i++) {
@@ -1686,7 +1690,8 @@ static int sdma_v4_0_process_trap_irq(struct 
amdgpu_device *adev,
                /* XXX compute */
                break;
        case 3:
-               amdgpu_fence_process(&adev->sdma.instance[instance].page);
+               if (!(adev->flags & AMD_IS_APU))
+                       
amdgpu_fence_process(&adev->sdma.instance[instance].page);
                break;
        }
        return 0;
@@ -1953,8 +1958,10 @@ static void sdma_v4_0_set_ring_funcs(struct 
amdgpu_device *adev)
        for (i = 0; i < adev->sdma.num_instances; i++) {
                adev->sdma.instance[i].ring.funcs = &sdma_v4_0_ring_funcs;
                adev->sdma.instance[i].ring.me = i;
-               adev->sdma.instance[i].page.funcs = &sdma_v4_0_page_ring_funcs;
-               adev->sdma.instance[i].page.me = i;
+               if (!(adev->flags & AMD_IS_APU)) {
+                       adev->sdma.instance[i].page.funcs = 
&sdma_v4_0_page_ring_funcs;
+                       adev->sdma.instance[i].page.me = i;
+               }
        }
 }
 
@@ -2054,7 +2061,10 @@ static void sdma_v4_0_set_vm_pte_funcs(struct 
amdgpu_device *adev)
 
        adev->vm_manager.vm_pte_funcs = &sdma_v4_0_vm_pte_funcs;
        for (i = 0; i < adev->sdma.num_instances; i++) {
-               sched = &adev->sdma.instance[i].page.sched;
+               if (!(adev->flags & AMD_IS_APU))
+                       sched = &adev->sdma.instance[i].page.sched;
+               else
+                       sched = &adev->sdma.instance[i].ring.sched;
                adev->vm_manager.vm_pte_rqs[i] =
                        &sched->sched_rq[DRM_SCHED_PRIORITY_KERNEL];
        }
-- 
2.17.1

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to