Commit c2c6f816 authored by John Clements's avatar John Clements Committed by Alex Deucher

drm/amdgpu: resolve failed error inject msg

invoking an error injection successfully will cause an at_event intterrupt that

will occur before the invoke sequence can complete causing an invalid error
Reviewed-by: default avatarHawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: default avatarJohn Clements <john.clements@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 5f876115
...@@ -200,6 +200,7 @@ psp_cmd_submit_buf(struct psp_context *psp, ...@@ -200,6 +200,7 @@ psp_cmd_submit_buf(struct psp_context *psp,
int ret; int ret;
int index; int index;
int timeout = 2000; int timeout = 2000;
bool ras_intr = false;
mutex_lock(&psp->mutex); mutex_lock(&psp->mutex);
...@@ -224,7 +225,8 @@ psp_cmd_submit_buf(struct psp_context *psp, ...@@ -224,7 +225,8 @@ psp_cmd_submit_buf(struct psp_context *psp,
* because gpu reset thread triggered and lock resource should * because gpu reset thread triggered and lock resource should
* be released for psp resume sequence. * be released for psp resume sequence.
*/ */
if (amdgpu_ras_intr_triggered()) ras_intr = amdgpu_ras_intr_triggered();
if (ras_intr)
break; break;
msleep(1); msleep(1);
amdgpu_asic_invalidate_hdp(psp->adev, NULL); amdgpu_asic_invalidate_hdp(psp->adev, NULL);
...@@ -237,7 +239,7 @@ psp_cmd_submit_buf(struct psp_context *psp, ...@@ -237,7 +239,7 @@ psp_cmd_submit_buf(struct psp_context *psp,
* during psp initialization to avoid breaking hw_init and it doesn't * during psp initialization to avoid breaking hw_init and it doesn't
* return -EINVAL. * return -EINVAL.
*/ */
if (psp->cmd_buf_mem->resp.status || !timeout) { if ((psp->cmd_buf_mem->resp.status || !timeout) && !ras_intr) {
if (ucode) if (ucode)
DRM_WARN("failed to load ucode id (%d) ", DRM_WARN("failed to load ucode id (%d) ",
ucode->ucode_id); ucode->ucode_id);
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include "amdgpu.h" #include "amdgpu.h"
#include "amdgpu_psp.h" #include "amdgpu_psp.h"
#include "amdgpu_ras.h"
#include "amdgpu_ucode.h" #include "amdgpu_ucode.h"
#include "soc15_common.h" #include "soc15_common.h"
#include "psp_v11_0.h" #include "psp_v11_0.h"
...@@ -868,6 +869,11 @@ static int psp_v11_0_ras_trigger_error(struct psp_context *psp, ...@@ -868,6 +869,11 @@ static int psp_v11_0_ras_trigger_error(struct psp_context *psp,
if (ret) if (ret)
return -EINVAL; return -EINVAL;
/* If err_event_athub occurs error inject was successful, however
return status from TA is no long reliable */
if (amdgpu_ras_intr_triggered())
return 0;
return ras_cmd->ras_status; return ras_cmd->ras_status;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment