]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdgpu: Add switch_compute_partition callback for imu v12_1
authorHawking Zhang <Hawking.Zhang@amd.com>
Thu, 5 Jun 2025 16:11:10 +0000 (00:11 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 10 Dec 2025 22:35:22 +0000 (17:35 -0500)
To enable switching compute partition mode

v2: cleanup (Alex)

Signed-off-by: Hawking Zhang <Hawking.Zhang@amd.com>
Reviewed-by: Likun Gao <Likun.Gao@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_imu.h
drivers/gpu/drm/amd/amdgpu/imu_v12_1.c

index 484e936812e45437dee4841c9dbe5da823392119..ac4fd4f46133578c5a244009b004bd37890e2b40 100644 (file)
@@ -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 {
index 28932604d986d6c42ca184cc2ba8ddf5eafd7c9f..9dc4bf2493cfd6dbf587de392162982e0a0bdc00 100644 (file)
@@ -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,
 };