Skip to content

Commit 23f4a2d

Browse files
hongkzha-amdalexdeucher
authored andcommitted
drm/amdgpu: fix ttm_bo calltrace warning in psp_hw_fini
The call trace occurs when the amdgpu is removed after the mode1 reset. During mode1 reset, from suspend to resume, there is no need to reinitialize the ta firmware buffer which caused the bo pin_count increase redundantly. [ 489.885525] Call Trace: [ 489.885525] <TASK> [ 489.885526] amdttm_bo_put+0x34/0x50 [amdttm] [ 489.885529] amdgpu_bo_free_kernel+0xe8/0x130 [amdgpu] [ 489.885620] psp_free_shared_bufs+0xb7/0x150 [amdgpu] [ 489.885720] psp_hw_fini+0xce/0x170 [amdgpu] [ 489.885815] amdgpu_device_fini_hw+0x2ff/0x413 [amdgpu] [ 489.885960] ? blocking_notifier_chain_unregister+0x56/0xb0 [ 489.885962] amdgpu_driver_unload_kms+0x51/0x60 [amdgpu] [ 489.886049] amdgpu_pci_remove+0x5a/0x140 [amdgpu] [ 489.886132] ? __pm_runtime_resume+0x60/0x90 [ 489.886134] pci_device_remove+0x3e/0xb0 [ 489.886135] __device_release_driver+0x1ab/0x2a0 [ 489.886137] driver_detach+0xf3/0x140 [ 489.886138] bus_remove_driver+0x6c/0xf0 [ 489.886140] driver_unregister+0x31/0x60 [ 489.886141] pci_unregister_driver+0x40/0x90 [ 489.886142] amdgpu_exit+0x15/0x451 [amdgpu] Signed-off-by: Horatio Zhang <[email protected]> Signed-off-by: longlyao <[email protected]> Reviewed-by: Guchun Chen <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent cca3306 commit 23f4a2d

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1683,7 +1683,7 @@ static int psp_hdcp_initialize(struct psp_context *psp)
16831683
psp->hdcp_context.context.mem_context.shared_mem_size = PSP_HDCP_SHARED_MEM_SIZE;
16841684
psp->hdcp_context.context.ta_load_type = GFX_CMD_ID_LOAD_TA;
16851685

1686-
if (!psp->hdcp_context.context.initialized) {
1686+
if (!psp->hdcp_context.context.mem_context.shared_buf) {
16871687
ret = psp_ta_init_shared_buf(psp, &psp->hdcp_context.context.mem_context);
16881688
if (ret)
16891689
return ret;
@@ -1750,7 +1750,7 @@ static int psp_dtm_initialize(struct psp_context *psp)
17501750
psp->dtm_context.context.mem_context.shared_mem_size = PSP_DTM_SHARED_MEM_SIZE;
17511751
psp->dtm_context.context.ta_load_type = GFX_CMD_ID_LOAD_TA;
17521752

1753-
if (!psp->dtm_context.context.initialized) {
1753+
if (!psp->dtm_context.context.mem_context.shared_buf) {
17541754
ret = psp_ta_init_shared_buf(psp, &psp->dtm_context.context.mem_context);
17551755
if (ret)
17561756
return ret;
@@ -1818,7 +1818,7 @@ static int psp_rap_initialize(struct psp_context *psp)
18181818
psp->rap_context.context.mem_context.shared_mem_size = PSP_RAP_SHARED_MEM_SIZE;
18191819
psp->rap_context.context.ta_load_type = GFX_CMD_ID_LOAD_TA;
18201820

1821-
if (!psp->rap_context.context.initialized) {
1821+
if (!psp->rap_context.context.mem_context.shared_buf) {
18221822
ret = psp_ta_init_shared_buf(psp, &psp->rap_context.context.mem_context);
18231823
if (ret)
18241824
return ret;

0 commit comments

Comments
 (0)