[PATCH 1/3] dma-buf: add dma_fence_get_stub

Alex Deucher alexdeucher at gmail.com
Mon Dec 3 15:53:21 UTC 2018


On Mon, Dec 3, 2018 at 8:40 AM Christian König
<ckoenig.leichtzumerken at gmail.com> wrote:
>
> Am 03.12.18 um 14:33 schrieb Chunming Zhou:
> > The series is Reviewed-by: Chunming Zhou <david1.zhou at amd.com>
> >
> > for patch#2, please remove my Signed-off-by, it's new when using stub
> > from dma-fence.
>
> Yeah, ok. There is indeed nothing left from your original code.
>
> Alex, Daniel, Chris any objections that I push the first two patches in
> this series to drm-misc-next?

No objections from me.  Does Intel want to run it through their CI?

Alex

>
> Shouldn't be any functional change,
> Christian.
>
> >
> >
> > -David
> >
> >
> > 在 2018/12/3 21:07, Christian König 写道:
> >> Extract of useful code from the timeline work. This provides a function
> >> to return a stub or dummy fence which is always signaled.
> >>
> >> Signed-off-by: Christian König <christian.koenig at amd.com>
> >> ---
> >>    drivers/dma-buf/dma-fence.c | 36 +++++++++++++++++++++++++++++++++++-
> >>    include/linux/dma-fence.h   |  1 +
> >>    2 files changed, 36 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c
> >> index 1551ca7df394..136ec04d683f 100644
> >> --- a/drivers/dma-buf/dma-fence.c
> >> +++ b/drivers/dma-buf/dma-fence.c
> >> @@ -30,13 +30,16 @@
> >>    EXPORT_TRACEPOINT_SYMBOL(dma_fence_emit);
> >>    EXPORT_TRACEPOINT_SYMBOL(dma_fence_enable_signal);
> >>
> >> +static DEFINE_SPINLOCK(dma_fence_stub_lock);
> >> +static struct dma_fence dma_fence_stub;
> >> +
> >>    /*
> >>     * fence context counter: each execution context should have its own
> >>     * fence context, this allows checking if fences belong to the same
> >>     * context or not. One device can have multiple separate contexts,
> >>     * and they're used if some engine can run independently of another.
> >>     */
> >> -static atomic64_t dma_fence_context_counter = ATOMIC64_INIT(0);
> >> +static atomic64_t dma_fence_context_counter = ATOMIC64_INIT(1);
> >>
> >>    /**
> >>     * DOC: DMA fences overview
> >> @@ -68,6 +71,37 @@ static atomic64_t dma_fence_context_counter = ATOMIC64_INIT(0);
> >>     *   &dma_buf.resv pointer.
> >>     */
> >>
> >> +static const char *dma_fence_stub_get_name(struct dma_fence *fence)
> >> +{
> >> +        return "stub";
> >> +}
> >> +
> >> +static const struct dma_fence_ops dma_fence_stub_ops = {
> >> +    .get_driver_name = dma_fence_stub_get_name,
> >> +    .get_timeline_name = dma_fence_stub_get_name,
> >> +};
> >> +
> >> +/**
> >> + * dma_fence_get_stub - return a signaled fence
> >> + *
> >> + * Return a stub fence which is already signaled.
> >> + */
> >> +struct dma_fence *dma_fence_get_stub(void)
> >> +{
> >> +    spin_lock(&dma_fence_stub_lock);
> >> +    if (!dma_fence_stub.ops) {
> >> +            dma_fence_init(&dma_fence_stub,
> >> +                           &dma_fence_stub_ops,
> >> +                           &dma_fence_stub_lock,
> >> +                           0, 0);
> >> +            dma_fence_signal_locked(&dma_fence_stub);
> >> +    }
> >> +    spin_unlock(&dma_fence_stub_lock);
> >> +
> >> +    return dma_fence_get(&dma_fence_stub);
> >> +}
> >> +EXPORT_SYMBOL(dma_fence_get_stub);
> >> +
> >>    /**
> >>     * dma_fence_context_alloc - allocate an array of fence contexts
> >>     * @num: amount of contexts to allocate
> >> diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h
> >> index 02dba8cd033d..999e4b104410 100644
> >> --- a/include/linux/dma-fence.h
> >> +++ b/include/linux/dma-fence.h
> >> @@ -541,6 +541,7 @@ static inline signed long dma_fence_wait(struct dma_fence *fence, bool intr)
> >>      return ret < 0 ? ret : 0;
> >>    }
> >>
> >> +struct dma_fence *dma_fence_get_stub(void);
> >>    u64 dma_fence_context_alloc(unsigned num);
> >>
> >>    #define DMA_FENCE_TRACE(f, fmt, args...) \
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel


More information about the dri-devel mailing list