From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932688AbcGLKwY (ORCPT ); Tue, 12 Jul 2016 06:52:24 -0400 Received: from mail-wm0-f65.google.com ([74.125.82.65]:36592 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751187AbcGLKwX (ORCPT ); Tue, 12 Jul 2016 06:52:23 -0400 Date: Tue, 12 Jul 2016 12:52:18 +0200 From: Daniel Vetter To: Gustavo Padovan Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Daniel Stone , Daniel Vetter , Rob Clark , Greg Hackmann , John Harrison , laurent.pinchart@ideasonboard.com, seanpaul@google.com, marcheu@google.com, m.chehab@samsung.com, Sumit Semwal , Maarten Lankhorst , Gustavo Padovan Subject: Re: [RFC 3/5] dma-buf/fence: add .get_fences() ops Message-ID: <20160712105218.GE23520@phenom.ffwll.local> Mail-Followup-To: Gustavo Padovan , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Daniel Stone , Rob Clark , Greg Hackmann , John Harrison , laurent.pinchart@ideasonboard.com, seanpaul@google.com, marcheu@google.com, m.chehab@samsung.com, Sumit Semwal , Maarten Lankhorst , Gustavo Padovan References: <1466695790-2833-1-git-send-email-gustavo@padovan.org> <1466695790-2833-4-git-send-email-gustavo@padovan.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1466695790-2833-4-git-send-email-gustavo@padovan.org> X-Operating-System: Linux phenom 4.6.0-rc5+ User-Agent: Mutt/1.6.0 (2016-04-01) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jun 23, 2016 at 12:29:48PM -0300, Gustavo Padovan wrote: > From: Gustavo Padovan > > get_fences() should return a copy of all fences in the fence as some > fence subclass (such as fence_array) can store more than one fence at > time. > > Signed-off-by: Gustavo Padovan > --- > drivers/dma-buf/fence.c | 14 ++++++++++++++ > include/linux/fence.h | 3 +++ > 2 files changed, 17 insertions(+) > > diff --git a/drivers/dma-buf/fence.c b/drivers/dma-buf/fence.c > index 4e61afb..f4094fd 100644 > --- a/drivers/dma-buf/fence.c > +++ b/drivers/dma-buf/fence.c > @@ -185,6 +185,20 @@ void fence_release(struct kref *kref) > } > EXPORT_SYMBOL(fence_release); > kerneldoc missing. -Daniel > +struct fence **fence_get_fences(struct fence *fence) > +{ > + if (fence->ops->get_fences) { > + return fence->ops->get_fences(fence); > + } else { > + struct fence **fences = kmalloc(sizeof(**fences), GFP_KERNEL); > + if (!fences) > + return NULL; > + fences[0] = fence; > + return fences; > + } > +} > +EXPORT_SYMBOL(fence_get_fences); > + > void fence_teardown(struct fence *fence) > { > if (fence->ops->teardown) > diff --git a/include/linux/fence.h b/include/linux/fence.h > index 1d3b671..a7a2fbc 100644 > --- a/include/linux/fence.h > +++ b/include/linux/fence.h > @@ -111,6 +111,7 @@ struct fence_cb { > * struct fence_ops - operations implemented for fence > * @get_driver_name: returns the driver name. > * @get_timeline_name: return the name of the context this fence belongs to. > + * @get_fences: return an array with a copy of all fences in the fence. > * @enable_signaling: enable software signaling of fence. > * @signaled: [optional] peek whether the fence is signaled, can be null. > * @wait: custom wait implementation, or fence_default_wait. > @@ -175,6 +176,7 @@ struct fence_cb { > struct fence_ops { > const char * (*get_driver_name)(struct fence *fence); > const char * (*get_timeline_name)(struct fence *fence); > + struct fence ** (*get_fences)(struct fence *fence); > bool (*enable_signaling)(struct fence *fence); > bool (*signaled)(struct fence *fence); > signed long (*wait)(struct fence *fence, bool intr, signed long timeout); > @@ -189,6 +191,7 @@ struct fence_ops { > void fence_init(struct fence *fence, const struct fence_ops *ops, > spinlock_t *lock, u64 context, unsigned seqno); > > +struct fence **fence_get_fences(struct fence *fence); > void fence_release(struct kref *kref); > void fence_teardown(struct fence *fence); > void fence_free(struct fence *fence); > -- > 2.5.5 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch