OSDN Git Service

drm/amdgpu/psp: ignore psp response status
authorAaron Liu <aaron.liu@amd.com>
Mon, 14 Jan 2019 08:08:32 +0000 (16:08 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 25 Jan 2019 21:15:34 +0000 (16:15 -0500)
In some cases, psp response status is not 0 even there is no
problem while the command is submitted. Some version of PSP FW
doesn't write 0 to that field.
So here we would like to only print a warning instead of an error
during psp initialization to avoid breaking hw_init and it doesn't
return -EINVAL.

Signed-off-by: Aaron Liu <aaron.liu@amd.com>
Reviewed-by: Huang Rui <ray.huang@amd.com>
Reviewed-by: Xiangliang Yu<Xiangliang.Yu@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Feifei Xu <Feifei.Xu@amd.com>
Reviewed-by: Paul Menzel <pmenzel+amd-gfx@molgen.mpg.de>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c

index 53c2d60..f26d8fa 100644 (file)
@@ -140,14 +140,19 @@ psp_cmd_submit_buf(struct psp_context *psp,
        while (*((unsigned int *)psp->fence_buf) != index)
                msleep(1);
 
-       /* the status field must be 0 after psp command completion */
+       /* In some cases, psp response status is not 0 even there is no
+        * problem while the command is submitted. Some version of PSP FW
+        * doesn't write 0 to that field.
+        * So here we would like to only print a warning instead of an error
+        * during psp initialization to avoid breaking hw_init and it doesn't
+        * return -EINVAL.
+        */
        if (psp->cmd_buf_mem->resp.status) {
                if (ucode)
-                       DRM_ERROR("failed to load ucode id (%d) ",
+                       DRM_WARN("failed to load ucode id (%d) ",
                                  ucode->ucode_id);
-               DRM_ERROR("psp command failed and response status is (%d)\n",
+               DRM_WARN("psp command failed and response status is (%d)\n",
                          psp->cmd_buf_mem->resp.status);
-               return -EINVAL;
        }
 
        /* get xGMI session id from response buffer */