[ Sasha's backport helper bot ]
Hi,
✅ All tests passed successfully. No issues detected. No action required from the submitter.
The upstream commit SHA1 provided is correct: e58337100721f3cc0c7424a18730e4f39844934f
WARNING: Author mismatch between patch and upstream commit: Backport author: Zhi YangZhi.Yang@eng.windriver.com Commit author: Zack Rusinzack.rusin@broadcom.com
Status in newer kernel trees: 6.14.y | Present (exact SHA1) 6.12.y | Present (exact SHA1) 6.6.y | Present (different SHA1: a8943969f9ea) 6.1.y | Present (different SHA1: 3b933b16c996) 5.15.y | Present (different SHA1: 9e20d028d8d1)
Note: The patch differs from the upstream commit: --- 1: e58337100721f ! 1: cdcabc8bb962b drm/vmwgfx: Fix a deadlock in dma buf fence polling @@ Metadata ## Commit message ## drm/vmwgfx: Fix a deadlock in dma buf fence polling
+ commit e58337100721f3cc0c7424a18730e4f39844934f upstream. + Introduce a version of the fence ops that on release doesn't remove the fence from the pending list, and thus doesn't require a lock to fix poll->fence wait->fence unref deadlocks. @@ Commit message Reviewed-by: Maaz Mombasawala maaz.mombasawala@broadcom.com Reviewed-by: Martin Krastev martin.krastev@broadcom.com Link: https://patchwork.freedesktop.org/patch/msgid/20240722184313.181318-2-zack.r... + [Minor context change fixed] + Signed-off-by: Zhi Yang Zhi.Yang@windriver.com + Signed-off-by: He Zhe zhe.he@windriver.com
## drivers/gpu/drm/vmwgfx/vmwgfx_fence.c ## @@ @@ drivers/gpu/drm/vmwgfx/vmwgfx_fence.c: static const struct dma_fence_ops vmw_fen };
- - /* + /** * Execute signal actions on fences recently signaled. * This is done from a workqueue so we don't have to execute @@ drivers/gpu/drm/vmwgfx/vmwgfx_fence.c: static int vmw_fence_obj_init(struct vmw_fence_manager *fman, @@ drivers/gpu/drm/vmwgfx/vmwgfx_fence.c: static int vmw_fence_obj_init(struct vmw_ out_unlock: spin_unlock(&fman->lock); @@ drivers/gpu/drm/vmwgfx/vmwgfx_fence.c: static bool vmw_fence_goal_new_locked(struct vmw_fence_manager *fman, - u32 passed_seqno) { u32 goal_seqno; + u32 *fifo_mem; - struct vmw_fence_obj *fence; + struct vmw_fence_obj *fence, *next_fence;
@@ drivers/gpu/drm/vmwgfx/vmwgfx_fence.c: static bool vmw_fence_goal_new_locked(str + list_for_each_entry_safe(fence, next_fence, &fman->fence_list, head) { if (!list_empty(&fence->seq_passed_actions)) { fman->seqno_valid = true; - vmw_fence_goal_write(fman->dev_priv, + vmw_mmio_write(fence->base.seqno, ---
Results of testing on various branches:
| Branch | Patch Apply | Build Test | |---------------------------|-------------|------------| | stable/linux-5.10.y | Success | Success |