Fence signaling must be enabled to make sure that
the dma_fence_is_signaled() function ever returns true.
Since drivers and implementations sometimes mess this up,
this ensures correct behaviour when DEBUG_WW_MUTEX_SLOWPATH
is used during debugging.
This should make any implementation bugs resulting in not
signaled fences much more obvious.
Arvind Yadav (6):
[PATCH v4 1/6] dma-buf: Remove the signaled bit status check
[PATCH v4 2/6] dma-buf: set signaling bit for the stub fence
[PATCH v4 3/6] dma-buf: Enable signaling on fence for selftests
[PATCH v4 4/6] dma-buf: dma_fence_wait must enable signaling
[PATCH v4 5/6] drm/sched: Use parent fence instead of finished
[PATCH v4 6/6] dma-buf: Check status of enable-signaling bit on debug
drivers/dma-buf/Kconfig | 7 +++++++
drivers/dma-buf/dma-fence.c | 16 ++++++++++------
drivers/dma-buf/st-dma-fence-chain.c | 4 ++++
drivers/dma-buf/st-dma-fence-unwrap.c | 22 ++++++++++++++++++++++
drivers/dma-buf/st-dma-fence.c | 16 ++++++++++++++++
drivers/dma-buf/st-dma-resv.c | 10 ++++++++++
drivers/gpu/drm/scheduler/sched_main.c | 4 ++--
include/linux/dma-fence.h | 5 +++++
8 files changed, 76 insertions(+), 8 deletions(-)
--
2.25.1
Fence signaling must be enabled to make sure that
the dma_fence_is_signaled() function ever returns true.
Since drivers and implementations sometimes mess this up,
this ensures correct behaviour when DEBUG_WW_MUTEX_SLOWPATH
is used during debugging.
This should make any implementation bugs resulting in not
signaled fences much more obvious.
Arvind Yadav (6):
[PATCH v3 1/6] dma-buf: Remove the signaled bit status check
[PATCH v3 2/6] dma-buf: set signaling bit for the stub fence
[PATCH v3 3/6] dma-buf: Enable signaling on fence for selftests
[PATCH v3 4/6] drm/amdgpu: Enable signaling on fence.
[PATCH v3 5/6] drm/sched: Use parent fence instead of finished
[PATCH v3 6/6] dma-buf: Check status of enable-signaling bit on debug
drivers/dma-buf/dma-fence.c | 7 ++++---
drivers/dma-buf/st-dma-fence-chain.c | 4 ++++
drivers/dma-buf/st-dma-fence-unwrap.c | 22 ++++++++++++++++++++++
drivers/dma-buf/st-dma-fence.c | 16 ++++++++++++++++
drivers/dma-buf/st-dma-resv.c | 10 ++++++++++
drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c | 2 ++
drivers/gpu/drm/scheduler/sched_main.c | 4 ++--
include/linux/dma-fence.h | 5 +++++
8 files changed, 65 insertions(+), 5 deletions(-)
--
2.25.1
TTM, GEM, DRM or the core DMA-buf framework are needs
to enable software signaling before the fence is signaled.
The core DMA-buf framework software can forget to call
enable_signaling before the fence is signaled. It means
framework code can forget to call dma_fence_enable_sw_signaling()
before calling dma_fence_is_signaled(). To avoid this scenario
on debug kernel, check the DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT bit
status before checking the MA_FENCE_FLAG_SIGNALED_BIT bit status
to confirm that software signaling is enabled.
Arvind Yadav (4):
[PATCH v2 1/4] drm/sched: Enable signaling for finished fence
[PATCH v2 2/4] dma-buf: enable signaling for the stub fence on debug
[PATCH v2 3/4] dma-buf: enable signaling for selftest fence on debug
[PATCH v2 4/4] dma-buf: Check status of enable-signaling bit on debug
drivers/dma-buf/dma-fence.c | 7 ++++
drivers/dma-buf/st-dma-fence-chain.c | 8 +++++
drivers/dma-buf/st-dma-fence-unwrap.c | 44 ++++++++++++++++++++++++++
drivers/dma-buf/st-dma-fence.c | 25 ++++++++++++++-
drivers/dma-buf/st-dma-resv.c | 20 ++++++++++++
drivers/gpu/drm/scheduler/sched_main.c | 2 ++
include/linux/dma-fence.h | 5 +++
7 files changed, 110 insertions(+), 1 deletion(-)
--
2.25.1