From: Hawking Zhang Date: Thu, 5 Jun 2025 16:11:10 +0000 (+0800) Subject: drm/amdgpu: Add switch_compute_partition callback for imu v12_1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=84d8beaf11571d45f1a46b7c39fc374026f3f072;p=thirdparty%2Fkernel%2Flinux.git drm/amdgpu: Add switch_compute_partition callback for imu v12_1 To enable switching compute partition mode v2: cleanup (Alex) Signed-off-by: Hawking Zhang Reviewed-by: Likun Gao Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_imu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_imu.h index 484e936812e45..ac4fd4f461335 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_imu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_imu.h @@ -36,6 +36,8 @@ struct amdgpu_imu_funcs { int (*start_imu)(struct amdgpu_device *adev); void (*program_rlc_ram)(struct amdgpu_device *adev); int (*wait_for_reset_status)(struct amdgpu_device *adev); + int (*switch_compute_partition)(struct amdgpu_device *adev, + int num_xccs_per_xcp); }; struct imu_rlc_ram_golden { diff --git a/drivers/gpu/drm/amd/amdgpu/imu_v12_1.c b/drivers/gpu/drm/amd/amdgpu/imu_v12_1.c index 28932604d986d..9dc4bf2493cfd 100644 --- a/drivers/gpu/drm/amd/amdgpu/imu_v12_1.c +++ b/drivers/gpu/drm/amd/amdgpu/imu_v12_1.c @@ -133,7 +133,26 @@ static int imu_v12_1_load_microcode(struct amdgpu_device *adev) return 0; } +static int imu_v12_1_switch_compute_partition(struct amdgpu_device *adev, + int num_xccs_per_xcp) +{ + int ret; + + if (adev->psp.funcs) { + ret = psp_spatial_partition(&adev->psp, + NUM_XCC(adev->gfx.xcc_mask) / + num_xccs_per_xcp); + if (ret) + return ret; + } + + adev->gfx.num_xcc_per_xcp = num_xccs_per_xcp; + + return 0; +} + const struct amdgpu_imu_funcs gfx_v12_1_imu_funcs = { .init_microcode = imu_v12_1_init_microcode, .load_microcode = imu_v12_1_load_microcode, + .switch_compute_partition = imu_v12_1_switch_compute_partition, };