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

Gustavo Padovan gustavo at padovan.org
Fri Jan 15 06:55:30 PST 2016


From: Gustavo Padovan <gustavo.padovan at collabora.co.uk>

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 at collabora.co.uk>
---
 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



More information about the dri-devel mailing list