[v1 4/4] drm/amdgpu: simplify invoke of psp_ta_init_shared_buf()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux