[PATCH 1/3] dma-buf: add dma_fence_get_stub
Christian König
ckoenig.leichtzumerken at gmail.com
Mon Dec 3 13:40:37 UTC 2018
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?
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
More information about the dri-devel
mailing list