drm/amdgpu/sdma6: add ucode version checks for userq support
authorAlex Deucher <alexander.deucher@amd.com>
Thu, 19 Jun 2025 21:56:29 +0000 (17:56 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 24 Jun 2025 14:37:58 +0000 (10:37 -0400)
SDMA 6.0.0 version 24
SDMA 6.0.2 version 21
SDMA 6.0.3 version 25

Reviewed-by: Jesse Zhang <Jesse.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit e8cca30d8b34f1c4101c237914c53068d4a55e73)

drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c

index 5a70ae17be04e4c18112f67ba2b75e828f2a86c0..a9bdf8d61d6ce75794b24b2cd25e0703e94cb2f5 100644 (file)
@@ -1374,9 +1374,22 @@ static int sdma_v6_0_sw_init(struct amdgpu_ip_block *ip_block)
        else
                DRM_ERROR("Failed to allocated memory for SDMA IP Dump\n");
 
-       /* add firmware version checks here */
-       if (0 && !adev->sdma.disable_uq)
-               adev->userq_funcs[AMDGPU_HW_IP_DMA] = &userq_mes_funcs;
+       switch (amdgpu_ip_version(adev, SDMA0_HWIP, 0)) {
+       case IP_VERSION(6, 0, 0):
+               if ((adev->sdma.instance[0].fw_version >= 24) && !adev->sdma.disable_uq)
+                       adev->userq_funcs[AMDGPU_HW_IP_DMA] = &userq_mes_funcs;
+               break;
+       case IP_VERSION(6, 0, 2):
+               if ((adev->sdma.instance[0].fw_version >= 21) && !adev->sdma.disable_uq)
+                       adev->userq_funcs[AMDGPU_HW_IP_DMA] = &userq_mes_funcs;
+               break;
+       case IP_VERSION(6, 0, 3):
+               if ((adev->sdma.instance[0].fw_version >= 25) && !adev->sdma.disable_uq)
+                       adev->userq_funcs[AMDGPU_HW_IP_DMA] = &userq_mes_funcs;
+               break;
+       default:
+               break;
+       }
 
        r = amdgpu_sdma_sysfs_reset_mask_init(adev);
        if (r)