]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
Revert "drm/amdgpu: Program xcp_ctl registers as needed"
authorMangesh Gadre <Mangesh.Gadre@amd.com>
Wed, 11 Oct 2023 08:33:17 +0000 (16:33 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 19 Oct 2023 22:26:50 +0000 (18:26 -0400)
This reverts commit 0bdebfef3fb2b6291000765eaa9c6c8030293fce.

XCP_CTL register is programmed by firmware and
register access is protected.

Signed-off-by: Mangesh Gadre <Mangesh.Gadre@amd.com>
Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
Reviewed-by: Asad Kamal <asad.kamal@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c

index db179d085efa6657a45c08c74e249bda389a05c1..a1c2c952d882f0e56c2d60d8e53d4b2d43bb3f3d 100644 (file)
@@ -623,7 +623,7 @@ static int gfx_v9_4_3_switch_compute_partition(struct amdgpu_device *adev,
                                                int num_xccs_per_xcp)
 {
        int ret, i, num_xcc;
-       u32 tmp = 0, regval;
+       u32 tmp = 0;
 
        if (adev->psp.funcs) {
                ret = psp_spatial_partition(&adev->psp,
@@ -631,24 +631,23 @@ static int gfx_v9_4_3_switch_compute_partition(struct amdgpu_device *adev,
                                                    num_xccs_per_xcp);
                if (ret)
                        return ret;
-       }
-
-       num_xcc = NUM_XCC(adev->gfx.xcc_mask);
+       } else {
+               num_xcc = NUM_XCC(adev->gfx.xcc_mask);
 
-       for (i = 0; i < num_xcc; i++) {
-               tmp = REG_SET_FIELD(tmp, CP_HYP_XCP_CTL, NUM_XCC_IN_XCP,
-                                   num_xccs_per_xcp);
-               tmp = REG_SET_FIELD(tmp, CP_HYP_XCP_CTL, VIRTUAL_XCC_ID,
-                                   i % num_xccs_per_xcp);
-               regval = RREG32_SOC15(GC, GET_INST(GC, i), regCP_HYP_XCP_CTL);
-               if (regval != tmp)
+               for (i = 0; i < num_xcc; i++) {
+                       tmp = REG_SET_FIELD(tmp, CP_HYP_XCP_CTL, NUM_XCC_IN_XCP,
+                                           num_xccs_per_xcp);
+                       tmp = REG_SET_FIELD(tmp, CP_HYP_XCP_CTL, VIRTUAL_XCC_ID,
+                                           i % num_xccs_per_xcp);
                        WREG32_SOC15(GC, GET_INST(GC, i), regCP_HYP_XCP_CTL,
                                     tmp);
+               }
+               ret = 0;
        }
 
        adev->gfx.num_xcc_per_xcp = num_xccs_per_xcp;
 
-       return 0;
+       return ret;
 }
 
 static int gfx_v9_4_3_ih_to_xcc_inst(struct amdgpu_device *adev, int ih_node)