Enhance psp_ta_init_shared_buf() to check whether the shared buffer has already been allocated, and return success if it's allocated. So caller doesn't need to check the initialized flag. Signed-off-by: Jiang Liu <gerry@xxxxxxxxxxxxxxxxx> --- drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 53 ++++++++++--------------- 1 file changed, 22 insertions(+), 31 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c index 952da6c7943d..407f4a3bb3e6 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c @@ -1232,6 +1232,10 @@ static void psp_prep_ta_load_cmd_buf(struct psp_gfx_cmd_resp *cmd, int psp_ta_init_shared_buf(struct psp_context *psp, struct ta_mem_context *mem_ctx) { + if (mem_ctx->shared_bo) { + return 0; + } + /* * Allocate 16k memory aligned to 4k from Frame Buffer (local * physical) for ta to host memory @@ -1339,11 +1343,9 @@ int psp_xgmi_initialize(struct psp_context *psp, bool set_extended_data, bool lo psp->xgmi_context.context.mem_context.shared_mem_size = PSP_XGMI_SHARED_MEM_SIZE; psp->xgmi_context.context.ta_load_type = GFX_CMD_ID_LOAD_TA; - if (!psp->xgmi_context.context.mem_context.shared_buf) { - ret = psp_ta_init_shared_buf(psp, &psp->xgmi_context.context.mem_context); - if (ret) - return ret; - } + ret = psp_ta_init_shared_buf(psp, &psp->xgmi_context.context.mem_context); + if (ret) + return ret; /* Load XGMI TA */ ret = psp_ta_load(psp, &psp->xgmi_context.context); @@ -1844,11 +1846,9 @@ int psp_ras_initialize(struct psp_context *psp) psp->ras_context.context.mem_context.shared_mem_size = PSP_RAS_SHARED_MEM_SIZE; psp->ras_context.context.ta_load_type = GFX_CMD_ID_LOAD_TA; - if (!psp->ras_context.context.mem_context.shared_buf) { - ret = psp_ta_init_shared_buf(psp, &psp->ras_context.context.mem_context); - if (ret) - return ret; - } + ret = psp_ta_init_shared_buf(psp, &psp->ras_context.context.mem_context); + if (ret) + return ret; ras_cmd = (struct ta_ras_shared_memory *)psp->ras_context.context.mem_context.shared_buf; memset(ras_cmd, 0, sizeof(struct ta_ras_shared_memory)); @@ -1972,11 +1972,9 @@ static int psp_hdcp_initialize(struct psp_context *psp) psp->hdcp_context.context.mem_context.shared_mem_size = PSP_HDCP_SHARED_MEM_SIZE; psp->hdcp_context.context.ta_load_type = GFX_CMD_ID_LOAD_TA; - if (!psp->hdcp_context.context.mem_context.shared_buf) { - ret = psp_ta_init_shared_buf(psp, &psp->hdcp_context.context.mem_context); - if (ret) - return ret; - } + ret = psp_ta_init_shared_buf(psp, &psp->hdcp_context.context.mem_context); + if (ret) + return ret; ret = psp_ta_load(psp, &psp->hdcp_context.context); if (!ret) { @@ -2046,11 +2044,9 @@ static int psp_dtm_initialize(struct psp_context *psp) psp->dtm_context.context.mem_context.shared_mem_size = PSP_DTM_SHARED_MEM_SIZE; psp->dtm_context.context.ta_load_type = GFX_CMD_ID_LOAD_TA; - if (!psp->dtm_context.context.mem_context.shared_buf) { - ret = psp_ta_init_shared_buf(psp, &psp->dtm_context.context.mem_context); - if (ret) - return ret; - } + ret = psp_ta_init_shared_buf(psp, &psp->dtm_context.context.mem_context); + if (ret) + return ret; ret = psp_ta_load(psp, &psp->dtm_context.context); if (!ret) { @@ -2117,11 +2113,9 @@ static int psp_rap_initialize(struct psp_context *psp) psp->rap_context.context.mem_context.shared_mem_size = PSP_RAP_SHARED_MEM_SIZE; psp->rap_context.context.ta_load_type = GFX_CMD_ID_LOAD_TA; - if (!psp->rap_context.context.mem_context.shared_buf) { - ret = psp_ta_init_shared_buf(psp, &psp->rap_context.context.mem_context); - if (ret) - return ret; - } + ret = psp_ta_init_shared_buf(psp, &psp->rap_context.context.mem_context); + if (ret) + return ret; ret = psp_ta_load(psp, &psp->rap_context.context); if (!ret) { @@ -2220,12 +2214,9 @@ static int psp_securedisplay_initialize(struct psp_context *psp) PSP_SECUREDISPLAY_SHARED_MEM_SIZE; psp->securedisplay_context.context.ta_load_type = GFX_CMD_ID_LOAD_TA; - if (!psp->securedisplay_context.context.initialized) { - ret = psp_ta_init_shared_buf(psp, - &psp->securedisplay_context.context.mem_context); - if (ret) - return ret; - } + ret = psp_ta_init_shared_buf(psp, &psp->securedisplay_context.context.mem_context); + if (ret) + return ret; ret = psp_ta_load(psp, &psp->securedisplay_context.context); if (!ret) { -- 2.43.5