From: Gustavo Padovan <gustavo.padovan@xxxxxxxxxxxxxxx> struct sync_pt was just wrapping around struct fence and creating an extra abstraction layer. The only two members of struct sync_pt, child_list and active_list, were moved to struct fence in an earlier commit. After removing those two members struct sync_pt is nothing more than struct fence, so remove it all and use struct fence directly. Signed-off-by: Gustavo Padovan <gustavo.padovan@xxxxxxxxxxxxxxx> --- drivers/staging/android/sw_sync.c | 7 +++--- drivers/staging/android/sw_sync.h | 8 +++---- drivers/staging/android/sync.c | 33 ++++++++++++----------------- drivers/staging/android/sync.h | 21 ++++-------------- drivers/staging/android/sync_debug.c | 41 ++++++++++++++++++------------------ drivers/staging/android/trace/sync.h | 14 ++++++------ 6 files changed, 53 insertions(+), 71 deletions(-) diff --git a/drivers/staging/android/sw_sync.c b/drivers/staging/android/sw_sync.c index 98f9a29..9d6a5bd 100644 --- a/drivers/staging/android/sw_sync.c +++ b/drivers/staging/android/sw_sync.c @@ -25,7 +25,7 @@ #include "sw_sync.h" -struct sync_pt *sw_sync_pt_create(struct sw_sync_timeline *obj, u32 value) +struct fence *sw_sync_pt_create(struct sw_sync_timeline *obj, u32 value) { struct sw_sync_pt *pt; @@ -34,7 +34,7 @@ struct sync_pt *sw_sync_pt_create(struct sw_sync_timeline *obj, u32 value) pt->value = value; - return (struct sync_pt *)pt; + return (struct fence *)pt; } EXPORT_SYMBOL(sw_sync_pt_create); @@ -50,8 +50,7 @@ static int sw_sync_fence_has_signaled(struct fence *fence) static int sw_sync_fill_driver_data(struct fence *fence, void *data, int size) { - struct sync_pt *sync_pt = (struct sync_pt *)fence; - struct sw_sync_pt *pt = (struct sw_sync_pt *)sync_pt; + struct sw_sync_pt *pt = (struct sw_sync_pt *)fence; if (size < sizeof(pt->value)) return -ENOMEM; diff --git a/drivers/staging/android/sw_sync.h b/drivers/staging/android/sw_sync.h index cb62298..85ef780 100644 --- a/drivers/staging/android/sw_sync.h +++ b/drivers/staging/android/sw_sync.h @@ -29,7 +29,7 @@ struct sw_sync_timeline { }; struct sw_sync_pt { - struct sync_pt pt; + struct fence pt; u32 value; }; @@ -38,7 +38,7 @@ struct sw_sync_pt { struct sw_sync_timeline *sw_sync_timeline_create(const char *name); void sw_sync_timeline_inc(struct sw_sync_timeline *obj, u32 inc); -struct sync_pt *sw_sync_pt_create(struct sw_sync_timeline *obj, u32 value); +struct fence *sw_sync_pt_create(struct sw_sync_timeline *obj, u32 value); #else static inline struct sw_sync_timeline *sw_sync_timeline_create(const char *name) { @@ -49,8 +49,8 @@ static inline void sw_sync_timeline_inc(struct sw_sync_timeline *obj, u32 inc) { } -static inline struct sync_pt *sw_sync_pt_create(struct sw_sync_timeline *obj, - u32 value) +static inline struct fence *sw_sync_pt_create(struct sw_sync_timeline *obj, + u32 value) { return NULL; } diff --git a/drivers/staging/android/sync.c b/drivers/staging/android/sync.c index b07bc24..417cf9f 100644 --- a/drivers/staging/android/sync.c +++ b/drivers/staging/android/sync.c @@ -39,7 +39,7 @@ struct fence *sync_pt_create(struct fence_timeline *obj, int size) unsigned long flags; struct fence *fence; - if (size < sizeof(struct sync_pt)) + if (size < sizeof(*fence)) return NULL; fence = kzalloc(size, GFP_KERNEL); @@ -57,12 +57,6 @@ struct fence *sync_pt_create(struct fence_timeline *obj, int size) } EXPORT_SYMBOL(sync_pt_create); -void sync_pt_free(struct sync_pt *pt) -{ - fence_put(&pt->base); -} -EXPORT_SYMBOL(sync_pt_free); - static struct sync_fence *sync_fence_alloc(int size, const char *name) { struct sync_fence *sync_fence; @@ -101,7 +95,7 @@ static void fence_check_cb_func(struct fence *f, struct fence_cb *cb) } /* TODO: implement a create which takes more that one sync_pt */ -struct sync_fence *sync_fence_create_dma(const char *name, struct fence *pt) +struct sync_fence *sync_fence_create_dma(const char *name, struct fence *fence) { struct sync_fence *sync_fence; @@ -113,9 +107,10 @@ struct sync_fence *sync_fence_create_dma(const char *name, struct fence *pt) sync_fence->num_fences = 1; atomic_set(&sync_fence->status, 1); - sync_fence->cbs[0].fence = pt; + sync_fence->cbs[0].fence = fence; sync_fence->cbs[0].sync_fence = sync_fence; - if (fence_add_callback(pt, &sync_fence->cbs[0].cb, fence_check_cb_func)) + if (fence_add_callback(fence, &sync_fence->cbs[0].cb, + fence_check_cb_func)) atomic_dec(&sync_fence->status); sync_fence_debug_add(sync_fence); @@ -124,9 +119,9 @@ struct sync_fence *sync_fence_create_dma(const char *name, struct fence *pt) } EXPORT_SYMBOL(sync_fence_create_dma); -struct sync_fence *sync_fence_create(const char *name, struct sync_pt *pt) +struct sync_fence *sync_fence_create(const char *name, struct fence *fence) { - return sync_fence_create_dma(name, &pt->base); + return sync_fence_create_dma(name, fence); } EXPORT_SYMBOL(sync_fence_create); @@ -161,14 +156,14 @@ void sync_fence_install(struct sync_fence *sync_fence, int fd) EXPORT_SYMBOL(sync_fence_install); static void sync_fence_add_pt(struct sync_fence *sync_fence, - int *i, struct fence *pt) + int *i, struct fence *fence) { - sync_fence->cbs[*i].fence = pt; + sync_fence->cbs[*i].fence = fence; sync_fence->cbs[*i].sync_fence = sync_fence; - if (!fence_add_callback(pt, &sync_fence->cbs[*i].cb, + if (!fence_add_callback(fence, &sync_fence->cbs[*i].cb, fence_check_cb_func)) { - fence_get(pt); + fence_get(fence); (*i)++; } } @@ -300,7 +295,7 @@ int sync_fence_wait(struct sync_fence *sync_fence, long timeout) trace_sync_wait(sync_fence, 1); for (i = 0; i < sync_fence->num_fences; ++i) - trace_sync_pt(sync_fence->cbs[i].fence); + trace_fence(sync_fence->cbs[i].fence); ret = wait_event_interruptible_timeout(sync_fence->wq, atomic_read(&sync_fence->status) <= 0, timeout); @@ -589,9 +584,9 @@ static long sync_fence_ioctl_fence_info(struct sync_fence *sync_fence, len = sizeof(struct sync_fence_info_data); for (i = 0; i < sync_fence->num_fences; ++i) { - struct fence *pt = sync_fence->cbs[i].fence; + struct fence *fence = sync_fence->cbs[i].fence; - ret = sync_fill_pt_info(pt, (u8 *)data + len, size - len); + ret = sync_fill_pt_info(fence, (u8 *)data + len, size - len); if (ret < 0) goto out; diff --git a/drivers/staging/android/sync.h b/drivers/staging/android/sync.h index 53658cc..e011111 100644 --- a/drivers/staging/android/sync.h +++ b/drivers/staging/android/sync.h @@ -25,10 +25,6 @@ struct sync_fence; -struct sync_pt { - struct fence base; -}; - struct sync_fence_cb { struct fence_cb cb; struct fence *fence; @@ -89,23 +85,14 @@ static inline void sync_fence_waiter_init(struct sync_fence_waiter *waiter, struct fence *sync_pt_create(struct fence_timeline *parent, int size); /** - * sync_pt_free() - frees a sync pt - * @pt: sync_pt to free - * - * This should only be called on sync_pts which have been created but - * not added to a fence. - */ -void sync_pt_free(struct sync_pt *pt); - -/** * sync_fence_create() - creates a sync fence * @name: name of fence to create - * @pt: sync_pt to add to the fence + * @fence: fence to add to the sync_fence * - * Creates a fence containg @pt. Once this is called, the fence takes - * ownership of @pt. + * Creates a fence containg @fence. Once this is called, the fence takes + * ownership of @fence. */ -struct sync_fence *sync_fence_create(const char *name, struct sync_pt *pt); +struct sync_fence *sync_fence_create(const char *name, struct fence *fence); /** * sync_fence_create_dma() - creates a sync fence from dma-fence diff --git a/drivers/staging/android/sync_debug.c b/drivers/staging/android/sync_debug.c index f5fd8c3..b8602d2 100644 --- a/drivers/staging/android/sync_debug.c +++ b/drivers/staging/android/sync_debug.c @@ -85,39 +85,40 @@ static const char *sync_status_str(int status) return "error"; } -static void sync_print_pt(struct seq_file *s, struct fence *pt, bool fence) +static void sync_print_fence(struct seq_file *s, struct fence *fence, bool show) { int status = 1; + struct fence_timeline *parent = fence_parent(fence); - if (fence_is_signaled_locked(pt)) - status = pt->status; + if (fence_is_signaled_locked(fence)) + status = fence->status; - seq_printf(s, " %s%spt %s", - fence && pt->ops->get_timeline_name ? - pt->ops->get_timeline_name(pt) : "", - fence ? "_" : "", + seq_printf(s, " %s%sfence %s", + show ? parent->name : "", + show ? "_" : "", sync_status_str(status)); if (status <= 0) { struct timespec64 ts64 = - ktime_to_timespec64(pt->timestamp); + ktime_to_timespec64(fence->timestamp); seq_printf(s, "@%lld.%09ld", (s64)ts64.tv_sec, ts64.tv_nsec); } - if ((!fence || pt->ops->timeline_value_str) && - pt->ops->fence_value_str) { + if ((!fence || fence->ops->timeline_value_str) && + fence->ops->fence_value_str) { char value[64]; bool success; - pt->ops->fence_value_str(pt, value, sizeof(value)); + fence->ops->fence_value_str(fence, value, sizeof(value)); success = strlen(value); if (success) seq_printf(s, ": %s", value); if (success && fence) { - pt->ops->timeline_value_str(pt, value, sizeof(value)); + fence->ops->timeline_value_str(fence, value, + sizeof(value)); if (strlen(value)) seq_printf(s, " / %s", value); @@ -145,9 +146,9 @@ static void sync_print_obj(struct seq_file *s, struct fence_timeline *obj) spin_lock_irqsave(&obj->lock, flags); list_for_each(pos, &obj->child_list_head) { - struct sync_pt *pt = (struct sync_pt *) + struct fence *fence = container_of(pos, struct fence, child_list); - sync_print_pt(s, &pt->base, false); + sync_print_fence(s, fence, false); } spin_unlock_irqrestore(&obj->lock, flags); } @@ -163,7 +164,7 @@ static void sync_print_sync_fence(struct seq_file *s, sync_status_str(atomic_read(&sync_fence->status))); for (i = 0; i < sync_fence->num_fences; ++i) { - sync_print_pt(s, sync_fence->cbs[i].fence, true); + sync_print_fence(s, sync_fence->cbs[i].fence, true); } spin_lock_irqsave(&sync_fence->wq.lock, flags); @@ -260,7 +261,7 @@ static long sw_sync_ioctl_create_fence(struct sw_sync_timeline *obj, { int fd = get_unused_fd_flags(O_CLOEXEC); int err; - struct sync_pt *pt; + struct fence *fence; struct sync_fence *sync_fence; struct sw_sync_create_fence_data data; @@ -272,16 +273,16 @@ static long sw_sync_ioctl_create_fence(struct sw_sync_timeline *obj, goto err; } - pt = sw_sync_pt_create(obj, data.value); - if (!pt) { + fence = sw_sync_pt_create(obj, data.value); + if (!fence) { err = -ENOMEM; goto err; } data.name[sizeof(data.name) - 1] = '\0'; - sync_fence = sync_fence_create(data.name, pt); + sync_fence = sync_fence_create(data.name, fence); if (!sync_fence) { - sync_pt_free(pt); + fence_put(fence); err = -ENOMEM; goto err; } diff --git a/drivers/staging/android/trace/sync.h b/drivers/staging/android/trace/sync.h index 59c337f..4f68515 100644 --- a/drivers/staging/android/trace/sync.h +++ b/drivers/staging/android/trace/sync.h @@ -29,20 +29,20 @@ TRACE_EVENT(sync_wait, __get_str(name), __entry->status) ); -TRACE_EVENT(sync_pt, - TP_PROTO(struct fence *pt), +TRACE_EVENT(fence, + TP_PROTO(struct fence *fence), - TP_ARGS(pt), + TP_ARGS(fence), TP_STRUCT__entry( - __string(timeline, pt->ops->get_timeline_name(pt)) + __string(timeline, fence->ops->get_timeline_name(fence)) __array(char, value, 32) ), TP_fast_assign( - __assign_str(timeline, pt->ops->get_timeline_name(pt)); - if (pt->ops->fence_value_str) { - pt->ops->fence_value_str(pt, __entry->value, + __assign_str(timeline, fence->ops->get_timeline_name(fence)); + if (fence->ops->fence_value_str) { + fence->ops->fence_value_str(fence, __entry->value, sizeof(__entry->value)); } else { __entry->value[0] = '\0'; -- 2.5.0 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel