Here's setting software signaling bit for the stub fence
which is always signaled. If this fence signaling bit is
not set then the AMD GPU scheduler will cause a GPU reset
due to a GPU scheduler cleanup activity timeout.

Signed-off-by: Arvind Yadav <arvind.ya...@amd.com>
Reviewed-by: Christian König <christian.koe...@amd.com>
---

Changes in v1 :
1- Addressing Christian's comment to remove unnecessary callback.
2- Replacing CONFIG_DEBUG_WW_MUTEX_SLOWPATH instead of CONFIG_DEBUG_FS.
3- The version of this patch is also changed and previously
it was [PATCH 3/4]

Changes in v2 :
1 - perviously using  __dma_fence_enable_signaling() for enable
signaling.
2 - #ifdef CONFIG_DEBUG_WW_MUTEX_SLOWPATH  removed

Changes in v3 :
1 - Enable Signaling bit for dma_fence_allocate_private_stub.

---
 drivers/dma-buf/dma-fence.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c
index 64c99739ad23..645c158b7e01 100644
--- a/drivers/dma-buf/dma-fence.c
+++ b/drivers/dma-buf/dma-fence.c
@@ -136,6 +136,10 @@ struct dma_fence *dma_fence_get_stub(void)
                               &dma_fence_stub_ops,
                               &dma_fence_stub_lock,
                               0, 0);
+
+               set_bit(DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT,
+                       &dma_fence_stub.flags);
+
                dma_fence_signal_locked(&dma_fence_stub);
        }
        spin_unlock(&dma_fence_stub_lock);
@@ -161,6 +165,10 @@ struct dma_fence *dma_fence_allocate_private_stub(void)
                       &dma_fence_stub_ops,
                       &dma_fence_stub_lock,
                       0, 0);
+
+       set_bit(DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT,
+               &dma_fence_stub.flags);
+
        dma_fence_signal(fence);
 
        return fence;
-- 
2.25.1

Reply via email to