On 24-Sep-26 12:31 PM, YuBiao Wang wrote:
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]>
Reviewed-by: Lijo Lazar <[email protected]>
Thanks,
Lijo
---
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;
}