On March 18, 2021 08:13:41 Daniel Vetter <daniel@xxxxxxxx> wrote:
On Thu, Mar 18, 2021 at 10:38:11AM +0100, Christian König wrote:Am 17.03.21 um 23:19 schrieb Jason Ekstrand:From: Christian König <ckoenig.leichtzumerken@xxxxxxxxx>Add a helper to iterate over all fences in a dma_fence_array object.v2 (Jason Ekstrand)- Return NULL from dma_fence_array_first if head == NULL. This matchesthe iterator behavior of dma_fence_chain_for_each in that it iterateszero times if head == NULL.- Return NULL from dma_fence_array_next if index > array->num_fences.Is there any reason you send this patch alone out once more?I don't see any changes compared to the last version.Last patch has changed. Also I think mail delivery is a bit wobbly rightnow.
Sorry. I'm still getting used to mailing lists again. Too spoiled by GitLab. My intention was to re-send the series because I updated the last one. I think it's in pretty good shape now.
--Jason
-DanielChristian.Signed-off-by: Jason Ekstrand <jason@xxxxxxxxxxxxxx>---drivers/dma-buf/dma-fence-array.c | 27 +++++++++++++++++++++++++++include/linux/dma-fence-array.h | 17 +++++++++++++++++2 files changed, 44 insertions(+)diff --git a/drivers/dma-buf/dma-fence-array.c b/drivers/dma-buf/dma-fence-array.cindex d3fbd950be944..2ac1afc697d0f 100644--- a/drivers/dma-buf/dma-fence-array.c+++ b/drivers/dma-buf/dma-fence-array.c@@ -201,3 +201,30 @@ bool dma_fence_match_context(struct dma_fence *fence, u64 context)return true;}EXPORT_SYMBOL(dma_fence_match_context);++struct dma_fence *dma_fence_array_first(struct dma_fence *head)+{+ struct dma_fence_array *array;++ if (!head)+ return NULL;++ array = to_dma_fence_array(head);+ if (!array)+ return head;++ return array->fences[0];+}+EXPORT_SYMBOL(dma_fence_array_first);++struct dma_fence *dma_fence_array_next(struct dma_fence *head,+ unsigned int index)+{+ struct dma_fence_array *array = to_dma_fence_array(head);++ if (!array || index >= array->num_fences)+ return NULL;++ return array->fences[index];+}+EXPORT_SYMBOL(dma_fence_array_next);diff --git a/include/linux/dma-fence-array.h b/include/linux/dma-fence-array.hindex 303dd712220fd..588ac8089dd61 100644--- a/include/linux/dma-fence-array.h+++ b/include/linux/dma-fence-array.h@@ -74,6 +74,19 @@ to_dma_fence_array(struct dma_fence *fence)return container_of(fence, struct dma_fence_array, base);}+/**+ * dma_fence_array_for_each - iterate over all fences in array+ * @fence: current fence+ * @index: index into the array+ * @head: potential dma_fence_array object+ *+ * Test if @array is a dma_fence_array object and if yes iterate over all fences+ * in the array. If not just iterate over the fence in @array itself.+ */+#define dma_fence_array_for_each(fence, index, head) \+ for (index = 0, fence = dma_fence_array_first(head); fence; \+ ++(index), fence = dma_fence_array_next(head, index))+struct dma_fence_array *dma_fence_array_create(int num_fences,struct dma_fence **fences,u64 context, unsigned seqno,@@ -81,4 +94,8 @@ struct dma_fence_array *dma_fence_array_create(int num_fences,bool dma_fence_match_context(struct dma_fence *fence, u64 context);+struct dma_fence *dma_fence_array_first(struct dma_fence *head);+struct dma_fence *dma_fence_array_next(struct dma_fence *head,+ unsigned int index);+#endif /* __LINUX_DMA_FENCE_ARRAY_H */_______________________________________________dri-devel mailing listdri-devel@xxxxxxxxxxxxxxxxxxxxxhttps://lists.freedesktop.org/mailman/listinfo/dri-devel--Daniel VetterSoftware Engineer, Intel Corporationhttp://blog.ffwll.ch
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel