Am 03.12.18 um 14:33 schrieb Chunming Zhou:
The series is Reviewed-by: Chunming Zhou david1.zhou@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@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@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel