mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-04-24 14:07:52 -04:00
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: Hawking Zhang <Hawking.Zhang@amd.com> Signed-off-by: John Clements <john.clements@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
5f87611582
commit
c2c6f816a8
2 changed files with 10 additions and 2 deletions
|
@ -200,6 +200,7 @@ psp_cmd_submit_buf(struct psp_context *psp,
|
|||
int ret;
|
||||
int index;
|
||||
int timeout = 2000;
|
||||
bool ras_intr = false;
|
||||
|
||||
mutex_lock(&psp->mutex);
|
||||
|
||||
|
@ -224,7 +225,8 @@ psp_cmd_submit_buf(struct psp_context *psp,
|
|||
* because gpu reset thread triggered and lock resource should
|
||||
* be released for psp resume sequence.
|
||||
*/
|
||||
if (amdgpu_ras_intr_triggered())
|
||||
ras_intr = amdgpu_ras_intr_triggered();
|
||||
if (ras_intr)
|
||||
break;
|
||||
msleep(1);
|
||||
amdgpu_asic_invalidate_hdp(psp->adev, NULL);
|
||||
|
@ -237,7 +239,7 @@ psp_cmd_submit_buf(struct psp_context *psp,
|
|||
* during psp initialization to avoid breaking hw_init and it doesn't
|
||||
* return -EINVAL.
|
||||
*/
|
||||
if (psp->cmd_buf_mem->resp.status || !timeout) {
|
||||
if ((psp->cmd_buf_mem->resp.status || !timeout) && !ras_intr) {
|
||||
if (ucode)
|
||||
DRM_WARN("failed to load ucode id (%d) ",
|
||||
ucode->ucode_id);
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
|
||||
#include "amdgpu.h"
|
||||
#include "amdgpu_psp.h"
|
||||
#include "amdgpu_ras.h"
|
||||
#include "amdgpu_ucode.h"
|
||||
#include "soc15_common.h"
|
||||
#include "psp_v11_0.h"
|
||||
|
@ -868,6 +869,11 @@ static int psp_v11_0_ras_trigger_error(struct psp_context *psp,
|
|||
if (ret)
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue