DF-3654 / run.log
handle_hpd_rx_irq() hpd_lock pairing matrix (amdgpu_dm.c:1209 x 1251): entry=single exit=single lock=1 unlock=1 : balanced entry=single exit=mst_branch lock=1 unlock=0 : STRANDED LOCK entry=mst_branch exit=single lock=0 unlock=1 : UNLOCK WITHOUT HOLD entry=mst_branch exit=mst_branch lock=0 unlock=0 : balanced 2 unbalanced combinations; both flips occur INSIDE the handler: single -> mst_branch : dc_link.c:528 (dc_link_detect discovers branch) mst_branch-> single : dc_link.c:569 (start_top_mgr fails, sink-controlled) Consequences of a stranded hpd_lock (entry=single, exit=mst_branch): - handle_hpd_irq() (amdgpu_dm.c:1083) blocks forever in its work item - dm_resume()/dm_suspend() block forever (amdgpu_dm.c:864,878) - amdgpu_dm_irq_fini() flush_work() hangs (amdgpu_dm_irq.c:334) EXIT=0