drm/amdgpu: Fix programming of initial XCP mode
authorLijo Lazar <lijo.lazar@amd.com>
Thu, 6 Oct 2022 09:55:08 +0000 (15:25 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 9 Jun 2023 13:47:03 +0000 (09:47 -0400)
On initialization set the partition mode correctly to SPX (default) or
any other user specified partition mode. Use switch_compute_partition
API so that all settings are initialized correctly.

Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c

index 73f652a..b6b7dbb 100644 (file)
@@ -1891,6 +1891,11 @@ static int gfx_v9_4_3_cp_resume(struct amdgpu_device *adev)
                                return r;
                }
 
+               if (adev->gfx.partition_mode ==
+                   AMDGPU_UNKNOWN_COMPUTE_PARTITION_MODE)
+                       gfx_v9_4_3_switch_compute_partition(
+                               adev, amdgpu_user_partt_mode);
+
                /* set the virtual and physical id based on partition_mode */
                gfx_v9_4_3_program_xcc_id(adev, i);
 
@@ -2112,28 +2117,7 @@ static int gfx_v9_4_3_early_init(void *handle)
 
        num_xcc = NUM_XCC(adev->gfx.xcc_mask);
 
-       adev->gfx.partition_mode = amdgpu_user_partt_mode;
-       /* calculate the num_xcc_in_xcp for the partition mode*/
-       switch (amdgpu_user_partt_mode) {
-       case AMDGPU_SPX_PARTITION_MODE:
-               adev->gfx.num_xcc_per_xcp = num_xcc;
-               break;
-       case AMDGPU_DPX_PARTITION_MODE:
-               adev->gfx.num_xcc_per_xcp = num_xcc / 2;
-               break;
-       case AMDGPU_TPX_PARTITION_MODE:
-               adev->gfx.num_xcc_per_xcp = num_xcc / 3;
-               break;
-       case AMDGPU_QPX_PARTITION_MODE:
-               adev->gfx.num_xcc_per_xcp = num_xcc / 4;
-               break;
-       case AMDGPU_CPX_PARTITION_MODE:
-               adev->gfx.num_xcc_per_xcp = 1;
-               break;
-       default:
-               adev->gfx.num_xcc_per_xcp = num_xcc;
-               break;
-       }
+       adev->gfx.partition_mode = AMDGPU_UNKNOWN_COMPUTE_PARTITION_MODE;
 
        adev->gfx.num_compute_rings = min(amdgpu_gfx_get_num_kcq(adev),
                                          AMDGPU_MAX_COMPUTE_RINGS);