On Thu, Jun 27, 2019 at 12:18:12PM +0200, Christian König wrote: > They are not used that often and certainly not in a hot path. > Make them normal functions instead of an inline. > > Signed-off-by: Christian König <christian.koenig@xxxxxxx> Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > --- > drivers/dma-buf/reservation.c | 45 ++++++++++++++++++++++++++++++++++ > include/linux/reservation.h | 46 ++--------------------------------- > 2 files changed, 47 insertions(+), 44 deletions(-) > > diff --git a/drivers/dma-buf/reservation.c b/drivers/dma-buf/reservation.c > index 4d32e2c67862..ef710effedfa 100644 > --- a/drivers/dma-buf/reservation.c > +++ b/drivers/dma-buf/reservation.c > @@ -55,6 +55,51 @@ EXPORT_SYMBOL(reservation_seqcount_class); > const char reservation_seqcount_string[] = "reservation_seqcount"; > EXPORT_SYMBOL(reservation_seqcount_string); > > +/** > + * reservation_object_init - initialize a reservation object > + * @obj: the reservation object > + */ > +void reservation_object_init(struct reservation_object *obj) > +{ > + ww_mutex_init(&obj->lock, &reservation_ww_class); > + > + __seqcount_init(&obj->seq, reservation_seqcount_string, > + &reservation_seqcount_class); > + RCU_INIT_POINTER(obj->fence, NULL); > + RCU_INIT_POINTER(obj->fence_excl, NULL); > +} > +EXPORT_SYMBOL(reservation_object_init); > + > +/** > + * reservation_object_fini - destroys a reservation object > + * @obj: the reservation object > + */ > +void reservation_object_fini(struct reservation_object *obj) > +{ > + int i; > + struct reservation_object_list *fobj; > + struct dma_fence *excl; > + > + /* > + * This object should be dead and all references must have > + * been released to it, so no need to be protected with rcu. > + */ > + excl = rcu_dereference_protected(obj->fence_excl, 1); > + if (excl) > + dma_fence_put(excl); > + > + fobj = rcu_dereference_protected(obj->fence, 1); > + if (fobj) { > + for (i = 0; i < fobj->shared_count; ++i) > + dma_fence_put(rcu_dereference_protected(fobj->shared[i], 1)); > + > + kfree(fobj); > + } > + > + ww_mutex_destroy(&obj->lock); > +} > +EXPORT_SYMBOL(reservation_object_fini); > + > /** > * reservation_object_reserve_shared - Reserve space to add shared fences to > * a reservation_object. > diff --git a/include/linux/reservation.h b/include/linux/reservation.h > index ee750765cc94..f47e8196d039 100644 > --- a/include/linux/reservation.h > +++ b/include/linux/reservation.h > @@ -81,50 +81,6 @@ struct reservation_object { > #define reservation_object_assert_held(obj) \ > lockdep_assert_held(&(obj)->lock.base) > > -/** > - * reservation_object_init - initialize a reservation object > - * @obj: the reservation object > - */ > -static inline void > -reservation_object_init(struct reservation_object *obj) > -{ > - ww_mutex_init(&obj->lock, &reservation_ww_class); > - > - __seqcount_init(&obj->seq, reservation_seqcount_string, &reservation_seqcount_class); > - RCU_INIT_POINTER(obj->fence, NULL); > - RCU_INIT_POINTER(obj->fence_excl, NULL); > -} > - > -/** > - * reservation_object_fini - destroys a reservation object > - * @obj: the reservation object > - */ > -static inline void > -reservation_object_fini(struct reservation_object *obj) > -{ > - int i; > - struct reservation_object_list *fobj; > - struct dma_fence *excl; > - > - /* > - * This object should be dead and all references must have > - * been released to it, so no need to be protected with rcu. > - */ > - excl = rcu_dereference_protected(obj->fence_excl, 1); > - if (excl) > - dma_fence_put(excl); > - > - fobj = rcu_dereference_protected(obj->fence, 1); > - if (fobj) { > - for (i = 0; i < fobj->shared_count; ++i) > - dma_fence_put(rcu_dereference_protected(fobj->shared[i], 1)); > - > - kfree(fobj); > - } > - > - ww_mutex_destroy(&obj->lock); > -} > - > /** > * reservation_object_get_list - get the reservation object's > * shared fence list, with update-side lock held > @@ -267,6 +223,8 @@ reservation_object_get_excl_rcu(struct reservation_object *obj) > return fence; > } > > +void reservation_object_init(struct reservation_object *obj); > +void reservation_object_fini(struct reservation_object *obj); > int reservation_object_reserve_shared(struct reservation_object *obj, > unsigned int num_fences); > void reservation_object_add_shared_fence(struct reservation_object *obj, > -- > 2.17.1 > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel