drm/amdgpu: Add wait IOCTL timeline syncobj support

Add user fence wait IOCTL timeline syncobj support.

v2:(Christian)
  - handle dma_fence_wait() return value.
  - shorten the variable name syncobj_timeline_points a bit.
  - move num_points up to avoid padding issues.

v3:(Christian)
  - Handle timeline drm_syncobj_find_fence() call error
    handling
  - Use dma_fence_unwrap_for_each() in timeline fence as
    there could be more than one fence.

v4:(Christian)
  - Drop the first num_fences since fence is always included in
    the dma_fence_unwrap_for_each() iteration, when fence != f
    then fence is most likely just a container.

v5: Added Alex RB to merge the kernel UAPI changes since he has
    already approved the amdgpu_drm.h changes.

Signed-off-by: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Arunpravin Paneer Selvam
2025-04-08 16:48:16 -04:00
committed by Alex Deucher
parent a292fdecd7
commit 15e30a6e47
2 changed files with 99 additions and 8 deletions
+15 -1
View File
@@ -530,12 +530,26 @@ struct drm_amdgpu_userq_wait {
* matching fence wait info pair in @userq_fence_info.
*/
__u32 bo_wait_flags;
__u32 pad;
/**
* @num_points: A count that represents the number of timeline syncobj handles in
* syncobj_handles_array.
*/
__u32 num_points;
/**
* @syncobj_handles_array: An array of syncobj handles defined to get the
* fence wait information of every syncobj handles in the array.
*/
__u64 syncobj_handles_array;
/**
* @syncobj_timeline_handles: An array of timeline syncobj handles defined to get the
* fence wait information of every timeline syncobj handles in the array.
*/
__u64 syncobj_timeline_handles;
/**
* @syncobj_timeline_points: An array of timeline syncobj points defined to get the
* fence wait points of every timeline syncobj handles in the syncobj_handles_array.
*/
__u64 syncobj_timeline_points;
/**
* @bo_handles_array: An array of GEM BO handles defined to fetch the fence
* wait information of every BO handles in the array.