[PATCH v4 2/2] drm/amdgpu: only keep most recent fence for each context
Arvind Yadav
Arvind.Yadav at amd.com
Wed Apr 30 16:05:21 UTC 2025
Mesa passes shared bo, fence syncobj to userq_ioctl.
There can be duplicates here or some fences that are old.
This patch is remove duplicates fence and only keep the most
recent fence for each context.
v2: - Export this code from dma-fence-unwrap.c(by Christian).
v3: - To split this in a dma_buf patch and amd userq patch(by Sunil).
- No need to add a new function just re-use existing(by Christian).
v4: Export dma_fence_dedub_array function and used it(by Christian).
Cc: Alex Deucher <alexander.deucher at amd.com>
Cc: Christian Koenig <christian.koenig at amd.com>
Cc: Sunil Khatri <sunil.khatri at amd.com>
Cc: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam at amd.com>
Signed-off-by: Arvind Yadav <Arvind.Yadav at amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
index 3288c2ff692e..e3e4aeee1356 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
@@ -851,6 +851,12 @@ int amdgpu_userq_wait_ioctl(struct drm_device *dev, void *data,
fences[num_fences++] = fence;
}
+ /*
+ * Remove duplicates fence and only keep the most recent fence for
+ * each context.
+ */
+ num_fences = dma_fence_dedup_array(fences, num_fences);
+
waitq = idr_find(&userq_mgr->userq_idr, wait_info->waitq_id);
if (!waitq)
goto free_fences;
--
2.34.1
More information about the amd-gfx
mailing list