On Tue, 28 Feb 2023 14:58:12 -0800 Rob Clark <robdclark@xxxxxxxxx> wrote: > From: Rob Clark <robdclark@xxxxxxxxxxxx> > > 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@xxxxxxxxxxxx> > Reviewed-by: Christian König <christian.koenig@xxxxxxx> > --- > 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@xxxxxxxxxxxxx> Thanks, pq
Attachment:
pgpMiS82tkkkm.pgp
Description: OpenPGP digital signature