All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/12] De-stage Sync File Framework
@ 2016-04-27 16:27 ` Gustavo Padovan
  0 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-27 16:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, devel, dri-devel, Daniel Stone,
	Arve Hjønnevåg, Riley Andrews, Daniel Vetter,
	Rob Clark, Greg Hackmann, John Harrison, Maarten Lankhorst,
	Sumit Semwal, Gustavo Padovan

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

Hi,

This patchset sits on top of Sync ABI Rework v13:

https://www.spinics.net/lists/dri-devel/msg105667.html

The first eight clean up and prepare sync_file for de-staging. The last four
patches do the de-staging, moving files to drivers/dma-buf/ and include/linux/
plus adding Documentation.

As the de-stage depends upon many changes on the staging tree it would
be good to get all the patches merged through the staging tree if Sumit
agrees with that.

The next step on the Sync de-stage is clean up the remaining bits 
of the Sync Framework, mainly SW_SYNC, which is only used for testing.

Thanks,

	Gustavo

---
Gustavo Padovan (12):
  staging/android: remove redundant comments on sync_merge_data
  staging/android: drop sync_file_install() and sync_file_put()
  staging/android: move sync_file functions comments to sync.c
  staging/android: make sync_file_merge() static
  staging/android: make sync_file_fdget() static
  staging/android: prepare sync_file for de-staging
  staging/android: improve documentation for sync_file
  staging/android: style fix: alignment to match the open parenthesis
  dma-buf/sync_file: de-stage sync_file headers
  dma-buf/sync_file: de-stage sync_file
  Documentation: include sync_file into DocBook
  Documentation: add Sync File doc

 Documentation/DocBook/device-drivers.tmpl |   2 +
 Documentation/dma-buf-sync_file.txt       |  65 +++++
 drivers/Kconfig                           |   2 +
 drivers/dma-buf/Kconfig                   |  11 +
 drivers/dma-buf/Makefile                  |   1 +
 drivers/dma-buf/sync_file.c               | 394 ++++++++++++++++++++++++++++++
 drivers/staging/android/Kconfig           |   1 +
 drivers/staging/android/sync.c            | 362 ---------------------------
 drivers/staging/android/sync.h            |  91 +------
 drivers/staging/android/sync_debug.c      |   5 +-
 drivers/staging/android/uapi/sync.h       | 100 --------
 include/linux/sync_file.h                 |  57 +++++
 include/uapi/linux/sync_file.h            | 100 ++++++++
 13 files changed, 638 insertions(+), 553 deletions(-)
 create mode 100644 Documentation/dma-buf-sync_file.txt
 create mode 100644 drivers/dma-buf/Kconfig
 create mode 100644 drivers/dma-buf/sync_file.c
 delete mode 100644 drivers/staging/android/uapi/sync.h
 create mode 100644 include/linux/sync_file.h
 create mode 100644 include/uapi/linux/sync_file.h

-- 
2.5.5

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [PATCH 00/12] De-stage Sync File Framework
@ 2016-04-27 16:27 ` Gustavo Padovan
  0 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-27 16:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: devel, Daniel Stone, Daniel Vetter, Riley Andrews, dri-devel,
	linux-kernel, Arve Hjønnevåg, Gustavo Padovan,
	John Harrison

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

Hi,

This patchset sits on top of Sync ABI Rework v13:

https://www.spinics.net/lists/dri-devel/msg105667.html

The first eight clean up and prepare sync_file for de-staging. The last four
patches do the de-staging, moving files to drivers/dma-buf/ and include/linux/
plus adding Documentation.

As the de-stage depends upon many changes on the staging tree it would
be good to get all the patches merged through the staging tree if Sumit
agrees with that.

The next step on the Sync de-stage is clean up the remaining bits 
of the Sync Framework, mainly SW_SYNC, which is only used for testing.

Thanks,

	Gustavo

---
Gustavo Padovan (12):
  staging/android: remove redundant comments on sync_merge_data
  staging/android: drop sync_file_install() and sync_file_put()
  staging/android: move sync_file functions comments to sync.c
  staging/android: make sync_file_merge() static
  staging/android: make sync_file_fdget() static
  staging/android: prepare sync_file for de-staging
  staging/android: improve documentation for sync_file
  staging/android: style fix: alignment to match the open parenthesis
  dma-buf/sync_file: de-stage sync_file headers
  dma-buf/sync_file: de-stage sync_file
  Documentation: include sync_file into DocBook
  Documentation: add Sync File doc

 Documentation/DocBook/device-drivers.tmpl |   2 +
 Documentation/dma-buf-sync_file.txt       |  65 +++++
 drivers/Kconfig                           |   2 +
 drivers/dma-buf/Kconfig                   |  11 +
 drivers/dma-buf/Makefile                  |   1 +
 drivers/dma-buf/sync_file.c               | 394 ++++++++++++++++++++++++++++++
 drivers/staging/android/Kconfig           |   1 +
 drivers/staging/android/sync.c            | 362 ---------------------------
 drivers/staging/android/sync.h            |  91 +------
 drivers/staging/android/sync_debug.c      |   5 +-
 drivers/staging/android/uapi/sync.h       | 100 --------
 include/linux/sync_file.h                 |  57 +++++
 include/uapi/linux/sync_file.h            | 100 ++++++++
 13 files changed, 638 insertions(+), 553 deletions(-)
 create mode 100644 Documentation/dma-buf-sync_file.txt
 create mode 100644 drivers/dma-buf/Kconfig
 create mode 100644 drivers/dma-buf/sync_file.c
 delete mode 100644 drivers/staging/android/uapi/sync.h
 create mode 100644 include/linux/sync_file.h
 create mode 100644 include/uapi/linux/sync_file.h

-- 
2.5.5

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [PATCH 01/12] staging/android: remove redundant comments on sync_merge_data
  2016-04-27 16:27 ` Gustavo Padovan
@ 2016-04-27 16:27   ` Gustavo Padovan
  -1 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-27 16:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, devel, dri-devel, Daniel Stone,
	Arve Hjønnevåg, Riley Andrews, Daniel Vetter,
	Rob Clark, Greg Hackmann, John Harrison, Maarten Lankhorst,
	Sumit Semwal, Gustavo Padovan

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

struct sync_merge_data already have documentation on top of the
struct definition. No need to duplicate it.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 drivers/staging/android/uapi/sync.h | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/android/uapi/sync.h b/drivers/staging/android/uapi/sync.h
index 7de5d6a..413303d 100644
--- a/drivers/staging/android/uapi/sync.h
+++ b/drivers/staging/android/uapi/sync.h
@@ -23,9 +23,9 @@
  * @pad:	padding for 64-bit alignment, should always be zero
  */
 struct sync_merge_data {
-	char	name[32]; /* name of new fence */
-	__s32	fd2; /* fd of second fence */
-	__s32	fence; /* fd on newly created fence */
+	char	name[32];
+	__s32	fd2;
+	__s32	fence;
 	__u32	flags;
 	__u32	pad;
 };
@@ -33,8 +33,8 @@ struct sync_merge_data {
 /**
  * struct sync_fence_info - detailed fence information
  * @obj_name:		name of parent sync_timeline
- * @driver_name:	name of driver implementing the parent
- * @status:		status of the fence 0:active 1:signaled <0:error
+* @driver_name:	name of driver implementing the parent
+* @status:		status of the fence 0:active 1:signaled <0:error
  * @flags:		fence_info flags
  * @timestamp_ns:	timestamp of status change in nanoseconds
  */
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 01/12] staging/android: remove redundant comments on sync_merge_data
@ 2016-04-27 16:27   ` Gustavo Padovan
  0 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-27 16:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: devel, Rob Clark, Daniel Stone, Daniel Vetter, Maarten Lankhorst,
	Riley Andrews, dri-devel, linux-kernel, Arve Hjønnevåg,
	Greg Hackmann, Gustavo Padovan, Sumit Semwal, John Harrison

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

struct sync_merge_data already have documentation on top of the
struct definition. No need to duplicate it.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
---
 drivers/staging/android/uapi/sync.h | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/android/uapi/sync.h b/drivers/staging/android/uapi/sync.h
index 7de5d6a..413303d 100644
--- a/drivers/staging/android/uapi/sync.h
+++ b/drivers/staging/android/uapi/sync.h
@@ -23,9 +23,9 @@
  * @pad:	padding for 64-bit alignment, should always be zero
  */
 struct sync_merge_data {
-	char	name[32]; /* name of new fence */
-	__s32	fd2; /* fd of second fence */
-	__s32	fence; /* fd on newly created fence */
+	char	name[32];
+	__s32	fd2;
+	__s32	fence;
 	__u32	flags;
 	__u32	pad;
 };
@@ -33,8 +33,8 @@ struct sync_merge_data {
 /**
  * struct sync_fence_info - detailed fence information
  * @obj_name:		name of parent sync_timeline
- * @driver_name:	name of driver implementing the parent
- * @status:		status of the fence 0:active 1:signaled <0:error
+* @driver_name:	name of driver implementing the parent
+* @status:		status of the fence 0:active 1:signaled <0:error
  * @flags:		fence_info flags
  * @timestamp_ns:	timestamp of status change in nanoseconds
  */
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 02/12] staging/android: drop sync_file_install() and sync_file_put()
  2016-04-27 16:27 ` Gustavo Padovan
@ 2016-04-27 16:27   ` Gustavo Padovan
  -1 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-27 16:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, devel, dri-devel, Daniel Stone,
	Arve Hjønnevåg, Riley Andrews, Daniel Vetter,
	Rob Clark, Greg Hackmann, John Harrison, Maarten Lankhorst,
	Sumit Semwal, Gustavo Padovan

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

These two functions are just wrappers for one line functions, they
call fd_install() and fput() respectively, so just get rid of them
and use fd_install() and fput() directly for more simplicity.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
---
 drivers/staging/android/sync.c       | 20 ++++----------------
 drivers/staging/android/sync.h       | 19 -------------------
 drivers/staging/android/sync_debug.c |  4 ++--
 3 files changed, 6 insertions(+), 37 deletions(-)

diff --git a/drivers/staging/android/sync.c b/drivers/staging/android/sync.c
index f9c6094..b965e2a 100644
--- a/drivers/staging/android/sync.c
+++ b/drivers/staging/android/sync.c
@@ -216,18 +216,6 @@ err:
 }
 EXPORT_SYMBOL(sync_file_fdget);
 
-void sync_file_put(struct sync_file *sync_file)
-{
-	fput(sync_file->file);
-}
-EXPORT_SYMBOL(sync_file_put);
-
-void sync_file_install(struct sync_file *sync_file, int fd)
-{
-	fd_install(fd, sync_file->file);
-}
-EXPORT_SYMBOL(sync_file_install);
-
 static void sync_file_add_pt(struct sync_file *sync_file, int *i,
 			     struct fence *fence)
 {
@@ -469,15 +457,15 @@ static long sync_file_ioctl_merge(struct sync_file *sync_file,
 		goto err_put_fence3;
 	}
 
-	sync_file_install(fence3, fd);
-	sync_file_put(fence2);
+	fd_install(fd, fence3->file);
+	fput(fence2->file);
 	return 0;
 
 err_put_fence3:
-	sync_file_put(fence3);
+	fput(fence3->file);
 
 err_put_fence2:
-	sync_file_put(fence2);
+	fput(fence2->file);
 
 err_put_fd:
 	put_unused_fd(fd);
diff --git a/drivers/staging/android/sync.h b/drivers/staging/android/sync.h
index d2a1734..c45cc7b 100644
--- a/drivers/staging/android/sync.h
+++ b/drivers/staging/android/sync.h
@@ -203,25 +203,6 @@ struct sync_file *sync_file_merge(const char *name,
  */
 struct sync_file *sync_file_fdget(int fd);
 
-/**
- * sync_file_put() - puts a reference of a sync_file
- * @sync_file:	sync_file to put
- *
- * Puts a reference on @sync_fence.  If this is the last reference, the
- * sync_fil and all it's sync_pts will be freed
- */
-void sync_file_put(struct sync_file *sync_file);
-
-/**
- * sync_file_install() - installs a sync_file into a file descriptor
- * @sync_file:	sync_file to install
- * @fd:		file descriptor in which to install the fence
- *
- * Installs @sync_file into @fd.  @fd's should be acquired through
- * get_unused_fd_flags(O_CLOEXEC).
- */
-void sync_file_install(struct sync_file *sync_file, int fd);
-
 #ifdef CONFIG_DEBUG_FS
 
 void sync_timeline_debug_add(struct sync_timeline *obj);
diff --git a/drivers/staging/android/sync_debug.c b/drivers/staging/android/sync_debug.c
index 5a7ec58..e4b0e41 100644
--- a/drivers/staging/android/sync_debug.c
+++ b/drivers/staging/android/sync_debug.c
@@ -272,12 +272,12 @@ static long sw_sync_ioctl_create_fence(struct sw_sync_timeline *obj,
 
 	data.fence = fd;
 	if (copy_to_user((void __user *)arg, &data, sizeof(data))) {
-		sync_file_put(sync_file);
+		fput(sync_file->file);
 		err = -EFAULT;
 		goto err;
 	}
 
-	sync_file_install(sync_file, fd);
+	fd_install(fd, sync_file->file);
 
 	return 0;
 
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 02/12] staging/android: drop sync_file_install() and sync_file_put()
@ 2016-04-27 16:27   ` Gustavo Padovan
  0 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-27 16:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: devel, Rob Clark, Daniel Stone, Daniel Vetter, Maarten Lankhorst,
	Riley Andrews, dri-devel, linux-kernel, Arve Hjønnevåg,
	Greg Hackmann, Gustavo Padovan, Sumit Semwal, John Harrison

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

These two functions are just wrappers for one line functions, they
call fd_install() and fput() respectively, so just get rid of them
and use fd_install() and fput() directly for more simplicity.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
---
 drivers/staging/android/sync.c       | 20 ++++----------------
 drivers/staging/android/sync.h       | 19 -------------------
 drivers/staging/android/sync_debug.c |  4 ++--
 3 files changed, 6 insertions(+), 37 deletions(-)

diff --git a/drivers/staging/android/sync.c b/drivers/staging/android/sync.c
index f9c6094..b965e2a 100644
--- a/drivers/staging/android/sync.c
+++ b/drivers/staging/android/sync.c
@@ -216,18 +216,6 @@ err:
 }
 EXPORT_SYMBOL(sync_file_fdget);
 
