Re: [PATCH 2/2] dma-buf/fence: add fence_array fences v4

From: Gustavo Padovan
Date: Fri May 20 2016 - 10:47:38 EST


2016-05-20 Christian König <deathsimple@xxxxxxxxxxx>:

> From: Gustavo Padovan <gustavo.padovan@xxxxxxxxxxxxxxx>
>
> struct fence_collection inherits from struct fence and carries a
> collection of fences that needs to be waited together.
>
> It is useful to translate a sync_file to a fence to remove the complexity
> of dealing with sync_files on DRM drivers. So even if there are many
> fences in the sync_file that needs to waited for a commit to happen,
> they all get added to the fence_collection and passed for DRM use as
> a standard struct fence.
>
> That means that no changes needed to any driver besides supporting fences.
>
> fence_collection's fence doesn't belong to any timeline context, so
> fence_is_later() and fence_later() are not meant to be called with
> fence_collections fences.
>
> v2: Comments by Daniel Vetter:
> - merge fence_collection_init() and fence_collection_add()
> - only add callbacks at ->enable_signalling()
> - remove fence_collection_put()
> - check for type on to_fence_collection()
> - adjust fence_is_later() and fence_later() to WARN_ON() if they
> are used with collection fences.
>
> v3: - Initialize fence_cb.node at fence init.
>
> Comments by Chris Wilson:
> - return "unbound" on fence_collection_get_timeline_name()
> - don't stop adding callbacks if one fails
> - remove redundant !! on fence_collection_enable_signaling()
> - remove redundant () on fence_collection_signaled
> - use fence_default_wait() instead
>
> v4 (chk): Rework, simplification and cleanup:
> - Drop FENCE_NO_CONTEXT handling, always allocate a context.
> - Rename to fence_array.
> - Return fixed driver name.
> - Register only one callback at a time.
> - Document that create function takes ownership of array.

This looks good to me. Dropping NO_CONTEXT was a good idea, also
registering only one callback makes it looks better.

Gustavo