From: Lijo Lazar <lijo.lazar@xxxxxxx> 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@xxxxxxx> Reviewed-by: Hawking Zhang <Hawking.Zhang@xxxxxxx> Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx> --- drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c | 28 ++++++------------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c index a2534ffc677e..c80d0c2954e7 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c @@ -1897,6 +1897,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); @@ -2118,28 +2123,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); -- 2.39.2