[AMD Official Use Only - Internal Distribution Only]

Reviewed-by: Le Ma <[email protected]>

Regards,
Ma Le
-----Original Message-----
From: Hawking Zhang <[email protected]> 
Sent: Friday, December 6, 2019 6:12 PM
To: [email protected]; Ma, Le <[email protected]>; Clements, John 
<[email protected]>; Deucher, Alexander <[email protected]>; Chen, 
Guchun <[email protected]>
Cc: Zhang, Hawking <[email protected]>
Subject: [PATCH] drm/amdgpu: fix resume failures due to psp fw loading sequence 
change (v3)

this fix the regression caused by asd/ta loading sequence adjustment recently. 
asd/ta loading was move out from hw_start and should also be applied to 
psp_resume.
otherwise those fw loading will be ignored in resume phase.

v2: add the mutex unlock for asd loading failure case
v3: merge the error handling to failed tag

Change-Id: I20d3651f325e793e1ea7e73df1c76219eaa0b5ab
Signed-off-by: Hawking Zhang <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 33 +++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
index ceea8314d88d..2dfda5590e77 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
@@ -1702,6 +1702,39 @@ static int psp_resume(void *handle)
        if (ret)
                goto failed;
 
+       ret = psp_asd_load(psp);
+       if (ret) {
+               DRM_ERROR("PSP load asd failed!\n");
+               goto failed;
+       }
+
+       if (adev->gmc.xgmi.num_physical_nodes > 1) {
+               ret = psp_xgmi_initialize(psp);
+               /* Warning the XGMI seesion initialize failure
+                * Instead of stop driver initialization
+                */
+               if (ret)
+                       dev_err(psp->adev->dev,
+                               "XGMI: Failed to initialize XGMI session\n");
+       }
+
+       if (psp->adev->psp.ta_fw) {
+               ret = psp_ras_initialize(psp);
+               if (ret)
+                       dev_err(psp->adev->dev,
+                                       "RAS: Failed to initialize RAS\n");
+
+               ret = psp_hdcp_initialize(psp);
+               if (ret)
+                       dev_err(psp->adev->dev,
+                               "HDCP: Failed to initialize HDCP\n");
+
+               ret = psp_dtm_initialize(psp);
+               if (ret)
+                       dev_err(psp->adev->dev,
+                               "DTM: Failed to initialize DTM\n");
+       }
+
        mutex_unlock(&adev->firmware.mutex);
 
        return 0;
--
2.17.1
_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to