Skip to content

Commit 34779e1

Browse files
committed
drm/amdgpu/mes12: optimize MES pipe FW version fetching
Don't fetch it again if we already have it. It seems the registers don't reliably have the value at resume in some cases. Fixes: 785f0f9 ("drm/amdgpu: Add mes v12_0 ip block support (v4)") Reviewed-by: Shaoyun.liu <Shaoyun.liu@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> (cherry picked from commit 9e7b08d) Cc: stable@vger.kernel.org # 6.12.x
1 parent 7ba88b5 commit 34779e1

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

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

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1392,17 +1392,20 @@ static int mes_v12_0_queue_init(struct amdgpu_device *adev,
13921392
mes_v12_0_queue_init_register(ring);
13931393
}
13941394

1395-
/* get MES scheduler/KIQ versions */
1396-
mutex_lock(&adev->srbm_mutex);
1397-
soc21_grbm_select(adev, 3, pipe, 0, 0);
1395+
if (((pipe == AMDGPU_MES_SCHED_PIPE) && !adev->mes.sched_version) ||
1396+
((pipe == AMDGPU_MES_KIQ_PIPE) && !adev->mes.kiq_version)) {
1397+
/* get MES scheduler/KIQ versions */
1398+
mutex_lock(&adev->srbm_mutex);
1399+
soc21_grbm_select(adev, 3, pipe, 0, 0);
13981400

1399-
if (pipe == AMDGPU_MES_SCHED_PIPE)
1400-
adev->mes.sched_version = RREG32_SOC15(GC, 0, regCP_MES_GP3_LO);
1401-
else if (pipe == AMDGPU_MES_KIQ_PIPE && adev->enable_mes_kiq)
1402-
adev->mes.kiq_version = RREG32_SOC15(GC, 0, regCP_MES_GP3_LO);
1401+
if (pipe == AMDGPU_MES_SCHED_PIPE)
1402+
adev->mes.sched_version = RREG32_SOC15(GC, 0, regCP_MES_GP3_LO);
1403+
else if (pipe == AMDGPU_MES_KIQ_PIPE && adev->enable_mes_kiq)
1404+
adev->mes.kiq_version = RREG32_SOC15(GC, 0, regCP_MES_GP3_LO);
14031405

1404-
soc21_grbm_select(adev, 0, 0, 0, 0);
1405-
mutex_unlock(&adev->srbm_mutex);
1406+
soc21_grbm_select(adev, 0, 0, 0, 0);
1407+
mutex_unlock(&adev->srbm_mutex);
1408+
}
14061409

14071410
return 0;
14081411
}

0 commit comments

Comments
 (0)