[v1 4/4] drm/amdgpu: simplify invoke of psp_ta_init_shared_buf()
Jiang Liu
gerry at linux.alibaba.com
Fri Feb 7 06:28:52 UTC 2025
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 at 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
More information about the amd-gfx
mailing list