-void sync_file_put(struct sync_file *sync_file)
-{
-	fput(sync_file->file);
-}
-EXPORT_SYMBOL(sync_file_put);
-
-void sync_file_install(struct sync_file *sync_file, int fd)
-{
-	fd_install(fd, sync_file->file);
-}
-EXPORT_SYMBOL(sync_file_install);
-
 static void sync_file_add_pt(struct sync_file *sync_file, int *i,
 			     struct fence *fence)
 {
@@ -469,15 +457,15 @@ static long sync_file_ioctl_merge(struct sync_file *sync_file,
 		goto err_put_fence3;
 	}
 
-	sync_file_install(fence3, fd);
-	sync_file_put(fence2);
+	fd_install(fd, fence3->file);
+	fput(fence2->file);
 	return 0;
 
 err_put_fence3:
-	sync_file_put(fence3);
+	fput(fence3->file);
 
 err_put_fence2:
-	sync_file_put(fence2);
+	fput(fence2->file);
 
 err_put_fd:
 	put_unused_fd(fd);
diff --git a/drivers/staging/android/sync.h b/drivers/staging/android/sync.h
index d2a1734..c45cc7b 100644
--- a/drivers/staging/android/sync.h
+++ b/drivers/staging/android/sync.h
@@ -203,25 +203,6 @@ struct sync_file *sync_file_merge(const char *name,
  */
 struct sync_file *sync_file_fdget(int fd);
 
-/**
- * sync_file_put() - puts a reference of a sync_file
- * @sync_file:	sync_file to put
- *
- * Puts a reference on @sync_fence.  If this is the last reference, the
- * sync_fil and all it's sync_pts will be freed
- */
-void sync_file_put(struct sync_file *sync_file);
-
-/**
- * sync_file_install() - installs a sync_file into a file descriptor
- * @sync_file:	sync_file to install
- * @fd:		file descriptor in which to install the fence
- *
- * Installs @sync_file into @fd.  @fd's should be acquired through
- * get_unused_fd_flags(O_CLOEXEC).
- */
-void sync_file_install(struct sync_file *sync_file, int fd);
-
 #ifdef CONFIG_DEBUG_FS
 
 void sync_timeline_debug_add(struct sync_timeline *obj);
diff --git a/drivers/staging/android/sync_debug.c b/drivers/staging/android/sync_debug.c
index 5a7ec58..e4b0e41 100644
--- a/drivers/staging/android/sync_debug.c
+++ b/drivers/staging/android/sync_debug.c
@@ -272,12 +272,12 @@ static long sw_sync_ioctl_create_fence(struct sw_sync_timeline *obj,
 
 	data.fence = fd;
 	if (copy_to_user((void __user *)arg, &data, sizeof(data))) {
-		sync_file_put(sync_file);
+		fput(sync_file->file);
 		err = -EFAULT;
 		goto err;
 	}
 
-	sync_file_install(sync_file, fd);
+	fd_install(fd, sync_file->file);
 
 	return 0;
 
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 03/12] staging/android: move sync_file functions comments to sync.c
  2016-04-27 16:27 ` Gustavo Padovan
@ 2016-04-27 16:27   ` Gustavo Padovan
  -1 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-27 16:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, devel, dri-devel, Daniel Stone,
	Arve Hjønnevåg, Riley Andrews, Daniel Vetter,
	Rob Clark, Greg Hackmann, John Harrison, Maarten Lankhorst,
	Sumit Semwal, Gustavo Padovan

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

To keep comments in line with drivers/dma-buf/ move all sync_file comments
to sync.c.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
---
 drivers/staging/android/sync.c | 26 +++++++++++++++++++++++++-
 drivers/staging/android/sync.h | 31 -------------------------------
 2 files changed, 25 insertions(+), 32 deletions(-)

diff --git a/drivers/staging/android/sync.c b/drivers/staging/android/sync.c
index b965e2a..a89ded0 100644
--- a/drivers/staging/android/sync.c
+++ b/drivers/staging/android/sync.c
@@ -173,7 +173,14 @@ static void fence_check_cb_func(struct fence *f, struct fence_cb *cb)
 		wake_up_all(&sync_file->wq);
 }
 
-/* TODO: implement a create which takes more that one fence */
+/**
+ * sync_fence_create() - creates a sync fence
+ * @name:	name of fence to create
+ * @fence:	fence to add to the sync_fence
+ *
+ * Creates a sync_file containg @fence. Once this is called, the sync_file
+ * takes ownership of @fence.
+ */
 struct sync_file *sync_file_create(const char *name, struct fence *fence)
 {
 	struct sync_file *sync_file;
@@ -198,6 +205,13 @@ struct sync_file *sync_file_create(const char *name, struct fence *fence)
 }
 EXPORT_SYMBOL(sync_file_create);
 
+/**
+ * sync_file_fdget() - get a sync_file from an fd
+ * @fd:		fd referencing a fence
+ *
+ * Ensures @fd references a valid sync_file, increments the refcount of the
+ * backing file. Returns the sync_file or NULL in case of error.
+ */
 struct sync_file *sync_file_fdget(int fd)
 {
 	struct file *file = fget(fd);
@@ -229,6 +243,16 @@ static void sync_file_add_pt(struct sync_file *sync_file, int *i,
 	}
 }
 
+/**
+ * sync_file_merge() - merge two sync_files
+ * @name:	name of new fence
+ * @a:		sync_file a
+ * @b:		sync_file b
+ *
+ * Creates a new sync_file which contains copies of all the fences in both
+ * @a and @b.  @a and @b remain valid, independent sync_file. Returns the
+ * new merged sync_file or NULL in case of error.
+ */
 struct sync_file *sync_file_merge(const char *name,
 				  struct sync_file *a, struct sync_file *b)
 {
diff --git a/drivers/staging/android/sync.h b/drivers/staging/android/sync.h
index c45cc7b..925fba5 100644
--- a/drivers/staging/android/sync.h
+++ b/drivers/staging/android/sync.h
@@ -167,40 +167,9 @@ void sync_timeline_signal(struct sync_timeline *obj);
  */
 struct fence *sync_pt_create(struct sync_timeline *parent, int size);
 
-/**
- * sync_fence_create() - creates a sync fence
- * @name:	name of fence to create
- * @fence:	fence to add to the sync_fence
- *
- * Creates a sync_file containg @fence. Once this is called, the sync_file
- * takes ownership of @fence.
- */
 struct sync_file *sync_file_create(const char *name, struct fence *fence);
-
-/*
- * API for sync_file consumers
- */
-
-/**
- * sync_file_merge() - merge two sync_files
- * @name:	name of new fence
- * @a:		sync_file a
- * @b:		sync_file b
- *
- * Creates a new sync_file which contains copies of all the fences in both
- * @a and @b.  @a and @b remain valid, independent sync_file. Returns the
- * new merged sync_file or NULL in case of error.
- */
 struct sync_file *sync_file_merge(const char *name,
 				    struct sync_file *a, struct sync_file *b);
-
-/**
- * sync_file_fdget() - get a sync_file from an fd
- * @fd:		fd referencing a fence
- *
- * Ensures @fd references a valid sync_file, increments the refcount of the
- * backing file. Returns the sync_file or NULL in case of error.
- */
 struct sync_file *sync_file_fdget(int fd);
 
 #ifdef CONFIG_DEBUG_FS
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 03/12] staging/android: move sync_file functions comments to sync.c
@ 2016-04-27 16:27   ` Gustavo Padovan
  0 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-27 16:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: devel, Rob Clark, Daniel Stone, Daniel Vetter, Maarten Lankhorst,
	Riley Andrews, dri-devel, linux-kernel, Arve Hjønnevåg,
	Greg Hackmann, Gustavo Padovan, Sumit Semwal, John Harrison

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

To keep comments in line with drivers/dma-buf/ move all sync_file comments
to sync.c.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
---
 drivers/staging/android/sync.c | 26 +++++++++++++++++++++++++-
 drivers/staging/android/sync.h | 31 -------------------------------
 2 files changed, 25 insertions(+), 32 deletions(-)

diff --git a/drivers/staging/android/sync.c b/drivers/staging/android/sync.c
index b965e2a..a89ded0 100644
--- a/drivers/staging/android/sync.c
+++ b/drivers/staging/android/sync.c
@@ -173,7 +173,14 @@ static void fence_check_cb_func(struct fence *f, struct fence_cb *cb)
 		wake_up_all(&sync_file->wq);
 }
 
-/* TODO: implement a create which takes more that one fence */
+/**
+ * sync_fence_create() - creates a sync fence
+ * @name:	name of fence to create
+ * @fence:	fence to add to the sync_fence
+ *
+ * Creates a sync_file containg @fence. Once this is called, the sync_file
+ * takes ownership of @fence.
+ */
 struct sync_file *sync_file_create(const char *name, struct fence *fence)
 {
 	struct sync_file *sync_file;
@@ -198,6 +205,13 @@ struct sync_file *sync_file_create(const char *name, struct fence *fence)
 }
 EXPORT_SYMBOL(sync_file_create);
 
+/**
+ * sync_file_fdget() - get a sync_file from an fd
+ * @fd:		fd referencing a fence
+ *
+ * Ensures @fd references a valid sync_file, increments the refcount of the
+ * backing file. Returns the sync_file or NULL in case of error.
+ */
 struct sync_file *sync_file_fdget(int fd)
 {
 	struct file *file = fget(fd);
@@ -229,6 +243,16 @@ static void sync_file_add_pt(struct sync_file *sync_file, int *i,
 	}
 }
 
+/**
+ * sync_file_merge() - merge two sync_files
+ * @name:	name of new fence
+ * @a:		sync_file a
+ * @b:		sync_file b
+ *
+ * Creates a new sync_file which contains copies of all the fences in both
+ * @a and @b.  @a and @b remain valid, independent sync_file. Returns the
+ * new merged sync_file or NULL in case of error.
+ */
 struct sync_file *sync_file_merge(const char *name,
 				  struct sync_file *a, struct sync_file *b)
 {
diff --git a/drivers/staging/android/sync.h b/drivers/staging/android/sync.h
index c45cc7b..925fba5 100644
--- a/drivers/staging/android/sync.h
+++ b/drivers/staging/android/sync.h
@@ -167,40 +167,9 @@ void sync_timeline_signal(struct sync_timeline *obj);
  */
 struct fence *sync_pt_create(struct sync_timeline *parent, int size);
 
-/**
- * sync_fence_create() - creates a sync fence
- * @name:	name of fence to create
- * @fence:	fence to add to the sync_fence
- *
- * Creates a sync_file containg @fence. Once this is called, the sync_file
- * takes ownership of @fence.
- */
 struct sync_file *sync_file_create(const char *name, struct fence *fence);
-
-/*
- * API for sync_file consumers
- */
-
-/**
- * sync_file_merge() - merge two sync_files
- * @name:	name of new fence
- * @a:		sync_file a
- * @b:		sync_file b
- *
- * Creates a new sync_file which contains copies of all the fences in both
- * @a and @b.  @a and @b remain valid, independent sync_file. Returns the
- * new merged sync_file or NULL in case of error.
- */
 struct sync_file *sync_file_merge(const char *name,
 				    struct sync_file *a, struct sync_file *b);
-
-/**
- * sync_file_fdget() - get a sync_file from an fd
- * @fd:		fd referencing a fence
- *
- * Ensures @fd references a valid sync_file, increments the refcount of the
- * backing file. Returns the sync_file or NULL in case of error.
- */
 struct sync_file *sync_file_fdget(int fd);
 
 #ifdef CONFIG_DEBUG_FS
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 04/12] staging/android: make sync_file_merge() static
  2016-04-27 16:27 ` Gustavo Padovan
@ 2016-04-27 16:27   ` Gustavo Padovan
  -1 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-27 16:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, devel, dri-devel, Daniel Stone,
	Arve Hjønnevåg, Riley Andrews, Daniel Vetter,
	Rob Clark, Greg Hackmann, John Harrison, Maarten Lankhorst,
	Sumit Semwal, Gustavo Padovan

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

There is no plan in the near future to use this function outside of this
file so keep it as static.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
---
 drivers/staging/android/sync.c | 4 ++--
 drivers/staging/android/sync.h | 2 --
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/android/sync.c b/drivers/staging/android/sync.c
index a89ded0..c441fde 100644
--- a/drivers/staging/android/sync.c
+++ b/drivers/staging/android/sync.c
@@ -253,8 +253,8 @@ static void sync_file_add_pt(struct sync_file *sync_file, int *i,
  * @a and @b.  @a and @b remain valid, independent sync_file. Returns the
  * new merged sync_file or NULL in case of error.
  */
-struct sync_file *sync_file_merge(const char *name,
-				  struct sync_file *a, struct sync_file *b)
+static struct sync_file *sync_file_merge(const char *name, struct sync_file *a,
+					 struct sync_file *b)
 {
 	int num_fences = a->num_fences + b->num_fences;
 	struct sync_file *sync_file;
diff --git a/drivers/staging/android/sync.h b/drivers/staging/android/sync.h
index 925fba5..ffc6df6 100644
--- a/drivers/staging/android/sync.h
+++ b/drivers/staging/android/sync.h
@@ -168,8 +168,6 @@ void sync_timeline_signal(struct sync_timeline *obj);
 struct fence *sync_pt_create(struct sync_timeline *parent, int size);
 
 struct sync_file *sync_file_create(const char *name, struct fence *fence);
-struct sync_file *sync_file_merge(const char *name,
-				    struct sync_file *a, struct sync_file *b);
 struct sync_file *sync_file_fdget(int fd);
 
 #ifdef CONFIG_DEBUG_FS
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 04/12] staging/android: make sync_file_merge() static
@ 2016-04-27 16:27   ` Gustavo Padovan
  0 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-27 16:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: devel, Rob Clark, Daniel Stone, Daniel Vetter, Maarten Lankhorst,
	Riley Andrews, dri-devel, linux-kernel, Arve Hjønnevåg,
	Greg Hackmann, Gustavo Padovan, Sumit Semwal, John Harrison

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

There is no plan in the near future to use this function outside of this
file so keep it as static.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
---
 drivers/staging/android/sync.c | 4 ++--
 drivers/staging/android/sync.h | 2 --
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/android/sync.c b/drivers/staging/android/sync.c
index a89ded0..c441fde 100644
--- a/drivers/staging/android/sync.c
+++ b/drivers/staging/android/sync.c
@@ -253,8 +253,8 @@ static void sync_file_add_pt(struct sync_file *sync_file, int *i,
  * @a and @b.  @a and @b remain valid, independent sync_file. Returns the
  * new merged sync_file or NULL in case of error.
  */
-struct sync_file *sync_file_merge(const char *name,
-				  struct sync_file *a, struct sync_file *b)
+static struct sync_file *sync_file_merge(const char *name, struct sync_file *a,
+					 struct sync_file *b)
 {
 	int num_fences = a->num_fences + b->num_fences;
 	struct sync_file *sync_file;
diff --git a/drivers/staging/android/sync.h b/drivers/staging/android/sync.h
index 925fba5..ffc6df6 100644
--- a/drivers/staging/android/sync.h
+++ b/drivers/staging/android/sync.h
@@ -168,8 +168,6 @@ void sync_timeline_signal(struct sync_timeline *obj);
 struct fence *sync_pt_create(struct sync_timeline *parent, int size);
 
 struct sync_file *sync_file_create(const char *name, struct fence *fence);
-struct sync_file *sync_file_merge(const char *name,
-				    struct sync_file *a, struct sync_file *b);
 struct sync_file *sync_file_fdget(int fd);
 
 #ifdef CONFIG_DEBUG_FS
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 05/12] staging/android: make sync_file_fdget() static
  2016-04-27 16:27 ` Gustavo Padovan
@ 2016-04-27 16:27   ` Gustavo Padovan
  -1 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-27 16:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, devel, dri-devel, Daniel Stone,
	Arve Hjønnevåg, Riley Andrews, Daniel Vetter,
	Rob Clark, Greg Hackmann, John Harrison, Maarten Lankhorst,
	Sumit Semwal, Gustavo Padovan

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

There is no plan in the near future to use this function outside of this
file so keep it as static.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
---
 drivers/staging/android/sync.c | 3 +--
 drivers/staging/android/sync.h | 1 -
 2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/staging/android/sync.c b/drivers/staging/android/sync.c
index c441fde..1239684 100644
--- a/drivers/staging/android/sync.c
+++ b/drivers/staging/android/sync.c
@@ -212,7 +212,7 @@ EXPORT_SYMBOL(sync_file_create);
  * Ensures @fd references a valid sync_file, increments the refcount of the
  * backing file. Returns the sync_file or NULL in case of error.
  */
-struct sync_file *sync_file_fdget(int fd)
+static struct sync_file *sync_file_fdget(int fd)
 {
 	struct file *file = fget(fd);
 
@@ -228,7 +228,6 @@ err:
 	fput(file);
 	return NULL;
 }
-EXPORT_SYMBOL(sync_file_fdget);
 
 static void sync_file_add_pt(struct sync_file *sync_file, int *i,
 			     struct fence *fence)
diff --git a/drivers/staging/android/sync.h b/drivers/staging/android/sync.h
index ffc6df6..1f164df 100644
--- a/drivers/staging/android/sync.h
+++ b/drivers/staging/android/sync.h
@@ -168,7 +168,6 @@ void sync_timeline_signal(struct sync_timeline *obj);
 struct fence *sync_pt_create(struct sync_timeline *parent, int size);
 
 struct sync_file *sync_file_create(const char *name, struct fence *fence);
-struct sync_file *sync_file_fdget(int fd);
 
 #ifdef CONFIG_DEBUG_FS
 
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 05/12] staging/android: make sync_file_fdget() static
@ 2016-04-27 16:27   ` Gustavo Padovan
  0 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-27 16:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: devel, Rob Clark, Daniel Stone, Daniel Vetter, Maarten Lankhorst,
	Riley Andrews, dri-devel, linux-kernel, Arve Hjønnevåg,
	Greg Hackmann, Gustavo Padovan, Sumit Semwal, John Harrison

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

There is no plan in the near future to use this function outside of this
file so keep it as static.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
---
 drivers/staging/android/sync.c | 3 +--
 drivers/staging/android/sync.h | 1 -
 2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/staging/android/sync.c b/drivers/staging/android/sync.c
index c441fde..1239684 100644
--- a/drivers/staging/android/sync.c
+++ b/drivers/staging/android/sync.c
@@ -212,7 +212,7 @@ EXPORT_SYMBOL(sync_file_create);
  * Ensures @fd references a valid sync_file, increments the refcount of the
  * backing file. Returns the sync_file or NULL in case of error.
  */
-struct sync_file *sync_file_fdget(int fd)
+static struct sync_file *sync_file_fdget(int fd)
 {
 	struct file *file = fget(fd);
 
@@ -228,7 +228,6 @@ err:
 	fput(file);
 	return NULL;
 }
-EXPORT_SYMBOL(sync_file_fdget);
 
 static void sync_file_add_pt(struct sync_file *sync_file, int *i,
 			     struct fence *fence)
diff --git a/drivers/staging/android/sync.h b/drivers/staging/android/sync.h
index ffc6df6..1f164df 100644
--- a/drivers/staging/android/sync.h
+++ b/drivers/staging/android/sync.h
@@ -168,7 +168,6 @@ void sync_timeline_signal(struct sync_timeline *obj);
 struct fence *sync_pt_create(struct sync_timeline *parent, int size);
 
 struct sync_file *sync_file_create(const char *name, struct fence *fence);
-struct sync_file *sync_file_fdget(int fd);
 
 #ifdef CONFIG_DEBUG_FS
 
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 06/12] staging/android: prepare sync_file for de-staging
  2016-04-27 16:27 ` Gustavo Padovan
                   ` (5 preceding siblings ...)
  (?)
@ 2016-04-27 16:27 ` Gustavo Padovan
  2016-05-02 21:04     ` Pavel Machek
  -1 siblings, 1 reply; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-27 16:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, devel, dri-devel, Daniel Stone,
	Arve Hjønnevåg, Riley Andrews, Daniel Vetter,
	Rob Clark, Greg Hackmann, John Harrison, Maarten Lankhorst,
	Sumit Semwal, Gustavo Padovan

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

Move its functions and structs to their own file. Also moves function's
docs to the .c file.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
---
 drivers/staging/android/Makefile                   |   2 +-
 drivers/staging/android/sync.c                     | 373 -------------------
 drivers/staging/android/sync.h                     |  38 +-
 drivers/staging/android/sync_debug.c               |   1 +
 drivers/staging/android/sync_file.c                | 393 +++++++++++++++++++++
 drivers/staging/android/sync_file.h                |  57 +++
 .../staging/android/uapi/{sync.h => sync_file.h}   |   0
 7 files changed, 454 insertions(+), 410 deletions(-)
 create mode 100644 drivers/staging/android/sync_file.c
 create mode 100644 drivers/staging/android/sync_file.h
 rename drivers/staging/android/uapi/{sync.h => sync_file.h} (100%)

diff --git a/drivers/staging/android/Makefile b/drivers/staging/android/Makefile
index 980d6dc..ebc2df1 100644
--- a/drivers/staging/android/Makefile
+++ b/drivers/staging/android/Makefile
@@ -4,5 +4,5 @@ obj-y					+= ion/
 
 obj-$(CONFIG_ASHMEM)			+= ashmem.o
 obj-$(CONFIG_ANDROID_LOW_MEMORY_KILLER)	+= lowmemorykiller.o
-obj-$(CONFIG_SYNC)			+= sync.o sync_debug.o
+obj-$(CONFIG_SYNC)			+= sync_file.o sync.o sync_debug.o
 obj-$(CONFIG_SW_SYNC)			+= sw_sync.o
diff --git a/drivers/staging/android/sync.c b/drivers/staging/android/sync.c
index 1239684..1d14c83 100644
--- a/drivers/staging/android/sync.c
+++ b/drivers/staging/android/sync.c
@@ -16,10 +16,7 @@
 
 #include <linux/debugfs.h>
 #include <linux/export.h>
-#include <linux/file.h>
-#include <linux/fs.h>
 #include <linux/kernel.h>
-#include <linux/poll.h>
 #include <linux/sched.h>
 #include <linux/seq_file.h>
 #include <linux/slab.h>
@@ -32,7 +29,6 @@
 #include "trace/sync.h"
 
 static const struct fence_ops android_fence_ops;
-static const struct file_operations sync_file_fops;
 
 struct sync_timeline *sync_timeline_create(const struct sync_timeline_ops *ops,
 					   int size, const char *name)
@@ -136,181 +132,6 @@ struct fence *sync_pt_create(struct sync_timeline *obj, int size)
 }
 EXPORT_SYMBOL(sync_pt_create);
 
-static struct sync_file *sync_file_alloc(int size, const char *name)
-{
-	struct sync_file *sync_file;
-
-	sync_file = kzalloc(size, GFP_KERNEL);
-	if (!sync_file)
-		return NULL;
-
-	sync_file->file = anon_inode_getfile("sync_file", &sync_file_fops,
-					     sync_file, 0);
-	if (IS_ERR(sync_file->file))
-		goto err;
-
-	kref_init(&sync_file->kref);
-	strlcpy(sync_file->name, name, sizeof(sync_file->name));
-
-	init_waitqueue_head(&sync_file->wq);
-
-	return sync_file;
-
-err:
-	kfree(sync_file);
-	return NULL;
-}
-
-static void fence_check_cb_func(struct fence *f, struct fence_cb *cb)
-{
-	struct sync_file_cb *check;
-	struct sync_file *sync_file;
-
-	check = container_of(cb, struct sync_file_cb, cb);
-	sync_file = check->sync_file;
-
-	if (atomic_dec_and_test(&sync_file->status))
-		wake_up_all(&sync_file->wq);
-}
-
-/**
- * sync_fence_create() - creates a sync fence
- * @name:	name of fence to create
- * @fence:	fence to add to the sync_fence
- *
- * Creates a sync_file containg @fence. Once this is called, the sync_file
- * takes ownership of @fence.
- */
-struct sync_file *sync_file_create(const char *name, struct fence *fence)
-{
-	struct sync_file *sync_file;
-
-	sync_file = sync_file_alloc(offsetof(struct sync_file, cbs[1]),
-				    name);
-	if (!sync_file)
-		return NULL;
-
-	sync_file->num_fences = 1;
-	atomic_set(&sync_file->status, 1);
-
-	sync_file->cbs[0].fence = fence;
-	sync_file->cbs[0].sync_file = sync_file;
-	if (fence_add_callback(fence, &sync_file->cbs[0].cb,
-			       fence_check_cb_func))
-		atomic_dec(&sync_file->status);
-
-	sync_file_debug_add(sync_file);
-
-	return sync_file;
-}
-EXPORT_SYMBOL(sync_file_create);
-
-/**
- * sync_file_fdget() - get a sync_file from an fd
- * @fd:		fd referencing a fence
- *
- * Ensures @fd references a valid sync_file, increments the refcount of the
- * backing file. Returns the sync_file or NULL in case of error.
- */
-static struct sync_file *sync_file_fdget(int fd)
-{
-	struct file *file = fget(fd);
-
-	if (!file)
-		return NULL;
-
-	if (file->f_op != &sync_file_fops)
-		goto err;
-
-	return file->private_data;
-
-err:
-	fput(file);
-	return NULL;
-}
-
-static void sync_file_add_pt(struct sync_file *sync_file, int *i,
-			     struct fence *fence)
-{
-	sync_file->cbs[*i].fence = fence;
-	sync_file->cbs[*i].sync_file = sync_file;
-
-	if (!fence_add_callback(fence, &sync_file->cbs[*i].cb,
-				fence_check_cb_func)) {
-		fence_get(fence);
-		(*i)++;
-	}
-}
-
-/**
- * sync_file_merge() - merge two sync_files
- * @name:	name of new fence
- * @a:		sync_file a
- * @b:		sync_file b
- *
- * Creates a new sync_file which contains copies of all the fences in both
- * @a and @b.  @a and @b remain valid, independent sync_file. Returns the
- * new merged sync_file or NULL in case of error.
- */
-static struct sync_file *sync_file_merge(const char *name, struct sync_file *a,
-					 struct sync_file *b)
-{
-	int num_fences = a->num_fences + b->num_fences;
-	struct sync_file *sync_file;
-	int i, i_a, i_b;
-	unsigned long size = offsetof(struct sync_file, cbs[num_fences]);
-
-	sync_file = sync_file_alloc(size, name);
-	if (!sync_file)
-		return NULL;
-
-	atomic_set(&sync_file->status, num_fences);
-
-	/*
-	 * Assume sync_file a and b are both ordered and have no
-	 * duplicates with the same context.
-	 *
-	 * If a sync_file can only be created with sync_file_merge
-	 * and sync_file_create, this is a reasonable assumption.
-	 */
-	for (i = i_a = i_b = 0; i_a < a->num_fences && i_b < b->num_fences; ) {
-		struct fence *pt_a = a->cbs[i_a].fence;
-		struct fence *pt_b = b->cbs[i_b].fence;
-
-		if (pt_a->context < pt_b->context) {
-			sync_file_add_pt(sync_file, &i, pt_a);
-
-			i_a++;
-		} else if (pt_a->context > pt_b->context) {
-			sync_file_add_pt(sync_file, &i, pt_b);
-
-			i_b++;
-		} else {
-			if (pt_a->seqno - pt_b->seqno <= INT_MAX)
-				sync_file_add_pt(sync_file, &i, pt_a);
-			else
-				sync_file_add_pt(sync_file, &i, pt_b);
-
-			i_a++;
-			i_b++;
-		}
-	}
-
-	for (; i_a < a->num_fences; i_a++)
-		sync_file_add_pt(sync_file, &i, a->cbs[i_a].fence);
-
-	for (; i_b < b->num_fences; i_b++)
-		sync_file_add_pt(sync_file, &i, b->cbs[i_b].fence);
-
-	if (num_fences > i)
-		atomic_sub(num_fences - i, &sync_file->status);
-	sync_file->num_fences = i;
-
-	sync_file_debug_add(sync_file);
-	return sync_file;
-}
-EXPORT_SYMBOL(sync_file_merge);
-
 static const char *android_fence_get_driver_name(struct fence *fence)
 {
 	struct sync_timeline *parent = fence_parent(fence);
@@ -398,197 +219,3 @@ static const struct fence_ops android_fence_ops = {
 	.fence_value_str = android_fence_value_str,
 	.timeline_value_str = android_fence_timeline_value_str,
 };
-
-static void sync_file_free(struct kref *kref)
-{
-	struct sync_file *sync_file = container_of(kref, struct sync_file,
-						     kref);
-	int i;
-
-	for (i = 0; i < sync_file->num_fences; ++i) {
-		fence_remove_callback(sync_file->cbs[i].fence,
-				      &sync_file->cbs[i].cb);
-		fence_put(sync_file->cbs[i].fence);
-	}
-
-	kfree(sync_file);
-}
-
-static int sync_file_release(struct inode *inode, struct file *file)
-{
-	struct sync_file *sync_file = file->private_data;
-
-	sync_file_debug_remove(sync_file);
-
-	kref_put(&sync_file->kref, sync_file_free);
-	return 0;
-}
-
-static unsigned int sync_file_poll(struct file *file, poll_table *wait)
-{
-	struct sync_file *sync_file = file->private_data;
-	int status;
-
-	poll_wait(file, &sync_file->wq, wait);
-
-	status = atomic_read(&sync_file->status);
-
-	if (!status)
-		return POLLIN;
-	if (status < 0)
-		return POLLERR;
-	return 0;
-}
-
-static long sync_file_ioctl_merge(struct sync_file *sync_file,
-				   unsigned long arg)
-{
-	int fd = get_unused_fd_flags(O_CLOEXEC);
-	int err;
-	struct sync_file *fence2, *fence3;
-	struct sync_merge_data data;
-
-	if (fd < 0)
-		return fd;
-
-	if (copy_from_user(&data, (void __user *)arg, sizeof(data))) {
-		err = -EFAULT;
-		goto err_put_fd;
-	}
-
-	if (data.flags || data.pad) {
-		err = -EINVAL;
-		goto err_put_fd;
-	}
-
-	fence2 = sync_file_fdget(data.fd2);
-	if (!fence2) {
-		err = -ENOENT;
-		goto err_put_fd;
-	}
-
-	data.name[sizeof(data.name) - 1] = '\0';
-	fence3 = sync_file_merge(data.name, sync_file, fence2);
-	if (!fence3) {
-		err = -ENOMEM;
-		goto err_put_fence2;
-	}
-
-	data.fence = fd;
-	if (copy_to_user((void __user *)arg, &data, sizeof(data))) {
-		err = -EFAULT;
-		goto err_put_fence3;
-	}
-
-	fd_install(fd, fence3->file);
-	fput(fence2->file);
-	return 0;
-
-err_put_fence3:
-	fput(fence3->file);
-
-err_put_fence2:
-	fput(fence2->file);
-
-err_put_fd:
-	put_unused_fd(fd);
-	return err;
-}
-
-static void sync_fill_fence_info(struct fence *fence,
-				struct sync_fence_info *info)
-{
-	strlcpy(info->obj_name, fence->ops->get_timeline_name(fence),
-		sizeof(info->obj_name));
-	strlcpy(info->driver_name, fence->ops->get_driver_name(fence),
-		sizeof(info->driver_name));
-	if (fence_is_signaled(fence))
-		info->status = fence->status >= 0 ? 1 : fence->status;
-	else
-		info->status = 0;
-	info->timestamp_ns = ktime_to_ns(fence->timestamp);
-}
-
-static long sync_file_ioctl_fence_info(struct sync_file *sync_file,
-					unsigned long arg)
-{
-	struct sync_file_info info;
-	struct sync_fence_info *fence_info = NULL;
-	__u32 size;
-	int ret, i;
-
-	if (copy_from_user(&info, (void __user *)arg, sizeof(info)))
-		return -EFAULT;
-
-	if (info.flags || info.pad)
-		return -EINVAL;
-
-	/*
-	 * Passing num_fences = 0 means that userspace doesn't want to
-	 * retrieve any sync_fence_info. If num_fences = 0 we skip filling
-	 * sync_fence_info and return the actual number of fences on
-	 * info->num_fences.
-	 */
-	if (!info.num_fences)
-		goto no_fences;
-
-	if (info.num_fences < sync_file->num_fences)
-		return -EINVAL;
-
-	size = sync_file->num_fences * sizeof(*fence_info);
-	fence_info = kzalloc(size, GFP_KERNEL);
-	if (!fence_info)
-		return -ENOMEM;
-
-	for (i = 0; i < sync_file->num_fences; ++i)
-		sync_fill_fence_info(sync_file->cbs[i].fence, &fence_info[i]);
-
-	if (copy_to_user(u64_to_user_ptr(info.sync_fence_info), fence_info,
-			 size)) {
-		ret = -EFAULT;
-		goto out;
-	}
-
-no_fences:
-	strlcpy(info.name, sync_file->name, sizeof(info.name));
-	info.status = atomic_read(&sync_file->status);
-	if (info.status >= 0)
-		info.status = !info.status;
-
-	info.num_fences = sync_file->num_fences;
-
-	if (copy_to_user((void __user *)arg, &info, sizeof(info)))
-		ret = -EFAULT;
-	else
-		ret = 0;
-
-out:
-	kfree(fence_info);
-
-	return ret;
-}
-
-static long sync_file_ioctl(struct file *file, unsigned int cmd,
-			     unsigned long arg)
-{
-	struct sync_file *sync_file = file->private_data;
-
-	switch (cmd) {
-	case SYNC_IOC_MERGE:
-		return sync_file_ioctl_merge(sync_file, arg);
-
-	case SYNC_IOC_FILE_INFO:
-		return sync_file_ioctl_fence_info(sync_file, arg);
-
-	default:
-		return -ENOTTY;
-	}
-}
-
-static const struct file_operations sync_file_fops = {
-	.release = sync_file_release,
-	.poll = sync_file_poll,
-	.unlocked_ioctl = sync_file_ioctl,
-	.compat_ioctl = sync_file_ioctl,
-};
-
diff --git a/drivers/staging/android/sync.h b/drivers/staging/android/sync.h
index 1f164df..df44abb 100644
--- a/drivers/staging/android/sync.h
+++ b/drivers/staging/android/sync.h
@@ -20,10 +20,10 @@
 #include <linux/spinlock.h>
 #include <linux/fence.h>
 
-#include "uapi/sync.h"
+#include "sync_file.h"
+#include "uapi/sync_file.h"
 
 struct sync_timeline;
-struct sync_file;
 
 /**
  * struct sync_timeline_ops - sync object implementation ops
@@ -86,38 +86,6 @@ static inline struct sync_timeline *fence_parent(struct fence *fence)
 			    child_list_lock);
 }
 
-struct sync_file_cb {
-	struct fence_cb cb;
-	struct fence *fence;
-	struct sync_file *sync_file;
-};
-
-/**
- * struct sync_file - sync file to export to the userspace
- * @file:		file representing this fence
- * @kref:		reference count on fence.
- * @name:		name of sync_file.  Useful for debugging
- * @sync_file_list:	membership in global file list
- * @num_fences		number of sync_pts in the fence
- * @wq:			wait queue for fence signaling
- * @status:		0: signaled, >0:active, <0: error
- * @cbs:		sync_pts callback information
- */
-struct sync_file {
-	struct file		*file;
-	struct kref		kref;
-	char			name[32];
-#ifdef CONFIG_DEBUG_FS
-	struct list_head	sync_file_list;
-#endif
-	int num_fences;
-
-	wait_queue_head_t	wq;
-	atomic_t		status;
-
-	struct sync_file_cb	cbs[];
-};
-
 /*
  * API for sync_timeline implementers
  */
@@ -167,8 +135,6 @@ void sync_timeline_signal(struct sync_timeline *obj);
  */
 struct fence *sync_pt_create(struct sync_timeline *parent, int size);
 
-struct sync_file *sync_file_create(const char *name, struct fence *fence);
-
 #ifdef CONFIG_DEBUG_FS
 
 void sync_timeline_debug_add(struct sync_timeline *obj);
diff --git a/drivers/staging/android/sync_debug.c b/drivers/staging/android/sync_debug.c
index e4b0e41..6589aba 100644
--- a/drivers/staging/android/sync_debug.c
+++ b/drivers/staging/android/sync_debug.c
@@ -26,6 +26,7 @@
 #include <linux/uaccess.h>
 #include <linux/anon_inodes.h>
 #include <linux/time64.h>
+#include "sync_file.h"
 #include "sw_sync.h"
 
 #ifdef CONFIG_DEBUG_FS
diff --git a/drivers/staging/android/sync_file.c b/drivers/staging/android/sync_file.c
new file mode 100644
index 0000000..3902538
--- /dev/null
+++ b/drivers/staging/android/sync_file.c
@@ -0,0 +1,393 @@
+/*
+ * drivers/dma-buf/sync_file.c
+ *
+ * Copyright (C) 2012 Google, Inc.
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#include <linux/export.h>
+#include <linux/file.h>
+#include <linux/fs.h>
+#include <linux/kernel.h>
+#include <linux/poll.h>
+#include <linux/sched.h>
+#include <linux/slab.h>
+#include <linux/uaccess.h>
+#include <linux/anon_inodes.h>
+#include "sync_file.h"
+#include "uapi/sync_file.h"
+
+static const struct file_operations sync_file_fops;
+
+static struct sync_file *sync_file_alloc(int size, const char *name)
+{
+	struct sync_file *sync_file;
+
+	sync_file = kzalloc(size, GFP_KERNEL);
+	if (!sync_file)
+		return NULL;
+
+	sync_file->file = anon_inode_getfile("sync_file", &sync_file_fops,
+					     sync_file, 0);
+	if (IS_ERR(sync_file->file))
+		goto err;
+
+	kref_init(&sync_file->kref);
+	strlcpy(sync_file->name, name, sizeof(sync_file->name));
+
+	init_waitqueue_head(&sync_file->wq);
+
+	return sync_file;
+
+err:
+	kfree(sync_file);
+	return NULL;
+}
+
+static void fence_check_cb_func(struct fence *f, struct fence_cb *cb)
+{
+	struct sync_file_cb *check;
+	struct sync_file *sync_file;
+
+	check = container_of(cb, struct sync_file_cb, cb);
+	sync_file = check->sync_file;
+
+	if (atomic_dec_and_test(&sync_file->status))
+		wake_up_all(&sync_file->wq);
+}
+
+/**
+ * sync_fence_create() - creates a sync fence
+ * @name:	name of fence to create
+ * @fence:	fence to add to the sync_fence
+ *
+ * Creates a sync_file containg @fence. Once this is called, the sync_file
+ * takes ownership of @fence.
+ */
+struct sync_file *sync_file_create(const char *name, struct fence *fence)
+{
+	struct sync_file *sync_file;
+
+	sync_file = sync_file_alloc(offsetof(struct sync_file, cbs[1]),
+				    name);
+	if (!sync_file)
+		return NULL;
+
+	sync_file->num_fences = 1;
+	atomic_set(&sync_file->status, 1);
+
+	sync_file->cbs[0].fence = fence;
+	sync_file->cbs[0].sync_file = sync_file;
+	if (fence_add_callback(fence, &sync_file->cbs[0].cb,
+			       fence_check_cb_func))
+		atomic_dec(&sync_file->status);
+
+	return sync_file;
+}
+EXPORT_SYMBOL(sync_file_create);
+
+/**
+ * sync_file_fdget() - get a sync_file from an fd
+ * @fd:		fd referencing a fence
+ *
+ * Ensures @fd references a valid sync_file, increments the refcount of the
+ * backing file. Returns the sync_file or NULL in case of error.
+ */
+static struct sync_file *sync_file_fdget(int fd)
+{
+	struct file *file = fget(fd);
+
+	if (!file)
+		return NULL;
+
+	if (file->f_op != &sync_file_fops)
+		goto err;
+
+	return file->private_data;
+
+err:
+	fput(file);
+	return NULL;
+}
+
+static void sync_file_add_pt(struct sync_file *sync_file, int *i,
+			     struct fence *fence)
+{
+	sync_file->cbs[*i].fence = fence;
+	sync_file->cbs[*i].sync_file = sync_file;
+
+	if (!fence_add_callback(fence, &sync_file->cbs[*i].cb,
+				fence_check_cb_func)) {
+		fence_get(fence);
+		(*i)++;
+	}
+}
+
+/**
+ * sync_file_merge() - merge two sync_files
+ * @name:	name of new fence
+ * @a:		sync_file a
+ * @b:		sync_file b
+ *
+ * Creates a new sync_file which contains copies of all the fences in both
+ * @a and @b.  @a and @b remain valid, independent sync_file. Returns the
+ * new merged sync_file or NULL in case of error.
+ */
+static struct sync_file *sync_file_merge(const char *name, struct sync_file *a,
+					 struct sync_file *b)
+{
+	int num_fences = a->num_fences + b->num_fences;
+	struct sync_file *sync_file;
+	int i, i_a, i_b;
+	unsigned long size = offsetof(struct sync_file, cbs[num_fences]);
+
+	sync_file = sync_file_alloc(size, name);
+	if (!sync_file)
+		return NULL;
+
+	atomic_set(&sync_file->status, num_fences);
+
+	/*
+	 * Assume sync_file a and b are both ordered and have no
+	 * duplicates with the same context.
+	 *
+	 * If a sync_file can only be created with sync_file_merge
+	 * and sync_file_create, this is a reasonable assumption.
+	 */
+	for (i = i_a = i_b = 0; i_a < a->num_fences && i_b < b->num_fences; ) {
+		struct fence *pt_a = a->cbs[i_a].fence;
+		struct fence *pt_b = b->cbs[i_b].fence;
+
+		if (pt_a->context < pt_b->context) {
+			sync_file_add_pt(sync_file, &i, pt_a);
+
+			i_a++;
+		} else if (pt_a->context > pt_b->context) {
+			sync_file_add_pt(sync_file, &i, pt_b);
+
+			i_b++;
+		} else {
+			if (pt_a->seqno - pt_b->seqno <= INT_MAX)
+				sync_file_add_pt(sync_file, &i, pt_a);
+			else
+				sync_file_add_pt(sync_file, &i, pt_b);
+
+			i_a++;
+			i_b++;
+		}
+	}
+
+	for (; i_a < a->num_fences; i_a++)
+		sync_file_add_pt(sync_file, &i, a->cbs[i_a].fence);
+
+	for (; i_b < b->num_fences; i_b++)
+		sync_file_add_pt(sync_file, &i, b->cbs[i_b].fence);
+
+	if (num_fences > i)
+		atomic_sub(num_fences - i, &sync_file->status);
+	sync_file->num_fences = i;
+
+	return sync_file;
+}
+EXPORT_SYMBOL(sync_file_merge);
+
+static void sync_file_free(struct kref *kref)
+{
+	struct sync_file *sync_file = container_of(kref, struct sync_file,
+						     kref);
+	int i;
+
+	for (i = 0; i < sync_file->num_fences; ++i) {
+		fence_remove_callback(sync_file->cbs[i].fence,
+				      &sync_file->cbs[i].cb);
+		fence_put(sync_file->cbs[i].fence);
+	}
+
+	kfree(sync_file);
+}
+
+static int sync_file_release(struct inode *inode, struct file *file)
+{
+	struct sync_file *sync_file = file->private_data;
+
+	kref_put(&sync_file->kref, sync_file_free);
+	return 0;
+}
+
+static unsigned int sync_file_poll(struct file *file, poll_table *wait)
+{
+	struct sync_file *sync_file = file->private_data;
+	int status;
+
+	poll_wait(file, &sync_file->wq, wait);
+
+	status = atomic_read(&sync_file->status);
+
+	if (!status)
+		return POLLIN;
+	if (status < 0)
+		return POLLERR;
+	return 0;
+}
+
+static long sync_file_ioctl_merge(struct sync_file *sync_file,
+				   unsigned long arg)
+{
+	int fd = get_unused_fd_flags(O_CLOEXEC);
+	int err;
+	struct sync_file *fence2, *fence3;
+	struct sync_merge_data data;
+
+	if (fd < 0)
+		return fd;
+
+	if (copy_from_user(&data, (void __user *)arg, sizeof(data))) {
+		err = -EFAULT;
+		goto err_put_fd;
+	}
+
+	if (data.flags || data.pad) {
+		err = -EINVAL;
+		goto err_put_fd;
+	}
+
+	fence2 = sync_file_fdget(data.fd2);
+	if (!fence2) {
+		err = -ENOENT;
+		goto err_put_fd;
+	}
+
+	data.name[sizeof(data.name) - 1] = '\0';
+	fence3 = sync_file_merge(data.name, sync_file, fence2);
+	if (!fence3) {
+		err = -ENOMEM;
+		goto err_put_fence2;
+	}
+
+	data.fence = fd;
+	if (copy_to_user((void __user *)arg, &data, sizeof(data))) {
+		err = -EFAULT;
+		goto err_put_fence3;
+	}
+
+	fd_install(fd, fence3->file);
+	fput(fence2->file);
+	return 0;
+
+err_put_fence3:
+	fput(fence3->file);
+
+err_put_fence2:
+	fput(fence2->file);
+
+err_put_fd:
+	put_unused_fd(fd);
+	return err;
+}
+
+static void sync_fill_fence_info(struct fence *fence,
+				struct sync_fence_info *info)
+{
+	strlcpy(info->obj_name, fence->ops->get_timeline_name(fence),
+		sizeof(info->obj_name));
+	strlcpy(info->driver_name, fence->ops->get_driver_name(fence),
+		sizeof(info->driver_name));
+	if (fence_is_signaled(fence))
+		info->status = fence->status >= 0 ? 1 : fence->status;
+	else
+		info->status = 0;
+	info->timestamp_ns = ktime_to_ns(fence->timestamp);
+}
+
+static long sync_file_ioctl_fence_info(struct sync_file *sync_file,
+					unsigned long arg)
+{
+	struct sync_file_info info;
+	struct sync_fence_info *fence_info = NULL;
+	__u32 size;
+	int ret, i;
+
+	if (copy_from_user(&info, (void __user *)arg, sizeof(info)))
+		return -EFAULT;
+
+	if (info.flags || info.pad)
+		return -EINVAL;
+
+	/*
+	 * Passing num_fences = 0 means that userspace doesn't want to
+	 * retrieve any sync_fence_info. If num_fences = 0 we skip filling
+	 * sync_fence_info and return the actual number of fences on
+	 * info->num_fences.
+	 */
+	if (!info.num_fences)
+		goto no_fences;
+
+	if (info.num_fences < sync_file->num_fences)
+		return -EINVAL;
+
+	size = sync_file->num_fences * sizeof(*fence_info);
+	fence_info = kzalloc(size, GFP_KERNEL);
+	if (!fence_info)
+		return -ENOMEM;
+
+	for (i = 0; i < sync_file->num_fences; ++i)
+		sync_fill_fence_info(sync_file->cbs[i].fence, &fence_info[i]);
+
+	if (copy_to_user(u64_to_user_ptr(info.sync_fence_info), fence_info,
+			 size)) {
+		ret = -EFAULT;
+		goto out;
+	}
+
+no_fences:
+	strlcpy(info.name, sync_file->name, sizeof(info.name));
+	info.status = atomic_read(&sync_file->status);
+	if (info.status >= 0)
+		info.status = !info.status;
+
+	info.num_fences = sync_file->num_fences;
+
+	if (copy_to_user((void __user *)arg, &info, sizeof(info)))
+		ret = -EFAULT;
+	else
+		ret = 0;
+
+out:
+	kfree(fence_info);
+
+	return ret;
+}
+
+static long sync_file_ioctl(struct file *file, unsigned int cmd,
+			     unsigned long arg)
+{
+	struct sync_file *sync_file = file->private_data;
+
+	switch (cmd) {
+	case SYNC_IOC_MERGE:
+		return sync_file_ioctl_merge(sync_file, arg);
+
+	case SYNC_IOC_FILE_INFO:
+		return sync_file_ioctl_fence_info(sync_file, arg);
+
+	default:
+		return -ENOTTY;
+	}
+}
+
+static const struct file_operations sync_file_fops = {
+	.release = sync_file_release,
+	.poll = sync_file_poll,
+	.unlocked_ioctl = sync_file_ioctl,
+	.compat_ioctl = sync_file_ioctl,
+};
+
diff --git a/drivers/staging/android/sync_file.h b/drivers/staging/android/sync_file.h
new file mode 100644
index 0000000..a53259c
--- /dev/null
+++ b/drivers/staging/android/sync_file.h
@@ -0,0 +1,57 @@
+/*
+ * include/linux/sync_file.h
+ *
+ * Copyright (C) 2012 Google, Inc.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#ifndef _LINUX_SYNC_FILE_H
+#define _LINUX_SYNC_FILE_H
+
+#include <linux/types.h>
+#include <linux/kref.h>
+#include <linux/ktime.h>
+#include <linux/list.h>
+#include <linux/spinlock.h>
+#include <linux/fence.h>
+
+struct sync_file_cb {
+	struct fence_cb cb;
+	struct fence *fence;
+	struct sync_file *sync_file;
+};
+
+/**
+ * struct sync_file - sync file to export to the userspace
+ * @file:		file representing this fence
+ * @kref:		reference count on fence.
+ * @name:		name of sync_file.  Useful for debugging
+ * @sync_file_list:	membership in global file list
+ * @num_fences		number of sync_pts in the fence
+ * @wq:			wait queue for fence signaling
+ * @status:		0: signaled, >0:active, <0: error
+ * @cbs:		sync_pts callback information
+ */
+struct sync_file {
+	struct file		*file;
+	struct kref		kref;
+	char			name[32];
+#ifdef CONFIG_DEBUG_FS
+	struct list_head	sync_file_list;
+#endif
+	int num_fences;
+
+	wait_queue_head_t	wq;
+	atomic_t		status;
+
+	struct sync_file_cb	cbs[];
+};
+
+struct sync_file *sync_file_create(const char *name, struct fence *fence);
+
+#endif /* _LINUX_SYNC_H */
diff --git a/drivers/staging/android/uapi/sync.h b/drivers/staging/android/uapi/sync_file.h
similarity index 100%
rename from drivers/staging/android/uapi/sync.h
rename to drivers/staging/android/uapi/sync_file.h
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 07/12] staging/android: improve documentation for sync_file
  2016-04-27 16:27 ` Gustavo Padovan
                   ` (6 preceding siblings ...)
  (?)
@ 2016-04-27 16:27 ` Gustavo Padovan
  -1 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-27 16:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, devel, dri-devel, Daniel Stone,
	Arve Hjønnevåg, Riley Andrews, Daniel Vetter,
	Rob Clark, Greg Hackmann, John Harrison, Maarten Lankhorst,
	Sumit Semwal, Gustavo Padovan

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

num_fences was missing a colon mark and sync_file_create() now have
better description.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
---
 drivers/staging/android/sync_file.c | 3 ++-
 drivers/staging/android/sync_file.h | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/android/sync_file.c b/drivers/staging/android/sync_file.c
index 3902538..5d77c08 100644
--- a/drivers/staging/android/sync_file.c
+++ b/drivers/staging/android/sync_file.c
@@ -71,7 +71,8 @@ static void fence_check_cb_func(struct fence *f, struct fence_cb *cb)
  * @fence:	fence to add to the sync_fence
  *
  * Creates a sync_file containg @fence. Once this is called, the sync_file
- * takes ownership of @fence.
+ * takes ownership of @fence. The sync_file can be released with
+ * fput(sync_file->file). Returns the sync_file or NULL in case of error.
  */
 struct sync_file *sync_file_create(const char *name, struct fence *fence)
 {
diff --git a/drivers/staging/android/sync_file.h b/drivers/staging/android/sync_file.h
index a53259c..003db09 100644
--- a/drivers/staging/android/sync_file.h
+++ b/drivers/staging/android/sync_file.h
@@ -32,7 +32,7 @@ struct sync_file_cb {
  * @kref:		reference count on fence.
  * @name:		name of sync_file.  Useful for debugging
  * @sync_file_list:	membership in global file list
- * @num_fences		number of sync_pts in the fence
+ * @num_fences:		number of sync_pts in the fence
  * @wq:			wait queue for fence signaling
  * @status:		0: signaled, >0:active, <0: error
  * @cbs:		sync_pts callback information
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 08/12] staging/android: style fix: alignment to match the open parenthesis
  2016-04-27 16:27 ` Gustavo Padovan
@ 2016-04-27 16:27   ` Gustavo Padovan
  -1 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-27 16:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, devel, dri-devel, Daniel Stone,
	Arve Hjønnevåg, Riley Andrews, Daniel Vetter,
	Rob Clark, Greg Hackmann, John Harrison, Maarten Lankhorst,
	Sumit Semwal, Gustavo Padovan

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

Fix checks reported by checkpatch.pl.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
---
 drivers/staging/android/sync_file.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/android/sync_file.c b/drivers/staging/android/sync_file.c
index 5d77c08..0862c7f 100644
--- a/drivers/staging/android/sync_file.c
+++ b/drivers/staging/android/sync_file.c
@@ -241,7 +241,7 @@ static unsigned int sync_file_poll(struct file *file, poll_table *wait)
 }
 
 static long sync_file_ioctl_merge(struct sync_file *sync_file,
-				   unsigned long arg)
+				  unsigned long arg)
 {
 	int fd = get_unused_fd_flags(O_CLOEXEC);
 	int err;
@@ -296,7 +296,7 @@ err_put_fd:
 }
 
 static void sync_fill_fence_info(struct fence *fence,
-				struct sync_fence_info *info)
+				 struct sync_fence_info *info)
 {
 	strlcpy(info->obj_name, fence->ops->get_timeline_name(fence),
 		sizeof(info->obj_name));
@@ -310,7 +310,7 @@ static void sync_fill_fence_info(struct fence *fence,
 }
 
 static long sync_file_ioctl_fence_info(struct sync_file *sync_file,
-					unsigned long arg)
+				       unsigned long arg)
 {
 	struct sync_file_info info;
 	struct sync_fence_info *fence_info = NULL;
@@ -369,7 +369,7 @@ out:
 }
 
 static long sync_file_ioctl(struct file *file, unsigned int cmd,
-			     unsigned long arg)
+			    unsigned long arg)
 {
 	struct sync_file *sync_file = file->private_data;
 
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 08/12] staging/android: style fix: alignment to match the open parenthesis
@ 2016-04-27 16:27   ` Gustavo Padovan
  0 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-27 16:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: devel, Rob Clark, Daniel Stone, Daniel Vetter, Maarten Lankhorst,
	Riley Andrews, dri-devel, linux-kernel, Arve Hjønnevåg,
	Greg Hackmann, Gustavo Padovan, Sumit Semwal, John Harrison

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

Fix checks reported by checkpatch.pl.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
---
 drivers/staging/android/sync_file.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/android/sync_file.c b/drivers/staging/android/sync_file.c
index 5d77c08..0862c7f 100644
--- a/drivers/staging/android/sync_file.c
+++ b/drivers/staging/android/sync_file.c
@@ -241,7 +241,7 @@ static unsigned int sync_file_poll(struct file *file, poll_table *wait)
 }
 
 static long sync_file_ioctl_merge(struct sync_file *sync_file,
-				   unsigned long arg)
+				  unsigned long arg)
 {
 	int fd = get_unused_fd_flags(O_CLOEXEC);
 	int err;
@@ -296,7 +296,7 @@ err_put_fd:
 }
 
 static void sync_fill_fence_info(struct fence *fence,
-				struct sync_fence_info *info)
+				 struct sync_fence_info *info)
 {
 	strlcpy(info->obj_name, fence->ops->get_timeline_name(fence),
 		sizeof(info->obj_name));
@@ -310,7 +310,7 @@ static void sync_fill_fence_info(struct fence *fence,
 }
 
 static long sync_file_ioctl_fence_info(struct sync_file *sync_file,
-					unsigned long arg)
+				       unsigned long arg)
 {
 	struct sync_file_info info;
 	struct sync_fence_info *fence_info = NULL;
@@ -369,7 +369,7 @@ out:
 }
 
 static long sync_file_ioctl(struct file *file, unsigned int cmd,
-			     unsigned long arg)
+			    unsigned long arg)
 {
 	struct sync_file *sync_file = file->private_data;
 
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 09/12] dma-buf/sync_file: de-stage sync_file headers
  2016-04-27 16:27 ` Gustavo Padovan
@ 2016-04-27 16:27   ` Gustavo Padovan
  -1 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-27 16:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, devel, dri-devel, Daniel Stone,
	Arve Hjønnevåg, Riley Andrews, Daniel Vetter,
	Rob Clark, Greg Hackmann, John Harrison, Maarten Lankhorst,
	Sumit Semwal, Gustavo Padovan

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

Move sync_file headers file to include/ dir.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
---
 drivers/staging/android/sync.h                                   | 4 ++--
 drivers/staging/android/sync_debug.c                             | 2 +-
 drivers/staging/android/sync_file.c                              | 4 ++--
 {drivers/staging/android => include/linux}/sync_file.h           | 0
 {drivers/staging/android/uapi => include/uapi/linux}/sync_file.h | 0
 5 files changed, 5 insertions(+), 5 deletions(-)
 rename {drivers/staging/android => include/linux}/sync_file.h (100%)
 rename {drivers/staging/android/uapi => include/uapi/linux}/sync_file.h (100%)

diff --git a/drivers/staging/android/sync.h b/drivers/staging/android/sync.h
index df44abb..b56885c 100644
--- a/drivers/staging/android/sync.h
+++ b/drivers/staging/android/sync.h
@@ -20,8 +20,8 @@
 #include <linux/spinlock.h>
 #include <linux/fence.h>
 
-#include "sync_file.h"
-#include "uapi/sync_file.h"
+#include <linux/sync_file.h>
+#include <uapi/linux/sync_file.h>
 
 struct sync_timeline;
 
diff --git a/drivers/staging/android/sync_debug.c b/drivers/staging/android/sync_debug.c
index 6589aba..9ce3c5d 100644
--- a/drivers/staging/android/sync_debug.c
+++ b/drivers/staging/android/sync_debug.c
@@ -26,7 +26,7 @@
 #include <linux/uaccess.h>
 #include <linux/anon_inodes.h>
 #include <linux/time64.h>
-#include "sync_file.h"
+#include <linux/sync_file.h>
 #include "sw_sync.h"
 
 #ifdef CONFIG_DEBUG_FS
diff --git a/drivers/staging/android/sync_file.c b/drivers/staging/android/sync_file.c
index 0862c7f..c4eec1c 100644
--- a/drivers/staging/android/sync_file.c
+++ b/drivers/staging/android/sync_file.c
@@ -23,8 +23,8 @@
 #include <linux/slab.h>
 #include <linux/uaccess.h>
 #include <linux/anon_inodes.h>
-#include "sync_file.h"
-#include "uapi/sync_file.h"
+#include <linux/sync_file.h>
+#include <uapi/linux/sync_file.h>
 
 static const struct file_operations sync_file_fops;
 
diff --git a/drivers/staging/android/sync_file.h b/include/linux/sync_file.h
similarity index 100%
rename from drivers/staging/android/sync_file.h
rename to include/linux/sync_file.h
diff --git a/drivers/staging/android/uapi/sync_file.h b/include/uapi/linux/sync_file.h
similarity index 100%
rename from drivers/staging/android/uapi/sync_file.h
rename to include/uapi/linux/sync_file.h
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 09/12] dma-buf/sync_file: de-stage sync_file headers
@ 2016-04-27 16:27   ` Gustavo Padovan
  0 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-27 16:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: devel, Rob Clark, Daniel Stone, Daniel Vetter, Maarten Lankhorst,
	Riley Andrews, dri-devel, linux-kernel, Arve Hjønnevåg,
	Greg Hackmann, Gustavo Padovan, Sumit Semwal, John Harrison

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

