[RFC 20/29] dma-buf/fence: remove fence_timeline_ops

From: Gustavo Padovan
Date: Fri Jan 15 2016 - 09:59:31 EST


From: Gustavo Padovan <gustavo.padovan@xxxxxxxxxxxxxxx>

fence_timeline_ops was just workarounding over fence_ops and was used
chained in the fence ops. So remove it all to simplify the fence code
flow.

Signed-off-by: Gustavo Padovan <gustavo.padovan@xxxxxxxxxxxxxxx>
---
drivers/dma-buf/fence.c | 7 ++-----
drivers/staging/android/sw_sync.c | 20 +-------------------
include/linux/fence.h | 19 ++-----------------
3 files changed, 5 insertions(+), 41 deletions(-)

diff --git a/drivers/dma-buf/fence.c b/drivers/dma-buf/fence.c
index d9089a0..ec51146 100644
--- a/drivers/dma-buf/fence.c
+++ b/drivers/dma-buf/fence.c
@@ -54,7 +54,6 @@ EXPORT_SYMBOL(fence_context_alloc);
/**
* fence_timeline_create - create a new fence_timeline
* @num: [in] amount of contexts to allocate
- * @ops: [in] timeline ops of the caller
* @size: [in] size to allocate struct fence_timeline
* @drv_name: [in] name of the driver
* @name: [in] name of the timeline
@@ -63,9 +62,8 @@ EXPORT_SYMBOL(fence_context_alloc);
* It allocs and initializes a new fence_timeline with a proper fence context
* number assigned to it.
*/
-struct fence_timeline *fence_timeline_create(unsigned num,
- struct fence_timeline_ops *ops,
- int size, const char *drv_name,
+struct fence_timeline *fence_timeline_create(unsigned num, int size,
+ const char *drv_name,
const char *name)
{
struct fence_timeline *timeline;
@@ -78,7 +76,6 @@ struct fence_timeline *fence_timeline_create(unsigned num,
return NULL;

kref_init(&timeline->kref);
- timeline->ops = ops;
timeline->context = fence_context_alloc(1);
strlcpy(timeline->name, name, sizeof(timeline->name));
strlcpy(timeline->drv_name, drv_name, sizeof(timeline->drv_name));
diff --git a/drivers/staging/android/sw_sync.c b/drivers/staging/android/sw_sync.c
index cfd7a18..b9f8c51 100644
--- a/drivers/staging/android/sw_sync.c
+++ b/drivers/staging/android/sw_sync.c
@@ -38,28 +38,10 @@ struct fence *sw_sync_pt_create(struct sw_sync_timeline *obj, u32 value)
}
EXPORT_SYMBOL(sw_sync_pt_create);

-static int sw_sync_fill_driver_data(struct fence *fence,
- void *data, int size)
-{
- struct sw_sync_pt *pt = (struct sw_sync_pt *)fence;
-
- if (size < sizeof(pt->value))
- return -ENOMEM;
-
- memcpy(data, &pt->value, sizeof(pt->value));
-
- return sizeof(pt->value);
-}
-
-static struct fence_timeline_ops sw_sync_timeline_ops = {
- .fill_driver_data = sw_sync_fill_driver_data,
-};
-
struct sw_sync_timeline *sw_sync_timeline_create(const char *name)
{
struct sw_sync_timeline *obj = (struct sw_sync_timeline *)
- fence_timeline_create(1, &sw_sync_timeline_ops,
- sizeof(struct sw_sync_timeline),
+ fence_timeline_create(1, sizeof(struct sw_sync_timeline),
"sw_sync", name);

return obj;
diff --git a/include/linux/fence.h b/include/linux/fence.h
index 04438c3..8908433 100644
--- a/include/linux/fence.h
+++ b/include/linux/fence.h
@@ -30,22 +30,9 @@
#include <linux/printk.h>
#include <linux/rcupdate.h>

-struct fence_timeline;
struct fence;
struct fence_ops;
struct fence_cb;
-/**
- * struct fence_timeline_ops - fence context implementation ops
- * @fill_driver_data: write implementation specific driver data to data.
- * should return an error if there is not enough room
- * as specified by size. This information is returned
- * to userspace by SYNC_IOC_FENCE_INFO.
- * @pt_value_str: fill str with the value of the sync_pt
- */
-struct fence_timeline_ops {
- /* optional */
- int (*fill_driver_data)(struct fence *fence, void *data, int size);
-};

/**
* struct fence_timeline - timeline for software synchronization primitive
@@ -63,7 +50,6 @@ struct fence_timeline {
struct kref kref;
char name[32];
char drv_name[32];
- const struct fence_timeline_ops *ops;
bool destroyed;
unsigned int value;
int context;
@@ -75,9 +61,8 @@ struct fence_timeline {
#endif
};

-struct fence_timeline *fence_timeline_create(unsigned num,
- struct fence_timeline_ops *ops,
- int size, const char *drv_name,
+struct fence_timeline *fence_timeline_create(unsigned num, int size,
+ const char *drv_name,
const char *name);
void fence_timeline_get(struct fence_timeline *timeline);
void fence_timeline_put(struct fence_timeline *timeline);
--
2.5.0