Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdgpu: correct RLC firmwares loading sequence

Per confirmation with RLC firmware team, the RLC should
be unhalted after all RLC related firmwares uploaded.
However, in fact the RLC is unhalted immediately after
RLCG firmware uploaded. And that may causes unexpected
PSP hang on loading the succeeding RLC save restore
list related firmwares.
So, we correct the firmware loading sequence to load
RLC save restore list related firmwares before RLCG
ucode. That will help to get around this issue.

Signed-off-by: Evan Quan <evan.quan@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Evan Quan and committed by
Alex Deucher
0753e56e b8ab58f3

+2 -2
+1 -1
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
··· 1466 1466 1467 1467 /* Start rlc autoload after psp recieved all the gfx firmware */ 1468 1468 if (psp->autoload_supported && ucode->ucode_id == (amdgpu_sriov_vf(adev) ? 1469 - AMDGPU_UCODE_ID_CP_MEC2 : AMDGPU_UCODE_ID_RLC_RESTORE_LIST_SRM_MEM)) { 1469 + AMDGPU_UCODE_ID_CP_MEC2 : AMDGPU_UCODE_ID_RLC_G)) { 1470 1470 ret = psp_rlc_autoload(psp); 1471 1471 if (ret) { 1472 1472 DRM_ERROR("Failed to start rlc autoload\n");
+1 -1
drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.h
··· 300 300 AMDGPU_UCODE_ID_CP_MEC2_JT, 301 301 AMDGPU_UCODE_ID_CP_MES, 302 302 AMDGPU_UCODE_ID_CP_MES_DATA, 303 - AMDGPU_UCODE_ID_RLC_G, 304 303 AMDGPU_UCODE_ID_RLC_RESTORE_LIST_CNTL, 305 304 AMDGPU_UCODE_ID_RLC_RESTORE_LIST_GPM_MEM, 306 305 AMDGPU_UCODE_ID_RLC_RESTORE_LIST_SRM_MEM, 306 + AMDGPU_UCODE_ID_RLC_G, 307 307 AMDGPU_UCODE_ID_STORAGE, 308 308 AMDGPU_UCODE_ID_SMC, 309 309 AMDGPU_UCODE_ID_UVD,