From 9987a6f34e4ed074c4868d8cc5d075594c019736 Mon Sep 17 00:00:00 2001 From: Hawking Zhang Date: Sun, 15 Jun 2025 14:28:20 +0800 Subject: [PATCH] drm/amdgpu: Init partition_mode and xcc_mask for GFX_IMU_PARTITION_SWITCH Set partition_mode and physical xcc mask fields in GFX_IMU_PARTITION_SWITCH register v2: cleanup (Alex) Signed-off-by: Hawking Zhang Reviewed-by: Likun Gao Signed-off-by: Alex Deucher --- drivers/gpu/drm/amd/amdgpu/amdgpu_imu.h | 3 ++- drivers/gpu/drm/amd/amdgpu/imu_v12_1.c | 4 +++- drivers/gpu/drm/amd/amdgpu/soc_v1_0.c | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_imu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_imu.h index ac4fd4f46133..eb8537558f5f 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_imu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_imu.h @@ -37,7 +37,8 @@ struct amdgpu_imu_funcs { 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); + int num_xccs_per_xcp, + int compute_partition_mode); }; 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 9dc4bf2493cf..8e33ffcdfa4c 100644 --- a/drivers/gpu/drm/amd/amdgpu/imu_v12_1.c +++ b/drivers/gpu/drm/amd/amdgpu/imu_v12_1.c @@ -134,11 +134,13 @@ static int imu_v12_1_load_microcode(struct amdgpu_device *adev) } static int imu_v12_1_switch_compute_partition(struct amdgpu_device *adev, - int num_xccs_per_xcp) + int num_xccs_per_xcp, + int compute_partition_mode) { int ret; if (adev->psp.funcs) { + /*TODO: revisit asp interface once it's avaialble */ ret = psp_spatial_partition(&adev->psp, NUM_XCC(adev->gfx.xcc_mask) / num_xccs_per_xcp); diff --git a/drivers/gpu/drm/amd/amdgpu/soc_v1_0.c b/drivers/gpu/drm/amd/amdgpu/soc_v1_0.c index 0d8b245d49cf..ec9754f687d0 100644 --- a/drivers/gpu/drm/amd/amdgpu/soc_v1_0.c +++ b/drivers/gpu/drm/amd/amdgpu/soc_v1_0.c @@ -652,7 +652,7 @@ static int soc_v1_0_switch_partition_mode(struct amdgpu_xcp_mgr *xcp_mgr, num_xcc_per_xcp = __soc_v1_0_get_xcc_per_xcp(xcp_mgr, mode); if (adev->gfx.imu.funcs && adev->gfx.imu.funcs->switch_compute_partition) - adev->gfx.imu.funcs->switch_compute_partition(xcp_mgr->adev, num_xcc_per_xcp); + adev->gfx.imu.funcs->switch_compute_partition(xcp_mgr->adev, num_xcc_per_xcp, mode); /* Init info about new xcps */ *num_xcps = num_xcc / num_xcc_per_xcp; -- 2.47.3