From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754862AbcAOO4o (ORCPT ); Fri, 15 Jan 2016 09:56:44 -0500 Received: from mail-yk0-f179.google.com ([209.85.160.179]:35193 "EHLO mail-yk0-f179.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754798AbcAOO4m (ORCPT ); Fri, 15 Jan 2016 09:56:42 -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 15/29] dma-buf/fence: create fence_default_get_driver_name() Date: Fri, 15 Jan 2016 12:55:25 -0200 Message-Id: <1452869739-3304-16-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 Move driver name handling to fence and create a default function for it. Returns the driver which the fence belongs. Signed-off-by: Gustavo Padovan --- drivers/dma-buf/fence.c | 19 ++++++++++++++++++- drivers/staging/android/sw_sync.c | 3 +-- drivers/staging/android/sync.c | 9 +-------- drivers/staging/android/sync_debug.c | 2 +- include/linux/fence.h | 8 ++++---- 5 files changed, 25 insertions(+), 16 deletions(-) diff --git a/drivers/dma-buf/fence.c b/drivers/dma-buf/fence.c index e17397d..85b5074 100644 --- a/drivers/dma-buf/fence.c +++ b/drivers/dma-buf/fence.c @@ -56,6 +56,7 @@ EXPORT_SYMBOL(fence_context_alloc); * @num: [in] amount of contexts to allocate * @ops: [in] timeline ops of the caller * @size: [in] size to allocate struct fence_timeline + * @drv_name: [in] name of the driver * @name: [in] name of the timeline * * This function will return the new fence_timeline or NULL in case of error. @@ -64,7 +65,8 @@ EXPORT_SYMBOL(fence_context_alloc); */ struct fence_timeline *fence_timeline_create(unsigned num, struct fence_timeline_ops *ops, - int size, const char *name) + int size, const char *drv_name, + const char *name) { struct fence_timeline *timeline; @@ -79,6 +81,7 @@ struct fence_timeline *fence_timeline_create(unsigned num, timeline->ops = ops; timeline->context = fence_context_alloc(1); strlcpy(timeline->name, name, sizeof(timeline->name)); + strlcpy(timeline->drv_name, drv_name, sizeof(timeline->drv_name)); INIT_LIST_HEAD(&timeline->child_list_head); INIT_LIST_HEAD(&timeline->active_list_head); @@ -439,6 +442,20 @@ fence_remove_callback(struct fence *fence, struct fence_cb *cb) EXPORT_SYMBOL(fence_remove_callback); /** + * fence_default_get_driver_name - default .get_driver_name op + * @fence: [in] the fence to get driver name + * + * This function returns the name of the driver that the fence belongs. + */ +const char *fence_default_get_driver_name(struct fence *fence) +{ + struct fence_timeline *parent = fence_parent(fence); + + return parent->drv_name; +} +EXPORT_SYMBOL(fence_default_get_driver_name); + +/** * fence_default_enable_signaling - default op for .enable_signaling * @fence: [in] the fence to enable signaling * diff --git a/drivers/staging/android/sw_sync.c b/drivers/staging/android/sw_sync.c index 9d6a5bd..9720267 100644 --- a/drivers/staging/android/sw_sync.c +++ b/drivers/staging/android/sw_sync.c @@ -77,7 +77,6 @@ static void sw_sync_fence_value_str(struct fence *fence, } static struct fence_timeline_ops sw_sync_timeline_ops = { - .driver_name = "sw_sync", .has_signaled = sw_sync_fence_has_signaled, .fill_driver_data = sw_sync_fill_driver_data, .timeline_value_str = sw_sync_timeline_value_str, @@ -89,7 +88,7 @@ struct sw_sync_timeline *sw_sync_timeline_create(const char *name) struct sw_sync_timeline *obj = (struct sw_sync_timeline *) fence_timeline_create(1, &sw_sync_timeline_ops, sizeof(struct sw_sync_timeline), - name); + "sw_sync", name); return obj; } diff --git a/drivers/staging/android/sync.c b/drivers/staging/android/sync.c index 6cddec9..c3386a6 100644 --- a/drivers/staging/android/sync.c +++ b/drivers/staging/android/sync.c @@ -321,13 +321,6 @@ int sync_fence_wait(struct sync_fence *sync_fence, long timeout) } EXPORT_SYMBOL(sync_fence_wait); -static const char *sync_fence_get_driver_name(struct fence *fence) -{ - struct fence_timeline *parent = fence_parent(fence); - - return parent->ops->driver_name; -} - static const char *sync_fence_get_timeline_name(struct fence *fence) { struct fence_timeline *parent = fence_parent(fence); @@ -383,7 +376,7 @@ static void sync_fence_timeline_value_str(struct fence *fence, } static const struct fence_ops sync_fence_ops = { - .get_driver_name = sync_fence_get_driver_name, + .get_driver_name = fence_default_get_driver_name, .get_timeline_name = sync_fence_get_timeline_name, .enable_signaling = fence_default_enable_signaling, .signaled = sync_fence_signaled, diff --git a/drivers/staging/android/sync_debug.c b/drivers/staging/android/sync_debug.c index b8602d2..db618ca 100644 --- a/drivers/staging/android/sync_debug.c +++ b/drivers/staging/android/sync_debug.c @@ -133,7 +133,7 @@ static void sync_print_obj(struct seq_file *s, struct fence_timeline *obj) struct list_head *pos; unsigned long flags; - seq_printf(s, "%s %s", obj->name, obj->ops->driver_name); + seq_printf(s, "%s %s", obj->name, obj->drv_name); if (obj->ops->timeline_value_str) { char value[64]; diff --git a/include/linux/fence.h b/include/linux/fence.h index 0c97014..f355c28a 100644 --- a/include/linux/fence.h +++ b/include/linux/fence.h @@ -36,7 +36,6 @@ struct fence_ops; struct fence_cb; /** * struct fence_timeline_ops - fence context implementation ops - * @driver_name: name of the implementation * @has_signaled: returns: * 1 if pt has signaled * 0 if pt has not signaled @@ -49,8 +48,6 @@ struct fence_cb; * @pt_value_str: fill str with the value of the sync_pt */ struct fence_timeline_ops { - const char *driver_name; - /* required */ int (*has_signaled)(struct fence *fence); @@ -80,6 +77,7 @@ struct fence_timeline_ops { struct fence_timeline { struct kref kref; char name[32]; + char drv_name[32]; const struct fence_timeline_ops *ops; bool destroyed; int value; @@ -94,7 +92,8 @@ struct fence_timeline { struct fence_timeline *fence_timeline_create(unsigned num, struct fence_timeline_ops *ops, - int size, const char *name); + int size, const char *drv_name, + const char *name); void fence_timeline_get(struct fence_timeline *timeline); void fence_timeline_put(struct fence_timeline *timeline); void fence_timeline_destroy(struct fence_timeline *timeline); @@ -295,6 +294,7 @@ static inline void fence_put(struct fence *fence) int fence_signal(struct fence *fence); int fence_signal_locked(struct fence *fence); +const char *fence_default_get_driver_name(struct fence *fence); bool fence_default_enable_signaling(struct fence *fence); signed long fence_default_wait(struct fence *fence, bool intr, signed long timeout); void fence_default_release(struct fence *fence); -- 2.5.0 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gustavo Padovan Subject: [RFC 15/29] dma-buf/fence: create fence_default_get_driver_name() Date: Fri, 15 Jan 2016 12:55:25 -0200 Message-ID: <1452869739-3304-16-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-f178.google.com (mail-yk0-f178.google.com [209.85.160.178]) by gabe.freedesktop.org (Postfix) with ESMTPS id 25C537A0F3 for ; Fri, 15 Jan 2016 06:56:42 -0800 (PST) Received: by mail-yk0-f178.google.com with SMTP id a85so467183118ykb.1 for ; Fri, 15 Jan 2016 06:56:42 -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 TW92ZSBkcml2ZXIgbmFtZSBoYW5kbGluZyB0byBmZW5jZSBhbmQgY3JlYXRlIGEgZGVmYXVsdCBm dW5jdGlvbiBmb3IgaXQuClJldHVybnMgdGhlIGRyaXZlciB3aGljaCB0aGUgZmVuY2UgYmVsb25n cy4KClNpZ25lZC1vZmYtYnk6IEd1c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2by5wYWRvdmFuQGNvbGxh Ym9yYS5jby51az4KLS0tCiBkcml2ZXJzL2RtYS1idWYvZmVuY2UuYyAgICAgICAgICAgICAgfCAx OSArKysrKysrKysrKysrKysrKystCiBkcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9zd19zeW5jLmMg ICAgfCAgMyArLS0KIGRyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL3N5bmMuYyAgICAgICB8ICA5ICst LS0tLS0tLQogZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvc3luY19kZWJ1Zy5jIHwgIDIgKy0KIGlu Y2x1ZGUvbGludXgvZmVuY2UuaCAgICAgICAgICAgICAgICB8ICA4ICsrKystLS0tCiA1IGZpbGVz IGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZG1hLWJ1Zi9mZW5jZS5jIGIvZHJpdmVycy9kbWEtYnVmL2ZlbmNlLmMKaW5kZXgg ZTE3Mzk3ZC4uODViNTA3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEtYnVmL2ZlbmNlLmMKKysr IGIvZHJpdmVycy9kbWEtYnVmL2ZlbmNlLmMKQEAgLTU2LDYgKzU2LDcgQEAgRVhQT1JUX1NZTUJP TChmZW5jZV9jb250ZXh0X2FsbG9jKTsKICAqIEBudW06CVtpbl0JYW1vdW50IG9mIGNvbnRleHRz IHRvIGFsbG9jYXRlCiAgKiBAb3BzOglbaW5dCXRpbWVsaW5lIG9wcyBvZiB0aGUgY2FsbGVyCiAg KiBAc2l6ZToJW2luXQlzaXplIHRvIGFsbG9jYXRlIHN0cnVjdCBmZW5jZV90aW1lbGluZQorICog QGRydl9uYW1lOglbaW5dCW5hbWUgb2YgdGhlIGRyaXZlcgogICogQG5hbWU6CVtpbl0JbmFtZSBv ZiB0aGUgdGltZWxpbmUKICAqCiAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSBuZXcg ZmVuY2VfdGltZWxpbmUgb3IgTlVMTCBpbiBjYXNlIG9mIGVycm9yLgpAQCAtNjQsNyArNjUsOCBA QCBFWFBPUlRfU1lNQk9MKGZlbmNlX2NvbnRleHRfYWxsb2MpOwogICovCiBzdHJ1Y3QgZmVuY2Vf dGltZWxpbmUgKmZlbmNlX3RpbWVsaW5lX2NyZWF0ZSh1bnNpZ25lZCBudW0sCiAJCQkJCSAgICAg c3RydWN0IGZlbmNlX3RpbWVsaW5lX29wcyAqb3BzLAotCQkJCQkgICAgIGludCBzaXplLCBjb25z dCBjaGFyICpuYW1lKQorCQkJCQkgICAgIGludCBzaXplLCBjb25zdCBjaGFyICpkcnZfbmFtZSwK KwkJCQkJICAgICBjb25zdCBjaGFyICpuYW1lKQogewogCXN0cnVjdCBmZW5jZV90aW1lbGluZSAq dGltZWxpbmU7CiAKQEAgLTc5LDYgKzgxLDcgQEAgc3RydWN0IGZlbmNlX3RpbWVsaW5lICpmZW5j ZV90aW1lbGluZV9jcmVhdGUodW5zaWduZWQgbnVtLAogCXRpbWVsaW5lLT5vcHMgPSBvcHM7CiAJ dGltZWxpbmUtPmNvbnRleHQgPSBmZW5jZV9jb250ZXh0X2FsbG9jKDEpOwogCXN0cmxjcHkodGlt ZWxpbmUtPm5hbWUsIG5hbWUsIHNpemVvZih0aW1lbGluZS0+bmFtZSkpOworCXN0cmxjcHkodGlt ZWxpbmUtPmRydl9uYW1lLCBkcnZfbmFtZSwgc2l6ZW9mKHRpbWVsaW5lLT5kcnZfbmFtZSkpOwog CiAJSU5JVF9MSVNUX0hFQUQoJnRpbWVsaW5lLT5jaGlsZF9saXN0X2hlYWQpOwogCUlOSVRfTElT VF9IRUFEKCZ0aW1lbGluZS0+YWN0aXZlX2xpc3RfaGVhZCk7CkBAIC00MzksNiArNDQyLDIwIEBA IGZlbmNlX3JlbW92ZV9jYWxsYmFjayhzdHJ1Y3QgZmVuY2UgKmZlbmNlLCBzdHJ1Y3QgZmVuY2Vf Y2IgKmNiKQogRVhQT1JUX1NZTUJPTChmZW5jZV9yZW1vdmVfY2FsbGJhY2spOwogCiAvKioKKyAq IGZlbmNlX2RlZmF1bHRfZ2V0X2RyaXZlcl9uYW1lIC0gZGVmYXVsdCAuZ2V0X2RyaXZlcl9uYW1l IG9wCisgKiBAZmVuY2U6CVtpbl0JdGhlIGZlbmNlIHRvIGdldCBkcml2ZXIgbmFtZQorICoKKyAq IFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgZHJpdmVyIHRoYXQgdGhlIGZl bmNlIGJlbG9uZ3MuCisgKi8KK2NvbnN0IGNoYXIgKmZlbmNlX2RlZmF1bHRfZ2V0X2RyaXZlcl9u YW1lKHN0cnVjdCBmZW5jZSAqZmVuY2UpCit7CisJc3RydWN0IGZlbmNlX3RpbWVsaW5lICpwYXJl bnQgPSBmZW5jZV9wYXJlbnQoZmVuY2UpOworCisJcmV0dXJuIHBhcmVudC0+ZHJ2X25hbWU7Cit9 CitFWFBPUlRfU1lNQk9MKGZlbmNlX2RlZmF1bHRfZ2V0X2RyaXZlcl9uYW1lKTsKKworLyoqCiAg KiBmZW5jZV9kZWZhdWx0X2VuYWJsZV9zaWduYWxpbmcgLSBkZWZhdWx0IG9wIGZvciAuZW5hYmxl X3NpZ25hbGluZwogICogQGZlbmNlOglbaW5dCXRoZSBmZW5jZSB0byBlbmFibGUgc2lnbmFsaW5n CiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvc3dfc3luYy5jIGIvZHJp dmVycy9zdGFnaW5nL2FuZHJvaWQvc3dfc3luYy5jCmluZGV4IDlkNmE1YmQuLjk3MjAyNjcgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL3N3X3N5bmMuYworKysgYi9kcml2ZXJz L3N0YWdpbmcvYW5kcm9pZC9zd19zeW5jLmMKQEAgLTc3LDcgKzc3LDYgQEAgc3RhdGljIHZvaWQg c3dfc3luY19mZW5jZV92YWx1ZV9zdHIoc3RydWN0IGZlbmNlICpmZW5jZSwKIH0KIAogc3RhdGlj IHN0cnVjdCBmZW5jZV90aW1lbGluZV9vcHMgc3dfc3luY190aW1lbGluZV9vcHMgPSB7Ci0JLmRy aXZlcl9uYW1lID0gInN3X3N5bmMiLAogCS5oYXNfc2lnbmFsZWQgPSBzd19zeW5jX2ZlbmNlX2hh c19zaWduYWxlZCwKIAkuZmlsbF9kcml2ZXJfZGF0YSA9IHN3X3N5bmNfZmlsbF9kcml2ZXJfZGF0 YSwKIAkudGltZWxpbmVfdmFsdWVfc3RyID0gc3dfc3luY190aW1lbGluZV92YWx1ZV9zdHIsCkBA IC04OSw3ICs4OCw3IEBAIHN0cnVjdCBzd19zeW5jX3RpbWVsaW5lICpzd19zeW5jX3RpbWVsaW5l X2NyZWF0ZShjb25zdCBjaGFyICpuYW1lKQogCXN0cnVjdCBzd19zeW5jX3RpbWVsaW5lICpvYmog PSAoc3RydWN0IHN3X3N5bmNfdGltZWxpbmUgKikKIAkJZmVuY2VfdGltZWxpbmVfY3JlYXRlKDEs ICZzd19zeW5jX3RpbWVsaW5lX29wcywKIAkJCQkgICAgIHNpemVvZihzdHJ1Y3Qgc3dfc3luY190 aW1lbGluZSksCi0JCQkJICAgICBuYW1lKTsKKwkJCQkgICAgICJzd19zeW5jIiwgbmFtZSk7CiAK IAlyZXR1cm4gb2JqOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvc3lu Yy5jIGIvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvc3luYy5jCmluZGV4IDZjZGRlYzkuLmMzMzg2 YTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL3N5bmMuYworKysgYi9kcml2 ZXJzL3N0YWdpbmcvYW5kcm9pZC9zeW5jLmMKQEAgLTMyMSwxMyArMzIxLDYgQEAgaW50IHN5bmNf ZmVuY2Vfd2FpdChzdHJ1Y3Qgc3luY19mZW5jZSAqc3luY19mZW5jZSwgbG9uZyB0aW1lb3V0KQog fQogRVhQT1JUX1NZTUJPTChzeW5jX2ZlbmNlX3dhaXQpOwogCi1zdGF0aWMgY29uc3QgY2hhciAq c3luY19mZW5jZV9nZXRfZHJpdmVyX25hbWUoc3RydWN0IGZlbmNlICpmZW5jZSkKLXsKLQlzdHJ1 Y3QgZmVuY2VfdGltZWxpbmUgKnBhcmVudCA9IGZlbmNlX3BhcmVudChmZW5jZSk7Ci0KLQlyZXR1 cm4gcGFyZW50LT5vcHMtPmRyaXZlcl9uYW1lOwotfQotCiBzdGF0aWMgY29uc3QgY2hhciAqc3lu Y19mZW5jZV9nZXRfdGltZWxpbmVfbmFtZShzdHJ1Y3QgZmVuY2UgKmZlbmNlKQogewogCXN0cnVj dCBmZW5jZV90aW1lbGluZSAqcGFyZW50ID0gZmVuY2VfcGFyZW50KGZlbmNlKTsKQEAgLTM4Myw3 ICszNzYsNyBAQCBzdGF0aWMgdm9pZCBzeW5jX2ZlbmNlX3RpbWVsaW5lX3ZhbHVlX3N0cihzdHJ1 Y3QgZmVuY2UgKmZlbmNlLAogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGZlbmNlX29wcyBzeW5j X2ZlbmNlX29wcyA9IHsKLQkuZ2V0X2RyaXZlcl9uYW1lID0gc3luY19mZW5jZV9nZXRfZHJpdmVy X25hbWUsCisJLmdldF9kcml2ZXJfbmFtZSA9IGZlbmNlX2RlZmF1bHRfZ2V0X2RyaXZlcl9uYW1l LAogCS5nZXRfdGltZWxpbmVfbmFtZSA9IHN5bmNfZmVuY2VfZ2V0X3RpbWVsaW5lX25hbWUsCiAJ LmVuYWJsZV9zaWduYWxpbmcgPSBmZW5jZV9kZWZhdWx0X2VuYWJsZV9zaWduYWxpbmcsCiAJLnNp Z25hbGVkID0gc3luY19mZW5jZV9zaWduYWxlZCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2lu Zy9hbmRyb2lkL3N5bmNfZGVidWcuYyBiL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL3N5bmNfZGVi dWcuYwppbmRleCBiODYwMmQyLi5kYjYxOGNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcv YW5kcm9pZC9zeW5jX2RlYnVnLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvc3luY19k ZWJ1Zy5jCkBAIC0xMzMsNyArMTMzLDcgQEAgc3RhdGljIHZvaWQgc3luY19wcmludF9vYmooc3Ry dWN0IHNlcV9maWxlICpzLCBzdHJ1Y3QgZmVuY2VfdGltZWxpbmUgKm9iaikKIAlzdHJ1Y3QgbGlz dF9oZWFkICpwb3M7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAotCXNlcV9wcmludGYocywgIiVz ICVzIiwgb2JqLT5uYW1lLCBvYmotPm9wcy0+ZHJpdmVyX25hbWUpOworCXNlcV9wcmludGYocywg IiVzICVzIiwgb2JqLT5uYW1lLCBvYmotPmRydl9uYW1lKTsKIAogCWlmIChvYmotPm9wcy0+dGlt ZWxpbmVfdmFsdWVfc3RyKSB7CiAJCWNoYXIgdmFsdWVbNjRdOwpkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9saW51eC9mZW5jZS5oIGIvaW5jbHVkZS9saW51eC9mZW5jZS5oCmluZGV4IDBjOTcwMTQuLmYz NTVjMjhhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2ZlbmNlLmgKKysrIGIvaW5jbHVkZS9s aW51eC9mZW5jZS5oCkBAIC0zNiw3ICszNiw2IEBAIHN0cnVjdCBmZW5jZV9vcHM7CiBzdHJ1Y3Qg ZmVuY2VfY2I7CiAvKioKICAqIHN0cnVjdCBmZW5jZV90aW1lbGluZV9vcHMgLSBmZW5jZSBjb250 ZXh0IGltcGxlbWVudGF0aW9uIG9wcwotICogQGRyaXZlcl9uYW1lOgluYW1lIG9mIHRoZSBpbXBs ZW1lbnRhdGlvbgogICogQGhhc19zaWduYWxlZDoJcmV0dXJuczoKICAqCQkJICAxIGlmIHB0IGhh cyBzaWduYWxlZAogICoJCQkgIDAgaWYgcHQgaGFzIG5vdCBzaWduYWxlZApAQCAtNDksOCArNDgs NiBAQCBzdHJ1Y3QgZmVuY2VfY2I7CiAgKiBAcHRfdmFsdWVfc3RyOglmaWxsIHN0ciB3aXRoIHRo ZSB2YWx1ZSBvZiB0aGUgc3luY19wdAogICovCiBzdHJ1Y3QgZmVuY2VfdGltZWxpbmVfb3BzIHsK LQljb25zdCBjaGFyICpkcml2ZXJfbmFtZTsKLQogCS8qIHJlcXVpcmVkICovCiAJaW50ICgqaGFz X3NpZ25hbGVkKShzdHJ1Y3QgZmVuY2UgKmZlbmNlKTsKIApAQCAtODAsNiArNzcsNyBAQCBzdHJ1 Y3QgZmVuY2VfdGltZWxpbmVfb3BzIHsKIHN0cnVjdCBmZW5jZV90aW1lbGluZSB7CiAJc3RydWN0 IGtyZWYJCWtyZWY7CiAJY2hhcgkJCW5hbWVbMzJdOworCWNoYXIJCQlkcnZfbmFtZVszMl07CiAJ Y29uc3Qgc3RydWN0IGZlbmNlX3RpbWVsaW5lX29wcyAqb3BzOwogCWJvb2wJCQlkZXN0cm95ZWQ7 CiAJaW50CQkJdmFsdWU7CkBAIC05NCw3ICs5Miw4IEBAIHN0cnVjdCBmZW5jZV90aW1lbGluZSB7 CiAKIHN0cnVjdCBmZW5jZV90aW1lbGluZSAqZmVuY2VfdGltZWxpbmVfY3JlYXRlKHVuc2lnbmVk IG51bSwKIAkJCQkJICAgICBzdHJ1Y3QgZmVuY2VfdGltZWxpbmVfb3BzICpvcHMsCi0JCQkJCSAg ICAgaW50IHNpemUsIGNvbnN0IGNoYXIgKm5hbWUpOworCQkJCQkgICAgIGludCBzaXplLCBjb25z dCBjaGFyICpkcnZfbmFtZSwKKwkJCQkJICAgICBjb25zdCBjaGFyICpuYW1lKTsKIHZvaWQgZmVu Y2VfdGltZWxpbmVfZ2V0KHN0cnVjdCBmZW5jZV90aW1lbGluZSAqdGltZWxpbmUpOwogdm9pZCBm ZW5jZV90aW1lbGluZV9wdXQoc3RydWN0IGZlbmNlX3RpbWVsaW5lICp0aW1lbGluZSk7CiB2b2lk IGZlbmNlX3RpbWVsaW5lX2Rlc3Ryb3koc3RydWN0IGZlbmNlX3RpbWVsaW5lICp0aW1lbGluZSk7 CkBAIC0yOTUsNiArMjk0LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGZlbmNlX3B1dChzdHJ1Y3Qg ZmVuY2UgKmZlbmNlKQogCiBpbnQgZmVuY2Vfc2lnbmFsKHN0cnVjdCBmZW5jZSAqZmVuY2UpOwog aW50IGZlbmNlX3NpZ25hbF9sb2NrZWQoc3RydWN0IGZlbmNlICpmZW5jZSk7Citjb25zdCBjaGFy ICpmZW5jZV9kZWZhdWx0X2dldF9kcml2ZXJfbmFtZShzdHJ1Y3QgZmVuY2UgKmZlbmNlKTsKIGJv b2wgZmVuY2VfZGVmYXVsdF9lbmFibGVfc2lnbmFsaW5nKHN0cnVjdCBmZW5jZSAqZmVuY2UpOwog c2lnbmVkIGxvbmcgZmVuY2VfZGVmYXVsdF93YWl0KHN0cnVjdCBmZW5jZSAqZmVuY2UsIGJvb2wg aW50ciwgc2lnbmVkIGxvbmcgdGltZW91dCk7CiB2b2lkIGZlbmNlX2RlZmF1bHRfcmVsZWFzZShz dHJ1Y3QgZmVuY2UgKmZlbmNlKTsKLS0gCjIuNS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbAo=