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 <ge...@linux.alibaba.com>
---
 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

Reply via email to