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

The sync framework is ready for mainline inclusion. Here we move it to
drivers/dma-buf and the header files to the appropiated places.

The sync framework contained some abstractions around struct fence and those
were removed in the de-staging process among other changes:

Userspace visible changes
-------------------------

 * The sw_sync file was moved from /dev/sw_sync to <debugfs>/sync/sw_sync. No
  other change.

Kernel API changes
------------------

 * struct sync_timeline is now struct fence_timeline
 * sync_timeline_ops is now fence_timeline_ops and they now carry struct
 fence as parameter instead of struct sync_pt
 * a .cleanup() fence op was added to allow sync_fence to run a cleanup when
 the fence_timeline is destroyed
 * added fence_add_used_data() to pass a private point to struct fence.
 This pointer is sent back on the .cleanup op.
 * The sync timeline function were moved to be fence_timeline functions:
         - sync_timeline_create()       -> fence_timeline_create()
         - sync_timeline_get()          -> fence_timeline_get()
         - sync_timeline_put()          -> fence_timeline_put()
         - sync_timeline_destroy()      -> fence_timeline_destroy()
         - sync_timeline_signal()       -> fence_timeline_signal()

  * sync_pt_create() was replaced be fence_create_on_timeline()

Internal changes
----------------

 * fence_timeline_ops was removed in favor of direct use fence_ops
 * fence default functions were created for fence_ops
 * removed structs sync_pt, sw_sync_timeline and sw_sync_pt

