@@ -57,7 +57,7 @@ struct pvr_buffer_sync_context {
};
struct pvr_buffer_sync_check_data {
- struct fence_cb base;
+ struct dma_fence_cb base;
u32 nr_fences;
struct pvr_fence **fences;
@@ -179,7 +179,7 @@ pvr_buffer_sync_pmrs_fence_count(u32 nr_pmrs, struct _PMR_ **pmrs,
{
struct reservation_object *resv;
struct reservation_object_list *resv_list;
- struct fence *fence;
+ struct dma_fence *fence;
u32 fence_count = 0;
bool exclusive;
int i;
@@ -214,7 +214,7 @@ pvr_buffer_sync_check_fences_create(struct pvr_fence_context *fence_ctx,
struct pvr_buffer_sync_check_data *data;
struct reservation_object *resv;
struct reservation_object_list *resv_list;
- struct fence *fence;
+ struct dma_fence *fence;
u32 fence_count;
bool exclusive;
int i, j;
@@ -257,7 +257,7 @@ pvr_buffer_sync_check_fences_create(struct pvr_fence_context *fence_ctx,
if (!data->fences[data->nr_fences - 1]) {
data->nr_fences--;
PVR_FENCE_TRACE(fence, "waiting on exclusive fence\n");
- WARN_ON(fence_wait(fence, true) <= 0);
+ WARN_ON(dma_fence_wait(fence, true) <= 0);
}
}
@@ -272,7 +272,7 @@ pvr_buffer_sync_check_fences_create(struct pvr_fence_context *fence_ctx,
if (!data->fences[data->nr_fences - 1]) {
data->nr_fences--;
PVR_FENCE_TRACE(fence, "waiting on non-exclusive fence\n");
- WARN_ON(fence_wait(fence, true) <= 0);
+ WARN_ON(dma_fence_wait(fence, true) <= 0);
}
}
}
@@ -304,7 +304,7 @@ pvr_buffer_sync_check_fences_destroy(struct pvr_buffer_sync_check_data *data)
}
static void
-pvr_buffer_sync_check_data_cleanup(struct fence *fence, struct fence_cb *cb)
+pvr_buffer_sync_check_data_cleanup(struct dma_fence *fence, struct dma_fence_cb *cb)
{
struct pvr_buffer_sync_check_data *data =
container_of(cb, struct pvr_buffer_sync_check_data, base);
@@ -551,9 +551,9 @@ pvr_buffer_sync_append_start(struct pvr_buffer_sync_context *ctx,
* Note: we take an additional reference on the update fence in case
* it signals before we can add it to a reservation object.
*/
- fence_get(&data->update_fence->base);
+ dma_fence_get(&data->update_fence->base);
- err = fence_add_callback(&data->update_fence->base, &check_data->base,
+ err = dma_fence_add_callback(&data->update_fence->base, &check_data->base,
pvr_buffer_sync_check_data_cleanup);
if (err) {
/*
@@ -624,7 +624,7 @@ pvr_buffer_sync_append_finish(struct pvr_buffer_sync_append_data *data)
* objects we can safely drop the extra reference we took in
* pvr_buffer_sync_append_start.
*/
- fence_put(&data->update_fence->base);
+ dma_fence_put(&data->update_fence->base);
pvr_buffer_sync_pmrs_unlock(&data->ctx->acquire_ctx,
data->nr_pmrs,
@@ -653,7 +653,7 @@ pvr_buffer_sync_append_abort(struct pvr_buffer_sync_append_data *data)
* reference taken in pvr_buffer_sync_append_start.
*/
pvr_fence_sync_sw_signal(data->update_fence);
- fence_put(&data->update_fence->base);
+ dma_fence_put(&data->update_fence->base);
pvr_buffer_sync_pmrs_unlock(&data->ctx->acquire_ctx,
data->nr_pmrs,
data->pmrs);
@@ -697,7 +697,7 @@ pvr_buffer_sync_wait(struct pvr_buffer_sync_context *ctx,
{
struct reservation_object *resv;
struct reservation_object_list *resv_list = NULL;
- struct fence *fence, *wait_fence = NULL;
+ struct dma_fence *fence, *wait_fence = NULL;
unsigned seq;
int i;
long lerr;
@@ -721,8 +721,8 @@ retry:
for (i = 0; i < resv_list->shared_count; i++) {
fence = rcu_dereference(resv_list->shared[i]);
if (is_our_fence(ctx->fence_ctx, fence) &&
- !test_bit(FENCE_FLAG_SIGNALED_BIT, &fence->flags)) {
- wait_fence = fence_get_rcu(fence);
+ !test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)) {
+ wait_fence = dma_fence_get_rcu(fence);
if (!wait_fence)
goto unlock_retry;
break;
@@ -737,8 +737,8 @@ retry:
goto unlock_retry;
if (fence &&
- !test_bit(FENCE_FLAG_SIGNALED_BIT, &fence->flags)) {
- wait_fence = fence_get_rcu(fence);
+ !test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)) {
+ wait_fence = dma_fence_get_rcu(fence);
if (!wait_fence)
goto unlock_retry;
}
@@ -748,16 +748,16 @@ retry:
if (wait_fence) {
struct pvr_fence *pvr_fence = to_pvr_fence(wait_fence);
if (!pvr_fence || pvr_fence->pid != current->pid) {
- fence_put(wait_fence);
+ dma_fence_put(wait_fence);
return 0;
}
- if (fence_is_signaled(wait_fence))
+ if (dma_fence_is_signaled(wait_fence))
lerr = timeout;
else
- lerr = fence_wait_timeout(wait_fence, intr, timeout);
+ lerr = dma_fence_wait_timeout(wait_fence, intr, timeout);
- fence_put(wait_fence);
+ dma_fence_put(wait_fence);
if (!lerr)
return -EBUSY;
else if (lerr < 0)
@@ -104,9 +104,9 @@ pvr_fence_context_fences_dump(struct pvr_fence_context *fctx,
#endif
pvr_fence->fence->context,
pvr_fence->fence->seqno,
- test_bit(FENCE_FLAG_ENABLE_SIGNAL_BIT, &pvr_fence->fence->flags) ? "+" : "-",
- test_bit(FENCE_FLAG_SIGNALED_BIT, &pvr_fence->fence->flags) ? "+" : "-",
- atomic_read(&pvr_fence->fence->refcount.refcount),
+ test_bit(DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT, &pvr_fence->fence->flags) ? "+" : "-",
+ test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &pvr_fence->fence->flags) ? "+" : "-",
+ atomic_read(&pvr_fence->fence->refcount.refcount.refs),
sync_addr,
pvr_fence_sync_value_get(pvr_fence),
PVR_FENCE_SYNC_VAL_SIGNALED,
@@ -148,7 +148,7 @@ static inline void pvr_fence_context_free_deferred(struct pvr_fence_context *fct
fence_head) {
list_del(&pvr_fence->fence_head);
SyncPrimFree(pvr_fence->sync);
- fence_free(&pvr_fence->base);
+ dma_fence_free(&pvr_fence->base);
}
}
@@ -162,11 +162,11 @@ pvr_fence_context_signal_fences(struct work_struct *data)
LIST_HEAD(signal_list);
/*
- * We can't call fence_signal while holding the lock as we can end up
+ * We can't call dma_fence_signal while holding the lock as we can end up
* in a situation whereby pvr_fence_foreign_signal_sync, which also
* takes the list lock, ends up being called as a result of the
- * fence_signal below, i.e. fence_signal(fence) -> fence->callback()
- * -> fence_signal(foreign_fence) -> foreign_fence->callback() where
+ * dma_fence_signal below, i.e. dma_fence_signal(fence) -> fence->callback()
+ * -> dma_fence_signal(foreign_fence) -> foreign_fence->callback() where
* the foreign_fence callback is pvr_fence_foreign_signal_sync.
*
* So extract the items we intend to signal and add them to their own
@@ -187,8 +187,8 @@ pvr_fence_context_signal_fences(struct work_struct *data)
PVR_FENCE_TRACE(&pvr_fence->base, "signalled fence (%s)\n",
pvr_fence->name);
list_del(&pvr_fence->signal_head);
- fence_signal(pvr_fence->fence);
- fence_put(pvr_fence->fence);
+ dma_fence_signal(pvr_fence->fence);
+ dma_fence_put(pvr_fence->fence);
}
/*
@@ -241,7 +241,7 @@ pvr_fence_context_create(void *dev_cookie,
INIT_LIST_HEAD(&fctx->fence_list);
INIT_LIST_HEAD(&fctx->deferred_free_list);
- fctx->fence_context = fence_context_alloc(1);
+ fctx->fence_context = dma_fence_context_alloc(1);
fctx->name = name;
fctx->fence_wq =
@@ -321,13 +321,13 @@ pvr_fence_context_destroy(struct pvr_fence_context *fctx)
}
static const char *
-pvr_fence_get_driver_name(struct fence *fence)
+pvr_fence_get_driver_name(struct dma_fence *fence)
{
return PVR_LDM_DRIVER_REGISTRATION_NAME;
}
static const char *
-pvr_fence_get_timeline_name(struct fence *fence)
+pvr_fence_get_timeline_name(struct dma_fence *fence)
{
struct pvr_fence *pvr_fence = to_pvr_fence(fence);
@@ -335,7 +335,7 @@ pvr_fence_get_timeline_name(struct fence *fence)
}
static bool
-pvr_fence_enable_signaling(struct fence *fence)
+pvr_fence_enable_signaling(struct dma_fence *fence)
{
struct pvr_fence *pvr_fence = to_pvr_fence(fence);
struct pvr_fence_context *fctx = pvr_fence->fctx;
@@ -347,7 +347,7 @@ pvr_fence_enable_signaling(struct fence *fence)
PVR_FENCE_SYNC_VAL_SIGNALED))
return false;
- fence_get(&pvr_fence->base);
+ dma_fence_get(&pvr_fence->base);
spin_lock_irqsave(&fctx->list_lock, flags);
list_add_tail(&pvr_fence->signal_head, &fctx->signal_list);
@@ -360,7 +360,7 @@ pvr_fence_enable_signaling(struct fence *fence)
}
static bool
-pvr_fence_is_signaled(struct fence *fence)
+pvr_fence_is_signaled(struct dma_fence *fence)
{
struct pvr_fence *pvr_fence = to_pvr_fence(fence);
@@ -368,7 +368,7 @@ pvr_fence_is_signaled(struct fence *fence)
}
static void
-pvr_fence_release(struct fence *fence)
+pvr_fence_release(struct dma_fence *fence)
{
struct pvr_fence *pvr_fence = to_pvr_fence(fence);
struct pvr_fence_context *fctx = pvr_fence->fctx;
@@ -384,12 +384,12 @@ pvr_fence_release(struct fence *fence)
spin_unlock_irqrestore(&fctx->list_lock, flags);
}
-const struct fence_ops pvr_fence_ops = {
+const struct dma_fence_ops pvr_fence_ops = {
.get_driver_name = pvr_fence_get_driver_name,
.get_timeline_name = pvr_fence_get_timeline_name,
.enable_signaling = pvr_fence_enable_signaling,
.signaled = pvr_fence_is_signaled,
- .wait = fence_default_wait,
+ .wait = dma_fence_default_wait,
.release = pvr_fence_release,
};
@@ -429,7 +429,7 @@ pvr_fence_create(struct pvr_fence_context *fctx, const char *name)
pvr_fence->fence = &pvr_fence->base;
seqno = pvr_fence_context_seqno_next(fctx);
- fence_init(&pvr_fence->base, &pvr_fence_ops, &fctx->lock,
+ dma_fence_init(&pvr_fence->base, &pvr_fence_ops, &fctx->lock,
fctx->fence_context, seqno);
spin_lock_irqsave(&fctx->list_lock, flags);
@@ -446,33 +446,33 @@ err_free_fence:
}
static const char *
-pvr_fence_foreign_get_driver_name(struct fence *fence)
+pvr_fence_foreign_get_driver_name(struct dma_fence *fence)
{
return "unknown";
}
static const char *
-pvr_fence_foreign_get_timeline_name(struct fence *fence)
+pvr_fence_foreign_get_timeline_name(struct dma_fence *fence)
{
return "unknown";
}
static bool
-pvr_fence_foreign_enable_signaling(struct fence *fence)
+pvr_fence_foreign_enable_signaling(struct dma_fence *fence)
{
WARN_ON("cannot enable signalling on foreign fence");
return false;
}
static signed long
-pvr_fence_foreign_wait(struct fence *fence, bool intr, signed long timeout)
+pvr_fence_foreign_wait(struct dma_fence *fence, bool intr, signed long timeout)
{
WARN_ON("cannot wait on foreign fence");
return 0;
}
static void
-pvr_fence_foreign_release(struct fence *fence)
+pvr_fence_foreign_release(struct dma_fence *fence)
{
struct pvr_fence *pvr_fence = to_pvr_fence(fence);
struct pvr_fence_context *fctx = pvr_fence->fctx;
@@ -490,7 +490,7 @@ pvr_fence_foreign_release(struct fence *fence)
spin_unlock_irqrestore(&fctx->list_lock, flags);
}
-const struct fence_ops pvr_fence_foreign_ops = {
+const struct dma_fence_ops pvr_fence_foreign_ops = {
.get_driver_name = pvr_fence_foreign_get_driver_name,
.get_timeline_name = pvr_fence_foreign_get_timeline_name,
.enable_signaling = pvr_fence_foreign_enable_signaling,
@@ -499,7 +499,7 @@ const struct fence_ops pvr_fence_foreign_ops = {
};
static void
-pvr_fence_foreign_signal_sync(struct fence *fence, struct fence_cb *cb)
+pvr_fence_foreign_signal_sync(struct dma_fence *fence, struct dma_fence_cb *cb)
{
struct pvr_fence *pvr_fence = container_of(cb, struct pvr_fence, cb);
struct pvr_fence_context *fctx = pvr_fence->fctx;
@@ -516,7 +516,7 @@ pvr_fence_foreign_signal_sync(struct fence *fence, struct fence_cb *cb)
pvr_fence->name);
/* Drop the reference on the base fence */
- fence_put(&pvr_fence->base);
+ dma_fence_put(&pvr_fence->base);
}
/**
@@ -536,7 +536,7 @@ pvr_fence_foreign_signal_sync(struct fence *fence, struct fence_cb *cb)
*/
struct pvr_fence *
pvr_fence_create_from_fence(struct pvr_fence_context *fctx,
- struct fence *fence,
+ struct dma_fence *fence,
const char *name)
{
struct pvr_fence *pvr_fence = to_pvr_fence(fence);
@@ -548,7 +548,7 @@ pvr_fence_create_from_fence(struct pvr_fence_context *fctx,
if (pvr_fence) {
if (WARN_ON(fence->ops == &pvr_fence_foreign_ops))
return NULL;
- fence_get(fence);
+ dma_fence_get(fence);
PVR_FENCE_TRACE(fence, "created fence from PVR fence (%s)\n",
name);
@@ -576,14 +576,14 @@ pvr_fence_create_from_fence(struct pvr_fence_context *fctx,
* necessary clean up once the refcount drops to 0.
*/
seqno = pvr_fence_context_seqno_next(fctx);
- fence_init(&pvr_fence->base, &pvr_fence_foreign_ops, &fctx->lock,
+ dma_fence_init(&pvr_fence->base, &pvr_fence_foreign_ops, &fctx->lock,
fctx->fence_context, seqno);
/*
* Take an extra reference on the base fence that gets dropped when the
* foreign fence is signalled.
*/
- fence_get(&pvr_fence->base);
+ dma_fence_get(&pvr_fence->base);
spin_lock_irqsave(&fctx->list_lock, flags);
list_add_tail(&pvr_fence->fence_head, &fctx->fence_list);
@@ -594,7 +594,7 @@ pvr_fence_create_from_fence(struct pvr_fence_context *fctx,
pvr_fence->fence->context, pvr_fence->fence->seqno,
name);
- err = fence_add_callback(fence, &pvr_fence->cb,
+ err = dma_fence_add_callback(fence, &pvr_fence->cb,
pvr_fence_foreign_signal_sync);
if (err) {
if (err != -ENOENT)
@@ -608,7 +608,7 @@ pvr_fence_create_from_fence(struct pvr_fence_context *fctx,
PVR_FENCE_TRACE(&pvr_fence->base, "foreign fence %d#%d already signaled (%s)\n",
pvr_fence->fence->context, pvr_fence->fence->seqno,
name);
- fence_put(&pvr_fence->base);
+ dma_fence_put(&pvr_fence->base);
}
@@ -638,7 +638,7 @@ pvr_fence_destroy(struct pvr_fence *pvr_fence)
PVR_FENCE_TRACE(&pvr_fence->base, "destroyed fence (%s)\n",
pvr_fence->name);
- fence_put(&pvr_fence->base);
+ dma_fence_put(&pvr_fence->base);
}
/**
@@ -46,7 +46,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#if !defined(__PVR_FENCE_H__)
#define __PVR_FENCE_H__
-#include <linux/fence.h>
+#include <linux/dma-fence.h>
#include <linux/list.h>
#include <linux/spinlock.h>
#include <linux/workqueue.h>
@@ -108,17 +108,17 @@ struct pvr_fence_context {
* @cb: foreign fence callback to set the sync to signalled
*/
struct pvr_fence {
- struct fence base;
+ struct dma_fence base;
struct pvr_fence_context *fctx;
const char *name;
int pid;
- struct fence *fence;
+ struct dma_fence *fence;
struct PVRSRV_CLIENT_SYNC_PRIM *sync;
struct list_head fence_head;
struct list_head signal_head;
- struct fence_cb cb;
+ struct dma_fence_cb cb;
};
enum pvr_fence_sync_val {
@@ -127,22 +127,22 @@ enum pvr_fence_sync_val {
PVR_FENCE_SYNC_VAL_DONE = 0xDEADDEAD,
};
-extern const struct fence_ops pvr_fence_ops;
-extern const struct fence_ops pvr_fence_foreign_ops;
+extern const struct dma_fence_ops pvr_fence_ops;
+extern const struct dma_fence_ops pvr_fence_foreign_ops;
static inline bool is_our_fence(struct pvr_fence_context *fctx,
- struct fence *fence)
+ struct dma_fence *fence)
{
return (fence->context == fctx->fence_context);
}
-static inline bool is_pvr_fence(struct fence *fence)
+static inline bool is_pvr_fence(struct dma_fence *fence)
{
return ((fence->ops == &pvr_fence_ops) ||
(fence->ops == &pvr_fence_foreign_ops));
}
-static inline struct pvr_fence *to_pvr_fence(struct fence *fence)
+static inline struct pvr_fence *to_pvr_fence(struct dma_fence *fence)
{
if (is_pvr_fence(fence))
return container_of(fence, struct pvr_fence, base);
@@ -157,7 +157,7 @@ void pvr_fence_context_destroy(struct pvr_fence_context *fctx);
struct pvr_fence *pvr_fence_create(struct pvr_fence_context *fctx,
const char *name);
struct pvr_fence *pvr_fence_create_from_fence(struct pvr_fence_context *fctx,
- struct fence *fence,
+ struct dma_fence *fence,
const char *name);
void pvr_fence_destroy(struct pvr_fence *pvr_fence);
int pvr_fence_sync_sw_signal(struct pvr_fence *pvr_fence);
Everything "fence..." is now "dma_fence...". Signed-off-by: Ulrich Hecht <ulrich.hecht+renesas@gmail.com> --- kernel/drivers/staging/imgtec/pvr_buffer_sync.c | 38 +++++++------- kernel/drivers/staging/imgtec/pvr_fence.c | 68 ++++++++++++------------- kernel/drivers/staging/imgtec/pvr_fence.h | 20 ++++---- 3 files changed, 63 insertions(+), 63 deletions(-)