<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<div dir="auto">
<div dir="auto"><span style="font-size: 12pt;">On March 18, 2021 08:13:41 Daniel Vetter <daniel@ffwll.ch> wrote:</span></div><div id="aqm-original" style="color: black;">
<div><br></div>
<blockquote type="cite" class="gmail_quote" style="margin: 0 0 0 0.75ex; border-left: 1px solid #808080; padding-left: 0.75ex;">
<div dir="auto">On Thu, Mar 18, 2021 at 10:38:11AM +0100, Christian König wrote:</div>
<blockquote type="cite" class="gmail_quote" style="margin: 0 0 0 0.75ex; border-left: 1px solid #0099CC; padding-left: 0.75ex;">
<div dir="auto">Am 17.03.21 um 23:19 schrieb Jason Ekstrand:</div>
<blockquote type="cite" class="gmail_quote" style="margin: 0 0 0 0.75ex; border-left: 1px solid #9933CC; padding-left: 0.75ex;">
<div dir="auto">From: Christian König <ckoenig.leichtzumerken@gmail.com></div>
<div dir="auto"><br></div>
<div dir="auto">Add a helper to iterate over all fences in a dma_fence_array object.</div>
<div dir="auto"><br></div>
<div dir="auto">v2 (Jason Ekstrand)</div>
<div dir="auto">- Return NULL from dma_fence_array_first if head == NULL.  This matches</div>
<div dir="auto">the iterator behavior of dma_fence_chain_for_each in that it iterates</div>
<div dir="auto">zero times if head == NULL.</div>
<div dir="auto">- Return NULL from dma_fence_array_next if index > array->num_fences.</div>
</blockquote>
<div dir="auto"><br></div>
<div dir="auto">Is there any reason you send this patch alone out once more?</div>
<div dir="auto"><br></div>
<div dir="auto">I don't see any changes compared to the last version.</div>
</blockquote>
<div dir="auto"><br></div>
<div dir="auto">Last patch has changed. Also I think mail delivery is a bit wobbly right</div>
<div dir="auto">now.</div></blockquote></div><div dir="auto"><br></div><div dir="auto">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.</div><div dir="auto"><br></div><div dir="auto">--Jason</div><div dir="auto"><br></div><div dir="auto"><br></div><div id="aqm-original" style="color: black;" dir="auto"><blockquote type="cite" class="gmail_quote" style="margin: 0 0 0 0.75ex; border-left: 1px solid #808080; padding-left: 0.75ex;"><div dir="auto"></div>
<div dir="auto">-Daniel</div>
<div dir="auto"><br></div>
<blockquote type="cite" class="gmail_quote" style="margin: 0 0 0 0.75ex; border-left: 1px solid #0099CC; padding-left: 0.75ex;">
<div dir="auto"><br></div>
<div dir="auto">Christian.</div>
<div dir="auto"><br></div>
<blockquote type="cite" class="gmail_quote" style="margin: 0 0 0 0.75ex; border-left: 1px solid #9933CC; padding-left: 0.75ex;">
<div dir="auto"><br></div>
<div dir="auto">Signed-off-by: Jason Ekstrand <jason@jlekstrand.net></div>
<div dir="auto">---</div>
<div dir="auto">drivers/dma-buf/dma-fence-array.c | 27 +++++++++++++++++++++++++++</div>
<div dir="auto">include/linux/dma-fence-array.h   | 17 +++++++++++++++++</div>
<div dir="auto">2 files changed, 44 insertions(+)</div>
<div dir="auto"><br></div>
<div dir="auto">diff --git a/drivers/dma-buf/dma-fence-array.c b/drivers/dma-buf/dma-fence-array.c</div>
<div dir="auto">index d3fbd950be944..2ac1afc697d0f 100644</div>
<div dir="auto">--- a/drivers/dma-buf/dma-fence-array.c</div>
<div dir="auto">+++ b/drivers/dma-buf/dma-fence-array.c</div>
<div dir="auto">@@ -201,3 +201,30 @@ bool dma_fence_match_context(struct dma_fence *fence, u64 context)</div>
<div dir="auto">return true;</div>
<div dir="auto">}</div>
<div dir="auto">EXPORT_SYMBOL(dma_fence_match_context);</div>
<div dir="auto">+</div>
<div dir="auto">+struct dma_fence *dma_fence_array_first(struct dma_fence *head)</div>
<div dir="auto">+{</div>
<div dir="auto">+       struct dma_fence_array *array;</div>
<div dir="auto">+</div>
<div dir="auto">+       if (!head)</div>
<div dir="auto">+               return NULL;</div>
<div dir="auto">+</div>
<div dir="auto">+       array = to_dma_fence_array(head);</div>
<div dir="auto">+       if (!array)</div>
<div dir="auto">+               return head;</div>
<div dir="auto">+</div>
<div dir="auto">+       return array->fences[0];</div>
<div dir="auto">+}</div>
<div dir="auto">+EXPORT_SYMBOL(dma_fence_array_first);</div>
<div dir="auto">+</div>
<div dir="auto">+struct dma_fence *dma_fence_array_next(struct dma_fence *head,</div>
<div dir="auto">+                                      unsigned int index)</div>
<div dir="auto">+{</div>
<div dir="auto">+       struct dma_fence_array *array = to_dma_fence_array(head);</div>
<div dir="auto">+</div>
<div dir="auto">+       if (!array || index >= array->num_fences)</div>
<div dir="auto">+               return NULL;</div>
<div dir="auto">+</div>
<div dir="auto">+       return array->fences[index];</div>
<div dir="auto">+}</div>
<div dir="auto">+EXPORT_SYMBOL(dma_fence_array_next);</div>
<div dir="auto">diff --git a/include/linux/dma-fence-array.h b/include/linux/dma-fence-array.h</div>
<div dir="auto">index 303dd712220fd..588ac8089dd61 100644</div>
<div dir="auto">--- a/include/linux/dma-fence-array.h</div>
<div dir="auto">+++ b/include/linux/dma-fence-array.h</div>
<div dir="auto">@@ -74,6 +74,19 @@ to_dma_fence_array(struct dma_fence *fence)</div>
<div dir="auto">return container_of(fence, struct dma_fence_array, base);</div>
<div dir="auto">}</div>
<div dir="auto">+/**</div>
<div dir="auto">+ * dma_fence_array_for_each - iterate over all fences in array</div>
<div dir="auto">+ * @fence: current fence</div>
<div dir="auto">+ * @index: index into the array</div>
<div dir="auto">+ * @head: potential dma_fence_array object</div>
<div dir="auto">+ *</div>
<div dir="auto">+ * Test if @array is a dma_fence_array object and if yes iterate over all fences</div>
<div dir="auto">+ * in the array. If not just iterate over the fence in @array itself.</div>
<div dir="auto">+ */</div>
<div dir="auto">+#define dma_fence_array_for_each(fence, index, head)                   \</div>
<div dir="auto">+       for (index = 0, fence = dma_fence_array_first(head); fence;     \</div>
<div dir="auto">+            ++(index), fence = dma_fence_array_next(head, index))</div>
<div dir="auto">+</div>
<div dir="auto">struct dma_fence_array *dma_fence_array_create(int num_fences,</div>
<div dir="auto">        struct dma_fence **fences,</div>
<div dir="auto">        u64 context, unsigned seqno,</div>
<div dir="auto">@@ -81,4 +94,8 @@ struct dma_fence_array *dma_fence_array_create(int num_fences,</div>
<div dir="auto">bool dma_fence_match_context(struct dma_fence *fence, u64 context);</div>
<div dir="auto">+struct dma_fence *dma_fence_array_first(struct dma_fence *head);</div>
<div dir="auto">+struct dma_fence *dma_fence_array_next(struct dma_fence *head,</div>
<div dir="auto">+                                      unsigned int index);</div>
<div dir="auto">+</div>
<div dir="auto">#endif /* __LINUX_DMA_FENCE_ARRAY_H */</div>
</blockquote>
<div dir="auto"><br></div>
<div dir="auto">_______________________________________________</div>
<div dir="auto">dri-devel mailing list</div>
<div dir="auto">dri-devel@lists.freedesktop.org</div>
<div dir="auto">https://lists.freedesktop.org/mailman/listinfo/dri-devel</div>
</blockquote>
<div dir="auto"><br></div>
<div dir="auto">-- </div>
<div dir="auto">Daniel Vetter</div>
<div dir="auto">Software Engineer, Intel Corporation</div>
<div dir="auto">http://blog.ffwll.ch</div>
</blockquote>
</div><div dir="auto"><br></div>
</div></body>
</html>