drm/amdgpu: Use single copy per SDMA instance type (v2)
authorLijo Lazar <lijo.lazar@amd.com>
Thu, 28 Jul 2022 06:12:44 +0000 (11:42 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 9 Jun 2023 14:57:16 +0000 (10:57 -0400)
v1: Only single copy per instance type is required for PSP. All instance types
use the same firmware copy. (Lijo)

v2: Apply the change into amdgpu_sdma_init_microcode() due to rebase. (Morris)

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

index 9568ada..78ec342 100644 (file)
@@ -252,6 +252,13 @@ int amdgpu_sdma_init_microcode(struct amdgpu_device *adev,
                                if (!duplicate && (instance != i))
                                        continue;
                                else {
+                                       /* Use a single copy per SDMA firmware type. PSP uses the same instance for all
+                                        * groups of SDMAs */
+                                       if (adev->ip_versions[SDMA0_HWIP][0] == IP_VERSION(4, 4, 2) &&
+                                           adev->firmware.load_type == AMDGPU_FW_LOAD_PSP &&
+                                           adev->sdma.num_inst_per_aid == i) {
+                                               break;
+                                       }
                                        info = &adev->firmware.ucode[AMDGPU_UCODE_ID_SDMA0 + i];
                                        info->ucode_id = AMDGPU_UCODE_ID_SDMA0 + i;
                                        info->fw = adev->sdma.instance[i].fw;