Re: [PATCH 02/11] dma-buf/fence: add fence_array fences v6

From: Sumit Semwal
Date: Wed Jun 01 2016 - 12:24:47 EST


Hi Christian, Gustavo,

Thanks for these patches.

On 1 June 2016 at 20:55, Gustavo Padovan <gustavo@xxxxxxxxxxx> wrote:
> 2016-06-01 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.
>>
>> v5 (chk): More work and fixes:
>> - Avoid deadlocks by adding all callbacks at once again.
>> - Stop trying to remove the callbacks.
>> - Provide context and sequence number for the array fence.
>>
>> v6 (chk): Fixes found during testing
>> - Fix stupid typo in _enable_signaling().
>>
>> Signed-off-by: Gustavo Padovan <gustavo.padovan@xxxxxxxxxxxxxxx>
>> Signed-off-by: Christian KÃnig <christian.koenig@xxxxxxx>
>> ---
>> drivers/dma-buf/Makefile | 2 +-
>> drivers/dma-buf/fence-array.c | 127 ++++++++++++++++++++++++++++++++++++++++++
>> include/linux/fence-array.h | 72 ++++++++++++++++++++++++
>> 3 files changed, 200 insertions(+), 1 deletion(-)
>> create mode 100644 drivers/dma-buf/fence-array.c
>> create mode 100644 include/linux/fence-array.h
>
> This is working fine to me. Once the commit message is fixed:
>
> Reviewed-by: Gustavo Padovan <gustavo.padovan@xxxxxxxxxxxxxxx>
>
> You need to Cc Sumit here to decide who is picking these patches.
> It would be better to get them through the drm trees so we would need
> his Ack at least.
>
+1 on the commit message consistency change; post that, please feel
free to add my
Acked-by: Sumit Semwal <sumit.semwal@xxxxxxxxxx>

for the 3 dma-buf/fences patches and request to take them via DRM tree
as rightly suggested by Gustavo.

> Gustavo

BR,
Sumit.