dma-buf: nuke seqno-fence
Entirely unused. Signed-off-by: Christian König <christian.koenig@amd.com> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: https://patchwork.freedesktop.org/patch/msgid/20210729070330.41443-1-christian.koenig@amd.com
This commit is contained in:
parent
c1d3cfbc41
commit
992c238188
3 changed files with 1 additions and 181 deletions
|
@ -1,6 +1,6 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-only
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
obj-y := dma-buf.o dma-fence.o dma-fence-array.o dma-fence-chain.o \
|
obj-y := dma-buf.o dma-fence.o dma-fence-array.o dma-fence-chain.o \
|
||||||
dma-resv.o seqno-fence.o
|
dma-resv.o
|
||||||
obj-$(CONFIG_DMABUF_HEAPS) += dma-heap.o
|
obj-$(CONFIG_DMABUF_HEAPS) += dma-heap.o
|
||||||
obj-$(CONFIG_DMABUF_HEAPS) += heaps/
|
obj-$(CONFIG_DMABUF_HEAPS) += heaps/
|
||||||
obj-$(CONFIG_SYNC_FILE) += sync_file.o
|
obj-$(CONFIG_SYNC_FILE) += sync_file.o
|
||||||
|
|
|
@ -1,71 +0,0 @@
|
||||||
// SPDX-License-Identifier: GPL-2.0-only
|
|
||||||
/*
|
|
||||||
* seqno-fence, using a dma-buf to synchronize fencing
|
|
||||||
*
|
|
||||||
* Copyright (C) 2012 Texas Instruments
|
|
||||||
* Copyright (C) 2012-2014 Canonical Ltd
|
|
||||||
* Authors:
|
|
||||||
* Rob Clark <robdclark@gmail.com>
|
|
||||||
* Maarten Lankhorst <maarten.lankhorst@canonical.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/export.h>
|
|
||||||
#include <linux/seqno-fence.h>
|
|
||||||
|
|
||||||
static const char *seqno_fence_get_driver_name(struct dma_fence *fence)
|
|
||||||
{
|
|
||||||
struct seqno_fence *seqno_fence = to_seqno_fence(fence);
|
|
||||||
|
|
||||||
return seqno_fence->ops->get_driver_name(fence);
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char *seqno_fence_get_timeline_name(struct dma_fence *fence)
|
|
||||||
{
|
|
||||||
struct seqno_fence *seqno_fence = to_seqno_fence(fence);
|
|
||||||
|
|
||||||
return seqno_fence->ops->get_timeline_name(fence);
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool seqno_enable_signaling(struct dma_fence *fence)
|
|
||||||
{
|
|
||||||
struct seqno_fence *seqno_fence = to_seqno_fence(fence);
|
|
||||||
|
|
||||||
return seqno_fence->ops->enable_signaling(fence);
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool seqno_signaled(struct dma_fence *fence)
|
|
||||||
{
|
|
||||||
struct seqno_fence *seqno_fence = to_seqno_fence(fence);
|
|
||||||
|
|
||||||
return seqno_fence->ops->signaled && seqno_fence->ops->signaled(fence);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void seqno_release(struct dma_fence *fence)
|
|
||||||
{
|
|
||||||
struct seqno_fence *f = to_seqno_fence(fence);
|
|
||||||
|
|
||||||
dma_buf_put(f->sync_buf);
|
|
||||||
if (f->ops->release)
|
|
||||||
f->ops->release(fence);
|
|
||||||
else
|
|
||||||
dma_fence_free(&f->base);
|
|
||||||
}
|
|
||||||
|
|
||||||
static signed long seqno_wait(struct dma_fence *fence, bool intr,
|
|
||||||
signed long timeout)
|
|
||||||
{
|
|
||||||
struct seqno_fence *f = to_seqno_fence(fence);
|
|
||||||
|
|
||||||
return f->ops->wait(fence, intr, timeout);
|
|
||||||
}
|
|
||||||
|
|
||||||
const struct dma_fence_ops seqno_fence_ops = {
|
|
||||||
.get_driver_name = seqno_fence_get_driver_name,
|
|
||||||
.get_timeline_name = seqno_fence_get_timeline_name,
|
|
||||||
.enable_signaling = seqno_enable_signaling,
|
|
||||||
.signaled = seqno_signaled,
|
|
||||||
.wait = seqno_wait,
|
|
||||||
.release = seqno_release,
|
|
||||||
};
|
|
||||||
EXPORT_SYMBOL(seqno_fence_ops);
|
|
|
@ -1,109 +0,0 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
||||||
/*
|
|
||||||
* seqno-fence, using a dma-buf to synchronize fencing
|
|
||||||
*
|
|
||||||
* Copyright (C) 2012 Texas Instruments
|
|
||||||
* Copyright (C) 2012 Canonical Ltd
|
|
||||||
* Authors:
|
|
||||||
* Rob Clark <robdclark@gmail.com>
|
|
||||||
* Maarten Lankhorst <maarten.lankhorst@canonical.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __LINUX_SEQNO_FENCE_H
|
|
||||||
#define __LINUX_SEQNO_FENCE_H
|
|
||||||
|
|
||||||
#include <linux/dma-fence.h>
|
|
||||||
#include <linux/dma-buf.h>
|
|
||||||
|
|
||||||
enum seqno_fence_condition {
|
|
||||||
SEQNO_FENCE_WAIT_GEQUAL,
|
|
||||||
SEQNO_FENCE_WAIT_NONZERO
|
|
||||||
};
|
|
||||||
|
|
||||||
struct seqno_fence {
|
|
||||||
struct dma_fence base;
|
|
||||||
|
|
||||||
const struct dma_fence_ops *ops;
|
|
||||||
struct dma_buf *sync_buf;
|
|
||||||
uint32_t seqno_ofs;
|
|
||||||
enum seqno_fence_condition condition;
|
|
||||||
};
|
|
||||||
|
|
||||||
extern const struct dma_fence_ops seqno_fence_ops;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* to_seqno_fence - cast a fence to a seqno_fence
|
|
||||||
* @fence: fence to cast to a seqno_fence
|
|
||||||
*
|
|
||||||
* Returns NULL if the fence is not a seqno_fence,
|
|
||||||
* or the seqno_fence otherwise.
|
|
||||||
*/
|
|
||||||
static inline struct seqno_fence *
|
|
||||||
to_seqno_fence(struct dma_fence *fence)
|
|
||||||
{
|
|
||||||
if (fence->ops != &seqno_fence_ops)
|
|
||||||
return NULL;
|
|
||||||
return container_of(fence, struct seqno_fence, base);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* seqno_fence_init - initialize a seqno fence
|
|
||||||
* @fence: seqno_fence to initialize
|
|
||||||
* @lock: pointer to spinlock to use for fence
|
|
||||||
* @sync_buf: buffer containing the memory location to signal on
|
|
||||||
* @context: the execution context this fence is a part of
|
|
||||||
* @seqno_ofs: the offset within @sync_buf
|
|
||||||
* @seqno: the sequence # to signal on
|
|
||||||
* @cond: fence wait condition
|
|
||||||
* @ops: the fence_ops for operations on this seqno fence
|
|
||||||
*
|
|
||||||
* This function initializes a struct seqno_fence with passed parameters,
|
|
||||||
* and takes a reference on sync_buf which is released on fence destruction.
|
|
||||||
*
|
|
||||||
* A seqno_fence is a dma_fence which can complete in software when
|
|
||||||
* enable_signaling is called, but it also completes when
|
|
||||||
* (s32)((sync_buf)[seqno_ofs] - seqno) >= 0 is true
|
|
||||||
*
|
|
||||||
* The seqno_fence will take a refcount on the sync_buf until it's
|
|
||||||
* destroyed, but actual lifetime of sync_buf may be longer if one of the
|
|
||||||
* callers take a reference to it.
|
|
||||||
*
|
|
||||||
* Certain hardware have instructions to insert this type of wait condition
|
|
||||||
* in the command stream, so no intervention from software would be needed.
|
|
||||||
* This type of fence can be destroyed before completed, however a reference
|
|
||||||
* on the sync_buf dma-buf can be taken. It is encouraged to re-use the same
|
|
||||||
* dma-buf for sync_buf, since mapping or unmapping the sync_buf to the
|
|
||||||
* device's vm can be expensive.
|
|
||||||
*
|
|
||||||
* It is recommended for creators of seqno_fence to call dma_fence_signal()
|
|
||||||
* before destruction. This will prevent possible issues from wraparound at
|
|
||||||
* time of issue vs time of check, since users can check dma_fence_is_signaled()
|
|
||||||
* before submitting instructions for the hardware to wait on the fence.
|
|
||||||
* However, when ops.enable_signaling is not called, it doesn't have to be
|
|
||||||
* done as soon as possible, just before there's any real danger of seqno
|
|
||||||
* wraparound.
|
|
||||||
*/
|
|
||||||
static inline void
|
|
||||||
seqno_fence_init(struct seqno_fence *fence, spinlock_t *lock,
|
|
||||||
struct dma_buf *sync_buf, uint32_t context,
|
|
||||||
uint32_t seqno_ofs, uint32_t seqno,
|
|
||||||
enum seqno_fence_condition cond,
|
|
||||||
const struct dma_fence_ops *ops)
|
|
||||||
{
|
|
||||||
BUG_ON(!fence || !sync_buf || !ops);
|
|
||||||
BUG_ON(!ops->wait || !ops->enable_signaling ||
|
|
||||||
!ops->get_driver_name || !ops->get_timeline_name);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* ops is used in dma_fence_init for get_driver_name, so needs to be
|
|
||||||
* initialized first
|
|
||||||
*/
|
|
||||||
fence->ops = ops;
|
|
||||||
dma_fence_init(&fence->base, &seqno_fence_ops, lock, context, seqno);
|
|
||||||
get_dma_buf(sync_buf);
|
|
||||||
fence->sync_buf = sync_buf;
|
|
||||||
fence->seqno_ofs = seqno_ofs;
|
|
||||||
fence->condition = cond;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* __LINUX_SEQNO_FENCE_H */
|
|
Loading…
Add table
Reference in a new issue