[Public] struct psp_gfx_cmd_resp *cmd = acquire_psp_cmd_buf(psp);
+ /* For Navi12 and CHIP_SIENNA_CICHLID SRIOV, do not set up TMR. + * Already set up by host driver. + */ + if (amdgpu_sriov_vf(psp->adev) && psp_skip_tmr(psp)) + return 0; This will lead to a psp lock leak by acquire_psp_cmd_buf. It needs to put 'cmd = acquire_psp_cmd_buf(psp);' after SRIOV check. Regards, Guchun From: amd-gfx <amd-gfx-boun...@lists.freedesktop.org> On Behalf Of Deucher, Alexander Sent: Tuesday, March 21, 2023 10:30 PM To: Liu01, Tong (Esther) <tong.li...@amd.com>; amd-gfx@lists.freedesktop.org Cc: Xiao, Jack <jack.x...@amd.com>; Chen, Horace <horace.c...@amd.com>; Tuikov, Luben <luben.tui...@amd.com>; Quan, Evan <evan.q...@amd.com>; Koenig, Christian <christian.koe...@amd.com>; Zhang, Hawking <hawking.zh...@amd.com> Subject: Re: [PATCH] drm/amdgpu: skip unload tmr when tmr is not loaded [Public] [Public] Reviewed-by: Alex Deucher <alexander.deuc...@amd.com<mailto:alexander.deuc...@amd.com>> ________________________________ From: Tong Liu01 <tong.li...@amd.com<mailto:tong.li...@amd.com>> Sent: Tuesday, March 21, 2023 5:19 AM To: amd-gfx@lists.freedesktop.org<mailto:amd-gfx@lists.freedesktop.org> <amd-gfx@lists.freedesktop.org<mailto:amd-gfx@lists.freedesktop.org>> Cc: Quan, Evan <evan.q...@amd.com<mailto:evan.q...@amd.com>>; Chen, Horace <horace.c...@amd.com<mailto:horace.c...@amd.com>>; Tuikov, Luben <luben.tui...@amd.com<mailto:luben.tui...@amd.com>>; Koenig, Christian <christian.koe...@amd.com<mailto:christian.koe...@amd.com>>; Deucher, Alexander <alexander.deuc...@amd.com<mailto:alexander.deuc...@amd.com>>; Xiao, Jack <jack.x...@amd.com<mailto:jack.x...@amd.com>>; Zhang, Hawking <hawking.zh...@amd.com<mailto:hawking.zh...@amd.com>>; Liu01, Tong (Esther) <tong.li...@amd.com<mailto:tong.li...@amd.com>> Subject: [PATCH] drm/amdgpu: skip unload tmr when tmr is not loaded [why] For Navi12 and CHIP_SIENNA_CICHLID SRIOV, TMR is not loaded. Should also skip tmr unload Signed-off-by: Tong Liu01 <tong.li...@amd.com<mailto:tong.li...@amd.com>> --- drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c index 0b9e99c35a05..69addf2751aa 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c @@ -841,6 +841,12 @@ static int psp_tmr_unload(struct psp_context *psp) int ret; struct psp_gfx_cmd_resp *cmd = acquire_psp_cmd_buf(psp); + /* For Navi12 and CHIP_SIENNA_CICHLID SRIOV, do not set up TMR. + * Already set up by host driver. + */ + if (amdgpu_sriov_vf(psp->adev) && psp_skip_tmr(psp)) + return 0; + psp_prep_tmr_unload_cmd_buf(psp, cmd); dev_dbg(psp->adev->dev, "free PSP TMR buffer\n"); -- 2.34.1