]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amdgpu: only keep most recent fence for each context
authorArvind Yadav <Arvind.Yadav@amd.com>
Fri, 25 Apr 2025 14:19:05 +0000 (19:49 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 5 May 2025 17:29:58 +0000 (13:29 -0400)
Keep only the latest fences to reduce the number of values
given back to userspace

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@amd.com>
Cc: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam@amd.com>
Reviewed-by: Sunil Khatri <sunil.khatri@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Arvind Yadav <Arvind.Yadav@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c

index 34200cd04f274ee922def246369381221dec678b..029cb24c28b3801c0d1f54e24ada587725caf00f 100644 (file)
@@ -852,6 +852,12 @@ int amdgpu_userq_wait_ioctl(struct drm_device *dev, void *data,
                        fences[num_fences++] = fence;
                }
 
+               /*
+                * Keep only the latest fences to reduce the number of values
+                * given back to userspace.
+                */
+               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;