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

Reply via email to