Move sync_file headers file to include/ dir.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
---
 drivers/staging/android/sync.h                                   | 4 ++--
 drivers/staging/android/sync_debug.c                             | 2 +-
 drivers/staging/android/sync_file.c                              | 4 ++--
 {drivers/staging/android => include/linux}/sync_file.h           | 0
 {drivers/staging/android/uapi => include/uapi/linux}/sync_file.h | 0
 5 files changed, 5 insertions(+), 5 deletions(-)
 rename {drivers/staging/android => include/linux}/sync_file.h (100%)
 rename {drivers/staging/android/uapi => include/uapi/linux}/sync_file.h (100%)

diff --git a/drivers/staging/android/sync.h b/drivers/staging/android/sync.h
index df44abb..b56885c 100644
--- a/drivers/staging/android/sync.h
+++ b/drivers/staging/android/sync.h
@@ -20,8 +20,8 @@
 #include <linux/spinlock.h>
 #include <linux/fence.h>
 
-#include "sync_file.h"
-#include "uapi/sync_file.h"
+#include <linux/sync_file.h>
+#include <uapi/linux/sync_file.h>
 
 struct sync_timeline;
 
diff --git a/drivers/staging/android/sync_debug.c b/drivers/staging/android/sync_debug.c
index 6589aba..9ce3c5d 100644
--- a/drivers/staging/android/sync_debug.c
+++ b/drivers/staging/android/sync_debug.c
@@ -26,7 +26,7 @@
 #include <linux/uaccess.h>
 #include <linux/anon_inodes.h>
 #include <linux/time64.h>
-#include "sync_file.h"
+#include <linux/sync_file.h>
 #include "sw_sync.h"
 
 #ifdef CONFIG_DEBUG_FS
diff --git a/drivers/staging/android/sync_file.c b/drivers/staging/android/sync_file.c
index 0862c7f..c4eec1c 100644
--- a/drivers/staging/android/sync_file.c
+++ b/drivers/staging/android/sync_file.c
@@ -23,8 +23,8 @@
 #include <linux/slab.h>
 #include <linux/uaccess.h>
 #include <linux/anon_inodes.h>
-#include "sync_file.h"
-#include "uapi/sync_file.h"
+#include <linux/sync_file.h>
+#include <uapi/linux/sync_file.h>
 
 static const struct file_operations sync_file_fops;
 
diff --git a/drivers/staging/android/sync_file.h b/include/linux/sync_file.h
similarity index 100%
rename from drivers/staging/android/sync_file.h
rename to include/linux/sync_file.h
diff --git a/drivers/staging/android/uapi/sync_file.h b/include/uapi/linux/sync_file.h
similarity index 100%
rename from drivers/staging/android/uapi/sync_file.h
rename to include/uapi/linux/sync_file.h
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 10/12] dma-buf/sync_file: de-stage sync_file
  2016-04-27 16:27 ` Gustavo Padovan
@ 2016-04-27 16:27   ` Gustavo Padovan
  -1 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-27 16:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, devel, dri-devel, Daniel Stone,
	Arve Hjønnevåg, Riley Andrews, Daniel Vetter,
	Rob Clark, Greg Hackmann, John Harrison, Maarten Lankhorst,
	Sumit Semwal, Gustavo Padovan

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

sync_file is useful to connect one or more fences to the file. The file is
used by userspace to track fences between drivers that share DMA bufs.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
---
 drivers/Kconfig                                  |  2 ++
 drivers/dma-buf/Kconfig                          | 11 +++++++++++
 drivers/dma-buf/Makefile                         |  1 +
 drivers/{staging/android => dma-buf}/sync_file.c |  0
 drivers/staging/android/Kconfig                  |  1 +
 drivers/staging/android/Makefile                 |  2 +-
 6 files changed, 16 insertions(+), 1 deletion(-)
 create mode 100644 drivers/dma-buf/Kconfig
 rename drivers/{staging/android => dma-buf}/sync_file.c (100%)

diff --git a/drivers/Kconfig b/drivers/Kconfig
index d2ac339..430f761 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -114,6 +114,8 @@ source "drivers/rtc/Kconfig"
 
 source "drivers/dma/Kconfig"
 
+source "drivers/dma-buf/Kconfig"
+
 source "drivers/dca/Kconfig"
 
 source "drivers/auxdisplay/Kconfig"
