In SRIOV environment, KMD should access GC registers
with RLCG if GC indirect access flag enabled.

Change GC register access from MMIO to RLCG.

Signed-off-by: Peng Ju Zhou <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c | 34 +++++++++++++-------------
 1 file changed, 17 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c 
b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
index b1d5b08e4f06..0265a082d791 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
@@ -5016,17 +5016,17 @@ static void gfx_v10_0_tcp_harvest(struct amdgpu_device 
*adev)
                                        }
                                }
 
-                               tmp = RREG32_SOC15(GC, 0, 
mmUTCL1_UTCL0_INVREQ_DISABLE);
+                               tmp = RREG32_SOC15_RLC(GC, 0, 
mmUTCL1_UTCL0_INVREQ_DISABLE);
                                /* only override TCP & SQC bits */
                                tmp &= 0xffffffff << (4 * max_wgp_per_sh);
                                tmp |= (utcl_invreq_disable & 
utcl_invreq_disable_mask);
-                               WREG32_SOC15(GC, 0, 
mmUTCL1_UTCL0_INVREQ_DISABLE, tmp);
+                               WREG32_SOC15_RLC(GC, 0, 
mmUTCL1_UTCL0_INVREQ_DISABLE, tmp);
 
-                               tmp = RREG32_SOC15(GC, 0, 
mmGCRD_SA_TARGETS_DISABLE);
+                               tmp = RREG32_SOC15_RLC(GC, 0, 
mmGCRD_SA_TARGETS_DISABLE);
                                /* only override TCP bits */
                                tmp &= 0xffffffff << (2 * max_wgp_per_sh);
                                tmp |= (gcrd_targets_disable_tcp & 
gcrd_targets_disable_mask);
-                               WREG32_SOC15(GC, 0, mmGCRD_SA_TARGETS_DISABLE, 
tmp);
+                               WREG32_SOC15_RLC(GC, 0, 
mmGCRD_SA_TARGETS_DISABLE, tmp);
                        }
                }
 
@@ -5044,8 +5044,8 @@ static void gfx_v10_0_get_tcc_info(struct amdgpu_device 
*adev)
                tcc_disable = RREG32_SOC15_RLC(GC, 0, 
mmCGTS_TCC_DISABLE_gc_10_3) |
                              RREG32_SOC15_RLC(GC, 0, 
mmCGTS_USER_TCC_DISABLE_gc_10_3);
        } else {
-               tcc_disable = RREG32_SOC15(GC, 0, mmCGTS_TCC_DISABLE) |
-                             RREG32_SOC15(GC, 0, mmCGTS_USER_TCC_DISABLE);
+               tcc_disable = RREG32_SOC15_RLC(GC, 0, mmCGTS_TCC_DISABLE) |
+                             RREG32_SOC15_RLC(GC, 0, mmCGTS_USER_TCC_DISABLE);
        }
 
        adev->gfx.config.tcc_disabled_mask =
@@ -5058,7 +5058,7 @@ static void gfx_v10_0_constants_init(struct amdgpu_device 
*adev)
        u32 tmp;
        int i;
 
-       WREG32_FIELD15(GC, 0, GRBM_CNTL, READ_TIMEOUT, 0xff);
+       WREG32_FIELD15_RLC(GC, 0, GRBM_CNTL, READ_TIMEOUT, 0xff);
 
        gfx_v10_0_setup_rb(adev);
        gfx_v10_0_get_cu_info(adev, &adev->gfx.cu_info);
@@ -6794,10 +6794,10 @@ static int gfx_v10_0_kiq_init_register(struct 
amdgpu_ring *ring)
 
        /* inactivate the queue */
        if (amdgpu_sriov_vf(adev))
-               WREG32_SOC15(GC, 0, mmCP_HQD_ACTIVE, 0);
+               WREG32_SOC15_RLC(GC, 0, mmCP_HQD_ACTIVE, 0);
 
        /* disable wptr polling */
-       WREG32_FIELD15(GC, 0, CP_PQ_WPTR_POLL_CNTL, EN, 0);
+       WREG32_FIELD15_RLC(GC, 0, CP_PQ_WPTR_POLL_CNTL, EN, 0);
 
        /* write the EOP addr */
        WREG32_SOC15_RLC(GC, 0, mmCP_HQD_EOP_BASE_ADDR,
@@ -7103,15 +7103,15 @@ static bool gfx_v10_0_check_grbm_cam_remapping(struct 
amdgpu_device *adev)
        case CHIP_VANGOGH:
                return true;
        default:
-               data = RREG32_SOC15(GC, 0, mmVGT_ESGS_RING_SIZE);
-               WREG32_SOC15(GC, 0, mmVGT_ESGS_RING_SIZE, 0);
-               WREG32_SOC15(GC, 0, mmVGT_ESGS_RING_SIZE_UMD, pattern);
+               data = RREG32_SOC15_RLC(GC, 0, mmVGT_ESGS_RING_SIZE);
+               WREG32_SOC15_RLC(GC, 0, mmVGT_ESGS_RING_SIZE, 0);
+               WREG32_SOC15_RLC(GC, 0, mmVGT_ESGS_RING_SIZE_UMD, pattern);
 
-               if (RREG32_SOC15(GC, 0, mmVGT_ESGS_RING_SIZE) == pattern) {
-                       WREG32_SOC15(GC, 0, mmVGT_ESGS_RING_SIZE_UMD, data);
+               if (RREG32_SOC15_RLC(GC, 0, mmVGT_ESGS_RING_SIZE) == pattern) {
+                       WREG32_SOC15_RLC(GC, 0, mmVGT_ESGS_RING_SIZE_UMD, data);
                        return true;
                } else {
-                       WREG32_SOC15(GC, 0, mmVGT_ESGS_RING_SIZE, data);
+                       WREG32_SOC15_RLC(GC, 0, mmVGT_ESGS_RING_SIZE, data);
                        return false;
                }
                break;
@@ -7358,9 +7358,9 @@ static int gfx_v10_0_hw_fini(void *handle)
        if (amdgpu_sriov_vf(adev)) {
                gfx_v10_0_cp_gfx_enable(adev, false);
                /* Program KIQ position of RLC_CP_SCHEDULERS during destroy */
-               tmp = RREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS);
+               tmp = RREG32_SOC15_RLC(GC, 0, mmRLC_CP_SCHEDULERS);
                tmp &= 0xffffff00;
-               WREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS, tmp);
+               WREG32_SOC15_RLC(GC, 0, mmRLC_CP_SCHEDULERS, tmp);
 
                return 0;
        }
-- 
2.17.1

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

Reply via email to