@@ -4,8 +4,6 @@ SRC_URI += " \
file://0001-Add-option-to-run-a-test-indefinitely.patch \
file://0001-omap-fix-omap_bo_size-for-tiled-buffers.patch \
file://0002-omap-add-OMAP_BO-flags-to-affect-buffer-allocation.patch \
-file://0001-libsync-add-support-for-pre-v4.7-kernels.patch \
-file://0002-Add-sync_fence_info-and-sync_pt_info.patch \
"
PR:append = ".arago4"
deleted file mode 100644
@@ -1,91 +0,0 @@
-From 74dc4b57e9d539944edf61ec7466ce029cf993d7 Mon Sep 17 00:00:00 2001
-From: Brendan King <Brendan.King@imgtec.com>
-Date: Tue, 13 Jun 2017 15:52:44 +0100
-Subject: [PATCH] libsync: add support for pre-v4.7 kernels
-
-Add support for the the sync merge ioctl supported by older kernels.
-
-Upstream-Status: Pending
----
- libsync.h | 44 +++++++++++++++++++++++++++++++++++++++++---
- 1 file changed, 41 insertions(+), 3 deletions(-)
-
-diff --git a/libsync.h b/libsync.h
-index c6b64ed..465871c 100644
---- a/libsync.h
-+++ b/libsync.h
-@@ -40,6 +40,10 @@
- extern "C" {
- #endif
-
-+#ifndef SYNC_IOC_MAGIC
-+#define SYNC_IOC_MAGIC '>'
-+#endif
-+
- #ifndef SYNC_IOC_MERGE
- /* duplicated from linux/sync_file.h to avoid build-time dependency
- * on new (v4.7) kernel headers. Once distro's are mostly using
-@@ -53,10 +57,22 @@ struct sync_merge_data {
- uint32_t flags;
- uint32_t pad;
- };
--#define SYNC_IOC_MAGIC '>'
- #define SYNC_IOC_MERGE _IOWR(SYNC_IOC_MAGIC, 3, struct sync_merge_data)
- #endif
-
-+#ifndef SYNC_IOC_LEGACY_MERGE
-+/* the legacy definitions are based on the contents of
-+ * drivers/staging/android/uapi/sync.h in the v4.4 kernel.
-+ */
-+struct sync_legacy_merge_data {
-+ int32_t fd2;
-+ char name[32];
-+ int32_t fence;
-+};
-+
-+#define SYNC_IOC_LEGACY_MERGE _IOWR(SYNC_IOC_MAGIC, 1, \
-+ struct sync_legacy_merge_data)
-+#endif
-
- static inline int sync_wait(int fd, int timeout)
- {
-@@ -83,6 +99,24 @@ static inline int sync_wait(int fd, int timeout)
- return ret;
- }
-
-+static inline int sync_legacy_merge(const char *name, int fd1, int fd2)
-+{
-+ struct sync_legacy_merge_data data;
-+ int ret;
-+
-+ data.fd2 = fd2;
-+ strncpy(data.name, name, sizeof(data.name));
-+
-+ do {
-+ ret = ioctl(fd1, SYNC_IOC_LEGACY_MERGE, &data);
-+ } while (ret == -1 && (errno == EINTR || errno == EAGAIN));
-+
-+ if (ret < 0)
-+ return ret;
-+
-+ return data.fence;
-+}
-+
- static inline int sync_merge(const char *name, int fd1, int fd2)
- {
- struct sync_merge_data data = {0};
-@@ -95,8 +129,12 @@ static inline int sync_merge(const char *name, int fd1, int fd2)
- ret = ioctl(fd1, SYNC_IOC_MERGE, &data);
- } while (ret == -1 && (errno == EINTR || errno == EAGAIN));
-
-- if (ret < 0)
-- return ret;
-+ if (ret < 0) {
-+ if (errno == ENOTTY)
-+ return sync_legacy_merge(name, fd1, fd2);
-+ else
-+ return ret;
-+ }
-
- return data.fence;
- }
deleted file mode 100644
@@ -1,211 +0,0 @@
-From 34d420f46a49d059d55f5b9ed87306207b76c15b Mon Sep 17 00:00:00 2001
-From: Brendan King <Brendan.King@imgtec.com>
-Date: Thu, 24 Aug 2017 13:28:38 +0100
-Subject: [PATCH] Add sync_fence_info and sync_pt_info
-
-For pre-4.7 kernels, sync_fence_info returns the data from the
-SYNC_IOC_FENCE_INFO ioctl. For newer kernels, the SYNC_IOC_FILE_INFO
-ioctl is called, and the data converted to SYNC_IOC_FENCE_INFO form.
-
-Upstream-Status: Pending
----
- libsync.h | 172 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 172 insertions(+)
-
-diff --git a/libsync.h b/libsync.h
-index 465871c..103b488 100644
---- a/libsync.h
-+++ b/libsync.h
-@@ -31,6 +31,7 @@
- #include <assert.h>
- #include <errno.h>
- #include <stdint.h>
-+#include <stdlib.h>
- #include <string.h>
- #include <sys/ioctl.h>
- #include <poll.h>
-@@ -74,6 +75,54 @@ struct sync_legacy_merge_data {
- struct sync_legacy_merge_data)
- #endif
-
-+#ifndef SYNC_IOC_FILE_INFO
-+/* duplicated from linux/sync_file.h to avoid a build-time dependency
-+ * on new (v4.7) kernel headers.
-+ */
-+struct sync_fence_info {
-+ char obj_name[32];
-+ char driver_name[32];
-+ int32_t status;
-+ uint32_t flags;
-+ uint64_t timestamp_ns;
-+};
-+
-+struct sync_file_info {
-+ char name[32];
-+ int32_t status;
-+ uint32_t flags;
-+ uint32_t num_fences;
-+ uint32_t pad;
-+ uint64_t sync_fence_info;
-+};
-+
-+#define SYNC_IOC_FILE_INFO _IOWR(SYNC_IOC_MAGIC, 4, struct sync_file_info)
-+#endif
-+
-+#ifndef SYNC_IOC_LEGACY_FENCE_INFO
-+/* the legacy definitions are based on the contents of
-+ * drivers/staging/android/uapi/sync.h in the v4.4 kernel.
-+ */
-+struct sync_pt_info {
-+ uint32_t len;
-+ char obj_name[32];
-+ char driver_name[32];
-+ int32_t status;
-+ uint64_t timestamp_ns;
-+ uint8_t driver_data[0];
-+};
-+
-+struct sync_fence_info_data {
-+ uint32_t len;
-+ char name[32];
-+ int32_t status;
-+ uint8_t pt_info[0];
-+};
-+
-+#define SYNC_IOC_LEGACY_FENCE_INFO _IOWR(SYNC_IOC_MAGIC, 2, \
-+ struct sync_fence_info_data)
-+#endif
-+
- static inline int sync_wait(int fd, int timeout)
- {
- struct pollfd fds = {0};
-@@ -179,6 +228,129 @@ static inline int sync_accumulate(const char *name, int *fd1, int fd2)
- return 0;
- }
-
-+static inline struct sync_pt_info *sync_pt_info(
-+ struct sync_fence_info_data *info,
-+ struct sync_pt_info *pt_info)
-+{
-+ if (!pt_info)
-+ pt_info = (struct sync_pt_info *)info->pt_info;
-+ else
-+ pt_info = (struct sync_pt_info *)((uint8_t *)pt_info +
-+ pt_info->len);
-+
-+ if ((uint32_t)((uint8_t *)pt_info - (uint8_t *)info) >= info->len)
-+ return NULL;
-+
-+ return pt_info;
-+}
-+
-+static inline struct sync_fence_info_data *sync_legacy_fence_info(int fd)
-+{
-+ const uint32_t len = 4096;
-+ struct sync_fence_info_data *info = malloc(len);
-+ int ret;
-+
-+ if (!info)
-+ return NULL;
-+
-+ info->len = len;
-+
-+ do {
-+ ret = ioctl(fd, SYNC_IOC_LEGACY_FENCE_INFO, info);
-+ } while (ret == -1 && (errno == EINTR || errno == EAGAIN));
-+
-+ if (ret < 0) {
-+ free(info);
-+ return NULL;
-+ }
-+
-+ return info;
-+}
-+
-+static inline struct sync_fence_info_data *fence_info_from_file_info(
-+ struct sync_file_info *file_info,
-+ uint32_t num_fences)
-+{
-+ struct sync_fence_info_data *info;
-+ size_t info_len;
-+ struct sync_pt_info *pt_info = NULL;
-+ struct sync_fence_info *fence_info;
-+ uint32_t i;
-+
-+ info_len = sizeof(*info) + num_fences * sizeof(*pt_info);
-+ info = malloc(info_len);
-+ if (!info)
-+ return NULL;
-+
-+ info->len = info_len;
-+ strncpy(info->name, file_info->name, sizeof(info->name));
-+ info->status = file_info->status;
-+
-+ fence_info = (struct sync_fence_info *)(uintptr_t)
-+ file_info->sync_fence_info;
-+ for (i = 0; i < num_fences; i++) {
-+ pt_info = sync_pt_info(info, pt_info);
-+ assert(pt_info);
-+
-+ pt_info->len = sizeof(*pt_info);
-+ strncpy(pt_info->obj_name, fence_info->obj_name,
-+ sizeof(pt_info->obj_name));
-+ strncpy(pt_info->driver_name, fence_info->driver_name,
-+ sizeof(pt_info->driver_name));
-+ pt_info->status = fence_info->status;
-+ pt_info->timestamp_ns = fence_info->timestamp_ns;
-+
-+ fence_info++;
-+ }
-+
-+ return info;
-+}
-+
-+static inline struct sync_fence_info_data *sync_fence_info(int fd)
-+{
-+ struct sync_fence_info_data *info = NULL;
-+ struct sync_file_info initial_info = {""};
-+ struct sync_file_info *file_info;
-+ int ret;
-+
-+ do {
-+ ret = ioctl(fd, SYNC_IOC_FILE_INFO, &initial_info);
-+ } while (ret == -1 && (errno == EINTR || errno == EAGAIN));
-+
-+ if (ret < 0) {
-+ if (errno == ENOTTY)
-+ return sync_legacy_fence_info(fd);
-+ else
-+ return NULL;
-+ }
-+
-+ file_info = calloc(1, sizeof(*file_info) + initial_info.num_fences *
-+ sizeof(struct sync_fence_info));
-+ if (!file_info)
-+ return NULL;
-+
-+ file_info->num_fences = initial_info.num_fences;
-+ file_info->sync_fence_info = (uint64_t)(uintptr_t)(file_info + 1);
-+
-+ do {
-+ ret = ioctl(fd, SYNC_IOC_FILE_INFO, file_info);
-+ } while (ret == -1 && (errno == EINTR || errno == EAGAIN));
-+
-+ if (ret < 0)
-+ goto free_file_info;
-+
-+ info = fence_info_from_file_info(file_info, initial_info.num_fences);
-+
-+free_file_info:
-+ free(file_info);
-+
-+ return info;
-+}
-+
-+static inline void sync_fence_info_free(struct sync_fence_info_data *info)
-+{
-+ free(info);
-+}
- #if defined(__cplusplus)
- }
- #endif