drm/amdgpu: add support for ras init flags
authorJohn Clements <john.clements@amd.com>
Wed, 21 Apr 2021 07:01:54 +0000 (15:01 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 23 Apr 2021 21:15:33 +0000 (17:15 -0400)
conditionally configure ras for dgpu mode or poison propogation mode

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>
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
drivers/gpu/drm/amd/amdgpu/ta_ras_if.h

index a09483beb9685042914cca661f85b8ca12948bcd..9311dcc94cb6ebc96a94d43779887275efd1025c 100644 (file)
@@ -1037,6 +1037,13 @@ static int psp_ras_load(struct psp_context *psp)
        memset(psp->fw_pri_buf, 0, PSP_1_MEG);
        memcpy(psp->fw_pri_buf, psp->ta_ras_start_addr, psp->ta_ras_ucode_size);
 
+       ras_cmd = (struct ta_ras_shared_memory *)psp->ras.ras_shared_buf;
+
+       if (psp->adev->gmc.xgmi.connected_to_cpu)
+               ras_cmd->ras_in_message.init_flags.poison_mode_en = 1;
+       else
+               ras_cmd->ras_in_message.init_flags.dgpu_mode = 1;
+
        psp_prep_ta_load_cmd_buf(cmd,
                                 psp->fw_pri_mc_addr,
                                 psp->ta_ras_ucode_size,
@@ -1046,8 +1053,6 @@ static int psp_ras_load(struct psp_context *psp)
        ret = psp_cmd_submit_buf(psp, NULL, cmd,
                        psp->fence_buf_mc_addr);
 
-       ras_cmd = (struct ta_ras_shared_memory *)psp->ras.ras_shared_buf;
-
        if (!ret) {
                psp->ras.session_id = cmd->resp.session_id;
 
index 745ed0fba1ed9e56acfe70ea66b3f258ef8eb2f0..0f214a398dd8fd6d108463489367ca73bf05a0f3 100644 (file)
@@ -105,6 +105,12 @@ struct ta_ras_trigger_error_input {
        uint64_t                value;                  // method if error injection. i.e persistent, coherent etc.
 };
 
+struct ta_ras_init_flags
+{
+    uint8_t     poison_mode_en;
+    uint8_t     dgpu_mode;
+};
+
 struct ta_ras_output_flags
 {
        uint8_t    ras_init_success_flag;
@@ -115,6 +121,7 @@ struct ta_ras_output_flags
 /* Common input structure for RAS callbacks */
 /**********************************************************/
 union ta_ras_cmd_input {
+       struct ta_ras_init_flags                init_flags;
        struct ta_ras_enable_features_input     enable_features;
        struct ta_ras_disable_features_input    disable_features;
        struct ta_ras_trigger_error_input       trigger_error;