From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932132AbcAOO5n (ORCPT ); Fri, 15 Jan 2016 09:57:43 -0500 Received: from mail-yk0-f173.google.com ([209.85.160.173]:34064 "EHLO mail-yk0-f173.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755319AbcAOO5f (ORCPT ); Fri, 15 Jan 2016 09:57:35 -0500 From: Gustavo Padovan To: Greg Kroah-Hartman Cc: linux-kernel@vger.kernel.org, devel@driverdev.osuosl.org, dri-devel@lists.freedesktop.org, daniels@collabora.com, =?UTF-8?q?Arve=20Hj=C3=B8nnev=C3=A5g?= , Riley Andrews , Daniel Vetter , Rob Clark , Greg Hackmann , John Harrison , Maarten Lankhorst , Gustavo Padovan Subject: [RFC 29/29] dma-buf/fence: de-stage sync framework Date: Fri, 15 Jan 2016 12:55:39 -0200 Message-Id: <1452869739-3304-30-git-send-email-gustavo@padovan.org> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1452869739-3304-1-git-send-email-gustavo@padovan.org> References: <1452869739-3304-1-git-send-email-gustavo@padovan.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Gustavo Padovan 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 /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 --- 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 #include #include - -#include "sw_sync.h" +#include 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 #include -#include "sync.h" +#include #define CREATE_TRACE_POINTS -#include "trace/sync.h" +#include 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 #include #include -#include "sw_sync.h" +#include #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 #include -#include "sync.h" -#include "uapi/sw_sync.h" +#include +#include #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 #include #include - -#include "uapi/sync.h" +#include +#include 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 #include 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 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gustavo Padovan Subject: [RFC 29/29] dma-buf/fence: de-stage sync framework Date: Fri, 15 Jan 2016 12:55:39 -0200 Message-ID: <1452869739-3304-30-git-send-email-gustavo@padovan.org> References: <1452869739-3304-1-git-send-email-gustavo@padovan.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-yk0-f176.google.com (mail-yk0-f176.google.com [209.85.160.176]) by gabe.freedesktop.org (Postfix) with ESMTPS id BD8957A101 for ; Fri, 15 Jan 2016 06:57:35 -0800 (PST) Received: by mail-yk0-f176.google.com with SMTP id x67so546644256ykd.2 for ; Fri, 15 Jan 2016 06:57:35 -0800 (PST) In-Reply-To: <1452869739-3304-1-git-send-email-gustavo@padovan.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Greg Kroah-Hartman Cc: devel@driverdev.osuosl.org, daniels@collabora.com, Daniel Vetter , Riley Andrews , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, =?UTF-8?q?Arve=20Hj=C3=B8nnev=C3=A5g?= , Maarten Lankhorst , Gustavo Padovan , John Harrison List-Id: dri-devel@lists.freedesktop.org RnJvbTogR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvLnBhZG92YW5AY29sbGFib3JhLmNvLnVrPgoK VGhlIHN5bmMgZnJhbWV3b3JrIGlzIHJlYWR5IGZvciBtYWlubGluZSBpbmNsdXNpb24uIEhlcmUg d2UgbW92ZSBpdCB0bwpkcml2ZXJzL2RtYS1idWYgYW5kIHRoZSBoZWFkZXIgZmlsZXMgdG8gdGhl IGFwcHJvcGlhdGVkIHBsYWNlcy4KClRoZSBzeW5jIGZyYW1ld29yayBjb250YWluZWQgc29tZSBh YnN0cmFjdGlvbnMgYXJvdW5kIHN0cnVjdCBmZW5jZSBhbmQgdGhvc2UKd2VyZSByZW1vdmVkIGlu IHRoZSBkZS1zdGFnaW5nIHByb2Nlc3MgYW1vbmcgb3RoZXIgY2hhbmdlczoKClVzZXJzcGFjZSB2 aXNpYmxlIGNoYW5nZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICogVGhlIHN3X3N5bmMg ZmlsZSB3YXMgbW92ZWQgZnJvbSAvZGV2L3N3X3N5bmMgdG8gPGRlYnVnZnM+L3N5bmMvc3dfc3lu Yy4gTm8KICBvdGhlciBjaGFuZ2UuCgpLZXJuZWwgQVBJIGNoYW5nZXMKLS0tLS0tLS0tLS0tLS0t LS0tCgogKiBzdHJ1Y3Qgc3luY190aW1lbGluZSBpcyBub3cgc3RydWN0IGZlbmNlX3RpbWVsaW5l CiAqIHN5bmNfdGltZWxpbmVfb3BzIGlzIG5vdyBmZW5jZV90aW1lbGluZV9vcHMgYW5kIHRoZXkg bm93IGNhcnJ5IHN0cnVjdAogZmVuY2UgYXMgcGFyYW1ldGVyIGluc3RlYWQgb2Ygc3RydWN0IHN5 bmNfcHQKICogYSAuY2xlYW51cCgpIGZlbmNlIG9wIHdhcyBhZGRlZCB0byBhbGxvdyBzeW5jX2Zl bmNlIHRvIHJ1biBhIGNsZWFudXAgd2hlbgogdGhlIGZlbmNlX3RpbWVsaW5lIGlzIGRlc3Ryb3ll ZAogKiBhZGRlZCBmZW5jZV9hZGRfdXNlZF9kYXRhKCkgdG8gcGFzcyBhIHByaXZhdGUgcG9pbnQg dG8gc3RydWN0IGZlbmNlLgogVGhpcyBwb2ludGVyIGlzIHNlbnQgYmFjayBvbiB0aGUgLmNsZWFu dXAgb3AuCiAqIFRoZSBzeW5jIHRpbWVsaW5lIGZ1bmN0aW9uIHdlcmUgbW92ZWQgdG8gYmUgZmVu Y2VfdGltZWxpbmUgZnVuY3Rpb25zOgogICAgICAgICAtIHN5bmNfdGltZWxpbmVfY3JlYXRlKCkg ICAgICAgLT4gZmVuY2VfdGltZWxpbmVfY3JlYXRlKCkKICAgICAgICAgLSBzeW5jX3RpbWVsaW5l X2dldCgpICAgICAgICAgIC0+IGZlbmNlX3RpbWVsaW5lX2dldCgpCiAgICAgICAgIC0gc3luY190 aW1lbGluZV9wdXQoKSAgICAgICAgICAtPiBmZW5jZV90aW1lbGluZV9wdXQoKQogICAgICAgICAt IHN5bmNfdGltZWxpbmVfZGVzdHJveSgpICAgICAgLT4gZmVuY2VfdGltZWxpbmVfZGVzdHJveSgp CiAgICAgICAgIC0gc3luY190aW1lbGluZV9zaWduYWwoKSAgICAgICAtPiBmZW5jZV90aW1lbGlu ZV9zaWduYWwoKQoKICAqIHN5bmNfcHRfY3JlYXRlKCkgd2FzIHJlcGxhY2VkIGJlIGZlbmNlX2Ny ZWF0ZV9vbl90aW1lbGluZSgpCgpJbnRlcm5hbCBjaGFuZ2VzCi0tLS0tLS0tLS0tLS0tLS0KCiAq IGZlbmNlX3RpbWVsaW5lX29wcyB3YXMgcmVtb3ZlZCBpbiBmYXZvciBvZiBkaXJlY3QgdXNlIGZl bmNlX29wcwogKiBmZW5jZSBkZWZhdWx0IGZ1bmN0aW9ucyB3ZXJlIGNyZWF0ZWQgZm9yIGZlbmNl X29wcwogKiByZW1vdmVkIHN0cnVjdHMgc3luY19wdCwgc3dfc3luY190aW1lbGluZSBhbmQgc3df c3luY19wdAoKU2lnbmVkLW9mZi1ieTogR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvLnBhZG92YW5A Y29sbGFib3JhLmNvLnVrPgotLS0KIGRyaXZlcnMvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDIgKysKIGRyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgMjIgKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9k bWEtYnVmL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArKwogZHJpdmVy cy97c3RhZ2luZy9hbmRyb2lkID0+IGRtYS1idWZ9L3N3X3N5bmMuYyAgICAgfCAgMyArLS0KIGRy aXZlcnMve3N0YWdpbmcvYW5kcm9pZCA9PiBkbWEtYnVmfS9zeW5jLmMgICAgICAgIHwgIDcgKysr Ky0tLQogZHJpdmVycy97c3RhZ2luZy9hbmRyb2lkID0+IGRtYS1idWZ9L3N5bmNfZGVidWcuYyAg fCAgMiArLQogZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvS2NvbmZpZyAgICAgICAgICAgICAgICAg ICAgfCAxOSAtLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9NYWtl ZmlsZSAgICAgICAgICAgICAgICAgICB8ICAyIC0tCiAuLi4vc3RhZ2luZy9hbmRyb2lkID0+IGlu Y2x1ZGUvbGludXh9L3N3X3N5bmMuaCAgICB8ICA0ICsrLS0KIHtkcml2ZXJzL3N0YWdpbmcvYW5k cm9pZCA9PiBpbmNsdWRlL2xpbnV4fS9zeW5jLmggIHwgIDQgKystLQogLi4uL2FuZHJvaWQvdHJh Y2UgPT4gaW5jbHVkZS90cmFjZS9ldmVudHN9L3N5bmMuaCAgfCAgNSArKy0tLQogLi4uL2FuZHJv aWQvdWFwaSA9PiBpbmNsdWRlL3VhcGkvbGludXh9L3N3X3N5bmMuaCAgfCAgMAogLi4uL2FuZHJv aWQvdWFwaSA9PiBpbmNsdWRlL3VhcGkvbGludXh9L3N5bmMuaCAgICAgfCAgMAogMTMgZmlsZXMg Y2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9kbWEtYnVmL0tjb25maWcKIHJlbmFtZSBkcml2ZXJzL3tzdGFnaW5nL2Fu ZHJvaWQgPT4gZG1hLWJ1Zn0vc3dfc3luYy5jICg5OCUpCiByZW5hbWUgZHJpdmVycy97c3RhZ2lu Zy9hbmRyb2lkID0+IGRtYS1idWZ9L3N5bmMuYyAoOTklKQogcmVuYW1lIGRyaXZlcnMve3N0YWdp bmcvYW5kcm9pZCA9PiBkbWEtYnVmfS9zeW5jX2RlYnVnLmMgKDk5JSkKIHJlbmFtZSB7ZHJpdmVy cy9zdGFnaW5nL2FuZHJvaWQgPT4gaW5jbHVkZS9saW51eH0vc3dfc3luYy5oICg5NSUpCiByZW5h bWUge2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkID0+IGluY2x1ZGUvbGludXh9L3N5bmMuaCAoOTkl KQogcmVuYW1lIHtkcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC90cmFjZSA9PiBpbmNsdWRlL3RyYWNl L2V2ZW50c30vc3luYy5oICg5MiUpCiByZW5hbWUge2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL3Vh cGkgPT4gaW5jbHVkZS91YXBpL2xpbnV4fS9zd19zeW5jLmggKDEwMCUpCiByZW5hbWUge2RyaXZl cnMvc3RhZ2luZy9hbmRyb2lkL3VhcGkgPT4gaW5jbHVkZS91YXBpL2xpbnV4fS9zeW5jLmggKDEw MCUpCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9LY29uZmlnIGIvZHJpdmVycy9LY29uZmlnCmluZGV4 IGQyYWMzMzkuLjQzMGY3NjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvS2NvbmZpZworKysgYi9kcml2 ZXJzL0tjb25maWcKQEAgLTExNCw2ICsxMTQsOCBAQCBzb3VyY2UgImRyaXZlcnMvcnRjL0tjb25m aWciCiAKIHNvdXJjZSAiZHJpdmVycy9kbWEvS2NvbmZpZyIKIAorc291cmNlICJkcml2ZXJzL2Rt YS1idWYvS2NvbmZpZyIKKwogc291cmNlICJkcml2ZXJzL2RjYS9LY29uZmlnIgogCiBzb3VyY2Ug ImRyaXZlcnMvYXV4ZGlzcGxheS9LY29uZmlnIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVm L0tjb25maWcgYi9kcml2ZXJzL2RtYS1idWYvS2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi40MTY4Zjg5Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9kbWEtYnVm L0tjb25maWcKQEAgLTAsMCArMSwyMiBAQAorbWVudSAiRE1BQlVGIG9wdGlvbnMiCisKK2NvbmZp ZyBTWU5DCisJYm9vbCAiU3luY2hyb25pemF0aW9uIGZyYW1ld29yayIKKwlkZWZhdWx0IG4KKwlz ZWxlY3QgQU5PTl9JTk9ERVMKKwlzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVIKKwktLS1oZWxwLS0t CisJICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBmcmFtZXdvcmsgZm9yIHN5bmNocm9uaXphdGlv biBiZXR3ZWVuIG11bHRpcGxlCisJICBkcml2ZXJzLiAgU3luYyBpbXBsZW1lbnRhdGlvbnMgY2Fu IHRha2UgYWR2YW50YWdlIG9mIGhhcmR3YXJlCisJICBzeW5jaHJvbml6YXRpb24gYnVpbHQgaW50 byBkZXZpY2VzIGxpa2UgR1BVcy4KKworY29uZmlnIFNXX1NZTkMKKwlib29sICJTb2Z0d2FyZSBz eW5jaHJvbml6YXRpb24gb2JqZWN0cyIKKwlkZWZhdWx0IG4KKwlkZXBlbmRzIG9uIFNZTkMKKwkt LS1oZWxwLS0tCisJICBBIHN5bmMgb2JqZWN0IGRyaXZlciB0aGF0IHVzZXMgYSAzMmJpdCBjb3Vu dGVyIHRvIGNvb3JkaW5hdGUKKwkgIHN5bmNocm9uaXphdGlvbi4gIFVzZWZ1bCB3aGVuIHRoZXJl IGlzIG5vIGhhcmR3YXJlIHByaW1pdGl2ZSBiYWNraW5nCisJICB0aGUgc3luY2hyb25pemF0aW9u LgorCitlbmRtZW51CmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvTWFrZWZpbGUgYi9kcml2 ZXJzL2RtYS1idWYvTWFrZWZpbGUKaW5kZXggZmIwMzY5Ni4uYjg3MDkyMyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9NYWtlZmlsZQpA QCAtMSArMSwzIEBACiBvYmoteSA6PSBkbWEtYnVmLm8gZmVuY2UubyBmZW5jZV9kZWJ1Zy5vIHJl c2VydmF0aW9uLm8gc2Vxbm8tZmVuY2Uubworb2JqLSQoQ09ORklHX1NZTkMpCQkJKz0gc3luYy5v IHN5bmNfZGVidWcubworb2JqLSQoQ09ORklHX1NXX1NZTkMpCQkJKz0gc3dfc3luYy5vCmRpZmYg LS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9zd19zeW5jLmMgYi9kcml2ZXJzL2RtYS1i dWYvc3dfc3luYy5jCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIGRyaXZlcnMvc3Rh Z2luZy9hbmRyb2lkL3N3X3N5bmMuYwpyZW5hbWUgdG8gZHJpdmVycy9kbWEtYnVmL3N3X3N5bmMu YwppbmRleCA4YzgzYmFkLi4zMmQwODAwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYW5k cm9pZC9zd19zeW5jLmMKKysrIGIvZHJpdmVycy9kbWEtYnVmL3N3X3N5bmMuYwpAQCAtMjIsOCAr MjIsNyBAQAogI2luY2x1ZGUgPGxpbnV4L21pc2NkZXZpY2UuaD4KICNpbmNsdWRlIDxsaW51eC9z eXNjYWxscy5oPgogI2luY2x1ZGUgPGxpbnV4L3VhY2Nlc3MuaD4KLQotI2luY2x1ZGUgInN3X3N5 bmMuaCIKKyNpbmNsdWRlIDxsaW51eC9zd19zeW5jLmg+CiAKIHN0YXRpYyB2b2lkIHN3X3N5bmNf Y2xlYW51cChzdHJ1Y3QgZmVuY2UgKmZlbmNlLCB2b2lkICp1c2VyX2RhdGEpCiB7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9zeW5jLmMgYi9kcml2ZXJzL2RtYS1idWYvc3lu Yy5jCnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIGRyaXZlcnMvc3RhZ2luZy9hbmRy b2lkL3N5bmMuYwpyZW5hbWUgdG8gZHJpdmVycy9kbWEtYnVmL3N5bmMuYwppbmRleCBhYWZlY2Y0 Li4yNDhhYTQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9zeW5jLmMKKysr IGIvZHJpdmVycy9kbWEtYnVmL3N5bmMuYwpAQCAtMjYsMTAgKzI2LDEwIEBACiAjaW5jbHVkZSA8 bGludXgvdWFjY2Vzcy5oPgogI2luY2x1ZGUgPGxpbnV4L2Fub25faW5vZGVzLmg+CiAKLSNpbmNs dWRlICJzeW5jLmgiCisjaW5jbHVkZSA8bGludXgvc3luYy5oPgogCiAjZGVmaW5lIENSRUFURV9U UkFDRV9QT0lOVFMKLSNpbmNsdWRlICJ0cmFjZS9zeW5jLmgiCisjaW5jbHVkZSA8dHJhY2UvZXZl bnRzL3N5bmMuaD4KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgc3luY19m ZW5jZV9mb3BzOwogCkBAIC0yODAsNyArMjgwLDcgQEAgaW50IHN5bmNfZmVuY2Vfd2FpdChzdHJ1 Y3Qgc3luY19mZW5jZSAqc3luY19mZW5jZSwgbG9uZyB0aW1lb3V0KQogCiAJdHJhY2Vfc3luY193 YWl0KHN5bmNfZmVuY2UsIDEpOwogCWZvciAoaSA9IDA7IGkgPCBzeW5jX2ZlbmNlLT5udW1fZmVu Y2VzOyArK2kpCi0JCXRyYWNlX2ZlbmNlKHN5bmNfZmVuY2UtPmNic1tpXS5mZW5jZSk7CisJCXRy YWNlX3N5bmNfZmVuY2Uoc3luY19mZW5jZS0+Y2JzW2ldLmZlbmNlKTsKIAlyZXQgPSB3YWl0X2V2 ZW50X2ludGVycnVwdGlibGVfdGltZW91dChzeW5jX2ZlbmNlLT53cSwKIAkJCQkJICAgICAgIGF0 b21pY19yZWFkKCZzeW5jX2ZlbmNlLT5zdGF0dXMpIDw9IDAsCiAJCQkJCSAgICAgICB0aW1lb3V0 KTsKQEAgLTM5NSw2ICszOTUsNyBAQCBzdGF0aWMgbG9uZyBzeW5jX2ZlbmNlX2lvY3RsX21lcmdl KHN0cnVjdCBzeW5jX2ZlbmNlICpzeW5jX2ZlbmNlLAogCiAJc3luY19mZW5jZV9pbnN0YWxsKGZl bmNlMywgZmQpOwogCXN5bmNfZmVuY2VfcHV0KGZlbmNlMik7CisKIAlyZXR1cm4gMDsKIAogZXJy X3B1dF9mZW5jZTM6CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9zeW5jX2Rl YnVnLmMgYi9kcml2ZXJzL2RtYS1idWYvc3luY19kZWJ1Zy5jCnNpbWlsYXJpdHkgaW5kZXggOTkl CnJlbmFtZSBmcm9tIGRyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL3N5bmNfZGVidWcuYwpyZW5hbWUg dG8gZHJpdmVycy9kbWEtYnVmL3N5bmNfZGVidWcuYwppbmRleCA4ZTJjYTU3Li4yOTQ3ODZiIDEw MDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9zeW5jX2RlYnVnLmMKKysrIGIvZHJp dmVycy9kbWEtYnVmL3N5bmNfZGVidWcuYwpAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgPGxp bnV4L3VhY2Nlc3MuaD4KICNpbmNsdWRlIDxsaW51eC9hbm9uX2lub2Rlcy5oPgogI2luY2x1ZGUg PGxpbnV4L3RpbWU2NC5oPgotI2luY2x1ZGUgInN3X3N5bmMuaCIKKyNpbmNsdWRlIDxsaW51eC9z d19zeW5jLmg+CiAKICNpZmRlZiBDT05GSUdfREVCVUdfRlMKIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9zdGFnaW5nL2FuZHJvaWQvS2NvbmZpZyBiL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL0tjb25m aWcKaW5kZXggYmQ5MGQyMC4uNGIxOGZlZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2Fu ZHJvaWQvS2NvbmZpZworKysgYi9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9LY29uZmlnCkBAIC0z OCwyNSArMzgsNiBAQCBjb25maWcgQU5EUk9JRF9MT1dfTUVNT1JZX0tJTExFUgogCSAgc2NyaXB0 cyAoL2luaXQucmMpLCBhbmQgaXQgZGVmaW5lcyBwcmlvcml0eSB2YWx1ZXMgd2l0aCBtaW5pbXVt IGZyZWUgbWVtb3J5IHNpemUKIAkgIGZvciBlYWNoIHByaW9yaXR5LgogCi1jb25maWcgU1lOQwot CWJvb2wgIlN5bmNocm9uaXphdGlvbiBmcmFtZXdvcmsiCi0JZGVmYXVsdCBuCi0Jc2VsZWN0IEFO T05fSU5PREVTCi0Jc2VsZWN0IERNQV9TSEFSRURfQlVGRkVSCi0JLS0taGVscC0tLQotCSAgVGhp cyBvcHRpb24gZW5hYmxlcyB0aGUgZnJhbWV3b3JrIGZvciBzeW5jaHJvbml6YXRpb24gYmV0d2Vl biBtdWx0aXBsZQotCSAgZHJpdmVycy4gIFN5bmMgaW1wbGVtZW50YXRpb25zIGNhbiB0YWtlIGFk dmFudGFnZSBvZiBoYXJkd2FyZQotCSAgc3luY2hyb25pemF0aW9uIGJ1aWx0IGludG8gZGV2aWNl cyBsaWtlIEdQVXMuCi0KLWNvbmZpZyBTV19TWU5DCi0JYm9vbCAiU29mdHdhcmUgc3luY2hyb25p emF0aW9uIG9iamVjdHMiCi0JZGVmYXVsdCBuCi0JZGVwZW5kcyBvbiBTWU5DCi0JLS0taGVscC0t LQotCSAgQSBzeW5jIG9iamVjdCBkcml2ZXIgdGhhdCB1c2VzIGEgMzJiaXQgY291bnRlciB0byBj b29yZGluYXRlCi0JICBzeW5jaHJvbml6YXRpb24uICBVc2VmdWwgd2hlbiB0aGVyZSBpcyBubyBo YXJkd2FyZSBwcmltaXRpdmUgYmFja2luZwotCSAgdGhlIHN5bmNocm9uaXphdGlvbi4KLQogc291 cmNlICJkcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9pb24vS2NvbmZpZyIKIAogZW5kaWYgIyBpZiBB TkRST0lECmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9NYWtlZmlsZSBiL2Ry aXZlcnMvc3RhZ2luZy9hbmRyb2lkL01ha2VmaWxlCmluZGV4IGM3YjZjOTkuLjM1NWFkMGUgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL01ha2VmaWxlCisrKyBiL2RyaXZlcnMv c3RhZ2luZy9hbmRyb2lkL01ha2VmaWxlCkBAIC02LDUgKzYsMyBAQCBvYmotJChDT05GSUdfQVNI TUVNKQkJCSs9IGFzaG1lbS5vCiBvYmotJChDT05GSUdfQU5EUk9JRF9USU1FRF9PVVRQVVQpCSs9 IHRpbWVkX291dHB1dC5vCiBvYmotJChDT05GSUdfQU5EUk9JRF9USU1FRF9HUElPKQkrPSB0aW1l ZF9ncGlvLm8KIG9iai0kKENPTkZJR19BTkRST0lEX0xPV19NRU1PUllfS0lMTEVSKQkrPSBsb3dt ZW1vcnlraWxsZXIubwotb2JqLSQoQ09ORklHX1NZTkMpCQkJKz0gc3luYy5vIHN5bmNfZGVidWcu bwotb2JqLSQoQ09ORklHX1NXX1NZTkMpCQkJKz0gc3dfc3luYy5vCmRpZmYgLS1naXQgYS9kcml2 ZXJzL3N0YWdpbmcvYW5kcm9pZC9zd19zeW5jLmggYi9pbmNsdWRlL2xpbnV4L3N3X3N5bmMuaApz aW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBkcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9z d19zeW5jLmgKcmVuYW1lIHRvIGluY2x1ZGUvbGludXgvc3dfc3luYy5oCmluZGV4IGY5MTI4ODgu LjY4Y2IzZDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL3N3X3N5bmMuaAor KysgYi9pbmNsdWRlL2xpbnV4L3N3X3N5bmMuaApAQCAtMTksOCArMTksOCBAQAogCiAjaW5jbHVk ZSA8bGludXgvdHlwZXMuaD4KICNpbmNsdWRlIDxsaW51eC9rY29uZmlnLmg+Ci0jaW5jbHVkZSAi c3luYy5oIgotI2luY2x1ZGUgInVhcGkvc3dfc3luYy5oIgorI2luY2x1ZGUgPGxpbnV4L3N5bmMu aD4KKyNpbmNsdWRlIDx1YXBpL2xpbnV4L3N3X3N5bmMuaD4KIAogI2lmIElTX0VOQUJMRUQoQ09O RklHX1NXX1NZTkMpCiBzdHJ1Y3QgZmVuY2VfdGltZWxpbmUgKnN3X3N5bmNfdGltZWxpbmVfY3Jl YXRlKGNvbnN0IGNoYXIgKm5hbWUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2FuZHJv aWQvc3luYy5oIGIvaW5jbHVkZS9saW51eC9zeW5jLmgKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVu YW1lIGZyb20gZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvc3luYy5oCnJlbmFtZSB0byBpbmNsdWRl L2xpbnV4L3N5bmMuaAppbmRleCBkNjBkOWMyLi5lY2VmZWQ1IDEwMDY0NAotLS0gYS9kcml2ZXJz L3N0YWdpbmcvYW5kcm9pZC9zeW5jLmgKKysrIGIvaW5jbHVkZS9saW51eC9zeW5jLmgKQEAgLTIw LDggKzIwLDggQEAKICNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPgogI2luY2x1ZGUgPGxpbnV4 L3dhaXQuaD4KICNpbmNsdWRlIDxsaW51eC9mZW5jZS5oPgotCi0jaW5jbHVkZSAidWFwaS9zeW5j LmgiCisjaW5jbHVkZSA8bGludXgvc3luYy5oPgorI2luY2x1ZGUgPHVhcGkvbGludXgvc3luYy5o PgogCiBzdHJ1Y3Qgc3luY19mZW5jZTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2Fu ZHJvaWQvdHJhY2Uvc3luYy5oIGIvaW5jbHVkZS90cmFjZS9ldmVudHMvc3luYy5oCnNpbWlsYXJp dHkgaW5kZXggOTIlCnJlbmFtZSBmcm9tIGRyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL3RyYWNlL3N5 bmMuaApyZW5hbWUgdG8gaW5jbHVkZS90cmFjZS9ldmVudHMvc3luYy5oCmluZGV4IDRmNjg1MTUu LmZhMTk5NjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL3RyYWNlL3N5bmMu aAorKysgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9zeW5jLmgKQEAgLTEsMTEgKzEsMTAgQEAKICN1 bmRlZiBUUkFDRV9TWVNURU0KLSNkZWZpbmUgVFJBQ0VfSU5DTFVERV9QQVRIIC4uLy4uL2RyaXZl cnMvc3RhZ2luZy9hbmRyb2lkL3RyYWNlCiAjZGVmaW5lIFRSQUNFX1NZU1RFTSBzeW5jCiAKICNp ZiAhZGVmaW5lZChfVFJBQ0VfU1lOQ19IKSB8fCBkZWZpbmVkKFRSQUNFX0hFQURFUl9NVUxUSV9S RUFEKQogI2RlZmluZSBfVFJBQ0VfU1lOQ19ICiAKLSNpbmNsdWRlICIuLi9zeW5jLmgiCisjaW5j bHVkZSA8bGludXgvc3luYy5oPgogI2luY2x1ZGUgPGxpbnV4L3RyYWNlcG9pbnQuaD4KIAogVFJB Q0VfRVZFTlQoc3luY193YWl0LApAQCAtMjksNyArMjgsNyBAQCBUUkFDRV9FVkVOVChzeW5jX3dh aXQsCiAJCQlfX2dldF9zdHIobmFtZSksIF9fZW50cnktPnN0YXR1cykKICk7CiAKLVRSQUNFX0VW RU5UKGZlbmNlLAorVFJBQ0VfRVZFTlQoc3luY19mZW5jZSwKIAlUUF9QUk9UTyhzdHJ1Y3QgZmVu Y2UgKmZlbmNlKSwKIAogCVRQX0FSR1MoZmVuY2UpLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFn aW5nL2FuZHJvaWQvdWFwaS9zd19zeW5jLmggYi9pbmNsdWRlL3VhcGkvbGludXgvc3dfc3luYy5o CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkcml2ZXJzL3N0YWdpbmcvYW5kcm9p ZC91YXBpL3N3X3N5bmMuaApyZW5hbWUgdG8gaW5jbHVkZS91YXBpL2xpbnV4L3N3X3N5bmMuaApk aWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvdWFwaS9zeW5jLmggYi9pbmNsdWRl L3VhcGkvbGludXgvc3luYy5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBkcml2 ZXJzL3N0YWdpbmcvYW5kcm9pZC91YXBpL3N5bmMuaApyZW5hbWUgdG8gaW5jbHVkZS91YXBpL2xp bnV4L3N5bmMuaAotLSAKMi41LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCg==