[PATCH] drm/amdgpu: Release memory when psp sw_init is failed

Wang, Yang(Kevin) KevinYang.Wang at amd.com
Mon Apr 11 13:10:18 UTC 2022


[AMD Official Use Only]


________________________________
From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> on behalf of Ma Jun <Jun.Ma2 at amd.com>
Sent: Monday, April 11, 2022 8:42 PM
To: amd-gfx at lists.freedesktop.org <amd-gfx at lists.freedesktop.org>
Cc: Deucher, Alexander <Alexander.Deucher at amd.com>; Koenig, Christian <Christian.Koenig at amd.com>; Zhang, Hawking <Hawking.Zhang at amd.com>
Subject: [PATCH] drm/amdgpu: Release memory when psp sw_init is failed

Release the memory (psp->cmd) when psp initialization is
failed in psp_sw_init

Signed-off-by: Ma Jun <Jun.Ma2 at amd.com>
Change-Id: I2f88b5919142d55dd7d3820a7da94823286db235
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
index a6acec1a6155..1227dc014c80 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
@@ -305,9 +305,10 @@ static int psp_sw_init(void *handle)
                 ret = psp_init_sriov_microcode(psp);
         else
                 ret = psp_init_microcode(psp);
+
         if (ret) {
                 DRM_ERROR("Failed to load psp firmware!\n");
-               return ret;
+               goto failure;
         }

         adev->psp.xgmi_context.supports_extended_data =
@@ -339,25 +340,27 @@ static int psp_sw_init(void *handle)
                 ret = psp_memory_training_init(psp);
                 if (ret) {
                         DRM_ERROR("Failed to initialize memory training!\n");
-                       return ret;
+                       goto failure;
                 }

                 ret = psp_mem_training(psp, PSP_MEM_TRAIN_COLD_BOOT);
                 if (ret) {
                         DRM_ERROR("Failed to process memory training!\n");
-                       return ret;
+                       goto failure;
                 }
         }

         if (adev->ip_versions[MP0_HWIP][0] == IP_VERSION(11, 0, 0) ||
             adev->ip_versions[MP0_HWIP][0] == IP_VERSION(11, 0, 7)) {
                 ret= psp_sysfs_init(adev);
-               if (ret) {
-                       return ret;
-               }
+               if (ret)
+                       goto failure;
         }

         return 0;
+failure:
+       kfree(psp->cmd);
+       return ret;
[kevin]:

  1.  do you forget to set 'psp->cmd' to NULL?
  2.  according to my understanding, the buf will not be used in the function (in psp sw init stage), can you move this to end of function to mke patch logic is clearly.

Best Regards,
Kevin
 }

 static int psp_sw_fini(void *handle)
--
2.25.1

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20220411/cee2936c/attachment-0001.htm>


More information about the amd-gfx mailing list