[Intel-gfx] [PATCH] dma-buf: revert "return only unsignaled fences in dma_fence_unwrap_for_each v3"

Alex Deucher alexdeucher at gmail.com
Tue Jul 12 13:27:03 UTC 2022


On Tue, Jul 12, 2022 at 8:06 AM Christian König
<christian.koenig at amd.com> wrote:
>
> Hi Karolina,
>
> Am 12.07.22 um 14:04 schrieb Karolina Drobnik:
> > Hi Christian,
> >
> > On 12.07.2022 12:28, Christian König wrote:
> >> This reverts commit 8f61973718485f3e89bc4f408f929048b7b47c83.
> >>
> >> It turned out that this is not correct. Especially the sync_file info
> >> IOCTL needs to see even signaled fences to correctly report back their
> >> status to userspace.
> >>
> >> Instead add the filter in the merge function again where it makes sense.
> >>
> >> Signed-off-by: Christian König <christian.koenig at amd.com>
> >
> > After applying the patch, fence merging works and all sw_sync subtests
> > are passing. Thanks for taking care of this.
> >
> > Tested-by: Karolina Drobnik <karolina.drobnik at intel.com>
>
> can anybody give me an rb or at least an Acked-by as well so that I can
> push this upstream?

Patch makes sense.

Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

>
> Thanks,
> Christian.
>
> >
> >> ---
> >>   drivers/dma-buf/dma-fence-unwrap.c | 3 ++-
> >>   include/linux/dma-fence-unwrap.h   | 6 +-----
> >>   2 files changed, 3 insertions(+), 6 deletions(-)
> >>
> >> diff --git a/drivers/dma-buf/dma-fence-unwrap.c
> >> b/drivers/dma-buf/dma-fence-unwrap.c
> >> index 502a65ea6d44..7002bca792ff 100644
> >> --- a/drivers/dma-buf/dma-fence-unwrap.c
> >> +++ b/drivers/dma-buf/dma-fence-unwrap.c
> >> @@ -72,7 +72,8 @@ struct dma_fence *__dma_fence_unwrap_merge(unsigned
> >> int num_fences,
> >>       count = 0;
> >>       for (i = 0; i < num_fences; ++i) {
> >>           dma_fence_unwrap_for_each(tmp, &iter[i], fences[i])
> >> -            ++count;
> >> +            if (!dma_fence_is_signaled(tmp))
> >> +                ++count;
> >>       }
> >>         if (count == 0)
> >> diff --git a/include/linux/dma-fence-unwrap.h
> >> b/include/linux/dma-fence-unwrap.h
> >> index 390de1ee9d35..66b1e56fbb81 100644
> >> --- a/include/linux/dma-fence-unwrap.h
> >> +++ b/include/linux/dma-fence-unwrap.h
> >> @@ -43,14 +43,10 @@ struct dma_fence *dma_fence_unwrap_next(struct
> >> dma_fence_unwrap *cursor);
> >>    * Unwrap dma_fence_chain and dma_fence_array containers and deep
> >> dive into all
> >>    * potential fences in them. If @head is just a normal fence only
> >> that one is
> >>    * returned.
> >> - *
> >> - * Note that signalled fences are opportunistically filtered out, which
> >> - * means the iteration is potentially over no fence at all.
> >>    */
> >>   #define dma_fence_unwrap_for_each(fence, cursor, head)            \
> >>       for (fence = dma_fence_unwrap_first(head, cursor); fence;    \
> >> -         fence = dma_fence_unwrap_next(cursor))            \
> >> -        if (!dma_fence_is_signaled(fence))
> >> +         fence = dma_fence_unwrap_next(cursor))
> >>     struct dma_fence *__dma_fence_unwrap_merge(unsigned int num_fences,
> >>                          struct dma_fence **fences,
>


More information about the Intel-gfx mailing list