psp_init_sriov_microcode() returns -EINVAL for an MP0 version it does not know about, so PSP init fails on a VF before any firmware is loaded.
Add the MP0 15.0.8 case. It needs neither cap nor ta microcode, only the autoload trigger: on a VF psp_load_non_psp_fw() starts RLC autoload once it has handed virt.autoload_ucode_id to PSP, and on this generation IMU comes from the IFWI and is skipped, which leaves MES1 DATA as the last firmware PSP receives. Signed-off-by: YuBiao Wang <[email protected]> --- drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c index 66eb2f34cc0d..453aef42556d 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c @@ -173,6 +173,9 @@ static int psp_init_sriov_microcode(struct psp_context *psp) case IP_VERSION(13, 0, 12): ret = psp_init_ta_microcode(psp, ucode_prefix); break; + case IP_VERSION(15, 0, 8): + adev->virt.autoload_ucode_id = AMDGPU_UCODE_ID_CP_MES1_DATA; + break; default: return -EINVAL; } -- 2.34.1