diff --git a/drivers/dma-buf/Kconfig b/drivers/dma-buf/Kconfig
new file mode 100644
index 0000000..9824bc4
--- /dev/null
+++ b/drivers/dma-buf/Kconfig
@@ -0,0 +1,11 @@
+menu "DMABUF options"
+
+config SYNC_FILE
+	bool "sync_file support for fences"
+	default n
+	select ANON_INODES
+	select DMA_SHARED_BUFFER
+	---help---
+	  This option enables the fence framework synchronization to export
+	  sync_files to userspace that can represent one or more fences.
+endmenu
diff --git a/drivers/dma-buf/Makefile b/drivers/dma-buf/Makefile
index 57a675f..4a424ec 100644
--- a/drivers/dma-buf/Makefile
+++ b/drivers/dma-buf/Makefile
@@ -1 +1,2 @@
 obj-y := dma-buf.o fence.o reservation.o seqno-fence.o
+obj-$(CONFIG_SYNC_FILE)		+= sync_file.o
diff --git a/drivers/staging/android/sync_file.c b/drivers/dma-buf/sync_file.c
similarity index 100%
rename from drivers/staging/android/sync_file.c
rename to drivers/dma-buf/sync_file.c
diff --git a/drivers/staging/android/Kconfig b/drivers/staging/android/Kconfig
index 4244821..7a3a77e 100644
--- a/drivers/staging/android/Kconfig
+++ b/drivers/staging/android/Kconfig
@@ -38,6 +38,7 @@ config SW_SYNC
 	bool "Software synchronization objects"
 	default n
 	depends on SYNC
+	depends on SYNC_FILE
 	---help---
 	  A sync object driver that uses a 32bit counter to coordinate
 	  synchronization.  Useful when there is no hardware primitive backing
diff --git a/drivers/staging/android/Makefile b/drivers/staging/android/Makefile
index ebc2df1..980d6dc 100644
--- a/drivers/staging/android/Makefile
+++ b/drivers/staging/android/Makefile
@@ -4,5 +4,5 @@ obj-y					+= ion/
 
 obj-$(CONFIG_ASHMEM)			+= ashmem.o
 obj-$(CONFIG_ANDROID_LOW_MEMORY_KILLER)	+= lowmemorykiller.o
-obj-$(CONFIG_SYNC)			+= sync_file.o sync.o sync_debug.o
+obj-$(CONFIG_SYNC)			+= sync.o sync_debug.o
 obj-$(CONFIG_SW_SYNC)			+= sw_sync.o
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 10/12] dma-buf/sync_file: de-stage sync_file
@ 2016-04-27 16:27   ` Gustavo Padovan
  0 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-27 16:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: devel, Rob Clark, Daniel Stone, Daniel Vetter, Maarten Lankhorst,
	Riley Andrews, dri-devel, linux-kernel, Arve Hjønnevåg,
	Greg Hackmann, Gustavo Padovan, Sumit Semwal, John Harrison

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

sync_file is useful to connect one or more fences to the file. The file is
used by userspace to track fences between drivers that share DMA bufs.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
---
 drivers/Kconfig                                  |  2 ++
 drivers/dma-buf/Kconfig                          | 11 +++++++++++
 drivers/dma-buf/Makefile                         |  1 +
 drivers/{staging/android => dma-buf}/sync_file.c |  0
 drivers/staging/android/Kconfig                  |  1 +
 drivers/staging/android/Makefile                 |  2 +-
 6 files changed, 16 insertions(+), 1 deletion(-)
 create mode 100644 drivers/dma-buf/Kconfig
 rename drivers/{staging/android => dma-buf}/sync_file.c (100%)

diff --git a/drivers/Kconfig b/drivers/Kconfig
index d2ac339..430f761 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -114,6 +114,8 @@ source "drivers/rtc/Kconfig"
 
 source "drivers/dma/Kconfig"
 
+source "drivers/dma-buf/Kconfig"
+
 source "drivers/dca/Kconfig"
 
 source "drivers/auxdisplay/Kconfig"
diff --git a/drivers/dma-buf/Kconfig b/drivers/dma-buf/Kconfig
new file mode 100644
index 0000000..9824bc4
--- /dev/null
+++ b/drivers/dma-buf/Kconfig
@@ -0,0 +1,11 @@
+menu "DMABUF options"
+
+config SYNC_FILE
+	bool "sync_file support for fences"
+	default n
+	select ANON_INODES
+	select DMA_SHARED_BUFFER
+	---help---
+	  This option enables the fence framework synchronization to export
+	  sync_files to userspace that can represent one or more fences.
+endmenu
diff --git a/drivers/dma-buf/Makefile b/drivers/dma-buf/Makefile
index 57a675f..4a424ec 100644
--- a/drivers/dma-buf/Makefile
+++ b/drivers/dma-buf/Makefile
@@ -1 +1,2 @@
 obj-y := dma-buf.o fence.o reservation.o seqno-fence.o
+obj-$(CONFIG_SYNC_FILE)		+= sync_file.o
diff --git a/drivers/staging/android/sync_file.c b/drivers/dma-buf/sync_file.c
similarity index 100%
rename from drivers/staging/android/sync_file.c
rename to drivers/dma-buf/sync_file.c
diff --git a/drivers/staging/android/Kconfig b/drivers/staging/android/Kconfig
index 4244821..7a3a77e 100644
--- a/drivers/staging/android/Kconfig
+++ b/drivers/staging/android/Kconfig
@@ -38,6 +38,7 @@ config SW_SYNC
 	bool "Software synchronization objects"
 	default n
 	depends on SYNC
+	depends on SYNC_FILE
 	---help---
 	  A sync object driver that uses a 32bit counter to coordinate
 	  synchronization.  Useful when there is no hardware primitive backing
diff --git a/drivers/staging/android/Makefile b/drivers/staging/android/Makefile
index ebc2df1..980d6dc 100644
--- a/drivers/staging/android/Makefile
+++ b/drivers/staging/android/Makefile
@@ -4,5 +4,5 @@ obj-y					+= ion/
 
 obj-$(CONFIG_ASHMEM)			+= ashmem.o
 obj-$(CONFIG_ANDROID_LOW_MEMORY_KILLER)	+= lowmemorykiller.o
-obj-$(CONFIG_SYNC)			+= sync_file.o sync.o sync_debug.o
+obj-$(CONFIG_SYNC)			+= sync.o sync_debug.o
 obj-$(CONFIG_SW_SYNC)			+= sw_sync.o
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 11/12] Documentation: include sync_file into DocBook
  2016-04-27 16:27 ` Gustavo Padovan
@ 2016-04-27 16:27   ` Gustavo Padovan
  -1 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-27 16:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, devel, dri-devel, Daniel Stone,
	Arve Hjønnevåg, Riley Andrews, Daniel Vetter,
	Rob Clark, Greg Hackmann, John Harrison, Maarten Lankhorst,
	Sumit Semwal, Gustavo Padovan

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

Add entry in device-drivers.tmpl for sync_file documentation.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
---
 Documentation/DocBook/device-drivers.tmpl | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Documentation/DocBook/device-drivers.tmpl b/Documentation/DocBook/device-drivers.tmpl
index 184f3c7..509a187 100644
--- a/Documentation/DocBook/device-drivers.tmpl
+++ b/Documentation/DocBook/device-drivers.tmpl
@@ -136,6 +136,8 @@ X!Edrivers/base/interface.c
 !Iinclude/linux/seqno-fence.h
 !Edrivers/dma-buf/reservation.c
 !Iinclude/linux/reservation.h
+!Edrivers/dma-buf/sync_file.c
+!Iinclude/linux/sync_file.h
 !Edrivers/base/dma-coherent.c
 !Edrivers/base/dma-mapping.c
      </sect1>
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 11/12] Documentation: include sync_file into DocBook
@ 2016-04-27 16:27   ` Gustavo Padovan
  0 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-27 16:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: devel, Rob Clark, Daniel Stone, Daniel Vetter, Maarten Lankhorst,
	Riley Andrews, dri-devel, linux-kernel, Arve Hjønnevåg,
	Greg Hackmann, Gustavo Padovan, Sumit Semwal, John Harrison

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

Add entry in device-drivers.tmpl for sync_file documentation.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
---
 Documentation/DocBook/device-drivers.tmpl | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Documentation/DocBook/device-drivers.tmpl b/Documentation/DocBook/device-drivers.tmpl
index 184f3c7..509a187 100644
--- a/Documentation/DocBook/device-drivers.tmpl
+++ b/Documentation/DocBook/device-drivers.tmpl
@@ -136,6 +136,8 @@ X!Edrivers/base/interface.c
 !Iinclude/linux/seqno-fence.h
 !Edrivers/dma-buf/reservation.c
 !Iinclude/linux/reservation.h
+!Edrivers/dma-buf/sync_file.c
+!Iinclude/linux/sync_file.h
 !Edrivers/base/dma-coherent.c
 !Edrivers/base/dma-mapping.c
      </sect1>
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 12/12] Documentation: add Sync File doc
  2016-04-27 16:27 ` Gustavo Padovan
@ 2016-04-27 16:27   ` Gustavo Padovan
  -1 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-27 16:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-kernel, devel, dri-devel, Daniel Stone,
	Arve Hjønnevåg, Riley Andrews, Daniel Vetter,
	Rob Clark, Greg Hackmann, John Harrison, Maarten Lankhorst,
	Sumit Semwal, Gustavo Padovan

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

Add sync_file documentation on dma-buf-sync_file.txt
---
 Documentation/dma-buf-sync_file.txt | 65 +++++++++++++++++++++++++++++++++++++
 1 file changed, 65 insertions(+)
 create mode 100644 Documentation/dma-buf-sync_file.txt

diff --git a/Documentation/dma-buf-sync_file.txt b/Documentation/dma-buf-sync_file.txt
new file mode 100644
index 0000000..aa7320f
--- /dev/null
+++ b/Documentation/dma-buf-sync_file.txt
@@ -0,0 +1,65 @@
+			 DMA Buffer Sync File API Guide
+			 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+				Gustavo Padovan
+			  <gustavo at padovan dot org>
+
+This document serves as a guide for device drivers writers on what is the
+dma-buf sync_file API, and how drivers can support it. Sync file is the
+carrier of the fences(struct fence) that needs to synchronized between drivers.
+
+The sync_file API is meant to be used to send and receive fence information
+to/from userspace. It enables userspace to do explicit fencing, where instead
+of attaching a fence to the buffer a Producer driver (such as GPU or V4L
+driver) it sends the fence related to the buffer to userspace. The fence then
+can be sent to the Consumer (DRM driver for example), that will not use the
+buffer for anything before the fence signals, i.e., the driver that issued the
+fence is not using/processing the buffer anymore, so it signals that the buffer
+is ready to use. And vice-versa for the Consumer -> Producer part of the cycle.
+Sync files allows userspace awareness on the DMA buffer sharing synchronization
+between drivers.
+
+Sync file was originally added in the Android kernel but current Linux Desktop
+can benefit a lot from it.
+
+in-fences and out-fences
+------------------------
+
+Sync files can go either to or from userspace. When a sync_file is sent from
+the driver to userspace we call the fences it contains 'out-fences'. They are
+related to a buffer that the driver is processing or is going to process, so
+the driver create out-fences to be able to notify, through fence_signal(), when
+it has finished using (or processing) that buffer. Out-fences are fences that
+the driver creates.
+
+On the other hand if the driver receives fence(s) through a sync_file from
+userspace we call these fence(s) 'in-fences'. Receiveing in-fences means that
+we need to wait for the fence(s) to signal before using any buffer related to
+the in-fences.
+
+Creating Sync Files
+-------------------
+
+When a driver needs to send an out-fence userspace it creates a sync_file.
+
+Interface:
+	struct sync_file *sync_file_create(const char *name, struct fence *fence);
+
+The caller pass the name and the out-fence and gets back the sync_file. That is
+just the first step, next it needs to install an fd on sync_file->file. So it
+gets an fd:
+
+	fd = get_unused_fd_flags(O_CLOEXEC);
+
+and installs it on sync_file->file:
+
+	fd_install(fd, sync_file->file);
+
+The sync_file fd now can be sent to userspace.
+
+If the creation process fail, or the sync_file needs to be released by any
+other reason fput(sync_file->file) should be used.
+
+References:
+[1] struct sync_file in include/linux/sync_file.h
+[2] All interfaces mentioned above defined in include/linux/sync_file.h
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* [PATCH 12/12] Documentation: add Sync File doc
@ 2016-04-27 16:27   ` Gustavo Padovan
  0 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-27 16:27 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: devel, Rob Clark, Daniel Stone, Daniel Vetter, Maarten Lankhorst,
	Riley Andrews, dri-devel, linux-kernel, Arve Hjønnevåg,
	Greg Hackmann, Gustavo Padovan, Sumit Semwal, John Harrison

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

Add sync_file documentation on dma-buf-sync_file.txt
---
 Documentation/dma-buf-sync_file.txt | 65 +++++++++++++++++++++++++++++++++++++
 1 file changed, 65 insertions(+)
 create mode 100644 Documentation/dma-buf-sync_file.txt

diff --git a/Documentation/dma-buf-sync_file.txt b/Documentation/dma-buf-sync_file.txt
new file mode 100644
index 0000000..aa7320f
--- /dev/null
+++ b/Documentation/dma-buf-sync_file.txt
@@ -0,0 +1,65 @@
+			 DMA Buffer Sync File API Guide
+			 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+				Gustavo Padovan
+			  <gustavo at padovan dot org>
+
+This document serves as a guide for device drivers writers on what is the
+dma-buf sync_file API, and how drivers can support it. Sync file is the
+carrier of the fences(struct fence) that needs to synchronized between drivers.
+
+The sync_file API is meant to be used to send and receive fence information
+to/from userspace. It enables userspace to do explicit fencing, where instead
+of attaching a fence to the buffer a Producer driver (such as GPU or V4L
+driver) it sends the fence related to the buffer to userspace. The fence then
+can be sent to the Consumer (DRM driver for example), that will not use the
+buffer for anything before the fence signals, i.e., the driver that issued the
+fence is not using/processing the buffer anymore, so it signals that the buffer
+is ready to use. And vice-versa for the Consumer -> Producer part of the cycle.
+Sync files allows userspace awareness on the DMA buffer sharing synchronization
+between drivers.
+
+Sync file was originally added in the Android kernel but current Linux Desktop
+can benefit a lot from it.
+
+in-fences and out-fences
+------------------------
+
+Sync files can go either to or from userspace. When a sync_file is sent from
+the driver to userspace we call the fences it contains 'out-fences'. They are
+related to a buffer that the driver is processing or is going to process, so
+the driver create out-fences to be able to notify, through fence_signal(), when
+it has finished using (or processing) that buffer. Out-fences are fences that
+the driver creates.
+
+On the other hand if the driver receives fence(s) through a sync_file from
+userspace we call these fence(s) 'in-fences'. Receiveing in-fences means that
+we need to wait for the fence(s) to signal before using any buffer related to
+the in-fences.
+
+Creating Sync Files
+-------------------
+
+When a driver needs to send an out-fence userspace it creates a sync_file.
+
+Interface:
+	struct sync_file *sync_file_create(const char *name, struct fence *fence);
+
+The caller pass the name and the out-fence and gets back the sync_file. That is
+just the first step, next it needs to install an fd on sync_file->file. So it
+gets an fd:
+
+	fd = get_unused_fd_flags(O_CLOEXEC);
+
+and installs it on sync_file->file:
+
+	fd_install(fd, sync_file->file);
+
+The sync_file fd now can be sent to userspace.
+
+If the creation process fail, or the sync_file needs to be released by any
+other reason fput(sync_file->file) should be used.
+
+References:
+[1] struct sync_file in include/linux/sync_file.h
+[2] All interfaces mentioned above defined in include/linux/sync_file.h
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 37+ messages in thread

* Re: [PATCH 12/12] Documentation: add Sync File doc
  2016-04-27 16:27   ` Gustavo Padovan
