• Gustavo Padovan's avatar
    dma-buf/sync_file: refactor fence storage in struct sync_file · a02b9dc9
    Gustavo Padovan authored
    Create sync_file->fence to abstract the type of fence we are using for
    each sync_file. If only one fence is present we use a normal struct fence
    but if there is more fences to be added to the sync_file a fence_array
    is created.
    
    This change cleans up sync_file a bit. We don't need to have sync_file_cb
    array anymore. Instead, as we always have  one fence, only one fence
    callback is registered per sync_file.
    
    v2: Comments from Chris Wilson and Christian König
    	- Not using fence_ops anymore
    	- fence_is_array() was created to differentiate fence from fence_array
    	- fence_array_teardown() is now exported and used under fence_is_array()
    	- struct sync_file lost num_fences member
    
    v3: Comments from Chris Wilson and Christian König
    	- struct sync_file lost status member in favor of fence_is_signaled()
    	- drop use of fence_array_teardown()
    	- use sizeof(*fence) to allocate only an array on fence pointers
    
    v4: Comments from Chris Wilson
    	- use sizeof(*fence) to reallocate array
    	- fix typo in comments
    	- protect num_fences sum against overflows
    	- use array->base instead of casting the to struct fence
    
    v5: fixes checkpatch warnings
    
    v6: fix case where all fences are signaled.
    Signed-off-by: default avatarGustavo Padovan <gustavo.padovan@collabora.co.uk>
    Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Acked-by: default avatarChristian König <christian.koenig@amd.com>
    Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: default avatarSumit Semwal <sumit.semwal@linaro.org>
    a02b9dc9
sync_file.c 9.99 KB