On Tue, 28 Feb 2023 14:58:12 -0800 Rob Clark robdclark@gmail.com wrote:
From: Rob Clark robdclark@chromium.org
This consists of simply storing the most recent deadline, and adding an ioctl to retrieve the deadline. This can be used in conjunction with the SET_DEADLINE ioctl on a fence fd for testing. Ie. create various sw_sync fences, merge them into a fence-array, set deadline on the fence-array and confirm that it is propagated properly to each fence.
v2: Switch UABI to express deadline as u64 v3: More verbose UAPI docs, show how to convert from timespec v4: Better comments, track the soonest deadline, as a normal fence implementation would, return an error if no deadline set.
Signed-off-by: Rob Clark robdclark@chromium.org Reviewed-by: Christian König christian.koenig@amd.com
drivers/dma-buf/sw_sync.c | 81 ++++++++++++++++++++++++++++++++++++ drivers/dma-buf/sync_debug.h | 2 + 2 files changed, 83 insertions(+)
diff --git a/drivers/dma-buf/sw_sync.c b/drivers/dma-buf/sw_sync.c index 348b3a9170fa..f53071bca3af 100644 --- a/drivers/dma-buf/sw_sync.c +++ b/drivers/dma-buf/sw_sync.c @@ -52,12 +52,33 @@ struct sw_sync_create_fence_data { __s32 fence; /* fd of new fence */ }; +/**
- struct sw_sync_get_deadline - get the deadline hint of a sw_sync fence
- @deadline_ns: absolute time of the deadline
- @pad: must be zero
- @fence_fd: the sw_sync fence fd (in)
- Return the earliest deadline set on the fence. The timebase for the
- deadline is CLOCK_MONOTONIC (same as vblank). If there is no deadline
- set on the fence, this ioctl will return -ENOENT.
- */
+struct sw_sync_get_deadline {
- __u64 deadline_ns;
- __u32 pad;
- __s32 fence_fd;
+};
Sounds good.
diff --git a/drivers/dma-buf/sync_debug.h b/drivers/dma-buf/sync_debug.h index 6176e52ba2d7..2e0146d0bdbb 100644 --- a/drivers/dma-buf/sync_debug.h +++ b/drivers/dma-buf/sync_debug.h @@ -55,11 +55,13 @@ static inline struct sync_timeline *dma_fence_parent(struct dma_fence *fence)
- @base: base fence object
- @link: link on the sync timeline's list
- @node: node in the sync timeline's tree
- @deadline: the most recently set fence deadline
Now it's the earliest deadline.
*/ struct sync_pt { struct dma_fence base; struct list_head link; struct rb_node node;
- ktime_t deadline;
}; extern const struct file_operations sw_sync_debugfs_fops;
Acked-by: Pekka Paalanen pekka.paalanen@collabora.com
Thanks, pq