@ 2016-04-27 19:05     ` Daniel Vetter
  -1 siblings, 0 replies; 37+ messages in thread
From: Daniel Vetter @ 2016-04-27 19:05 UTC (permalink / raw)
  To: Gustavo Padovan
  Cc: Greg Kroah-Hartman, linux-kernel, devel, dri-devel, Daniel Stone,
	Arve Hjønnevåg, Riley Andrews, Daniel Vetter,
	Rob Clark, Greg Hackmann, John Harrison, Maarten Lankhorst,
	Sumit Semwal, Gustavo Padovan

On Wed, Apr 27, 2016 at 01:27:19PM -0300, Gustavo Padovan wrote:
> From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
> 
> Add sync_file documentation on dma-buf-sync_file.txt
> ---
>  Documentation/dma-buf-sync_file.txt | 65 +++++++++++++++++++++++++++++++++++++
>  1 file changed, 65 insertions(+)
>  create mode 100644 Documentation/dma-buf-sync_file.txt
> 
> diff --git a/Documentation/dma-buf-sync_file.txt b/Documentation/dma-buf-sync_file.txt
> new file mode 100644
> index 0000000..aa7320f
> --- /dev/null
> +++ b/Documentation/dma-buf-sync_file.txt
> @@ -0,0 +1,65 @@
> +			 DMA Buffer Sync File API Guide
> +			 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Strictly speaking you can use sync_file fences without dma-bufs. E.g. when
your gpu uses something like shared virtual memory and directly access the
userspace address space there's not buffer handles involved, but you still
might want to pass around fences between drivers and/or processes. So
please drop dma-buf from the filename and everything else in here. It's ok
to mention that this is used together with buffers/processing, just as an
example.

> +
> +				Gustavo Padovan
> +			  <gustavo at padovan dot org>
> +
> +This document serves as a guide for device drivers writers on what is the
> +dma-buf sync_file API, and how drivers can support it. Sync file is the

"... on what the sync_file API _is_, ..."

> +carrier of the fences(struct fence) that needs to synchronized between drivers.

"... between drivers or across process boundaries."

Android wants/needs both.

> +
> +The sync_file API is meant to be used to send and receive fence information
> +to/from userspace. It enables userspace to do explicit fencing, where instead
> +of attaching a fence to the buffer a Producer driver (such as GPU or V4L

_p_roducer

"(such as _a_ GPU ...)"

> +driver) it sends the fence related to the buffer to userspace. The fence then

s/it//

> +can be sent to the Consumer (DRM driver for example), that will not use the

_c_onsumer

> +buffer for anything before the fence signals, i.e., the driver that issued the
> +fence is not using/processing the buffer anymore, so it signals that the buffer
> +is ready to use. And vice-versa for the Consumer -> Producer part of the cycle.

A bit a run-on sentence above. Might want to split it.

> +Sync files allows userspace awareness on the DMA buffer sharing synchronization
> +between drivers.
> +
> +Sync file was originally added in the Android kernel but current Linux Desktop
> +can benefit a lot from it.
> +
> +in-fences and out-fences
> +------------------------
> +
> +Sync files can go either to or from userspace. When a sync_file is sent from
> +the driver to userspace we call the fences it contains 'out-fences'. They are
> +related to a buffer that the driver is processing or is going to process, so
> +the driver create out-fences to be able to notify, through fence_signal(), when

"... create_s_ _an_ out fence ..."

> +it has finished using (or processing) that buffer. Out-fences are fences that
> +the driver creates.
> +
> +On the other hand if the driver receives fence(s) through a sync_file from
> +userspace we call these fence(s) 'in-fences'. Receiveing in-fences means that
> +we need to wait for the fence(s) to signal before using any buffer related to
> +the in-fences.
> +
> +Creating Sync Files
> +-------------------
> +
> +When a driver needs to send an out-fence userspace it creates a sync_file.
> +
> +Interface:
> +	struct sync_file *sync_file_create(const char *name, struct fence *fence);
> +
> +The caller pass the name and the out-fence and gets back the sync_file. That is
> +just the first step, next it needs to install an fd on sync_file->file. So it
> +gets an fd:
> +
> +	fd = get_unused_fd_flags(O_CLOEXEC);
> +
> +and installs it on sync_file->file:
> +
> +	fd_install(fd, sync_file->file);
> +
> +The sync_file fd now can be sent to userspace.
> +
> +If the creation process fail, or the sync_file needs to be released by any
> +other reason fput(sync_file->file) should be used.

With the above nitpicks fixed:

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> +
> +References:
> +[1] struct sync_file in include/linux/sync_file.h
> +[2] All interfaces mentioned above defined in include/linux/sync_file.h
> -- 
> 2.5.5
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH 12/12] Documentation: add Sync File doc
@ 2016-04-27 19:05     ` Daniel Vetter
  0 siblings, 0 replies; 37+ messages in thread
From: Daniel Vetter @ 2016-04-27 19:05 UTC (permalink / raw)
  To: Gustavo Padovan
  Cc: devel, Daniel Stone, Greg Kroah-Hartman, linux-kernel, dri-devel,
	Arve Hjønnevåg, Daniel Vetter, Riley Andrews,
	Gustavo Padovan, John Harrison

On Wed, Apr 27, 2016 at 01:27:19PM -0300, Gustavo Padovan wrote:
> From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
> 
> Add sync_file documentation on dma-buf-sync_file.txt
> ---
>  Documentation/dma-buf-sync_file.txt | 65 +++++++++++++++++++++++++++++++++++++
>  1 file changed, 65 insertions(+)
>  create mode 100644 Documentation/dma-buf-sync_file.txt
> 
> diff --git a/Documentation/dma-buf-sync_file.txt b/Documentation/dma-buf-sync_file.txt
> new file mode 100644
> index 0000000..aa7320f
> --- /dev/null
> +++ b/Documentation/dma-buf-sync_file.txt
> @@ -0,0 +1,65 @@
> +			 DMA Buffer Sync File API Guide
> +			 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Strictly speaking you can use sync_file fences without dma-bufs. E.g. when
your gpu uses something like shared virtual memory and directly access the
userspace address space there's not buffer handles involved, but you still
might want to pass around fences between drivers and/or processes. So
please drop dma-buf from the filename and everything else in here. It's ok
to mention that this is used together with buffers/processing, just as an
example.

> +
> +				Gustavo Padovan
> +			  <gustavo at padovan dot org>
> +
> +This document serves as a guide for device drivers writers on what is the
> +dma-buf sync_file API, and how drivers can support it. Sync file is the

"... on what the sync_file API _is_, ..."

> +carrier of the fences(struct fence) that needs to synchronized between drivers.

"... between drivers or across process boundaries."

Android wants/needs both.

> +
> +The sync_file API is meant to be used to send and receive fence information
> +to/from userspace. It enables userspace to do explicit fencing, where instead
> +of attaching a fence to the buffer a Producer driver (such as GPU or V4L

_p_roducer

"(such as _a_ GPU ...)"

> +driver) it sends the fence related to the buffer to userspace. The fence then

s/it//

> +can be sent to the Consumer (DRM driver for example), that will not use the

_c_onsumer

> +buffer for anything before the fence signals, i.e., the driver that issued the
> +fence is not using/processing the buffer anymore, so it signals that the buffer
> +is ready to use. And vice-versa for the Consumer -> Producer part of the cycle.

A bit a run-on sentence above. Might want to split it.

> +Sync files allows userspace awareness on the DMA buffer sharing synchronization
> +between drivers.
> +
> +Sync file was originally added in the Android kernel but current Linux Desktop
> +can benefit a lot from it.
> +
> +in-fences and out-fences
> +------------------------
> +
> +Sync files can go either to or from userspace. When a sync_file is sent from
> +the driver to userspace we call the fences it contains 'out-fences'. They are
> +related to a buffer that the driver is processing or is going to process, so
> +the driver create out-fences to be able to notify, through fence_signal(), when

"... create_s_ _an_ out fence ..."

> +it has finished using (or processing) that buffer. Out-fences are fences that
> +the driver creates.
> +
> +On the other hand if the driver receives fence(s) through a sync_file from
> +userspace we call these fence(s) 'in-fences'. Receiveing in-fences means that
> +we need to wait for the fence(s) to signal before using any buffer related to
> +the in-fences.
> +
> +Creating Sync Files
> +-------------------
> +
> +When a driver needs to send an out-fence userspace it creates a sync_file.
> +
> +Interface:
> +	struct sync_file *sync_file_create(const char *name, struct fence *fence);
> +
> +The caller pass the name and the out-fence and gets back the sync_file. That is
> +just the first step, next it needs to install an fd on sync_file->file. So it
> +gets an fd:
> +
> +	fd = get_unused_fd_flags(O_CLOEXEC);
> +
> +and installs it on sync_file->file:
> +
> +	fd_install(fd, sync_file->file);
> +
> +The sync_file fd now can be sent to userspace.
> +
> +If the creation process fail, or the sync_file needs to be released by any
> +other reason fput(sync_file->file) should be used.

With the above nitpicks fixed:

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> +
> +References:
> +[1] struct sync_file in include/linux/sync_file.h
> +[2] All interfaces mentioned above defined in include/linux/sync_file.h
> -- 
> 2.5.5
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH 00/12] De-stage Sync File Framework
  2016-04-27 16:27 ` Gustavo Padovan
@ 2016-04-27 19:09   ` Daniel Vetter
  -1 siblings, 0 replies; 37+ messages in thread
From: Daniel Vetter @ 2016-04-27 19:09 UTC (permalink / raw)
  To: Gustavo Padovan
  Cc: Greg Kroah-Hartman, linux-kernel, devel, dri-devel, Daniel Stone,
	Arve Hjønnevåg, Riley Andrews, Daniel Vetter,
	Rob Clark, Greg Hackmann, John Harrison, Maarten Lankhorst,
	Sumit Semwal, Gustavo Padovan

On Wed, Apr 27, 2016 at 01:27:07PM -0300, Gustavo Padovan wrote:
> From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
> 
> Hi,
> 
> This patchset sits on top of Sync ABI Rework v13:
> 
> https://www.spinics.net/lists/dri-devel/msg105667.html
> 
> The first eight clean up and prepare sync_file for de-staging. The last four
> patches do the de-staging, moving files to drivers/dma-buf/ and include/linux/
> plus adding Documentation.
> 
> As the de-stage depends upon many changes on the staging tree it would
> be good to get all the patches merged through the staging tree if Sumit
> agrees with that.
> 
> The next step on the Sync de-stage is clean up the remaining bits 
> of the Sync Framework, mainly SW_SYNC, which is only used for testing.

Ok I looked once more at all this stuff, and there's some nitpicks I
discussed with Gustavo on irc. But really their small, and I think
perfectly ok to address them once sync_file is destaged. Especially since
there's a lot more work pending on top of this, so we really want to get
sync_file.[hc] destaged in 4.7. It'll take us a few iterations and a few
drivers using this in anger in upstream to perfect the internal interfaces
anyway, but let's get this started.

Had some real nitpicks on the docs patch, but that can also be merged
later on imo. Except for that patch, on the series:

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

> 
> Thanks,
> 
> 	Gustavo
> 
> ---
> Gustavo Padovan (12):
>   staging/android: remove redundant comments on sync_merge_data
>   staging/android: drop sync_file_install() and sync_file_put()
>   staging/android: move sync_file functions comments to sync.c
>   staging/android: make sync_file_merge() static
>   staging/android: make sync_file_fdget() static
>   staging/android: prepare sync_file for de-staging
>   staging/android: improve documentation for sync_file
>   staging/android: style fix: alignment to match the open parenthesis
>   dma-buf/sync_file: de-stage sync_file headers
>   dma-buf/sync_file: de-stage sync_file
>   Documentation: include sync_file into DocBook
>   Documentation: add Sync File doc
> 
>  Documentation/DocBook/device-drivers.tmpl |   2 +
>  Documentation/dma-buf-sync_file.txt       |  65 +++++
>  drivers/Kconfig                           |   2 +
>  drivers/dma-buf/Kconfig                   |  11 +
>  drivers/dma-buf/Makefile                  |   1 +
>  drivers/dma-buf/sync_file.c               | 394 ++++++++++++++++++++++++++++++
>  drivers/staging/android/Kconfig           |   1 +
>  drivers/staging/android/sync.c            | 362 ---------------------------
>  drivers/staging/android/sync.h            |  91 +------
>  drivers/staging/android/sync_debug.c      |   5 +-
>  drivers/staging/android/uapi/sync.h       | 100 --------
>  include/linux/sync_file.h                 |  57 +++++
>  include/uapi/linux/sync_file.h            | 100 ++++++++
>  13 files changed, 638 insertions(+), 553 deletions(-)
>  create mode 100644 Documentation/dma-buf-sync_file.txt
>  create mode 100644 drivers/dma-buf/Kconfig
>  create mode 100644 drivers/dma-buf/sync_file.c
>  delete mode 100644 drivers/staging/android/uapi/sync.h
>  create mode 100644 include/linux/sync_file.h
>  create mode 100644 include/uapi/linux/sync_file.h
> 
> -- 
> 2.5.5
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH 00/12] De-stage Sync File Framework
@ 2016-04-27 19:09   ` Daniel Vetter
  0 siblings, 0 replies; 37+ messages in thread
From: Daniel Vetter @ 2016-04-27 19:09 UTC (permalink / raw)
  To: Gustavo Padovan
  Cc: devel, Rob Clark, Daniel Stone, Greg Kroah-Hartman,
	Maarten Lankhorst, linux-kernel, dri-devel,
	Arve Hjønnevåg, Greg Hackmann, Daniel Vetter,
	Riley Andrews, Gustavo Padovan, Sumit Semwal, John Harrison

On Wed, Apr 27, 2016 at 01:27:07PM -0300, Gustavo Padovan wrote:
> From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
> 
> Hi,
> 
> This patchset sits on top of Sync ABI Rework v13:
> 
> https://www.spinics.net/lists/dri-devel/msg105667.html
> 
> The first eight clean up and prepare sync_file for de-staging. The last four
> patches do the de-staging, moving files to drivers/dma-buf/ and include/linux/
> plus adding Documentation.
> 
> As the de-stage depends upon many changes on the staging tree it would
> be good to get all the patches merged through the staging tree if Sumit
> agrees with that.
> 
> The next step on the Sync de-stage is clean up the remaining bits 
> of the Sync Framework, mainly SW_SYNC, which is only used for testing.

Ok I looked once more at all this stuff, and there's some nitpicks I
discussed with Gustavo on irc. But really their small, and I think
perfectly ok to address them once sync_file is destaged. Especially since
there's a lot more work pending on top of this, so we really want to get
sync_file.[hc] destaged in 4.7. It'll take us a few iterations and a few
drivers using this in anger in upstream to perfect the internal interfaces
anyway, but let's get this started.

Had some real nitpicks on the docs patch, but that can also be merged
later on imo. Except for that patch, on the series:

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

> 
> Thanks,
> 
> 	Gustavo
> 
> ---
> Gustavo Padovan (12):
>   staging/android: remove redundant comments on sync_merge_data
>   staging/android: drop sync_file_install() and sync_file_put()
>   staging/android: move sync_file functions comments to sync.c
>   staging/android: make sync_file_merge() static
>   staging/android: make sync_file_fdget() static
>   staging/android: prepare sync_file for de-staging
>   staging/android: improve documentation for sync_file
>   staging/android: style fix: alignment to match the open parenthesis
>   dma-buf/sync_file: de-stage sync_file headers
>   dma-buf/sync_file: de-stage sync_file
>   Documentation: include sync_file into DocBook
>   Documentation: add Sync File doc
> 
>  Documentation/DocBook/device-drivers.tmpl |   2 +
>  Documentation/dma-buf-sync_file.txt       |  65 +++++
>  drivers/Kconfig                           |   2 +
>  drivers/dma-buf/Kconfig                   |  11 +
>  drivers/dma-buf/Makefile                  |   1 +
>  drivers/dma-buf/sync_file.c               | 394 ++++++++++++++++++++++++++++++
>  drivers/staging/android/Kconfig           |   1 +
>  drivers/staging/android/sync.c            | 362 ---------------------------
>  drivers/staging/android/sync.h            |  91 +------
>  drivers/staging/android/sync_debug.c      |   5 +-
>  drivers/staging/android/uapi/sync.h       | 100 --------
>  include/linux/sync_file.h                 |  57 +++++
>  include/uapi/linux/sync_file.h            | 100 ++++++++
>  13 files changed, 638 insertions(+), 553 deletions(-)
>  create mode 100644 Documentation/dma-buf-sync_file.txt
>  create mode 100644 drivers/dma-buf/Kconfig
>  create mode 100644 drivers/dma-buf/sync_file.c
>  delete mode 100644 drivers/staging/android/uapi/sync.h
>  create mode 100644 include/linux/sync_file.h
>  create mode 100644 include/uapi/linux/sync_file.h
> 
> -- 
> 2.5.5
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH 00/12] De-stage Sync File Framework
  2016-04-27 19:09   ` Daniel Vetter
  (?)
