Return RAS TA injection result to userspace that avoid
app continue to load work once injection failed.

Signed-off-by: Stanley.Yang <[email protected]>
---
 drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_ras_mgr.c | 3 +++
 drivers/gpu/drm/amd/ras/rascore/ras_psp.c        | 5 +++++
 2 files changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_ras_mgr.c 
b/drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_ras_mgr.c
index ef09a6fad659..11f01b2ec211 100644
--- a/drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_ras_mgr.c
+++ b/drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_ras_mgr.c
@@ -686,6 +686,9 @@ int amdgpu_ras_mgr_handle_ras_cmd(struct amdgpu_device 
*adev,
        if (!ret && !cmd_ctx->cmd_res && output && (out_size == 
cmd_ctx->output_size))
                memcpy(output, cmd_ctx->output_buff_raw, cmd_ctx->output_size);
 
+       if (cmd_ctx->cmd_res && cmd_id == RAS_CMD__INJECT_ERROR)
+               ret = cmd_ctx->cmd_res;
+
        kfree(cmd_ctx);
 
        return ret;
diff --git a/drivers/gpu/drm/amd/ras/rascore/ras_psp.c 
b/drivers/gpu/drm/amd/ras/rascore/ras_psp.c
index 5d556e2a7000..e26fe8107ac7 100644
--- a/drivers/gpu/drm/amd/ras/rascore/ras_psp.c
+++ b/drivers/gpu/drm/amd/ras/rascore/ras_psp.c
@@ -417,6 +417,11 @@ static int send_ras_ta_runtime_cmd(struct ras_core_context 
*ras_core,
        if (!ras_cmd->ras_status && out && out_size)
                memcpy(out, &ras_cmd->ras_out_message, out_size);
 
+       if (ras_cmd->ras_status == TA_RAS_STATUS__TEE_ERROR_ACCESS_DENIED)
+               ret = -EACCES;
+       else if (ras_cmd->ras_status)
+               ret = -EINVAL;
+
        __check_ras_ta_cmd_resp(ras_core, ras_cmd);
 
 unlock:
-- 
2.43.0

Reply via email to