Signed-off-by: Gustavo Padovan <gustavo.padovan at collabora.co.uk>
---
 drivers/Kconfig                                    |  2 ++
 drivers/dma-buf/Kconfig                            | 22 ++++++++++++++++++++++
 drivers/dma-buf/Makefile                           |  2 ++
 drivers/{staging/android => dma-buf}/sw_sync.c     |  3 +--
 drivers/{staging/android => dma-buf}/sync.c        |  7 ++++---
 drivers/{staging/android => dma-buf}/sync_debug.c  |  2 +-
 drivers/staging/android/Kconfig                    | 19 -------------------
 drivers/staging/android/Makefile                   |  2 --
 .../staging/android => include/linux}/sw_sync.h    |  4 ++--
 {drivers/staging/android => include/linux}/sync.h  |  4 ++--
 .../android/trace => include/trace/events}/sync.h  |  5 ++---
 .../android/uapi => include/uapi/linux}/sw_sync.h  |  0
 .../android/uapi => include/uapi/linux}/sync.h     |  0
 13 files changed, 38 insertions(+), 34 deletions(-)
 create mode 100644 drivers/dma-buf/Kconfig
 rename drivers/{staging/android => dma-buf}/sw_sync.c (98%)
 rename drivers/{staging/android => dma-buf}/sync.c (99%)
 rename drivers/{staging/android => dma-buf}/sync_debug.c (99%)
 rename {drivers/staging/android => include/linux}/sw_sync.h (95%)
 rename {drivers/staging/android => include/linux}/sync.h (99%)
 rename {drivers/staging/android/trace => include/trace/events}/sync.h (92%)
 rename {drivers/staging/android/uapi => include/uapi/linux}/sw_sync.h (100%)
 rename {drivers/staging/android/uapi => include/uapi/linux}/sync.h (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..4168f89
--- /dev/null
+++ b/drivers/dma-buf/Kconfig
@@ -0,0 +1,22 @@
+menu "DMABUF options"
+
+config SYNC
+       bool "Synchronization framework"
+       default n
+       select ANON_INODES
+       select DMA_SHARED_BUFFER
+       ---help---
+         This option enables the framework for synchronization between multiple
+         drivers.  Sync implementations can take advantage of hardware
+         synchronization built into devices like GPUs.
+
+config SW_SYNC
+       bool "Software synchronization objects"
+       default n
+       depends on SYNC
+       ---help---
+         A sync object driver that uses a 32bit counter to coordinate
+         synchronization.  Useful when there is no hardware primitive backing
+         the synchronization.
+
+endmenu
diff --git a/drivers/dma-buf/Makefile b/drivers/dma-buf/Makefile
index fb03696..b870923 100644
--- a/drivers/dma-buf/Makefile
+++ b/drivers/dma-buf/Makefile
@@ -1 +1,3 @@
 obj-y := dma-buf.o fence.o fence_debug.o reservation.o seqno-fence.o
+obj-$(CONFIG_SYNC)                     += sync.o sync_debug.o
+obj-$(CONFIG_SW_SYNC)                  += sw_sync.o
diff --git a/drivers/staging/android/sw_sync.c b/drivers/dma-buf/sw_sync.c
similarity index 98%
rename from drivers/staging/android/sw_sync.c
rename to drivers/dma-buf/sw_sync.c
index 8c83bad..32d0800 100644
--- a/drivers/staging/android/sw_sync.c
+++ b/drivers/dma-buf/sw_sync.c
@@ -22,8 +22,7 @@
 #include <linux/miscdevice.h>
 #include <linux/syscalls.h>
 #include <linux/uaccess.h>
-
-#include "sw_sync.h"
+#include <linux/sw_sync.h>

 static void sw_sync_cleanup(struct fence *fence, void *user_data)
 {
diff --git a/drivers/staging/android/sync.c b/drivers/dma-buf/sync.c
similarity index 99%
rename from drivers/staging/android/sync.c
rename to drivers/dma-buf/sync.c
index aafecf4..248aa44 100644
--- a/drivers/staging/android/sync.c
+++ b/drivers/dma-buf/sync.c
@@ -26,10 +26,10 @@
 #include <linux/uaccess.h>
 #include <linux/anon_inodes.h>

-#include "sync.h"
+#include <linux/sync.h>

 #define CREATE_TRACE_POINTS
-#include "trace/sync.h"
+#include <trace/events/sync.h>

 static const struct file_operations sync_fence_fops;

@@ -280,7 +280,7 @@ int sync_fence_wait(struct sync_fence *sync_fence, long 
timeout)

        trace_sync_wait(sync_fence, 1);
        for (i = 0; i < sync_fence->num_fences; ++i)
-               trace_fence(sync_fence->cbs[i].fence);
+               trace_sync_fence(sync_fence->cbs[i].fence);
        ret = wait_event_interruptible_timeout(sync_fence->wq,
                                               atomic_read(&sync_fence->status) 
<= 0,
                                               timeout);
@@ -395,6 +395,7 @@ static long sync_fence_ioctl_merge(struct sync_fence 
*sync_fence,

        sync_fence_install(fence3, fd);
        sync_fence_put(fence2);
+
        return 0;

 err_put_fence3:
diff --git a/drivers/staging/android/sync_debug.c b/drivers/dma-buf/sync_debug.c
similarity index 99%
rename from drivers/staging/android/sync_debug.c
rename to drivers/dma-buf/sync_debug.c
index 8e2ca57..294786b 100644
--- a/drivers/staging/android/sync_debug.c
+++ b/drivers/dma-buf/sync_debug.c
@@ -27,7 +27,7 @@
 #include <linux/uaccess.h>
 #include <linux/anon_inodes.h>
 #include <linux/time64.h>
-#include "sw_sync.h"
+#include <linux/sw_sync.h>

 #ifdef CONFIG_DEBUG_FS

diff --git a/drivers/staging/android/Kconfig b/drivers/staging/android/Kconfig
index bd90d20..4b18fee 100644
--- a/drivers/staging/android/Kconfig
+++ b/drivers/staging/android/Kconfig
@@ -38,25 +38,6 @@ config ANDROID_LOW_MEMORY_KILLER
          scripts (/init.rc), and it defines priority values with minimum free 
memory size
          for each priority.

-config SYNC
-       bool "Synchronization framework"
-       default n
-       select ANON_INODES
-       select DMA_SHARED_BUFFER
-       ---help---
-         This option enables the framework for synchronization between multiple
-         drivers.  Sync implementations can take advantage of hardware
-         synchronization built into devices like GPUs.
-
-config SW_SYNC
-       bool "Software synchronization objects"
-       default n
-       depends on SYNC
-       ---help---
-         A sync object driver that uses a 32bit counter to coordinate
-         synchronization.  Useful when there is no hardware primitive backing
-         the synchronization.
-
 source "drivers/staging/android/ion/Kconfig"

 endif # if ANDROID
diff --git a/drivers/staging/android/Makefile b/drivers/staging/android/Makefile
index c7b6c99..355ad0e 100644
--- a/drivers/staging/android/Makefile
+++ b/drivers/staging/android/Makefile
@@ -6,5 +6,3 @@ obj-$(CONFIG_ASHMEM)                    += ashmem.o
 obj-$(CONFIG_ANDROID_TIMED_OUTPUT)     += timed_output.o
 obj-$(CONFIG_ANDROID_TIMED_GPIO)       += timed_gpio.o
 obj-$(CONFIG_ANDROID_LOW_MEMORY_KILLER)        += lowmemorykiller.o
-obj-$(CONFIG_SYNC)                     += sync.o sync_debug.o
-obj-$(CONFIG_SW_SYNC)                  += sw_sync.o
diff --git a/drivers/staging/android/sw_sync.h b/include/linux/sw_sync.h
similarity index 95%
rename from drivers/staging/android/sw_sync.h
rename to include/linux/sw_sync.h
index f912888..68cb3d9 100644
--- a/drivers/staging/android/sw_sync.h
+++ b/include/linux/sw_sync.h
@@ -19,8 +19,8 @@

 #include <linux/types.h>
 #include <linux/kconfig.h>
-#include "sync.h"
-#include "uapi/sw_sync.h"
+#include <linux/sync.h>
+#include <uapi/linux/sw_sync.h>

 #if IS_ENABLED(CONFIG_SW_SYNC)
 struct fence_timeline *sw_sync_timeline_create(const char *name);
diff --git a/drivers/staging/android/sync.h b/include/linux/sync.h
similarity index 99%
rename from drivers/staging/android/sync.h
rename to include/linux/sync.h
index d60d9c2..ecefed5 100644
--- a/drivers/staging/android/sync.h
+++ b/include/linux/sync.h
@@ -20,8 +20,8 @@
 #include <linux/spinlock.h>
 #include <linux/wait.h>
 #include <linux/fence.h>
-
-#include "uapi/sync.h"
+#include <linux/sync.h>
+#include <uapi/linux/sync.h>

 struct sync_fence;

diff --git a/drivers/staging/android/trace/sync.h b/include/trace/events/sync.h
similarity index 92%
rename from drivers/staging/android/trace/sync.h
rename to include/trace/events/sync.h
index 4f68515..fa19962 100644
--- a/drivers/staging/android/trace/sync.h
+++ b/include/trace/events/sync.h
@@ -1,11 +1,10 @@
 #undef TRACE_SYSTEM
-#define TRACE_INCLUDE_PATH ../../drivers/staging/android/trace
 #define TRACE_SYSTEM sync

 #if !defined(_TRACE_SYNC_H) || defined(TRACE_HEADER_MULTI_READ)
 #define _TRACE_SYNC_H

-#include "../sync.h"
+#include <linux/sync.h>
 #include <linux/tracepoint.h>

 TRACE_EVENT(sync_wait,
@@ -29,7 +28,7 @@ TRACE_EVENT(sync_wait,
                        __get_str(name), __entry->status)
 );

-TRACE_EVENT(fence,
+TRACE_EVENT(sync_fence,
        TP_PROTO(struct fence *fence),

        TP_ARGS(fence),
diff --git a/drivers/staging/android/uapi/sw_sync.h 
b/include/uapi/linux/sw_sync.h
similarity index 100%
rename from drivers/staging/android/uapi/sw_sync.h
rename to include/uapi/linux/sw_sync.h
diff --git a/drivers/staging/android/uapi/sync.h b/include/uapi/linux/sync.h
similarity index 100%
rename from drivers/staging/android/uapi/sync.h
rename to include/uapi/linux/sync.h
-- 
2.5.0

Reply via email to