@ 2016-04-28 13:45   ` Gustavo Padovan
  -1 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-04-28 13:45 UTC (permalink / raw)
  To: Gustavo Padovan, Greg Kroah-Hartman, linux-kernel, devel,
	dri-devel, Daniel Stone, Arve Hjønnevåg, Riley Andrews,
	Rob Clark, Greg Hackmann, John Harrison, Maarten Lankhorst,
	Sumit Semwal

2016-04-27 Daniel Vetter <daniel@ffwll.ch>:

> On Wed, Apr 27, 2016 at 01:27:07PM -0300, Gustavo Padovan wrote:
> > From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
> > 
> > Hi,
> > 
> > This patchset sits on top of Sync ABI Rework v13:
> > 
> > https://www.spinics.net/lists/dri-devel/msg105667.html
> > 
> > The first eight clean up and prepare sync_file for de-staging. The last four
> > patches do the de-staging, moving files to drivers/dma-buf/ and include/linux/
> > plus adding Documentation.
> > 
> > As the de-stage depends upon many changes on the staging tree it would
> > be good to get all the patches merged through the staging tree if Sumit
> > agrees with that.
> > 
> > The next step on the Sync de-stage is clean up the remaining bits 
> > of the Sync Framework, mainly SW_SYNC, which is only used for testing.
> 
> Ok I looked once more at all this stuff, and there's some nitpicks I
> discussed with Gustavo on irc. But really their small, and I think
> perfectly ok to address them once sync_file is destaged. Especially since
> there's a lot more work pending on top of this, so we really want to get
> sync_file.[hc] destaged in 4.7. It'll take us a few iterations and a few
> drivers using this in anger in upstream to perfect the internal interfaces
> anyway, but let's get this started.
> 
> Had some real nitpicks on the docs patch, but that can also be merged
> later on imo. Except for that patch, on the series:
> 
> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> 

Thanks for the review, I'm sending v2 fixing the nitpicks you pointed
out.

	Gustavo

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH 01/12] staging/android: remove redundant comments on sync_merge_data
  2016-04-27 16:27   ` Gustavo Padovan
@ 2016-05-02 21:00     ` Pavel Machek
  -1 siblings, 0 replies; 37+ messages in thread
From: Pavel Machek @ 2016-05-02 21:00 UTC (permalink / raw)
  To: Gustavo Padovan
  Cc: Greg Kroah-Hartman, linux-kernel, devel, dri-devel, Daniel Stone,
	Arve Hjønnevåg, Riley Andrews, Daniel Vetter,
	Rob Clark, Greg Hackmann, John Harrison, Maarten Lankhorst,
	Sumit Semwal, Gustavo Padovan

On Wed 2016-04-27 13:27:08, Gustavo Padovan wrote:
> From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
> 
> struct sync_merge_data already have documentation on top of the
> struct definition. No need to duplicate it.
> 
> Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>

> @@ -33,8 +33,8 @@ struct sync_merge_data {
>  /**
>   * struct sync_fence_info - detailed fence information
>   * @obj_name:		name of parent sync_timeline
> - * @driver_name:	name of driver implementing the parent
> - * @status:		status of the fence 0:active 1:signaled <0:error
> +* @driver_name:	name of driver implementing the parent
> +* @status:		status of the fence 0:active 1:signaled <0:error

The whitespace (or mail client configuration?) looks wrong here.

									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH 01/12] staging/android: remove redundant comments on sync_merge_data
@ 2016-05-02 21:00     ` Pavel Machek
  0 siblings, 0 replies; 37+ messages in thread
From: Pavel Machek @ 2016-05-02 21:00 UTC (permalink / raw)
  To: Gustavo Padovan
  Cc: devel, Rob Clark, Daniel Stone, Greg Kroah-Hartman,
	Maarten Lankhorst, linux-kernel, dri-devel,
	Arve Hjønnevåg, Greg Hackmann, Daniel Vetter,
	Riley Andrews, Gustavo Padovan, Sumit Semwal, John Harrison

On Wed 2016-04-27 13:27:08, Gustavo Padovan wrote:
> From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
> 
> struct sync_merge_data already have documentation on top of the
> struct definition. No need to duplicate it.
> 
> Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>

> @@ -33,8 +33,8 @@ struct sync_merge_data {
>  /**
>   * struct sync_fence_info - detailed fence information
>   * @obj_name:		name of parent sync_timeline
> - * @driver_name:	name of driver implementing the parent
> - * @status:		status of the fence 0:active 1:signaled <0:error
> +* @driver_name:	name of driver implementing the parent
> +* @status:		status of the fence 0:active 1:signaled <0:error

The whitespace (or mail client configuration?) looks wrong here.

									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH 06/12] staging/android: prepare sync_file for de-staging
  2016-04-27 16:27 ` [PATCH 06/12] staging/android: prepare sync_file for de-staging Gustavo Padovan
@ 2016-05-02 21:04     ` Pavel Machek
  0 siblings, 0 replies; 37+ messages in thread
From: Pavel Machek @ 2016-05-02 21:04 UTC (permalink / raw)
  To: Gustavo Padovan
  Cc: Greg Kroah-Hartman, linux-kernel, devel, dri-devel, Daniel Stone,
	Arve Hjønnevåg, Riley Andrews, Daniel Vetter,
	Rob Clark, Greg Hackmann, John Harrison, Maarten Lankhorst,
	Sumit Semwal, Gustavo Padovan

Hi!


> -}
> -EXPORT_SYMBOL(sync_file_merge);
> -
>  static const char *android_fence_get_driver_name(struct fence *fence)
>  {
>  	struct sync_timeline *parent = fence_parent(fence);

if this is meant to be used outside android, should it select some
better prefix than android_fence_?

Thanks,
									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH 06/12] staging/android: prepare sync_file for de-staging
@ 2016-05-02 21:04     ` Pavel Machek
  0 siblings, 0 replies; 37+ messages in thread
From: Pavel Machek @ 2016-05-02 21:04 UTC (permalink / raw)
  To: Gustavo Padovan
  Cc: devel, Rob Clark, Daniel Stone, Greg Kroah-Hartman,
	Maarten Lankhorst, linux-kernel, dri-devel,
	Arve Hjønnevåg, Greg Hackmann, Daniel Vetter,
	Riley Andrews, Gustavo Padovan, Sumit Semwal, John Harrison

Hi!


> -}
> -EXPORT_SYMBOL(sync_file_merge);
> -
>  static const char *android_fence_get_driver_name(struct fence *fence)
>  {
>  	struct sync_timeline *parent = fence_parent(fence);

if this is meant to be used outside android, should it select some
better prefix than android_fence_?

Thanks,
									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH 01/12] staging/android: remove redundant comments on sync_merge_data
  2016-05-02 21:00     ` Pavel Machek
@ 2016-05-02 21:11       ` Gustavo Padovan
  -1 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-05-02 21:11 UTC (permalink / raw)
  To: Pavel Machek
  Cc: Greg Kroah-Hartman, linux-kernel, devel, dri-devel, Daniel Stone,
	Arve Hjønnevåg, Riley Andrews, Daniel Vetter,
	Rob Clark, Greg Hackmann, John Harrison, Maarten Lankhorst,
	Sumit Semwal, Gustavo Padovan

2016-05-02 Pavel Machek <pavel@ucw.cz>:

> On Wed 2016-04-27 13:27:08, Gustavo Padovan wrote:
> > From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
> > 
> > struct sync_merge_data already have documentation on top of the
> > struct definition. No need to duplicate it.
> > 
> > Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
> > Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> 
> > @@ -33,8 +33,8 @@ struct sync_merge_data {
> >  /**
> >   * struct sync_fence_info - detailed fence information
> >   * @obj_name:		name of parent sync_timeline
> > - * @driver_name:	name of driver implementing the parent
> > - * @status:		status of the fence 0:active 1:signaled <0:error
> > +* @driver_name:	name of driver implementing the parent
> > +* @status:		status of the fence 0:active 1:signaled <0:error
> 
> The whitespace (or mail client configuration?) looks wrong here.

this has been fixed in v2 already and Greg pulled everything into
staging next already.

	Gustavo

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH 01/12] staging/android: remove redundant comments on sync_merge_data
@ 2016-05-02 21:11       ` Gustavo Padovan
  0 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-05-02 21:11 UTC (permalink / raw)
  To: Pavel Machek
  Cc: devel, Daniel Stone, Greg Kroah-Hartman, linux-kernel, dri-devel,
	Arve Hjønnevåg, Daniel Vetter, Riley Andrews,
	Gustavo Padovan, John Harrison

2016-05-02 Pavel Machek <pavel@ucw.cz>:

> On Wed 2016-04-27 13:27:08, Gustavo Padovan wrote:
> > From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
> > 
> > struct sync_merge_data already have documentation on top of the
> > struct definition. No need to duplicate it.
> > 
> > Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
> > Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> 
> > @@ -33,8 +33,8 @@ struct sync_merge_data {
> >  /**
> >   * struct sync_fence_info - detailed fence information
> >   * @obj_name:		name of parent sync_timeline
> > - * @driver_name:	name of driver implementing the parent
> > - * @status:		status of the fence 0:active 1:signaled <0:error
> > +* @driver_name:	name of driver implementing the parent
> > +* @status:		status of the fence 0:active 1:signaled <0:error
> 
> The whitespace (or mail client configuration?) looks wrong here.

this has been fixed in v2 already and Greg pulled everything into
staging next already.

	Gustavo
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH 06/12] staging/android: prepare sync_file for de-staging
  2016-05-02 21:04     ` Pavel Machek
@ 2016-05-02 21:13       ` Gustavo Padovan
  -1 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-05-02 21:13 UTC (permalink / raw)
  To: Pavel Machek
  Cc: Greg Kroah-Hartman, linux-kernel, devel, dri-devel, Daniel Stone,
	Arve Hjønnevåg, Riley Andrews, Daniel Vetter,
	Rob Clark, Greg Hackmann, John Harrison, Maarten Lankhorst,
	Sumit Semwal, Gustavo Padovan

Hi Pavel,

2016-05-02 Pavel Machek <pavel@ucw.cz>:

> Hi!
> 
> 
> > -}
> > -EXPORT_SYMBOL(sync_file_merge);
> > -
> >  static const char *android_fence_get_driver_name(struct fence *fence)
> >  {
> >  	struct sync_timeline *parent = fence_parent(fence);
> 
> if this is meant to be used outside android, should it select some
> better prefix than android_fence_?

Sure, This patchset doesn't touch this code, but my latest patchset
changes them to timeline_*.

	Gustavo

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [PATCH 06/12] staging/android: prepare sync_file for de-staging
@ 2016-05-02 21:13       ` Gustavo Padovan
  0 siblings, 0 replies; 37+ messages in thread
From: Gustavo Padovan @ 2016-05-02 21:13 UTC (permalink / raw)
  To: Pavel Machek
  Cc: devel, Daniel Stone, Greg Kroah-Hartman, linux-kernel, dri-devel,
	Arve Hjønnevåg, Daniel Vetter, Riley Andrews,
	Gustavo Padovan, John Harrison

Hi Pavel,

2016-05-02 Pavel Machek <pavel@ucw.cz>:

> Hi!
> 
> 
> > -}
> > -EXPORT_SYMBOL(sync_file_merge);
> > -
> >  static const char *android_fence_get_driver_name(struct fence *fence)
> >  {
> >  	struct sync_timeline *parent = fence_parent(fence);
> 
> if this is meant to be used outside android, should it select some
> better prefix than android_fence_?

Sure, This patchset doesn't touch this code, but my latest patchset
changes them to timeline_*.

	Gustavo
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 37+ messages in thread

end of thread, other threads:[~2016-05-02 21:13 UTC | newest]

Thread overview: 37+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-27 16:27 [PATCH 00/12] De-stage Sync File Framework Gustavo Padovan
2016-04-27 16:27 ` Gustavo Padovan
2016-04-27 16:27 ` [PATCH 01/12] staging/android: remove redundant comments on sync_merge_data Gustavo Padovan
2016-04-27 16:27   ` Gustavo Padovan
2016-05-02 21:00   ` Pavel Machek
2016-05-02 21:00     ` Pavel Machek
2016-05-02 21:11     ` Gustavo Padovan
2016-05-02 21:11       ` Gustavo Padovan
2016-04-27 16:27 ` [PATCH 02/12] staging/android: drop sync_file_install() and sync_file_put() Gustavo Padovan
2016-04-27 16:27   ` Gustavo Padovan
2016-04-27 16:27 ` [PATCH 03/12] staging/android: move sync_file functions comments to sync.c Gustavo Padovan
2016-04-27 16:27   ` Gustavo Padovan
2016-04-27 16:27 ` [PATCH 04/12] staging/android: make sync_file_merge() static Gustavo Padovan
2016-04-27 16:27   ` Gustavo Padovan
2016-04-27 16:27 ` [PATCH 05/12] staging/android: make sync_file_fdget() static Gustavo Padovan
2016-04-27 16:27   ` Gustavo Padovan
2016-04-27 16:27 ` [PATCH 06/12] staging/android: prepare sync_file for de-staging Gustavo Padovan
2016-05-02 21:04   ` Pavel Machek
2016-05-02 21:04     ` Pavel Machek
2016-05-02 21:13     ` Gustavo Padovan
2016-05-02 21:13       ` Gustavo Padovan
2016-04-27 16:27 ` [PATCH 07/12] staging/android: improve documentation for sync_file Gustavo Padovan
2016-04-27 16:27 ` [PATCH 08/12] staging/android: style fix: alignment to match the open parenthesis Gustavo Padovan
2016-04-27 16:27   ` Gustavo Padovan
2016-04-27 16:27 ` [PATCH 09/12] dma-buf/sync_file: de-stage sync_file headers Gustavo Padovan
2016-04-27 16:27   ` Gustavo Padovan
2016-04-27 16:27 ` [PATCH 10/12] dma-buf/sync_file: de-stage sync_file Gustavo Padovan
2016-04-27 16:27   ` Gustavo Padovan
2016-04-27 16:27 ` [PATCH 11/12] Documentation: include sync_file into DocBook Gustavo Padovan
2016-04-27 16:27   ` Gustavo Padovan
2016-04-27 16:27 ` [PATCH 12/12] Documentation: add Sync File doc Gustavo Padovan
2016-04-27 16:27   ` Gustavo Padovan
2016-04-27 19:05   ` Daniel Vetter
2016-04-27 19:05     ` Daniel Vetter
2016-04-27 19:09 ` [PATCH 00/12] De-stage Sync File Framework Daniel Vetter
2016-04-27 19:09   ` Daniel Vetter
2016-04-28 13:45   ` Gustavo Padovan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.