From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gustavo Padovan Subject: [RFC 11/29] dma-buf/fence: move sync_timeline to fence_timeline Date: Fri, 15 Jan 2016 12:55:21 -0200 Message-ID: <1452869739-3304-12-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 607557A0EF for ; Fri, 15 Jan 2016 06:56:26 -0800 (PST) Received: by mail-yk0-f178.google.com with SMTP id k129so522511311yke.0 for ; Fri, 15 Jan 2016 06:56:26 -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 QWRkIHRoZSBzeW5jIHRpbWVsaW5lIGZyb20gc3luYyBmcmFtZXdvcmsgdG8gZmVuY2Ugc3luY2hy b25pemF0aW9uIHN5c3RlbS4KVGhpcyBpcyBhbiBhdHRlbXB0IHRvIHJlbW92ZSBzb21lIGR1cGxp Y2F0aW9uIGJldHdlZW4gc3luYy5jIGFuZCBmZW5jZS5jCgpUaGUgc3luY190aW1lbGluZSB3YXMg bm8gbW9yZSB0aGFuIGEgd3JhcHBlciBvbiB0b3Agb2YgdGhlIGZlbmNlCmZyYW1ld29yayB0byBi ZSB1c2VkIGJ5IHN3X3N5bmMuIEl0IHNpbXBsaWZpZXMgc29tZSBhY2Nlc3NlcywgZm9yIGV4YW1w bGUsCndoZW4geW91IGhhdmUgYSBzdHJ1Y3QgZmVuY2UgeW91IGRvbid0IG5lZWQgZ2V0IHRoZSBz eW5jX3B0IHJlbGF0ZWQgdG8gaXQKdG8ga25vdyB0aGUgcGFyZW50IHRpbWVsaW5lLCBpdCBpcyBq dXN0IGEgbWF0dGVyIG9mIGNhbGxpbmcKZmVuY2VfcGFyZW50KCkgbm93LgoKVGhpcyBpcyBqdXN0 IHRoZSBpbml0aWFsIHN0ZXAsIHRoZSBpZGVhIGlzIHRvIGNvbm5lY3Qgc3dfc3luYyBkaXJlY3QK d2l0aCBmZW5jZXMgcmVtb3Zpbmcgc29tZSBhYnN0cmFjdGlvbnMgaW4gYmV0d2Vlbi4KClRoZSBz eW5jIEFQSSBjaGFuZ2VzIGhlcmUgYXJlOgoKICogc3RydWN0IHN5bmNfdGltZWxpbmUgaXMgbm93 IHN0cnVjdCBmZW5jZV90aW1lbGluZQogKiBzeW5jX3RpbWVsaW5lX29wcyBpcyBub3cgZmVuY2Vf dGltZWxpbmVfb3BzIGFuZCB0aGV5IG5vdyBjYXJyeSBzdHJ1Y3QKIGZlbmNlIGFzIHBhcmFtZXRl ciBpbnN0ZWFkIG9mIHN0cnVjdCBzeW5jX3B0CiAqIHN5bmNfdGltZWxpbmVfY3JlYXRlKCkJLT4g ZmVuY2VfdGltZWxpbmVfY3JlYXRlKCkKICogc3luY190aW1lbGluZV9nZXQoKQkJLT4gZmVuY2Vf dGltZWxpbmVfZ2V0KCkKICogc3luY190aW1lbGluZV9wdXQoKQkJLT4gZmVuY2VfdGltZWxpbmVf cHV0KCkKICogc3luY190aW1lbGluZV9kZXN0cm95KCkJLT4gZmVuY2VfdGltZWxpbmVfZGVzdHJv eSgpCiAqIHN5bmNfdGltZWxpbmVfc2lnbmFsKCkJLT4gZmVuY2VfdGltZWxpbmVfc2lnbmFsKCkK ClNpZ25lZC1vZmYtYnk6IEd1c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2by5wYWRvdmFuQGNvbGxhYm9y YS5jby51az4KLS0tCiBkcml2ZXJzL2RtYS1idWYvZmVuY2UuYyAgICAgICAgICAgICAgfCAxMjUg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL3N3 X3N5bmMuYyAgICB8ICAyNyArKysrLS0tCiBkcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9zd19zeW5j LmggICAgfCAgIDIgKy0KIGRyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL3N5bmMuYyAgICAgICB8IDE1 MCArKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9zdGFnaW5nL2Fu ZHJvaWQvc3luYy5oICAgICAgIHwgMTMwICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog ZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvc3luY19kZWJ1Zy5jIHwgIDI2ICsrKy0tLQogZHJpdmVy cy9zdGFnaW5nL2FuZHJvaWQvdHJhY2Uvc3luYy5oIHwgIDI0IC0tLS0tLQogaW5jbHVkZS9saW51 eC9mZW5jZS5oICAgICAgICAgICAgICAgIHwgIDc1ICsrKysrKysrKysrKysrKysrKwogaW5jbHVk ZS90cmFjZS9ldmVudHMvZmVuY2UuaCAgICAgICAgIHwgIDI0ICsrKysrKwogOSBmaWxlcyBjaGFu Z2VkLCAyODUgaW5zZXJ0aW9ucygrKSwgMjk4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZG1hLWJ1Zi9mZW5jZS5jIGIvZHJpdmVycy9kbWEtYnVmL2ZlbmNlLmMKaW5kZXggN2Iw NWRiZS4uNWRjYjk0YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEtYnVmL2ZlbmNlLmMKKysrIGIv ZHJpdmVycy9kbWEtYnVmL2ZlbmNlLmMKQEAgLTUyLDYgKzUyLDEzMSBAQCB1bnNpZ25lZCBmZW5j ZV9jb250ZXh0X2FsbG9jKHVuc2lnbmVkIG51bSkKIEVYUE9SVF9TWU1CT0woZmVuY2VfY29udGV4 dF9hbGxvYyk7CiAKIC8qKgorICogZmVuY2VfdGltZWxpbmVfY3JlYXRlIC0gY3JlYXRlIGEgbmV3 IGZlbmNlX3RpbWVsaW5lCisgKiBAbnVtOglbaW5dCWFtb3VudCBvZiBjb250ZXh0cyB0byBhbGxv Y2F0ZQorICogQG9wczoJW2luXQl0aW1lbGluZSBvcHMgb2YgdGhlIGNhbGxlcgorICogQHNpemU6 CVtpbl0Jc2l6ZSB0byBhbGxvY2F0ZSBzdHJ1Y3QgZmVuY2VfdGltZWxpbmUKKyAqIEBuYW1lOglb aW5dCW5hbWUgb2YgdGhlIHRpbWVsaW5lCisgKgorICogVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVy biB0aGUgbmV3IGZlbmNlX3RpbWVsaW5lIG9yIE5VTEwgaW4gY2FzZSBvZiBlcnJvci4KKyAqIEl0 IGFsbG9jcyBhbmQgaW5pdGlhbGl6ZXMgYSBuZXcgZmVuY2VfdGltZWxpbmUgd2l0aCBhIHByb3Bl ciBmZW5jZSBjb250ZXh0CisgKiBudW1iZXIgYXNzaWduZWQgdG8gaXQuCisgKi8KK3N0cnVjdCBm ZW5jZV90aW1lbGluZSAqZmVuY2VfdGltZWxpbmVfY3JlYXRlKHVuc2lnbmVkIG51bSwKKwkJCQkJ ICAgICBzdHJ1Y3QgZmVuY2VfdGltZWxpbmVfb3BzICpvcHMsCisJCQkJCSAgICAgaW50IHNpemUs IGNvbnN0IGNoYXIgKm5hbWUpCit7CisJc3RydWN0IGZlbmNlX3RpbWVsaW5lICp0aW1lbGluZTsK KworCWlmIChzaXplIDwgc2l6ZW9mKCp0aW1lbGluZSkpCisJCXJldHVybiBOVUxMOworCisJdGlt ZWxpbmUgPSBremFsbG9jKHNpemUsIEdGUF9LRVJORUwpOworCWlmICghdGltZWxpbmUpCisJCXJl dHVybiBOVUxMOworCisJa3JlZl9pbml0KCZ0aW1lbGluZS0+a3JlZik7CisJdGltZWxpbmUtPm9w cyA9IG9wczsKKwl0aW1lbGluZS0+Y29udGV4dCA9IGZlbmNlX2NvbnRleHRfYWxsb2MoMSk7CisJ c3RybGNweSh0aW1lbGluZS0+bmFtZSwgbmFtZSwgc2l6ZW9mKHRpbWVsaW5lLT5uYW1lKSk7CisK KwlJTklUX0xJU1RfSEVBRCgmdGltZWxpbmUtPmNoaWxkX2xpc3RfaGVhZCk7CisJSU5JVF9MSVNU X0hFQUQoJnRpbWVsaW5lLT5hY3RpdmVfbGlzdF9oZWFkKTsKKwlzcGluX2xvY2tfaW5pdCgmdGlt ZWxpbmUtPmxvY2spOworCisJcmV0dXJuIHRpbWVsaW5lOworfQorRVhQT1JUX1NZTUJPTChmZW5j ZV90aW1lbGluZV9jcmVhdGUpOworCisvKioKKyAqIGZlbmNlX3RpbWVsaW5lX2ZyZWUgLSBmcmVl IHJlc291cmNlcyBvZiBmZW5jZV90aW1lbGluZQorICogQGtyZWYJW2luXQl0aGUga3JlZiBvZiB0 aGUgZmVuY2VfdGltZWxpbmUgdG8gYmUgZnJlZWQKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGZyZWVz IGEgZmVuY2VfdGltZWxpbmUgd2hpY2ggaXMgbWF0dGVyIG9mIGEgc2ltcGxlCisgKiBjYWxsIHRv IGtmcmVlKCkKKyAqLworc3RhdGljIHZvaWQgZmVuY2VfdGltZWxpbmVfZnJlZShzdHJ1Y3Qga3Jl ZiAqa3JlZikKK3sKKwlzdHJ1Y3QgZmVuY2VfdGltZWxpbmUgKnRpbWVsaW5lID0KKwkJY29udGFp bmVyX29mKGtyZWYsIHN0cnVjdCBmZW5jZV90aW1lbGluZSwga3JlZik7CisKKwlrZnJlZSh0aW1l bGluZSk7Cit9CisKKy8qKgorICogZmVuY2VfdGltZWxpbmVfZ2V0IC0gZ2V0IGEgcmVmZXJlbmNl IHRvIHRoZSB0aW1lbGluZQorICogQHRpbWVsaW5lCVtpbl0JdGhlIGZlbmNlX3RpbWVsaW5lIHRv IGdldCBhIHJlZmVyZW5jZQorICoKKyAqIFRoaXMgZnVuY3Rpb24gaW5jcmVhc2UgdGhlIHJlZmNu dCBmb3IgdGhlIGdpdmVuIHRpbWVsaW5lLgorICovCit2b2lkIGZlbmNlX3RpbWVsaW5lX2dldChz dHJ1Y3QgZmVuY2VfdGltZWxpbmUgKnRpbWVsaW5lKQoreworCWtyZWZfZ2V0KCZ0aW1lbGluZS0+ a3JlZik7Cit9CitFWFBPUlRfU1lNQk9MKGZlbmNlX3RpbWVsaW5lX2dldCk7CisKKy8qKgorICog ZmVuY2VfdGltZWxpbmVfcHV0IC0gcHV0IGEgcmVmZXJlbmNlIHRvIHRoZSB0aW1lbGluZQorICog QHRpbWVsaW5lCVtpbl0JdGhlIGZlbmNlX3RpbWVsaW5lIHRvIHB1dCBhIHJlZmVyZW5jZQorICoK KyAqIFRoaXMgZnVuY3Rpb24gZGVjcmVhc2VzIHRoZSByZWZjbnQgZm9yIHRoZSBnaXZlbiB0aW1l bGluZQorICogYW5kIGZyZWVzIGl0IGlmIGdldHMgdG8gemVyby4KKyAqLwordm9pZCBmZW5jZV90 aW1lbGluZV9wdXQoc3RydWN0IGZlbmNlX3RpbWVsaW5lICp0aW1lbGluZSkKK3sKKwlrcmVmX3B1 dCgmdGltZWxpbmUtPmtyZWYsIGZlbmNlX3RpbWVsaW5lX2ZyZWUpOworfQorRVhQT1JUX1NZTUJP TChmZW5jZV90aW1lbGluZV9wdXQpOworCisvKioKKyAqIGZlbmNlX3RpbWVsaW5lX2Rlc3Ryb3kg LSBkZXN0cm95IGEgZmVuY2VfdGltZWxpbmUKKyAqIEB0aW1lbGluZQlbaW5dCXRoZSBmZW5jZV90 aW1lbGluZSB0byBkZXN0cm95CisgKgorICogVGhpcyBmdW5jdGlvbiBkZXN0cm95cyBhIHRpbWVs aW5lLiBJdCBzaWduYWxzIGFueSBhY3RpdmUgZmVuY2UgZmlyc3QuCisgKi8KK3ZvaWQgZmVuY2Vf dGltZWxpbmVfZGVzdHJveShzdHJ1Y3QgZmVuY2VfdGltZWxpbmUgKnRpbWVsaW5lKQoreworCXRp bWVsaW5lLT5kZXN0cm95ZWQgPSB0cnVlOworCS8qCisJICogRW5zdXJlIHRpbWVsaW5lIGlzIG1h cmtlZCBhcyBkZXN0cm95ZWQgYmVmb3JlCisJICogY2hhbmdpbmcgdGltZWxpbmUncyBmZW5jZXMg c3RhdHVzLgorCSAqLworCXNtcF93bWIoKTsKKworCS8qCisJICogc2lnbmFsIGFueSBjaGlsZHJl biB0aGF0IHRoZWlyIHBhcmVudCBpcyBnb2luZyBhd2F5LgorCSAqLworCWZlbmNlX3RpbWVsaW5l X3NpZ25hbCh0aW1lbGluZSk7CisJZmVuY2VfdGltZWxpbmVfcHV0KHRpbWVsaW5lKTsKK30KK0VY UE9SVF9TWU1CT0woZmVuY2VfdGltZWxpbmVfZGVzdHJveSk7CisKKy8qKgorICogZmVuY2VfdGlt ZWxpbmVfc2lnbmFsIC0gc2lnbmFsIGZlbmNlcyBvbiBhIGZlbmNlX3RpbWVsaW5lCisgKiBAdGlt ZWxpbmUJW2luXQl0aGUgZmVuY2VfdGltZWxpbmUgdG8gc2lnbmFsIGZlbmNlcworICoKKyAqIFRo aXMgZnVuY3Rpb24gc2lnbmFsIGZlbmNlcyBvbiBhIGdpdmVuIHRpbWVsaW5lIGFuZCByZW1vdmUK KyAqIHRob3NlIGZyb20gdGhlIGFjdGl2ZV9saXN0LgorICovCit2b2lkIGZlbmNlX3RpbWVsaW5l X3NpZ25hbChzdHJ1Y3QgZmVuY2VfdGltZWxpbmUgKnRpbWVsaW5lKQoreworCXVuc2lnbmVkIGxv bmcgZmxhZ3M7CisJTElTVF9IRUFEKHNpZ25hbGVkX3B0cyk7CisJc3RydWN0IGZlbmNlICpmZW5j ZSwgKm5leHQ7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmdGltZWxpbmUtPmxvY2ssIGZsYWdzKTsK KworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShmZW5jZSwgbmV4dCwgJnRpbWVsaW5lLT5hY3Rp dmVfbGlzdF9oZWFkLAorCQkJCSBhY3RpdmVfbGlzdCkgeworCQlpZiAoZmVuY2VfaXNfc2lnbmFs ZWRfbG9ja2VkKGZlbmNlKSkKKwkJCWxpc3RfZGVsX2luaXQoJmZlbmNlLT5hY3RpdmVfbGlzdCk7 CisJfQorCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmdGltZWxpbmUtPmxvY2ssIGZsYWdzKTsK K30KK0VYUE9SVF9TWU1CT0woZmVuY2VfdGltZWxpbmVfc2lnbmFsKTsKKworLyoqCiAgKiBmZW5j ZV9zaWduYWxfbG9ja2VkIC0gc2lnbmFsIGNvbXBsZXRpb24gb2YgYSBmZW5jZQogICogQGZlbmNl OiB0aGUgZmVuY2UgdG8gc2lnbmFsCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2Fu ZHJvaWQvc3dfc3luYy5jIGIvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvc3dfc3luYy5jCmluZGV4 IGY0OTFkYmMuLjk4ZjlhMjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL3N3 X3N5bmMuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9zd19zeW5jLmMKQEAgLTM4LDE4 ICszOCwxOSBAQCBzdHJ1Y3Qgc3luY19wdCAqc3dfc3luY19wdF9jcmVhdGUoc3RydWN0IHN3X3N5 bmNfdGltZWxpbmUgKm9iaiwgdTMyIHZhbHVlKQogfQogRVhQT1JUX1NZTUJPTChzd19zeW5jX3B0 X2NyZWF0ZSk7CiAKLXN0YXRpYyBpbnQgc3dfc3luY19wdF9oYXNfc2lnbmFsZWQoc3RydWN0IHN5 bmNfcHQgKnN5bmNfcHQpCitzdGF0aWMgaW50IHN3X3N5bmNfZmVuY2VfaGFzX3NpZ25hbGVkKHN0 cnVjdCBmZW5jZSAqZmVuY2UpCiB7Ci0Jc3RydWN0IHN3X3N5bmNfcHQgKnB0ID0gKHN0cnVjdCBz d19zeW5jX3B0ICopc3luY19wdDsKKwlzdHJ1Y3Qgc3dfc3luY19wdCAqcHQgPSAoc3RydWN0IHN3 X3N5bmNfcHQgKilmZW5jZTsKIAlzdHJ1Y3Qgc3dfc3luY190aW1lbGluZSAqb2JqID0KLQkJKHN0 cnVjdCBzd19zeW5jX3RpbWVsaW5lICopc3luY19wdF9wYXJlbnQoc3luY19wdCk7CisJCShzdHJ1 Y3Qgc3dfc3luY190aW1lbGluZSAqKWZlbmNlX3BhcmVudChmZW5jZSk7CiAKIAlyZXR1cm4gKHB0 LT52YWx1ZSA+IG9iai0+dmFsdWUpID8gMCA6IDE7CiB9CiAKLXN0YXRpYyBpbnQgc3dfc3luY19m aWxsX2RyaXZlcl9kYXRhKHN0cnVjdCBzeW5jX3B0ICpzeW5jX3B0LAorc3RhdGljIGludCBzd19z eW5jX2ZpbGxfZHJpdmVyX2RhdGEoc3RydWN0IGZlbmNlICpmZW5jZSwKIAkJCQkgICAgdm9pZCAq ZGF0YSwgaW50IHNpemUpCiB7CisJc3RydWN0IHN5bmNfcHQgKnN5bmNfcHQgPSAoc3RydWN0IHN5 bmNfcHQgKilmZW5jZTsKIAlzdHJ1Y3Qgc3dfc3luY19wdCAqcHQgPSAoc3RydWN0IHN3X3N5bmNf cHQgKilzeW5jX3B0OwogCiAJaWYgKHNpemUgPCBzaXplb2YocHQtPnZhbHVlKSkKQEAgLTYwLDM0 ICs2MSwzNCBAQCBzdGF0aWMgaW50IHN3X3N5bmNfZmlsbF9kcml2ZXJfZGF0YShzdHJ1Y3Qgc3lu Y19wdCAqc3luY19wdCwKIAlyZXR1cm4gc2l6ZW9mKHB0LT52YWx1ZSk7CiB9CiAKLXN0YXRpYyB2 b2lkIHN3X3N5bmNfdGltZWxpbmVfdmFsdWVfc3RyKHN0cnVjdCBzeW5jX3RpbWVsaW5lICpzeW5j X3RpbWVsaW5lLAorc3RhdGljIHZvaWQgc3dfc3luY190aW1lbGluZV92YWx1ZV9zdHIoc3RydWN0 IGZlbmNlX3RpbWVsaW5lICpmZW5jZV90aW1lbGluZSwKIAkJCQkgICAgICAgY2hhciAqc3RyLCBp bnQgc2l6ZSkKIHsKIAlzdHJ1Y3Qgc3dfc3luY190aW1lbGluZSAqdGltZWxpbmUgPQotCQkoc3Ry dWN0IHN3X3N5bmNfdGltZWxpbmUgKilzeW5jX3RpbWVsaW5lOworCQkoc3RydWN0IHN3X3N5bmNf dGltZWxpbmUgKilmZW5jZV90aW1lbGluZTsKIAlzbnByaW50ZihzdHIsIHNpemUsICIlZCIsIHRp bWVsaW5lLT52YWx1ZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHN3X3N5bmNfcHRfdmFsdWVfc3RyKHN0 cnVjdCBzeW5jX3B0ICpzeW5jX3B0LAorc3RhdGljIHZvaWQgc3dfc3luY19mZW5jZV92YWx1ZV9z dHIoc3RydWN0IGZlbmNlICpmZW5jZSwKIAkJCQkgY2hhciAqc3RyLCBpbnQgc2l6ZSkKIHsKLQlz dHJ1Y3Qgc3dfc3luY19wdCAqcHQgPSAoc3RydWN0IHN3X3N5bmNfcHQgKilzeW5jX3B0OworCXN0 cnVjdCBzd19zeW5jX3B0ICpwdCA9IChzdHJ1Y3Qgc3dfc3luY19wdCAqKWZlbmNlOwogCiAJc25w cmludGYoc3RyLCBzaXplLCAiJWQiLCBwdC0+dmFsdWUpOwogfQogCi1zdGF0aWMgc3RydWN0IHN5 bmNfdGltZWxpbmVfb3BzIHN3X3N5bmNfdGltZWxpbmVfb3BzID0geworc3RhdGljIHN0cnVjdCBm ZW5jZV90aW1lbGluZV9vcHMgc3dfc3luY190aW1lbGluZV9vcHMgPSB7CiAJLmRyaXZlcl9uYW1l ID0gInN3X3N5bmMiLAotCS5oYXNfc2lnbmFsZWQgPSBzd19zeW5jX3B0X2hhc19zaWduYWxlZCwK KwkuaGFzX3NpZ25hbGVkID0gc3dfc3luY19mZW5jZV9oYXNfc2lnbmFsZWQsCiAJLmZpbGxfZHJp dmVyX2RhdGEgPSBzd19zeW5jX2ZpbGxfZHJpdmVyX2RhdGEsCiAJLnRpbWVsaW5lX3ZhbHVlX3N0 ciA9IHN3X3N5bmNfdGltZWxpbmVfdmFsdWVfc3RyLAotCS5wdF92YWx1ZV9zdHIgPSBzd19zeW5j X3B0X3ZhbHVlX3N0ciwKKwkuZmVuY2VfdmFsdWVfc3RyID0gc3dfc3luY19mZW5jZV92YWx1ZV9z dHIsCiB9OwogCiBzdHJ1Y3Qgc3dfc3luY190aW1lbGluZSAqc3dfc3luY190aW1lbGluZV9jcmVh dGUoY29uc3QgY2hhciAqbmFtZSkKIHsKIAlzdHJ1Y3Qgc3dfc3luY190aW1lbGluZSAqb2JqID0g KHN0cnVjdCBzd19zeW5jX3RpbWVsaW5lICopCi0JCXN5bmNfdGltZWxpbmVfY3JlYXRlKCZzd19z eW5jX3RpbWVsaW5lX29wcywKKwkJZmVuY2VfdGltZWxpbmVfY3JlYXRlKDEsICZzd19zeW5jX3Rp bWVsaW5lX29wcywKIAkJCQkgICAgIHNpemVvZihzdHJ1Y3Qgc3dfc3luY190aW1lbGluZSksCiAJ CQkJICAgICBuYW1lKTsKIApAQCAtOTksNiArMTAwLDYgQEAgdm9pZCBzd19zeW5jX3RpbWVsaW5l X2luYyhzdHJ1Y3Qgc3dfc3luY190aW1lbGluZSAqb2JqLCB1MzIgaW5jKQogewogCW9iai0+dmFs dWUgKz0gaW5jOwogCi0Jc3luY190aW1lbGluZV9zaWduYWwoJm9iai0+b2JqKTsKKwlmZW5jZV90 aW1lbGluZV9zaWduYWwoJm9iai0+b2JqKTsKIH0KIEVYUE9SVF9TWU1CT0woc3dfc3luY190aW1l bGluZV9pbmMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvc3dfc3luYy5o IGIvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvc3dfc3luYy5oCmluZGV4IGM4N2FlOWUuLmNiNjIy OTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL3N3X3N5bmMuaAorKysgYi9k cml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9zd19zeW5jLmgKQEAgLTIzLDcgKzIzLDcgQEAKICNpbmNs dWRlICJ1YXBpL3N3X3N5bmMuaCIKIAogc3RydWN0IHN3X3N5bmNfdGltZWxpbmUgewotCXN0cnVj dAlzeW5jX3RpbWVsaW5lCW9iajsKKwlzdHJ1Y3QJZmVuY2VfdGltZWxpbmUJb2JqOwogCiAJdTMy CQkJdmFsdWU7CiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvc3luYy5j IGIvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvc3luYy5jCmluZGV4IGRlY2ZmOWUuLmIwN2JjMjQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL3N5bmMuYworKysgYi9kcml2ZXJz L3N0YWdpbmcvYW5kcm9pZC9zeW5jLmMKQEAgLTM0LDExMCArMzQsMjYgQEAKIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZmVuY2Vfb3BzIHN5bmNfZmVuY2Vfb3BzOwogc3RhdGljIGNvbnN0IHN0cnVjdCBm aWxlX29wZXJhdGlvbnMgc3luY19mZW5jZV9mb3BzOwogCi1zdHJ1Y3Qgc3luY190aW1lbGluZSAq c3luY190aW1lbGluZV9jcmVhdGUoY29uc3Qgc3RydWN0IHN5bmNfdGltZWxpbmVfb3BzICpvcHMs Ci0JCQkJCSAgIGludCBzaXplLCBjb25zdCBjaGFyICpuYW1lKQotewotCXN0cnVjdCBzeW5jX3Rp bWVsaW5lICpvYmo7Ci0KLQlpZiAoc2l6ZSA8IHNpemVvZihzdHJ1Y3Qgc3luY190aW1lbGluZSkp Ci0JCXJldHVybiBOVUxMOwotCi0Jb2JqID0ga3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKTsKLQlp ZiAoIW9iaikKLQkJcmV0dXJuIE5VTEw7Ci0KLQlrcmVmX2luaXQoJm9iai0+a3JlZik7Ci0Jb2Jq LT5vcHMgPSBvcHM7Ci0Jb2JqLT5jb250ZXh0ID0gZmVuY2VfY29udGV4dF9hbGxvYygxKTsKLQlz dHJsY3B5KG9iai0+bmFtZSwgbmFtZSwgc2l6ZW9mKG9iai0+bmFtZSkpOwotCi0JSU5JVF9MSVNU X0hFQUQoJm9iai0+Y2hpbGRfbGlzdF9oZWFkKTsKLQlJTklUX0xJU1RfSEVBRCgmb2JqLT5hY3Rp dmVfbGlzdF9oZWFkKTsKLQlzcGluX2xvY2tfaW5pdCgmb2JqLT5jaGlsZF9saXN0X2xvY2spOwot Ci0Jc3luY190aW1lbGluZV9kZWJ1Z19hZGQob2JqKTsKLQotCXJldHVybiBvYmo7Ci19Ci1FWFBP UlRfU1lNQk9MKHN5bmNfdGltZWxpbmVfY3JlYXRlKTsKLQotc3RhdGljIHZvaWQgc3luY190aW1l bGluZV9mcmVlKHN0cnVjdCBrcmVmICprcmVmKQotewotCXN0cnVjdCBzeW5jX3RpbWVsaW5lICpv YmogPQotCQljb250YWluZXJfb2Yoa3JlZiwgc3RydWN0IHN5bmNfdGltZWxpbmUsIGtyZWYpOwot Ci0Jc3luY190aW1lbGluZV9kZWJ1Z19yZW1vdmUob2JqKTsKLQotCWtmcmVlKG9iaik7Ci19Ci0K LXN0YXRpYyB2b2lkIHN5bmNfdGltZWxpbmVfZ2V0KHN0cnVjdCBzeW5jX3RpbWVsaW5lICpvYmop Ci17Ci0Ja3JlZl9nZXQoJm9iai0+a3JlZik7Ci19Ci0KLXN0YXRpYyB2b2lkIHN5bmNfdGltZWxp bmVfcHV0KHN0cnVjdCBzeW5jX3RpbWVsaW5lICpvYmopCi17Ci0Ja3JlZl9wdXQoJm9iai0+a3Jl Ziwgc3luY190aW1lbGluZV9mcmVlKTsKLX0KLQotdm9pZCBzeW5jX3RpbWVsaW5lX2Rlc3Ryb3ko c3RydWN0IHN5bmNfdGltZWxpbmUgKm9iaikKLXsKLQlvYmotPmRlc3Ryb3llZCA9IHRydWU7Ci0J LyoKLQkgKiBFbnN1cmUgdGltZWxpbmUgaXMgbWFya2VkIGFzIGRlc3Ryb3llZCBiZWZvcmUKLQkg KiBjaGFuZ2luZyB0aW1lbGluZSdzIGZlbmNlcyBzdGF0dXMuCi0JICovCi0Jc21wX3dtYigpOwot Ci0JLyoKLQkgKiBzaWduYWwgYW55IGNoaWxkcmVuIHRoYXQgdGhlaXIgcGFyZW50IGlzIGdvaW5n IGF3YXkuCi0JICovCi0Jc3luY190aW1lbGluZV9zaWduYWwob2JqKTsKLQlzeW5jX3RpbWVsaW5l X3B1dChvYmopOwotfQotRVhQT1JUX1NZTUJPTChzeW5jX3RpbWVsaW5lX2Rlc3Ryb3kpOwotCi12 b2lkIHN5bmNfdGltZWxpbmVfc2lnbmFsKHN0cnVjdCBzeW5jX3RpbWVsaW5lICpvYmopCi17Ci0J dW5zaWduZWQgbG9uZyBmbGFnczsKLQlMSVNUX0hFQUQoc2lnbmFsZWRfcHRzKTsKLQlzdHJ1Y3Qg c3luY19wdCAqcHQsICpuZXh0OwotCi0JdHJhY2Vfc3luY190aW1lbGluZShvYmopOwotCi0Jc3Bp bl9sb2NrX2lycXNhdmUoJm9iai0+Y2hpbGRfbGlzdF9sb2NrLCBmbGFncyk7Ci0KLQlsaXN0X2Zv cl9lYWNoX2VudHJ5X3NhZmUocHQsIG5leHQsICZvYmotPmFjdGl2ZV9saXN0X2hlYWQsCi0JCQkJ IGFjdGl2ZV9saXN0KSB7Ci0JCWlmIChmZW5jZV9pc19zaWduYWxlZF9sb2NrZWQoJnB0LT5iYXNl KSkKLQkJCWxpc3RfZGVsX2luaXQoJnB0LT5hY3RpdmVfbGlzdCk7Ci0JfQotCi0Jc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmb2JqLT5jaGlsZF9saXN0X2xvY2ssIGZsYWdzKTsKLX0KLUVYUE9SVF9T WU1CT0woc3luY190aW1lbGluZV9zaWduYWwpOwotCi1zdHJ1Y3Qgc3luY19wdCAqc3luY19wdF9j cmVhdGUoc3RydWN0IHN5bmNfdGltZWxpbmUgKm9iaiwgaW50IHNpemUpCitzdHJ1Y3QgZmVuY2Ug KnN5bmNfcHRfY3JlYXRlKHN0cnVjdCBmZW5jZV90aW1lbGluZSAqb2JqLCBpbnQgc2l6ZSkKIHsK IAl1bnNpZ25lZCBsb25nIGZsYWdzOwotCXN0cnVjdCBzeW5jX3B0ICpwdDsKKwlzdHJ1Y3QgZmVu Y2UgKmZlbmNlOwogCiAJaWYgKHNpemUgPCBzaXplb2Yoc3RydWN0IHN5bmNfcHQpKQogCQlyZXR1 cm4gTlVMTDsKIAotCXB0ID0ga3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKTsKLQlpZiAoIXB0KQor CWZlbmNlID0ga3phbGxvYyhzaXplLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWZlbmNlKQogCQlyZXR1 cm4gTlVMTDsKIAotCXNwaW5fbG9ja19pcnFzYXZlKCZvYmotPmNoaWxkX2xpc3RfbG9jaywgZmxh Z3MpOwotCXN5bmNfdGltZWxpbmVfZ2V0KG9iaik7Ci0JZmVuY2VfaW5pdCgmcHQtPmJhc2UsICZz eW5jX2ZlbmNlX29wcywgJm9iai0+Y2hpbGRfbGlzdF9sb2NrLAorCXNwaW5fbG9ja19pcnFzYXZl KCZvYmotPmxvY2ssIGZsYWdzKTsKKwlmZW5jZV90aW1lbGluZV9nZXQob2JqKTsKKwlmZW5jZV9p bml0KGZlbmNlLCAmc3luY19mZW5jZV9vcHMsICZvYmotPmxvY2ssCiAJCSAgIG9iai0+Y29udGV4 dCwgKytvYmotPnZhbHVlKTsKLQlsaXN0X2FkZF90YWlsKCZwdC0+Y2hpbGRfbGlzdCwgJm9iai0+ Y2hpbGRfbGlzdF9oZWFkKTsKLQlJTklUX0xJU1RfSEVBRCgmcHQtPmFjdGl2ZV9saXN0KTsKLQlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZvYmotPmNoaWxkX2xpc3RfbG9jaywgZmxhZ3MpOwotCXJl dHVybiBwdDsKKwlsaXN0X2FkZF90YWlsKCZmZW5jZS0+Y2hpbGRfbGlzdCwgJm9iai0+Y2hpbGRf bGlzdF9oZWFkKTsKKwlJTklUX0xJU1RfSEVBRCgmZmVuY2UtPmFjdGl2ZV9saXN0KTsKKwlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZvYmotPmxvY2ssIGZsYWdzKTsKKwlyZXR1cm4gZmVuY2U7CiB9 CiBFWFBPUlRfU1lNQk9MKHN5bmNfcHRfY3JlYXRlKTsKIApAQCAtNDEyLDQ0ICszMjgsNDAgQEAg RVhQT1JUX1NZTUJPTChzeW5jX2ZlbmNlX3dhaXQpOwogCiBzdGF0aWMgY29uc3QgY2hhciAqc3lu Y19mZW5jZV9nZXRfZHJpdmVyX25hbWUoc3RydWN0IGZlbmNlICpmZW5jZSkKIHsKLQlzdHJ1Y3Qg c3luY19wdCAqcHQgPSBjb250YWluZXJfb2YoZmVuY2UsIHN0cnVjdCBzeW5jX3B0LCBiYXNlKTsK LQlzdHJ1Y3Qgc3luY190aW1lbGluZSAqcGFyZW50ID0gc3luY19wdF9wYXJlbnQocHQpOworCXN0 cnVjdCBmZW5jZV90aW1lbGluZSAqcGFyZW50ID0gZmVuY2VfcGFyZW50KGZlbmNlKTsKIAogCXJl dHVybiBwYXJlbnQtPm9wcy0+ZHJpdmVyX25hbWU7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyICpz eW5jX2ZlbmNlX2dldF90aW1lbGluZV9uYW1lKHN0cnVjdCBmZW5jZSAqZmVuY2UpCiB7Ci0Jc3Ry dWN0IHN5bmNfcHQgKnB0ID0gY29udGFpbmVyX29mKGZlbmNlLCBzdHJ1Y3Qgc3luY19wdCwgYmFz ZSk7Ci0Jc3RydWN0IHN5bmNfdGltZWxpbmUgKnBhcmVudCA9IHN5bmNfcHRfcGFyZW50KHB0KTsK KwlzdHJ1Y3QgZmVuY2VfdGltZWxpbmUgKnBhcmVudCA9IGZlbmNlX3BhcmVudChmZW5jZSk7CiAK IAlyZXR1cm4gcGFyZW50LT5uYW1lOwogfQogCiBzdGF0aWMgdm9pZCBzeW5jX2ZlbmNlX3JlbGVh c2Uoc3RydWN0IGZlbmNlICpmZW5jZSkKIHsKLQlzdHJ1Y3Qgc3luY19wdCAqcHQgPSBjb250YWlu ZXJfb2YoZmVuY2UsIHN0cnVjdCBzeW5jX3B0LCBiYXNlKTsKLQlzdHJ1Y3Qgc3luY190aW1lbGlu ZSAqcGFyZW50ID0gc3luY19wdF9wYXJlbnQocHQpOworCXN0cnVjdCBmZW5jZV90aW1lbGluZSAq cGFyZW50ID0gZmVuY2VfcGFyZW50KGZlbmNlKTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJ c3Bpbl9sb2NrX2lycXNhdmUoZmVuY2UtPmxvY2ssIGZsYWdzKTsKLQlsaXN0X2RlbCgmcHQtPmNo aWxkX2xpc3QpOwotCWlmICghbGlzdF9lbXB0eSgmcHQtPmFjdGl2ZV9saXN0KSkKLQkJbGlzdF9k ZWwoJnB0LT5hY3RpdmVfbGlzdCk7CisJbGlzdF9kZWwoJmZlbmNlLT5jaGlsZF9saXN0KTsKKwlp ZiAoIWxpc3RfZW1wdHkoJmZlbmNlLT5hY3RpdmVfbGlzdCkpCisJCWxpc3RfZGVsKCZmZW5jZS0+ YWN0aXZlX2xpc3QpOwogCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShmZW5jZS0+bG9jaywgZmxh Z3MpOwogCi0Jc3luY190aW1lbGluZV9wdXQocGFyZW50KTsKLQlmZW5jZV9mcmVlKCZwdC0+YmFz ZSk7CisJZmVuY2VfdGltZWxpbmVfcHV0KHBhcmVudCk7CisJZmVuY2VfZnJlZShmZW5jZSk7CiB9 CiAKIHN0YXRpYyBib29sIHN5bmNfZmVuY2Vfc2lnbmFsZWQoc3RydWN0IGZlbmNlICpmZW5jZSkK IHsKLQlzdHJ1Y3Qgc3luY19wdCAqcHQgPSBjb250YWluZXJfb2YoZmVuY2UsIHN0cnVjdCBzeW5j X3B0LCBiYXNlKTsKLQlzdHJ1Y3Qgc3luY190aW1lbGluZSAqcGFyZW50ID0gc3luY19wdF9wYXJl bnQocHQpOworCXN0cnVjdCBmZW5jZV90aW1lbGluZSAqcGFyZW50ID0gZmVuY2VfcGFyZW50KGZl bmNlKTsKIAlpbnQgcmV0OwogCi0JcmV0ID0gcGFyZW50LT5vcHMtPmhhc19zaWduYWxlZChwdCk7 CisJcmV0ID0gcGFyZW50LT5vcHMtPmhhc19zaWduYWxlZChmZW5jZSk7CiAJaWYgKHJldCA8IDAp CiAJCWZlbmNlLT5zdGF0dXMgPSByZXQ7CiAJcmV0dXJuIHJldDsKQEAgLTQ1Nyw0NiArMzY5LDQy IEBAIHN0YXRpYyBib29sIHN5bmNfZmVuY2Vfc2lnbmFsZWQoc3RydWN0IGZlbmNlICpmZW5jZSkK IAogc3RhdGljIGJvb2wgc3luY19mZW5jZV9lbmFibGVfc2lnbmFsaW5nKHN0cnVjdCBmZW5jZSAq ZmVuY2UpCiB7Ci0Jc3RydWN0IHN5bmNfcHQgKnB0ID0gY29udGFpbmVyX29mKGZlbmNlLCBzdHJ1 Y3Qgc3luY19wdCwgYmFzZSk7Ci0Jc3RydWN0IHN5bmNfdGltZWxpbmUgKnBhcmVudCA9IHN5bmNf cHRfcGFyZW50KHB0KTsKKwlzdHJ1Y3QgZmVuY2VfdGltZWxpbmUgKnBhcmVudCA9IGZlbmNlX3Bh cmVudChmZW5jZSk7CiAKIAlpZiAoc3luY19mZW5jZV9zaWduYWxlZChmZW5jZSkpCiAJCXJldHVy biBmYWxzZTsKIAotCWxpc3RfYWRkX3RhaWwoJnB0LT5hY3RpdmVfbGlzdCwgJnBhcmVudC0+YWN0 aXZlX2xpc3RfaGVhZCk7CisJbGlzdF9hZGRfdGFpbCgmZmVuY2UtPmFjdGl2ZV9saXN0LCAmcGFy ZW50LT5hY3RpdmVfbGlzdF9oZWFkKTsKIAlyZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGludCBz eW5jX2ZlbmNlX2ZpbGxfZHJpdmVyX2RhdGEoc3RydWN0IGZlbmNlICpmZW5jZSwKIAkJCQkJICB2 b2lkICpkYXRhLCBpbnQgc2l6ZSkKIHsKLQlzdHJ1Y3Qgc3luY19wdCAqcHQgPSBjb250YWluZXJf b2YoZmVuY2UsIHN0cnVjdCBzeW5jX3B0LCBiYXNlKTsKLQlzdHJ1Y3Qgc3luY190aW1lbGluZSAq cGFyZW50ID0gc3luY19wdF9wYXJlbnQocHQpOworCXN0cnVjdCBmZW5jZV90aW1lbGluZSAqcGFy ZW50ID0gZmVuY2VfcGFyZW50KGZlbmNlKTsKIAogCWlmICghcGFyZW50LT5vcHMtPmZpbGxfZHJp dmVyX2RhdGEpCiAJCXJldHVybiAwOwotCXJldHVybiBwYXJlbnQtPm9wcy0+ZmlsbF9kcml2ZXJf ZGF0YShwdCwgZGF0YSwgc2l6ZSk7CisJcmV0dXJuIHBhcmVudC0+b3BzLT5maWxsX2RyaXZlcl9k YXRhKGZlbmNlLCBkYXRhLCBzaXplKTsKIH0KIAogc3RhdGljIHZvaWQgc3luY19mZW5jZV92YWx1 ZV9zdHIoc3RydWN0IGZlbmNlICpmZW5jZSwKIAkJCQkgICAgY2hhciAqc3RyLCBpbnQgc2l6ZSkK IHsKLQlzdHJ1Y3Qgc3luY19wdCAqcHQgPSBjb250YWluZXJfb2YoZmVuY2UsIHN0cnVjdCBzeW5j X3B0LCBiYXNlKTsKLQlzdHJ1Y3Qgc3luY190aW1lbGluZSAqcGFyZW50ID0gc3luY19wdF9wYXJl bnQocHQpOworCXN0cnVjdCBmZW5jZV90aW1lbGluZSAqcGFyZW50ID0gZmVuY2VfcGFyZW50KGZl bmNlKTsKIAotCWlmICghcGFyZW50LT5vcHMtPnB0X3ZhbHVlX3N0cikgeworCWlmICghcGFyZW50 LT5vcHMtPmZlbmNlX3ZhbHVlX3N0cikgewogCQlpZiAoc2l6ZSkKIAkJCSpzdHIgPSAwOwogCQly ZXR1cm47CiAJfQotCXBhcmVudC0+b3BzLT5wdF92YWx1ZV9zdHIocHQsIHN0ciwgc2l6ZSk7CisJ cGFyZW50LT5vcHMtPmZlbmNlX3ZhbHVlX3N0cihmZW5jZSwgc3RyLCBzaXplKTsKIH0KIAogc3Rh dGljIHZvaWQgc3luY19mZW5jZV90aW1lbGluZV92YWx1ZV9zdHIoc3RydWN0IGZlbmNlICpmZW5j ZSwKIAkJCQkJICAgICBjaGFyICpzdHIsIGludCBzaXplKQogewotCXN0cnVjdCBzeW5jX3B0ICpw dCA9IGNvbnRhaW5lcl9vZihmZW5jZSwgc3RydWN0IHN5bmNfcHQsIGJhc2UpOwotCXN0cnVjdCBz eW5jX3RpbWVsaW5lICpwYXJlbnQgPSBzeW5jX3B0X3BhcmVudChwdCk7CisJc3RydWN0IGZlbmNl X3RpbWVsaW5lICpwYXJlbnQgPSBmZW5jZV9wYXJlbnQoZmVuY2UpOwogCiAJaWYgKCFwYXJlbnQt Pm9wcy0+dGltZWxpbmVfdmFsdWVfc3RyKSB7CiAJCWlmIChzaXplKQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9zdGFnaW5nL2FuZHJvaWQvc3luYy5oIGIvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvc3lu Yy5oCmluZGV4IDQzZjcyYTcuLjUzNjU4Y2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9h bmRyb2lkL3N5bmMuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9zeW5jLmgKQEAgLTIz LDkxICsyMywxMiBAQAogCiAjaW5jbHVkZSAidWFwaS9zeW5jLmgiCiAKLXN0cnVjdCBzeW5jX3Rp bWVsaW5lOwotc3RydWN0IHN5bmNfcHQ7CiBzdHJ1Y3Qgc3luY19mZW5jZTsKIAotLyoqCi0gKiBz dHJ1Y3Qgc3luY190aW1lbGluZV9vcHMgLSBzeW5jIG9iamVjdCBpbXBsZW1lbnRhdGlvbiBvcHMK LSAqIEBkcml2ZXJfbmFtZToJbmFtZSBvZiB0aGUgaW1wbGVtZW50YXRpb24KLSAqIEBoYXNfc2ln bmFsZWQ6CXJldHVybnM6Ci0gKgkJCSAgMSBpZiBwdCBoYXMgc2lnbmFsZWQKLSAqCQkJICAwIGlm IHB0IGhhcyBub3Qgc2lnbmFsZWQKLSAqCQkJIDwwIG9uIGVycm9yCi0gKiBAZmlsbF9kcml2ZXJf ZGF0YToJd3JpdGUgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgZHJpdmVyIGRhdGEgdG8gZGF0YS4K LSAqCQkJICBzaG91bGQgcmV0dXJuIGFuIGVycm9yIGlmIHRoZXJlIGlzIG5vdCBlbm91Z2ggcm9v bQotICoJCQkgIGFzIHNwZWNpZmllZCBieSBzaXplLiAgVGhpcyBpbmZvcm1hdGlvbiBpcyByZXR1 cm5lZAotICoJCQkgIHRvIHVzZXJzcGFjZSBieSBTWU5DX0lPQ19GRU5DRV9JTkZPLgotICogQHRp bWVsaW5lX3ZhbHVlX3N0cjogZmlsbCBzdHIgd2l0aCB0aGUgdmFsdWUgb2YgdGhlIHN5bmNfdGlt ZWxpbmUncyBjb3VudGVyCi0gKiBAcHRfdmFsdWVfc3RyOglmaWxsIHN0ciB3aXRoIHRoZSB2YWx1 ZSBvZiB0aGUgc3luY19wdAotICovCi1zdHJ1Y3Qgc3luY190aW1lbGluZV9vcHMgewotCWNvbnN0 IGNoYXIgKmRyaXZlcl9uYW1lOwotCi0JLyogcmVxdWlyZWQgKi8KLQlpbnQgKCpoYXNfc2lnbmFs ZWQpKHN0cnVjdCBzeW5jX3B0ICpwdCk7Ci0KLQkvKiBvcHRpb25hbCAqLwotCWludCAoKmZpbGxf ZHJpdmVyX2RhdGEpKHN0cnVjdCBzeW5jX3B0ICpzeW5jcHQsIHZvaWQgKmRhdGEsIGludCBzaXpl KTsKLQotCS8qIG9wdGlvbmFsICovCi0Jdm9pZCAoKnRpbWVsaW5lX3ZhbHVlX3N0cikoc3RydWN0 IHN5bmNfdGltZWxpbmUgKnRpbWVsaW5lLCBjaGFyICpzdHIsCi0JCQkJICAgaW50IHNpemUpOwot Ci0JLyogb3B0aW9uYWwgKi8KLQl2b2lkICgqcHRfdmFsdWVfc3RyKShzdHJ1Y3Qgc3luY19wdCAq cHQsIGNoYXIgKnN0ciwgaW50IHNpemUpOwotfTsKLQotLyoqCi0gKiBzdHJ1Y3Qgc3luY190aW1l bGluZSAtIHN5bmMgb2JqZWN0Ci0gKiBAa3JlZjoJCXJlZmVyZW5jZSBjb3VudCBvbiBmZW5jZS4K LSAqIEBvcHM6CQlvcHMgdGhhdCBkZWZpbmUgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzeW5j X3RpbWVsaW5lCi0gKiBAbmFtZToJCW5hbWUgb2YgdGhlIHN5bmNfdGltZWxpbmUuIFVzZWZ1bCBm b3IgZGVidWdnaW5nCi0gKiBAZGVzdHJveWVkOgkJc2V0IHdoZW4gc3luY190aW1lbGluZSBpcyBk ZXN0cm95ZWQKLSAqIEBjaGlsZF9saXN0X2hlYWQ6CWxpc3Qgb2YgY2hpbGRyZW4gc3luY19wdHMg Zm9yIHRoaXMgc3luY190aW1lbGluZQotICogQGNoaWxkX2xpc3RfbG9jazoJbG9jayBwcm90ZWN0 aW5nIEBjaGlsZF9saXN0X2hlYWQsIGRlc3Ryb3llZCwgYW5kCi0gKgkJCSAgc3luY19wdC5zdGF0 dXMKLSAqIEBhY3RpdmVfbGlzdF9oZWFkOglsaXN0IG9mIGFjdGl2ZSAodW5zaWduYWxlZC9lcnJv cmVkKSBzeW5jX3B0cwotICogQHN5bmNfdGltZWxpbmVfbGlzdDoJbWVtYmVyc2hpcCBpbiBnbG9i YWwgc3luY190aW1lbGluZV9saXN0Ci0gKi8KLXN0cnVjdCBzeW5jX3RpbWVsaW5lIHsKLQlzdHJ1 Y3Qga3JlZgkJa3JlZjsKLQljb25zdCBzdHJ1Y3Qgc3luY190aW1lbGluZV9vcHMJKm9wczsKLQlj aGFyCQkJbmFtZVszMl07Ci0KLQkvKiBwcm90ZWN0ZWQgYnkgY2hpbGRfbGlzdF9sb2NrICovCi0J Ym9vbAkJCWRlc3Ryb3llZDsKLQlpbnQJCQljb250ZXh0LCB2YWx1ZTsKLQotCXN0cnVjdCBsaXN0 X2hlYWQJY2hpbGRfbGlzdF9oZWFkOwotCXNwaW5sb2NrX3QJCWNoaWxkX2xpc3RfbG9jazsKLQot CXN0cnVjdCBsaXN0X2hlYWQJYWN0aXZlX2xpc3RfaGVhZDsKLQotI2lmZGVmIENPTkZJR19ERUJV R19GUwotCXN0cnVjdCBsaXN0X2hlYWQJc3luY190aW1lbGluZV9saXN0OwotI2VuZGlmCi19Owot Ci0vKioKLSAqIHN0cnVjdCBzeW5jX3B0IC0gc3luYyBwb2ludAotICogQGJhc2U6CQliYXNlIGZl bmNlIGNsYXNzCi0gKiBAY2hpbGRfbGlzdDoJCW1lbWJlcnNoaXAgaW4gc3luY190aW1lbGluZS5j aGlsZF9saXN0X2hlYWQKLSAqIEBhY3RpdmVfbGlzdDoJbWVtYmVyc2hpcCBpbiBzeW5jX3RpbWVs aW5lLmFjdGl2ZV9saXN0X2hlYWQKLSAqLwogc3RydWN0IHN5bmNfcHQgewogCXN0cnVjdCBmZW5j ZSBiYXNlOwotCi0Jc3RydWN0IGxpc3RfaGVhZAljaGlsZF9saXN0OwotCXN0cnVjdCBsaXN0X2hl YWQJYWN0aXZlX2xpc3Q7CiB9OwogCi1zdGF0aWMgaW5saW5lIHN0cnVjdCBzeW5jX3RpbWVsaW5l ICpzeW5jX3B0X3BhcmVudChzdHJ1Y3Qgc3luY19wdCAqcHQpCi17Ci0JcmV0dXJuIGNvbnRhaW5l cl9vZihwdC0+YmFzZS5sb2NrLCBzdHJ1Y3Qgc3luY190aW1lbGluZSwKLQkJCSAgICBjaGlsZF9s aXN0X2xvY2spOwotfQotCiBzdHJ1Y3Qgc3luY19mZW5jZV9jYiB7CiAJc3RydWN0IGZlbmNlX2Ni IGNiOwogCXN0cnVjdCBmZW5jZSAqZmVuY2U7CkBAIC0xNjIsNTMgKzgzLDEwIEBAIHN0YXRpYyBp bmxpbmUgdm9pZCBzeW5jX2ZlbmNlX3dhaXRlcl9pbml0KHN0cnVjdCBzeW5jX2ZlbmNlX3dhaXRl ciAqd2FpdGVyLAogfQogCiAvKgotICogQVBJIGZvciBzeW5jX3RpbWVsaW5lIGltcGxlbWVudGVy cworICogQVBJIGZvciBmZW5jZV90aW1lbGluZSBpbXBsZW1lbnRlcnMKICAqLwogCi0vKioKLSAq IHN5bmNfdGltZWxpbmVfY3JlYXRlKCkgLSBjcmVhdGVzIGEgc3luYyBvYmplY3QKLSAqIEBvcHM6 CXNwZWNpZmllcyB0aGUgaW1wbGVtZW50YXRpb24gb3BzIGZvciB0aGUgb2JqZWN0Ci0gKiBAc2l6 ZToJc2l6ZSB0byBhbGxvY2F0ZSBmb3IgdGhpcyBvYmoKLSAqIEBuYW1lOglzeW5jX3RpbWVsaW5l IG5hbWUKLSAqCi0gKiBDcmVhdGVzIGEgbmV3IHN5bmNfdGltZWxpbmUgd2hpY2ggd2lsbCB1c2Ug dGhlIGltcGxlbWVudGF0aW9uIHNwZWNpZmllZCBieQotICogQG9wcy4gIEBzaXplIGJ5dGVzIHdp bGwgYmUgYWxsb2NhdGVkIGFsbG93aW5nIGZvciBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYwotICog ZGF0YSB0byBiZSBrZXB0IGFmdGVyIHRoZSBnZW5lcmljIHN5bmNfdGltZWxpbmUgc3RydWN0LiBS ZXR1cm5zIHRoZQotICogc3luY190aW1lbGluZSBvYmplY3Qgb3IgTlVMTCBpbiBjYXNlIG9mIGVy cm9yLgotICovCi1zdHJ1Y3Qgc3luY190aW1lbGluZSAqc3luY190aW1lbGluZV9jcmVhdGUoY29u c3Qgc3RydWN0IHN5bmNfdGltZWxpbmVfb3BzICpvcHMsCi0JCQkJCSAgIGludCBzaXplLCBjb25z dCBjaGFyICpuYW1lKTsKLQotLyoqCi0gKiBzeW5jX3RpbWVsaW5lX2Rlc3Ryb3koKSAtIGRlc3Ry b3lzIGEgc3luYyBvYmplY3QKLSAqIEBvYmo6CXN5bmNfdGltZWxpbmUgdG8gZGVzdHJveQotICoK LSAqIEEgc3luYyBpbXBsZW1lbnRhdGlvbiBzaG91bGQgY2FsbCB0aGlzIHdoZW4gdGhlIEBvYmog aXMgZ29pbmcgYXdheQotICogKGkuZS4gbW9kdWxlIHVubG9hZC4pICBAb2JqIHdvbid0IGFjdHVh bGx5IGJlIGZyZWVkIHVudGlsIGFsbCBpdHMgY2hpbGRyZW4KLSAqIHN5bmNfcHRzIGFyZSBmcmVl ZC4KLSAqLwotdm9pZCBzeW5jX3RpbWVsaW5lX2Rlc3Ryb3koc3RydWN0IHN5bmNfdGltZWxpbmUg Km9iaik7Ci0KLS8qKgotICogc3luY190aW1lbGluZV9zaWduYWwoKSAtIHNpZ25hbCBhIHN0YXR1 cyBjaGFuZ2Ugb24gYSBzeW5jX3RpbWVsaW5lCi0gKiBAb2JqOglzeW5jX3RpbWVsaW5lIHRvIHNp Z25hbAotICoKLSAqIEEgc3luYyBpbXBsZW1lbnRhdGlvbiBzaG91bGQgY2FsbCB0aGlzIGFueSB0 aW1lIG9uZSBvZiBpdCdzIHN5bmNfcHRzCi0gKiBoYXMgc2lnbmFsZWQgb3IgaGFzIGFuIGVycm9y IGNvbmRpdGlvbi4KLSAqLwotdm9pZCBzeW5jX3RpbWVsaW5lX3NpZ25hbChzdHJ1Y3Qgc3luY190 aW1lbGluZSAqb2JqKTsKLQotLyoqCi0gKiBzeW5jX3B0X2NyZWF0ZSgpIC0gY3JlYXRlcyBhIHN5 bmMgcHQKLSAqIEBwYXJlbnQ6CXN5bmNfcHQncyBwYXJlbnQgc3luY190aW1lbGluZQotICogQHNp emU6CXNpemUgdG8gYWxsb2NhdGUgZm9yIHRoaXMgcHQKLSAqCi0gKiBDcmVhdGVzIGEgbmV3IHN5 bmNfcHQgYXMgYSBjaGlsZCBvZiBAcGFyZW50LiAgQHNpemUgYnl0ZXMgd2lsbCBiZQotICogYWxs b2NhdGVkIGFsbG93aW5nIGZvciBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBkYXRhIHRvIGJlIGtl cHQgYWZ0ZXIKLSAqIHRoZSBnZW5lcmljIHN5bmNfdGltZWxpbmUgc3RydWN0LiBSZXR1cm5zIHRo ZSBzeW5jX3B0IG9iamVjdCBvcgotICogTlVMTCBpbiBjYXNlIG9mIGVycm9yLgotICovCi1zdHJ1 Y3Qgc3luY19wdCAqc3luY19wdF9jcmVhdGUoc3RydWN0IHN5bmNfdGltZWxpbmUgKnBhcmVudCwg aW50IHNpemUpOworc3RydWN0IGZlbmNlICpzeW5jX3B0X2NyZWF0ZShzdHJ1Y3QgZmVuY2VfdGlt ZWxpbmUgKnBhcmVudCwgaW50IHNpemUpOwogCiAvKioKICAqIHN5bmNfcHRfZnJlZSgpIC0gZnJl ZXMgYSBzeW5jIHB0CkBAIC0zMjUsOCArMjAzLDggQEAgaW50IHN5bmNfZmVuY2Vfd2FpdChzdHJ1 Y3Qgc3luY19mZW5jZSAqZmVuY2UsIGxvbmcgdGltZW91dCk7CiAKICNpZmRlZiBDT05GSUdfREVC VUdfRlMKIAotdm9pZCBzeW5jX3RpbWVsaW5lX2RlYnVnX2FkZChzdHJ1Y3Qgc3luY190aW1lbGlu ZSAqb2JqKTsKLXZvaWQgc3luY190aW1lbGluZV9kZWJ1Z19yZW1vdmUoc3RydWN0IHN5bmNfdGlt ZWxpbmUgKm9iaik7Cit2b2lkIHN5bmNfdGltZWxpbmVfZGVidWdfYWRkKHN0cnVjdCBmZW5jZV90 aW1lbGluZSAqb2JqKTsKK3ZvaWQgc3luY190aW1lbGluZV9kZWJ1Z19yZW1vdmUoc3RydWN0IGZl bmNlX3RpbWVsaW5lICpvYmopOwogdm9pZCBzeW5jX2ZlbmNlX2RlYnVnX2FkZChzdHJ1Y3Qgc3lu Y19mZW5jZSAqZmVuY2UpOwogdm9pZCBzeW5jX2ZlbmNlX2RlYnVnX3JlbW92ZShzdHJ1Y3Qgc3lu Y19mZW5jZSAqZmVuY2UpOwogdm9pZCBzeW5jX2R1bXAodm9pZCk7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL3N0YWdpbmcvYW5kcm9pZC9zeW5jX2RlYnVnLmMgYi9kcml2ZXJzL3N0YWdpbmcvYW5kcm9p ZC9zeW5jX2RlYnVnLmMKaW5kZXggNzhlOTE0Ny4uZjVmZDhjMyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9zdGFnaW5nL2FuZHJvaWQvc3luY19kZWJ1Zy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9hbmRy b2lkL3N5bmNfZGVidWcuYwpAQCAtMzgsMjEgKzM4LDIxIEBAIHN0YXRpYyBERUZJTkVfU1BJTkxP Q0soc3luY190aW1lbGluZV9saXN0X2xvY2spOwogc3RhdGljIExJU1RfSEVBRChzeW5jX2ZlbmNl X2xpc3RfaGVhZCk7CiBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHN5bmNfZmVuY2VfbGlzdF9sb2Nr KTsKIAotdm9pZCBzeW5jX3RpbWVsaW5lX2RlYnVnX2FkZChzdHJ1Y3Qgc3luY190aW1lbGluZSAq b2JqKQordm9pZCBzeW5jX3RpbWVsaW5lX2RlYnVnX2FkZChzdHJ1Y3QgZmVuY2VfdGltZWxpbmUg Km9iaikKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJnN5 bmNfdGltZWxpbmVfbGlzdF9sb2NrLCBmbGFncyk7Ci0JbGlzdF9hZGRfdGFpbCgmb2JqLT5zeW5j X3RpbWVsaW5lX2xpc3QsICZzeW5jX3RpbWVsaW5lX2xpc3RfaGVhZCk7CisJbGlzdF9hZGRfdGFp bCgmb2JqLT5mZW5jZV90aW1lbGluZV9saXN0LCAmc3luY190aW1lbGluZV9saXN0X2hlYWQpOwog CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnN5bmNfdGltZWxpbmVfbGlzdF9sb2NrLCBmbGFncyk7 CiB9CiAKLXZvaWQgc3luY190aW1lbGluZV9kZWJ1Z19yZW1vdmUoc3RydWN0IHN5bmNfdGltZWxp bmUgKm9iaikKK3ZvaWQgc3luY190aW1lbGluZV9kZWJ1Z19yZW1vdmUoc3RydWN0IGZlbmNlX3Rp bWVsaW5lICpvYmopCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCXNwaW5fbG9ja19pcnFz YXZlKCZzeW5jX3RpbWVsaW5lX2xpc3RfbG9jaywgZmxhZ3MpOwotCWxpc3RfZGVsKCZvYmotPnN5 bmNfdGltZWxpbmVfbGlzdCk7CisJbGlzdF9kZWwoJm9iai0+ZmVuY2VfdGltZWxpbmVfbGlzdCk7 CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc3luY190aW1lbGluZV9saXN0X2xvY2ssIGZsYWdz KTsKIH0KIApAQCAtMTI3LDcgKzEyNyw3IEBAIHN0YXRpYyB2b2lkIHN5bmNfcHJpbnRfcHQoc3Ry dWN0IHNlcV9maWxlICpzLCBzdHJ1Y3QgZmVuY2UgKnB0LCBib29sIGZlbmNlKQogCXNlcV9wdXRz KHMsICJcbiIpOwogfQogCi1zdGF0aWMgdm9pZCBzeW5jX3ByaW50X29iaihzdHJ1Y3Qgc2VxX2Zp bGUgKnMsIHN0cnVjdCBzeW5jX3RpbWVsaW5lICpvYmopCitzdGF0aWMgdm9pZCBzeW5jX3ByaW50 X29iaihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBmZW5jZV90aW1lbGluZSAqb2JqKQogewog CXN0cnVjdCBsaXN0X2hlYWQgKnBvczsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwpAQCAtMTQzLDEz ICsxNDMsMTMgQEAgc3RhdGljIHZvaWQgc3luY19wcmludF9vYmooc3RydWN0IHNlcV9maWxlICpz LCBzdHJ1Y3Qgc3luY190aW1lbGluZSAqb2JqKQogCiAJc2VxX3B1dHMocywgIlxuIik7CiAKLQlz cGluX2xvY2tfaXJxc2F2ZSgmb2JqLT5jaGlsZF9saXN0X2xvY2ssIGZsYWdzKTsKKwlzcGluX2xv Y2tfaXJxc2F2ZSgmb2JqLT5sb2NrLCBmbGFncyk7CiAJbGlzdF9mb3JfZWFjaChwb3MsICZvYmot PmNoaWxkX2xpc3RfaGVhZCkgewotCQlzdHJ1Y3Qgc3luY19wdCAqcHQgPQotCQkJY29udGFpbmVy X29mKHBvcywgc3RydWN0IHN5bmNfcHQsIGNoaWxkX2xpc3QpOworCQlzdHJ1Y3Qgc3luY19wdCAq cHQgPSAoc3RydWN0IHN5bmNfcHQgKikKKwkJCWNvbnRhaW5lcl9vZihwb3MsIHN0cnVjdCBmZW5j ZSwgY2hpbGRfbGlzdCk7CiAJCXN5bmNfcHJpbnRfcHQocywgJnB0LT5iYXNlLCBmYWxzZSk7CiAJ fQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm9iai0+Y2hpbGRfbGlzdF9sb2NrLCBmbGFncyk7 CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmb2JqLT5sb2NrLCBmbGFncyk7CiB9CiAKIHN0YXRp YyB2b2lkIHN5bmNfcHJpbnRfc3luY19mZW5jZShzdHJ1Y3Qgc2VxX2ZpbGUgKnMsCkBAIC0xODks OSArMTg5LDkgQEAgc3RhdGljIGludCBzeW5jX2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUg KnMsIHZvaWQgKnVudXNlZCkKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZzeW5jX3RpbWVsaW5lX2xp c3RfbG9jaywgZmxhZ3MpOwogCWxpc3RfZm9yX2VhY2gocG9zLCAmc3luY190aW1lbGluZV9saXN0 X2hlYWQpIHsKLQkJc3RydWN0IHN5bmNfdGltZWxpbmUgKm9iaiA9Ci0JCQljb250YWluZXJfb2Yo cG9zLCBzdHJ1Y3Qgc3luY190aW1lbGluZSwKLQkJCQkgICAgIHN5bmNfdGltZWxpbmVfbGlzdCk7 CisJCXN0cnVjdCBmZW5jZV90aW1lbGluZSAqb2JqID0KKwkJCWNvbnRhaW5lcl9vZihwb3MsIHN0 cnVjdCBmZW5jZV90aW1lbGluZSwKKwkJCQkgICAgIGZlbmNlX3RpbWVsaW5lX2xpc3QpOwogCiAJ CXN5bmNfcHJpbnRfb2JqKHMsIG9iaik7CiAJCXNlcV9wdXRzKHMsICJcbiIpOwpAQCAtMjUxLDcg KzI1MSw3IEBAIHN0YXRpYyBpbnQgc3dfc3luY19kZWJ1Z2ZzX3JlbGVhc2Uoc3RydWN0IGlub2Rl ICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCiB7CiAJc3RydWN0IHN3X3N5bmNfdGltZWxpbmUg Km9iaiA9IGZpbGUtPnByaXZhdGVfZGF0YTsKIAotCXN5bmNfdGltZWxpbmVfZGVzdHJveSgmb2Jq LT5vYmopOworCWZlbmNlX3RpbWVsaW5lX2Rlc3Ryb3koJm9iai0+b2JqKTsKIAlyZXR1cm4gMDsK IH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvdHJhY2Uvc3luYy5oIGIv ZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvdHJhY2Uvc3luYy5oCmluZGV4IDc3ZWRiOTcuLjU5YzMz N2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL3RyYWNlL3N5bmMuaAorKysg Yi9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC90cmFjZS9zeW5jLmgKQEAgLTgsMzAgKzgsNiBAQAog I2luY2x1ZGUgIi4uL3N5bmMuaCIKICNpbmNsdWRlIDxsaW51eC90cmFjZXBvaW50Lmg+CiAKLVRS QUNFX0VWRU5UKHN5bmNfdGltZWxpbmUsCi0JVFBfUFJPVE8oc3RydWN0IHN5bmNfdGltZWxpbmUg KnRpbWVsaW5lKSwKLQotCVRQX0FSR1ModGltZWxpbmUpLAotCi0JVFBfU1RSVUNUX19lbnRyeSgK LQkJCV9fc3RyaW5nKG5hbWUsIHRpbWVsaW5lLT5uYW1lKQotCQkJX19hcnJheShjaGFyLCB2YWx1 ZSwgMzIpCi0JKSwKLQotCVRQX2Zhc3RfYXNzaWduKAotCQkJX19hc3NpZ25fc3RyKG5hbWUsIHRp bWVsaW5lLT5uYW1lKTsKLQkJCWlmICh0aW1lbGluZS0+b3BzLT50aW1lbGluZV92YWx1ZV9zdHIp IHsKLQkJCQl0aW1lbGluZS0+b3BzLT50aW1lbGluZV92YWx1ZV9zdHIodGltZWxpbmUsCi0JCQkJ CQkJX19lbnRyeS0+dmFsdWUsCi0JCQkJCQkJc2l6ZW9mKF9fZW50cnktPnZhbHVlKSk7Ci0JCQl9 IGVsc2UgewotCQkJCV9fZW50cnktPnZhbHVlWzBdID0gJ1wwJzsKLQkJCX0KLQkpLAotCi0JVFBf cHJpbnRrKCJuYW1lPSVzIHZhbHVlPSVzIiwgX19nZXRfc3RyKG5hbWUpLCBfX2VudHJ5LT52YWx1 ZSkKLSk7Ci0KIFRSQUNFX0VWRU5UKHN5bmNfd2FpdCwKIAlUUF9QUk9UTyhzdHJ1Y3Qgc3luY19m ZW5jZSAqZmVuY2UsIGludCBiZWdpbiksCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZmVu Y2UuaCBiL2luY2x1ZGUvbGludXgvZmVuY2UuaAppbmRleCBiYjUyMjAxLi5hMzMzYmYzNyAxMDA2 NDQKLS0tIGEvaW5jbHVkZS9saW51eC9mZW5jZS5oCisrKyBiL2luY2x1ZGUvbGludXgvZmVuY2Uu aApAQCAtMzAsOSArMzAsNzUgQEAKICNpbmNsdWRlIDxsaW51eC9wcmludGsuaD4KICNpbmNsdWRl IDxsaW51eC9yY3VwZGF0ZS5oPgogCitzdHJ1Y3QgZmVuY2VfdGltZWxpbmU7CiBzdHJ1Y3QgZmVu Y2U7CiBzdHJ1Y3QgZmVuY2Vfb3BzOwogc3RydWN0IGZlbmNlX2NiOworLyoqCisgKiBzdHJ1Y3Qg ZmVuY2VfdGltZWxpbmVfb3BzIC0gZmVuY2UgY29udGV4dCBpbXBsZW1lbnRhdGlvbiBvcHMKKyAq IEBkcml2ZXJfbmFtZToJbmFtZSBvZiB0aGUgaW1wbGVtZW50YXRpb24KKyAqIEBoYXNfc2lnbmFs ZWQ6CXJldHVybnM6CisgKgkJCSAgMSBpZiBwdCBoYXMgc2lnbmFsZWQKKyAqCQkJICAwIGlmIHB0 IGhhcyBub3Qgc2lnbmFsZWQKKyAqCQkJIDwwIG9uIGVycm9yCisgKiBAZmlsbF9kcml2ZXJfZGF0 YToJd3JpdGUgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgZHJpdmVyIGRhdGEgdG8gZGF0YS4KKyAq CQkJICBzaG91bGQgcmV0dXJuIGFuIGVycm9yIGlmIHRoZXJlIGlzIG5vdCBlbm91Z2ggcm9vbQor ICoJCQkgIGFzIHNwZWNpZmllZCBieSBzaXplLiAgVGhpcyBpbmZvcm1hdGlvbiBpcyByZXR1cm5l ZAorICoJCQkgIHRvIHVzZXJzcGFjZSBieSBTWU5DX0lPQ19GRU5DRV9JTkZPLgorICogQHRpbWVs aW5lX3ZhbHVlX3N0cjogZmlsbCBzdHIgd2l0aCB0aGUgdmFsdWUgb2YgdGhlIHN5bmNfdGltZWxp bmUncyBjb3VudGVyCisgKiBAcHRfdmFsdWVfc3RyOglmaWxsIHN0ciB3aXRoIHRoZSB2YWx1ZSBv ZiB0aGUgc3luY19wdAorICovCitzdHJ1Y3QgZmVuY2VfdGltZWxpbmVfb3BzIHsKKwljb25zdCBj aGFyICpkcml2ZXJfbmFtZTsKKworCS8qIHJlcXVpcmVkICovCisJaW50ICgqaGFzX3NpZ25hbGVk KShzdHJ1Y3QgZmVuY2UgKmZlbmNlKTsKKworCS8qIG9wdGlvbmFsICovCisJaW50ICgqZmlsbF9k cml2ZXJfZGF0YSkoc3RydWN0IGZlbmNlICpmZW5jZSwgdm9pZCAqZGF0YSwgaW50IHNpemUpOwor CisJLyogb3B0aW9uYWwgKi8KKwl2b2lkICgqdGltZWxpbmVfdmFsdWVfc3RyKShzdHJ1Y3QgZmVu Y2VfdGltZWxpbmUgKnRpbWVsaW5lLCBjaGFyICpzdHIsCisJCQkJICAgaW50IHNpemUpOworCisJ Lyogb3B0aW9uYWwgKi8KKwl2b2lkICgqZmVuY2VfdmFsdWVfc3RyKShzdHJ1Y3QgZmVuY2UgKmZl bmNlLCBjaGFyICpzdHIsIGludCBzaXplKTsKK307CisKKy8qKgorICogc3RydWN0IGZlbmNlX3Rp bWVsaW5lIC0gdGltZWxpbmUgZm9yIHNvZnR3YXJlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmUK KyAqIEBrcmVmOiByZWZjb3VudCBmb3IgdGltZWxpbmUgbGlmZXRpbWUKKyAqIEBuYW1lOiBuYW1l IG9mIHRoZSB0aW1lbGluZQorICogQG9wczogcG9pbnRlciB0byBmZW5jZV90aW1lbGluZV9vcHMg b2YgdXNlcnMKKyAqIEBkZXRyb3llZDogaWYgdHJ1ZSwgdGhlIGRlc3Ryb3kgcHJvY2VzcyBoYXMg c3RhcnRlZAorICogQHZhbHVlOiB2YWx1ZSBvZiB0aGUgbGFzdCBzaWduYWxlZCBmZW5jZQorICog QGNoaWxkX2xpc3RfaGVhZDogbGlzdCBvZiBjaGlsZCBmZW5jZXMKKyAqIEBhY3RpdmVfbGlzdF9o ZWFkOiBsaXN0IG9mIGFjdGl2ZShub3Qgc2lnbmFsZWQpIGZlbmNlcworICogQGxvY2s6IHRvIHBy b3RlY3QgbGlzdHMgYWNjZXNzCisgKiBAZmVuY2VzOiBsaXN0IG9mIGFsbCB0aW1lbGluZXMgY3Jl YXRlZAorICovCitzdHJ1Y3QgZmVuY2VfdGltZWxpbmUgeworCXN0cnVjdCBrcmVmCQlrcmVmOwor CWNoYXIJCQluYW1lWzMyXTsKKwljb25zdCBzdHJ1Y3QgZmVuY2VfdGltZWxpbmVfb3BzICpvcHM7 CisJYm9vbAkJCWRlc3Ryb3llZDsKKwlpbnQJCQl2YWx1ZTsKKwlpbnQJCQljb250ZXh0OworCXN0 cnVjdCBsaXN0X2hlYWQJY2hpbGRfbGlzdF9oZWFkOworCXN0cnVjdCBsaXN0X2hlYWQJYWN0aXZl X2xpc3RfaGVhZDsKKwlzcGlubG9ja190CQlsb2NrOworI2lmZGVmIENPTkZJR19ERUJVR19GUwor CXN0cnVjdCBsaXN0X2hlYWQgICAgICAgIGZlbmNlX3RpbWVsaW5lX2xpc3Q7CisjZW5kaWYKK307 CisKK3N0cnVjdCBmZW5jZV90aW1lbGluZSAqZmVuY2VfdGltZWxpbmVfY3JlYXRlKHVuc2lnbmVk IG51bSwKKwkJCQkJICAgICBzdHJ1Y3QgZmVuY2VfdGltZWxpbmVfb3BzICpvcHMsCisJCQkJCSAg ICAgaW50IHNpemUsIGNvbnN0IGNoYXIgKm5hbWUpOwordm9pZCBmZW5jZV90aW1lbGluZV9nZXQo c3RydWN0IGZlbmNlX3RpbWVsaW5lICp0aW1lbGluZSk7Cit2b2lkIGZlbmNlX3RpbWVsaW5lX3B1 dChzdHJ1Y3QgZmVuY2VfdGltZWxpbmUgKnRpbWVsaW5lKTsKK3ZvaWQgZmVuY2VfdGltZWxpbmVf ZGVzdHJveShzdHJ1Y3QgZmVuY2VfdGltZWxpbmUgKnRpbWVsaW5lKTsKK3ZvaWQgZmVuY2VfdGlt ZWxpbmVfc2lnbmFsKHN0cnVjdCBmZW5jZV90aW1lbGluZSAqdGltZWxpbmUpOwogCiAvKioKICAq IHN0cnVjdCBmZW5jZSAtIHNvZnR3YXJlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmUKQEAgLTc5 LDYgKzE0NSw4IEBAIHN0cnVjdCBmZW5jZSB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlrdGlt ZV90IHRpbWVzdGFtcDsKIAlpbnQgc3RhdHVzOworCXN0cnVjdCBsaXN0X2hlYWQgY2hpbGRfbGlz dDsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGFjdGl2ZV9saXN0OwogfTsKIAogZW51bSBmZW5jZV9mbGFn X2JpdHMgewpAQCAtMTgxLDYgKzI0OSwxMyBAQCB2b2lkIGZlbmNlX2luaXQoc3RydWN0IGZlbmNl ICpmZW5jZSwgY29uc3Qgc3RydWN0IGZlbmNlX29wcyAqb3BzLAogdm9pZCBmZW5jZV9yZWxlYXNl KHN0cnVjdCBrcmVmICprcmVmKTsKIHZvaWQgZmVuY2VfZnJlZShzdHJ1Y3QgZmVuY2UgKmZlbmNl KTsKIAorCitzdGF0aWMgaW5saW5lIHN0cnVjdCBmZW5jZV90aW1lbGluZSAqZmVuY2VfcGFyZW50 KHN0cnVjdCBmZW5jZSAqZmVuY2UpCit7CisJcmV0dXJuIGNvbnRhaW5lcl9vZihmZW5jZS0+bG9j aywgc3RydWN0IGZlbmNlX3RpbWVsaW5lLAorCQkJICAgIGxvY2spOworfQorCiAvKioKICAqIGZl bmNlX2dldCAtIGluY3JlYXNlcyByZWZjb3VudCBvZiB0aGUgZmVuY2UKICAqIEBmZW5jZToJW2lu XQlmZW5jZSB0byBpbmNyZWFzZSByZWZjb3VudCBvZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS90cmFj ZS9ldmVudHMvZmVuY2UuaCBiL2luY2x1ZGUvdHJhY2UvZXZlbnRzL2ZlbmNlLmgKaW5kZXggOThm ZWIxYi4uYzRkMDFkZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS90cmFjZS9ldmVudHMvZmVuY2UuaAor KysgYi9pbmNsdWRlL3RyYWNlL2V2ZW50cy9mZW5jZS5oCkBAIC00OCw2ICs0OCwzMCBAQCBUUkFD RV9FVkVOVChmZW5jZV9hbm5vdGF0ZV93YWl0X29uLAogCQkgIF9fZW50cnktPndhaXRpbmdfY29u dGV4dCwgX19lbnRyeS0+d2FpdGluZ19zZXFubykKICk7CiAKK1RSQUNFX0VWRU5UKGZlbmNlX3Rp bWVsaW5lLAorCVRQX1BST1RPKHN0cnVjdCBmZW5jZV90aW1lbGluZSAqdGltZWxpbmUpLAorCisJ VFBfQVJHUyh0aW1lbGluZSksCisKKwlUUF9TVFJVQ1RfX2VudHJ5KAorCQkJX19zdHJpbmcobmFt ZSwgdGltZWxpbmUtPm5hbWUpCisJCQlfX2FycmF5KGNoYXIsIHZhbHVlLCAzMikKKwkpLAorCisJ VFBfZmFzdF9hc3NpZ24oCisJCQlfX2Fzc2lnbl9zdHIobmFtZSwgdGltZWxpbmUtPm5hbWUpOwor CQkJaWYgKHRpbWVsaW5lLT5vcHMtPnRpbWVsaW5lX3ZhbHVlX3N0cikgeworCQkJCXRpbWVsaW5l LT5vcHMtPnRpbWVsaW5lX3ZhbHVlX3N0cih0aW1lbGluZSwKKwkJCQkJCQlfX2VudHJ5LT52YWx1 ZSwKKwkJCQkJCQlzaXplb2YoX19lbnRyeS0+dmFsdWUpKTsKKwkJCX0gZWxzZSB7CisJCQkJX19l bnRyeS0+dmFsdWVbMF0gPSAnXDAnOworCQkJfQorCSksCisKKwlUUF9wcmludGsoIm5hbWU9JXMg dmFsdWU9JXMiLCBfX2dldF9zdHIobmFtZSksIF9fZW50cnktPnZhbHVlKQorKTsKKwogREVDTEFS RV9FVkVOVF9DTEFTUyhmZW5jZSwKIAogCVRQX1BST1RPKHN0cnVjdCBmZW5jZSAqZmVuY2UpLAot LSAKMi41LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==