From: Daniel Vetter Subject: Re: [RFC v3] drm/i915: Android native sync support Date: Wed, 28 Jan 2015 10:29:18 +0100 Message-ID: <20150128092918.GM4764@phenom.ffwll.local> References: <1421925340-2755-1-git-send-email-tvrtko.ursulin@linux.intel.com> <1422358176-27158-1-git-send-email-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wg0-f52.google.com (mail-wg0-f52.google.com [74.125.82.52]) by gabe.freedesktop.org (Postfix) with ESMTP id 62CB26E579 for ; Wed, 28 Jan 2015 01:28:06 -0800 (PST) Received: by mail-wg0-f52.google.com with SMTP id y19so19375372wgg.11 for ; Wed, 28 Jan 2015 01:28:05 -0800 (PST) Content-Disposition: inline In-Reply-To: <1422358176-27158-1-git-send-email-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin Cc: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBKYW4gMjcsIDIwMTUgYXQgMTE6Mjk6MzZBTSArMDAwMCwgVHZydGtvIFVyc3VsaW4g d3JvdGU6Cj4gRnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4K PiAKPiBBZGQgQW5kcm9pZCBuYXRpdmUgc3luYyBzdXBwb3J0IHdpdGggZmVuY2VzIGV4cG9ydGVk IGFzIGZpbGUgZGVzY3JpcHRvcnMgdmlhCj4gdGhlIGV4ZWNidWYgaW9jdGwgKHJzdmQyIGZpZWxk IGlzIHVzZWQpLgo+IAo+IFRoaXMgaXMgYSBjb250aW51YXRpb24gb2YgSmVzc2UgQmFybmVzJ3Mg cHJldmlvdXMgd29yaywgc3F1YXNoZWQgdG8gYXJyaXZlIGF0Cj4gdGhlIGZpbmFsIGRlc3RpbmF0 aW9uLCBjbGVhbmVkIHVwLCB3aXRoIHNvbWUgZml4ZXMgYW5kIHByZWxpbWluYXJ5IGxpZ2h0Cj4g dGVzdGluZy4KPiAKPiBHRU0gcmVxdWVzdHMgYXJlIGV4dGVuZGVkIHdpdGggZmVuY2Ugc3RydWN0 dXJlcyB3aGljaCBhcmUgYXNzb2NpYXRlZCB3aXRoCj4gQW5kcm9pZCBzeW5jIGZlbmNlcyBleHBv cnRlZCB0byB1c2VyIHNwYWNlIHZpYSBmaWxlIGRlc2NyaXB0b3JzLiBGZW5jZXMgd2hpY2gKPiBh cmUgd2FpdGVkIHVwb24sIGFuZCB3aGlsZSBleHBvcnRlZCB0byB1c2Vyc3BhY2UsIGFyZSByZWZl cmVuY2VkIGFuZCBhZGRlZCB0bwo+IHRoZSBpcnFfcXVldWUgc28gdGhleSBhcmUgc2lnbmFsbGVk IHdoZW4gcmVxdWVzdHMgYXJlIGNvbXBsZXRlZC4gVGhlcmUgaXMgbm8KPiBvdmVyaGVhZCBhcGFy dCBmcm9tIHRoZSB3aGVyZSBmZW5jZXMgYXJlIG5vdCByZXF1ZXN0ZWQuCj4gCj4gQmFzZWQgb24g cGF0Y2hlcyBieSBKZXNzZSBCYXJuZXM6Cj4gICAgZHJtL2k5MTU6IEFuZHJvaWQgc3luYyBwb2lu dHMgZm9yIGk5MTUgdjMKPiAgICBkcm0vaTkxNTogYWRkIGZlbmNlcyB0byB0aGUgcmVxdWVzdCBz dHJ1Y3QKPiAgICBkcm0vaTkxNTogc3luYyBmZW5jZSBmaXhlcy91cGRhdGVzCj4gCj4gVG8gZG86 Cj4gICAgKiBFeHRlbmQgZHJpdmVyIGRhdGEgd2l0aCBjb250ZXh0IGlkIC8gcmluZyBpZCAoVEJE KS4KPiAKPiB2MjoKPiAgICAqIENvZGUgcmV2aWV3IGNvbW1lbnRzLiAoQ2hyaXMgV2lsc29uKQo+ ICAgICogcmluZy0+YWRkX3JlcXVlc3QoKSB3YXMgYSB3cm9uZyB0aGluZyB0byBjYWxsIC0gcmVi YXNlIG9uIHRvcCBvZiBKb2huCj4gICAgICBIYXJyaXNvbidzIChkcm0vaTkxNTogRWFybHkgYWxs b2MgcmVxdWVzdCkgdG8gZW5zdXJlIGNvcnJlY3QgcmVxdWVzdCBpcwo+ICAgICAgcHJlc2VudCBi ZWZvcmUgY3JlYXRpbmcgYSBmZW5jZS4KPiAgICAqIFRha2UgYSByZXF1ZXN0IHJlZmVyZW5jZSBm cm9tIHNpZ25hbGxpbmcgcGF0aCBhcyB3ZWxsIHRvIGVuc3VyZSByZXF1ZXN0Cj4gICAgICBzdGlj a3MgYXJvdW5kIHdoaWxlIGZlbmNlIGlzIG9uIHRoZSByZXF1ZXN0IGNvbXBsZXRpb24gd2FpdCBx dWV1ZS4KPiAKPiB2MzoKPiAgICAqIFVzZSB3b3JrZXIgdG8gdW5yZWZlcmVuY2Ugb24gY29tcGxl dGlvbiBzbyBpdCBjYW4gbG9jayB0aGUgbXV0ZXggZnJvbQo+ICAgICAgaW50ZXJydXB0IGNvbnRl eHQuCj4gCj4gU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGlu dGVsLmNvbT4KPiBDYzogSmVzc2UgQmFybmVzIDxqYmFybmVzQHZpcnR1b3VzZ2Vlay5vcmc+Cj4g Q2M6IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+CgpidHcgZm9yIG1l cmdpbmcgd2UgbmVlZCB0byBzcGxpdCB0aGUgY29udmVyc2lvbiB0byBmZW5jZXMgb3V0IGZyb20g dGhlCmFjdHVhbCB1c2Vyc3BhY2UgaW50ZXJmYWNlLiBBbmQgaW1vIHdlIHNob3VsZCByZXBsYWNl IGEgbG90IG9mIG91cgpleGlzdGluZyB1c2FnZSBvZiBpOTE1X2dlbV9yZXF1ZXN0IHdpdGggZmVu Y2VzIHdpdGhpbiB0aGUgZHJpdmVyLCB0b28uIE5vdAp0YWNrZWQgb24gdGhlIHNpZGUgbGlrZSBp biB5b3VyIHBhdGNoIGhlcmUuIEFsbCB0aGUgcmVjZW50IHJlZmFjdG9yaW5nCmhhdmUgYmVlbiBh aW1pbmcgdG8gbWF0Y2ggaTkxNSByZXF1ZXN0cyB0byB0aGUgaW50ZXJuYWwgZmVuY2UgaW50ZXJm YWNlcywKc28gd2Ugc2hvdWxkIGJlIHByZXR0eSBtdWNoIHRoZXJlLgoKV2UgYWxzbyBuZWVkIHRo aXMgdG8gYmUgYWJsZSB0byBpbnRlZ3JhdGUgd2l0aCB0aGUgc2NoZWR1bGVyIHByb3Blcmx5IC0g aWYKdGhhdCBuZWVkcyB0byBkZWFsIGJvdGggd2l0aCBmZW5jZXMgYW5kIGk5MTUgcmVxdWVzdHMg c2VwYXJhdGVseSBpdCdsbCBiZQphIGJpdCBtb3JlIG1lc3N5LiBJZiBpdCdzIGFsbCBqdXN0IGZl bmNlcyB0aGUgY29kZSBzaG91bGQgYmUgc3RyZWFtbGluZWQgYQpsb3QuCgpTb3JyeSBmb3Igc3Bv dHRpbmcgdGhpcyBvbmx5IGp1c3Qgbm93LCBJJ3ZlIHRob3VnaHQgSmVzc2UncyBvbGQgcGF0Y2hl cwpoYWQgdGhpcyBhbHJlYWR5IGFuZCB5b3UndmUgY2FycmllZCB0aGF0IGFwcHJvYWNoIG92ZXIu Ci1EYW5pZWwKCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcgICAgICAgICAg ICAgICB8ICAxNCArKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAg ICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAg fCAgMjcgKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyB8 ICAyNCArKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeW5jLmMgICAgICAgICAgIHwg MjU0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGluY2x1ZGUvdWFwaS9kcm0vaTkx NV9kcm0uaCAgICAgICAgICAgICAgICB8ICAgOCArLQo+ICA2IGZpbGVzIGNoYW5nZWQsIDMyNSBp bnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9zeW5jLmMKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcKPiBpbmRleCA0 ZTM5YWIzLi5hYmFmZTY4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25m aWcKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnCj4gQEAgLTQzLDYgKzQzLDIw IEBAIGNvbmZpZyBEUk1fSTkxNV9LTVMKPiAgCj4gIAkgIElmIGluIGRvdWJ0LCBzYXkgIlkiLgo+ ICAKPiArY29uZmlnIERSTV9JOTE1X1NZTkMKPiArCWJvb2wgIkVuYWJsZSBleHBsaWNpdCBzeW5j IHN1cHBvcnQiCj4gKwlkZXBlbmRzIG9uIERSTV9JOTE1Cj4gKwlkZWZhdWx0IHkgaWYgU1RBR0lO Rwo+ICsJc2VsZWN0IFNUQUdJTkcKPiArCXNlbGVjdCBBTkRST0lECj4gKwlzZWxlY3QgU1lOQwo+ ICsJaGVscAo+ICsJICBDaG9vc2UgdGhpcyBvcHRpb24gdG8gZW5hYmxlIEFuZHJvaWQgbmF0aXZl IHN5bmMgc3VwcG9ydCBhbmQgdGhlCj4gKwkgIGNvcnJlc3BvbmRpbmcgaTkxNSBkcml2ZXIgY29k ZSB0byBleHBvc2UgaXQuICBTbGlnaHRseSBpbmNyZWFzZXMKPiArCSAgZHJpdmVyIHNpemUgYW5k IHB1bGxzIGluIHN5bmMgc3VwcG9ydCBmcm9tIHN0YWdpbmcuCj4gKwo+ICsJICBJZiBpbiBkb3Vi dCwgc2F5ICJZIi4KPiArCj4gIGNvbmZpZyBEUk1fSTkxNV9GQkRFVgo+ICAJYm9vbCAiRW5hYmxl IGxlZ2FjeSBmYmRldiBzdXBwb3J0IGZvciB0aGUgbW9kZXNldHRpbmcgaW50ZWwgZHJpdmVyIgo+ ICAJZGVwZW5kcyBvbiBEUk1fSTkxNQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gaW5kZXggMTZlM2Rj My4uYmNmZjQ4MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gQEAgLTU4LDYgKzU4LDcgQEAg aTkxNS15ICs9IGludGVsX2F1ZGlvLm8gXAo+ICAJICBpbnRlbF9zcHJpdGUubwo+ICBpOTE1LSQo Q09ORklHX0FDUEkpCQkrPSBpbnRlbF9hY3BpLm8gaW50ZWxfb3ByZWdpb24ubwo+ICBpOTE1LSQo Q09ORklHX0RSTV9JOTE1X0ZCREVWKQkrPSBpbnRlbF9mYmRldi5vCj4gK2k5MTUtJChDT05GSUdf RFJNX0k5MTVfU1lOQykJKz0gaTkxNV9zeW5jLm8KPiAgCj4gICMgbW9kZXNldHRpbmcgb3V0cHV0 L2VuY29kZXIgY29kZQo+ICBpOTE1LXkgKz0gZHZvX2NoNzAxNy5vIFwKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPiBpbmRleCAwMjNmNDIyLi5jNGQyNTRjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCj4gQEAgLTQ5LDYgKzQ5LDcgQEAKPiAgI2luY2x1ZGUgPGxpbnV4L2ludGVsLWlvbW11 Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9rcmVmLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9wbV9xb3Mu aD4KPiArI2luY2x1ZGUgPGxpbnV4L2ZlbmNlLmg+Cj4gIAo+ICAvKiBHZW5lcmFsIGN1c3RvbWl6 YXRpb246Cj4gICAqLwo+IEBAIC0yMDkyLDYgKzIwOTMsMTUgQEAgc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0IHsKPiAgCXN0cnVjdCBsaXN0X2hlYWQgY2xpZW50X2xpc3Q7Cj4gIAo+ICAJdWlu dDMyX3QgdW5pcTsKPiArCj4gKyNpZmRlZiBDT05GSUdfRFJNX0k5MTVfU1lOQwo+ICsJLyogY29y ZSBmZW5jZSBvYmogZm9yIHRoaXMgcmVxdWVzdCwgbWF5IGJlIGV4cG9ydGVkICovCj4gKwlzdHJ1 Y3QgZmVuY2UgZmVuY2U7Cj4gKwo+ICsJd2FpdF9xdWV1ZV90IHdhaXQ7Cj4gKwo+ICsJc3RydWN0 IHdvcmtfc3RydWN0IHVucmVmX3dvcms7Cj4gKyNlbmRpZgo+ICB9Owo+ICAKPiAgdm9pZCBpOTE1 X2dlbV9yZXF1ZXN0X2ZyZWUoc3RydWN0IGtyZWYgKnJlcV9yZWYpOwo+IEBAIC0yNTgzLDYgKzI1 OTMsMjMgQEAgdm9pZCBpOTE1X2luaXRfdm0oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ICB2b2lkIGk5MTVfZ2VtX2ZyZWVfb2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAq b2JqKTsKPiAgdm9pZCBpOTE1X2dlbV92bWFfZGVzdHJveShzdHJ1Y3QgaTkxNV92bWEgKnZtYSk7 Cj4gIAo+ICsvKiBpOTE1X3N5bmMuYyAqLwo+ICtzdHJ1Y3Qgc3luY19mZW5jZTsKPiArCj4gKyNp ZmRlZiBDT05GSUdfRFJNX0k5MTVfU1lOQwo+ICtpbnQgaTkxNV9jcmVhdGVfc3luY19mZW5jZV9y aW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gKwkJCQlzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqY3R4LAo+ICsJCQkJc3RydWN0IHN5bmNfZmVuY2UgKipzeW5jX2ZlbmNlLCBpbnQgKmZl bmNlX2ZkKTsKPiArI2Vsc2UKPiArc3RhdGljIGlubGluZQo+ICtpbnQgaTkxNV9jcmVhdGVfc3lu Y19mZW5jZV9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gKwkJCQlzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY3R4LAo+ICsJCQkJc3RydWN0IHN5bmNfZmVuY2UgKipzeW5jX2ZlbmNl LCBpbnQgKmZlbmNlX2ZkKQo+ICt7Cj4gKwlyZXR1cm4gLUVOT0RFVjsKPiArfQo+ICsjZW5kaWYK PiArCj4gICNkZWZpbmUgUElOX01BUFBBQkxFIDB4MQo+ICAjZGVmaW5lIFBJTl9OT05CTE9DSyAw eDIKPiAgI2RlZmluZSBQSU5fR0xPQkFMIDB4NAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9leGVjYnVmZmVyLmMKPiBpbmRleCAyYTNkMWE5Li5iMDQxNTdhIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IEBAIC0zMiw2ICszMiw3IEBA Cj4gICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCj4gICNpbmNsdWRlICJpbnRlbF9kcnYuaCIKPiAg I2luY2x1ZGUgPGxpbnV4L2RtYV9yZW1hcHBpbmcuaD4KPiArI2luY2x1ZGUgIi4uLy4uLy4uL3N0 YWdpbmcvYW5kcm9pZC9zeW5jLmgiCj4gIAo+ICAjZGVmaW5lICBfX0VYRUNfT0JKRUNUX0hBU19Q SU4gKDE8PDMxKQo+ICAjZGVmaW5lICBfX0VYRUNfT0JKRUNUX0hBU19GRU5DRSAoMTw8MzApCj4g QEAgLTEzNTYsNiArMTM1Nyw4IEBAIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCXUzMiBmbGFnczsKPiAgCWludCByZXQ7Cj4gIAli b29sIG5lZWRfcmVsb2NzOwo+ICsJc3RydWN0IHN5bmNfZmVuY2UgKnN5bmNfZmVuY2UgPSBOVUxM Owo+ICsJaW50IGZlbmNlX2ZkID0gLTE7Cj4gIAo+ICAJaWYgKCFpOTE1X2dlbV9jaGVja19leGVj YnVmZmVyKGFyZ3MpKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+IEBAIC0xNTA5LDggKzE1MTIsMjkg QEAgaTkxNV9nZW1fZG9fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpk YXRhLAo+ICAJaWYgKHJldCkKPiAgCQlnb3RvIHJlcV9lcnI7Cj4gIAo+ICsJaWYgKGFyZ3MtPmZs YWdzICYgSTkxNV9FWEVDX0ZFTkNFX09VVCkgewo+ICsJCXJldCA9IGk5MTVfY3JlYXRlX3N5bmNf ZmVuY2VfcmluZyhyaW5nLCBjdHgsCj4gKwkJCQkJCSAgJnN5bmNfZmVuY2UsICZmZW5jZV9mZCk7 Cj4gKwkJaWYgKHJldCkKPiArCQkJZ290byByZXFfZXJyOwo+ICsJfQo+ICsKPiAgCXJldCA9IGRl dl9wcml2LT5ndC5kb19leGVjYnVmKGRldiwgZmlsZSwgcmluZywgY3R4LCBhcmdzLAo+ICAJCQkJ ICAgICAgJmViLT52bWFzLCBiYXRjaF9vYmosIGV4ZWNfc3RhcnQsIGZsYWdzKTsKPiArCWlmIChy ZXQpCj4gKwkJZ290byBleGVjX2VycjsKPiArCj4gKwlpZiAoc3luY19mZW5jZSkgewo+ICsJCXN5 bmNfZmVuY2VfaW5zdGFsbChzeW5jX2ZlbmNlLCBmZW5jZV9mZCk7Cj4gKwkJYXJncy0+cnN2ZDIg PSBmZW5jZV9mZDsKPiArCQlzeW5jX2ZlbmNlID0gTlVMTDsKPiArCX0KPiArCj4gK2V4ZWNfZXJy Ogo+ICsJaWYgKHN5bmNfZmVuY2UpIHsKPiArCQlmcHV0KHN5bmNfZmVuY2UtPmZpbGUpOwo+ICsJ CXB1dF91bnVzZWRfZmQoZmVuY2VfZmQpOwo+ICsJfQo+ICAKPiAgcmVxX2VycjoKPiAgCS8qCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3luYy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9zeW5jLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAw MDAwMDAuLjc3YjdiYzkKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9zeW5jLmMKPiBAQCAtMCwwICsxLDI1NCBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQg wqkgMjAxMy0yMDE0IEludGVsIENvcnBvcmF0aW9uCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMg aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh Cj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiArICogdGhl IHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUs IHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNo ZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj ZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQg aW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdh cmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VU IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U LiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERF UlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklM SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0Us IEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+ICsgKiBJTiBUSEUgU09GVFdBUkUu Cj4gKyAqCj4gKyAqIEF1dGhvcnM6Cj4gKyAqICAgIEplc3NlIEJhcm5lcyA8amJhcm5lc0B2aXJ0 dW91c2dlZWsub3JnPgo+ICsgKiAgICBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50 ZWwuY29tPgo+ICsgKgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICsjaW5j bHVkZSA8ZHJtL2RybV92bWFfbWFuYWdlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+ Cj4gKyNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICsjaW5jbHVkZSAiaTkxNV90cmFjZS5oIgo+ICsj aW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gKyNpbmNsdWRlIDxsaW51eC9vb20uaD4KPiArI2luY2x1 ZGUgPGxpbnV4L3NobWVtX2ZzLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gKyNpbmNs dWRlIDxsaW51eC9zd2FwLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9wY2kuaD4KPiArI2luY2x1ZGUg PGxpbnV4L2RtYS1idWYuaD4KPiArI2luY2x1ZGUgIi4uLy4uLy4uL3N0YWdpbmcvYW5kcm9pZC9z eW5jLmgiCj4gKwo+ICtzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGZlbmNlX2xvY2spOwo+ICsKPiAr LyoKPiArICogaTkxNSBBbmRyb2lkIG5hdGl2ZSBzeW5jIGZlbmNlcy4KPiArICoKPiArICogV2Ug aW1wbGVtZW50IHN5bmMgcG9pbnRzIGluIHRlcm1zIG9mIGk5MTUgc2Vxbm9zLiBUaGV5J3JlIGV4 cG9zZWQgdGhyb3VnaAo+ICsgKiB0aGUgRFJNX0lPQ1RMX0k5MTVfR0VNX0VYRUNCVUZGRVIyIGlv Y3RsLCBhbmQgY2FuIGJlIG1peGVkIGFuZCBtYXRjaGVkCj4gKyAqIHdpdGggb3RoZXIgQW5kcm9p ZCB0aW1lbGluZXMgYW5kIGFnZ3JlZ2F0ZWQgaW50byBzeW5jX2ZlbmNlcywgZXRjLgo+ICsgKgo+ ICsgKiBUT0RPOgo+ICsgKiAgICogRGlzcGxheSBlbmdpbmUgZmVuY2VzLgo+ICsgKiAgICogRXh0 ZW5kIGRyaXZlciBkYXRhIHdpdGggY29udGV4dCBpZCAvIHJpbmcgaWQuCj4gKyAqLwo+ICsKPiAr I2RlZmluZSB0b19pOTE1X3JlcXVlc3QoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCwgZmVuY2UpCj4gKwo+ICtzdGF0aWMgY29uc3QgY2hhciAqaTkxNV9mZW5j ZV9nZXRfZHJpdmVyX25hbWUoc3RydWN0IGZlbmNlICpmZW5jZSkKPiArewo+ICsJcmV0dXJuICJp OTE1IjsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IGNoYXIgKmk5MTVfZmVuY2VfcmluZ19nZXRf dGltZWxpbmVfbmFtZShzdHJ1Y3QgZmVuY2UgKmZlbmNlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSA9IHRvX2k5MTVfcmVxdWVzdChmZW5jZSk7Cj4gKwo+ICsJcmV0 dXJuIHJlcS0+cmluZy0+bmFtZTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVx dWVzdF91bnJlZmVyZW5jZV93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICt7Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSA9Cj4gKwkJY29udGFpbmVyX29mKHdv cmssIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCwgdW5yZWZfd29yayk7Cj4gKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gcmVxLT5yaW5nLT5kZXY7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmZGV2 LT5zdHJ1Y3RfbXV0ZXgpOwo+ICsJaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZShyZXEpOwo+ ICsJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gK30KPiArCj4gK3N0YXRpYyBp bnQKPiAraTkxNV9mZW5jZV9yaW5nX2NoZWNrKHdhaXRfcXVldWVfdCAqd2FpdCwgdW5zaWduZWQg bW9kZSwgaW50IGZsYWdzLCB2b2lkICprZXkpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxID0gd2FpdC0+cHJpdmF0ZTsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcgPSByZXEtPnJpbmc7Cj4gKwo+ICsJaWYgKCFpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRl ZChyZXEsIGZhbHNlKSkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlmZW5jZV9zaWduYWxfbG9ja2Vk KCZyZXEtPmZlbmNlKTsKPiArCj4gKwlfX3JlbW92ZV93YWl0X3F1ZXVlKCZyaW5nLT5pcnFfcXVl dWUsIHdhaXQpOwo+ICsJcmluZy0+aXJxX3B1dChyaW5nKTsKPiArCj4gKwlJTklUX1dPUksoJnJl cS0+dW5yZWZfd29yaywgaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZV93b3JrZXIpOwo+ICsJ c2NoZWR1bGVfd29yaygmcmVxLT51bnJlZl93b3JrKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ ICsKPiArc3RhdGljIGJvb2wgaTkxNV9mZW5jZV9yaW5nX2VuYWJsZV9zaWduYWxpbmcoc3RydWN0 IGZlbmNlICpmZW5jZSkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEg PSB0b19pOTE1X3JlcXVlc3QoZmVuY2UpOwo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZyA9IHJlcS0+cmluZzsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJp bmctPmRldi0+ZGV2X3ByaXZhdGU7Cj4gKwl3YWl0X3F1ZXVlX3QgKndhaXQgPSAmcmVxLT53YWl0 Owo+ICsKPiArCS8qIHF1ZXVlIGZlbmNlIHdhaXQgcXVldWUgb24gaXJxIHF1ZXVlIGFuZCBnZXQg ZmVuY2UgKi8KPiArCWlmIChpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEsIGZhbHNlKSB8 fAo+ICsJICAgIGk5MTVfdGVybWluYWxseV93ZWRnZWQoJmRldl9wcml2LT5ncHVfZXJyb3IpKQo+ ICsJCXJldHVybiBmYWxzZTsKPiArCj4gKwlpZiAoIXJpbmctPmlycV9nZXQocmluZykpCj4gKwkJ cmV0dXJuIGZhbHNlOwo+ICsKPiArCWlmIChpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEs IGZhbHNlKSkgewo+ICsJCXJpbmctPmlycV9wdXQocmluZyk7Cj4gKwkJcmV0dXJuIHRydWU7Cj4g Kwl9Cj4gKwo+ICsJd2FpdC0+ZmxhZ3MgPSAwOwo+ICsJd2FpdC0+cHJpdmF0ZSA9IHJlcTsKPiAr CXdhaXQtPmZ1bmMgPSBpOTE1X2ZlbmNlX3JpbmdfY2hlY2s7Cj4gKwo+ICsJaTkxNV9nZW1fcmVx dWVzdF9yZWZlcmVuY2UocmVxKTsKPiArCj4gKwlfX2FkZF93YWl0X3F1ZXVlKCZyaW5nLT5pcnFf cXVldWUsIHdhaXQpOwo+ICsKPiArCXJldHVybiB0cnVlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9v bCBpOTE1X2ZlbmNlX3Jpbmdfc2lnbmFsZWQoc3RydWN0IGZlbmNlICpmZW5jZSkKPiArewo+ICsJ c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEgPSB0b19pOTE1X3JlcXVlc3QoZmVuY2Up Owo+ICsKPiArCXJldHVybiBpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEsIGZhbHNlKTsK PiArfQo+ICsKPiArc3RhdGljIHNpZ25lZCBsb25nCj4gK2k5MTVfZmVuY2VfcmluZ193YWl0KHN0 cnVjdCBmZW5jZSAqZmVuY2UsIGJvb2wgaW50ciwgc2lnbmVkIGxvbmcgdGltZW91dF9qcykKPiAr ewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEgPSB0b19pOTE1X3JlcXVlc3Qo ZmVuY2UpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmVxLT5yaW5n LT5kZXYtPmRldl9wcml2YXRlOwo+ICsJaW50IHJldDsKPiArCXM2NCB0aW1lb3V0Owo+ICsKPiAr CXRpbWVvdXQgPSBqaWZmaWVzX3RvX25zZWNzKHRpbWVvdXRfanMpOwo+ICsKPiArCXJldCA9IF9f aTkxNV93YWl0X3JlcXVlc3QocmVxLAo+ICsJCQkJICBhdG9taWNfcmVhZCgmZGV2X3ByaXYtPmdw dV9lcnJvci5yZXNldF9jb3VudGVyKSwKPiArCQkJCSAgaW50ciwgJnRpbWVvdXQsIE5VTEwpOwo+ ICsJaWYgKHJldCA9PSAtRVRJTUUpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJcmV0dXJuIHJldDsK PiArfQo+ICsKPiArc3RhdGljIGludAo+ICtpOTE1X2ZlbmNlX3JpbmdfZmlsbF9kcml2ZXJfZGF0 YShzdHJ1Y3QgZmVuY2UgKmZlbmNlLCB2b2lkICpkYXRhLCBpbnQgc2l6ZSkKPiArewo+ICsJc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEgPSB0b19pOTE1X3JlcXVlc3QoZmVuY2UpOwo+ ICsKPiArCWlmIChzaXplIDwgc2l6ZW9mKHJlcS0+c2Vxbm8pKQo+ICsJCXJldHVybiAtRU5PTUVN Owo+ICsKPiArCW1lbWNweShkYXRhLCAmcmVxLT5zZXFubywKPiArCSAgICAgICBzaXplb2YocmVx LT5zZXFubykpOwo+ICsKPiArCXJldHVybiBzaXplb2YocmVxLT5zZXFubyk7Cj4gK30KPiArCj4g K3N0YXRpYyB2b2lkIGk5MTVfZmVuY2VfcmluZ192YWx1ZV9zdHIoc3RydWN0IGZlbmNlICpmZW5j ZSwgY2hhciAqc3RyLCBpbnQgc2l6ZSkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEgPSB0b19pOTE1X3JlcXVlc3QoZmVuY2UpOwo+ICsKPiArCXNucHJpbnRmKHN0ciwg c2l6ZSwgIiV1IiwgcmVxLT5zZXFubyk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkCj4gK2k5MTVf ZmVuY2VfcmluZ190aW1lbGluZV92YWx1ZV9zdHIoc3RydWN0IGZlbmNlICpmZW5jZSwgY2hhciAq c3RyLCBpbnQgc2l6ZSkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEg PSB0b19pOTE1X3JlcXVlc3QoZmVuY2UpOwo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZyA9IHJlcS0+cmluZzsKPiArCj4gKwlzbnByaW50ZihzdHIsIHNpemUsICIldSIsIHJpbmctPmdl dF9zZXFubyhyaW5nLCBmYWxzZSkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpOTE1X2ZlbmNl X3JlbGVhc2Uoc3RydWN0IGZlbmNlICpmZW5jZSkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEgPSB0b19pOTE1X3JlcXVlc3QoZmVuY2UpOwo+ICsJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IHJlcS0+cmluZy0+ZGV2Owo+ICsKPiArCW11dGV4X2xvY2soJmRldi0+c3Ry dWN0X211dGV4KTsKPiArCWk5MTVfZ2VtX3JlcXVlc3RfdW5yZWZlcmVuY2UocmVxKTsKPiArCW11 dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0 IGZlbmNlX29wcyBpOTE1X2ZlbmNlX3Jpbmdfb3BzID0gewo+ICsJLmdldF9kcml2ZXJfbmFtZSA9 CWk5MTVfZmVuY2VfZ2V0X2RyaXZlcl9uYW1lLAo+ICsJLmdldF90aW1lbGluZV9uYW1lID0JaTkx NV9mZW5jZV9yaW5nX2dldF90aW1lbGluZV9uYW1lLAo+ICsJLmVuYWJsZV9zaWduYWxpbmcgPQlp OTE1X2ZlbmNlX3JpbmdfZW5hYmxlX3NpZ25hbGluZywKPiArCS5zaWduYWxlZCA9CQlpOTE1X2Zl bmNlX3Jpbmdfc2lnbmFsZWQsCj4gKwkud2FpdCA9CQkJaTkxNV9mZW5jZV9yaW5nX3dhaXQsCj4g KwkuZmlsbF9kcml2ZXJfZGF0YSA9CWk5MTVfZmVuY2VfcmluZ19maWxsX2RyaXZlcl9kYXRhLAo+ ICsJLmZlbmNlX3ZhbHVlX3N0ciA9CWk5MTVfZmVuY2VfcmluZ192YWx1ZV9zdHIsCj4gKwkudGlt ZWxpbmVfdmFsdWVfc3RyID0JaTkxNV9mZW5jZV9yaW5nX3RpbWVsaW5lX3ZhbHVlX3N0ciwKPiAr CS5yZWxlYXNlID0JCWk5MTVfZmVuY2VfcmVsZWFzZQo+ICt9Owo+ICsKPiAraW50IGk5MTVfY3Jl YXRlX3N5bmNfZmVuY2VfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICsJCQkJ c3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKPiArCQkJCXN0cnVjdCBzeW5jX2ZlbmNlICoqc3lu Y19mZW5jZSwgaW50ICpmZW5jZV9mZCkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXE7Cj4gKwlzdHJ1Y3Qgc3luY19mZW5jZSAqc2ZlbmNlOwo+ICsJY2hhciByaW5nX25h bWVbNl0gPSAicmluZzAiOwo+ICsJaW50IGZkOwo+ICsKPiArCWlmICghaW50ZWxfcmluZ19pbml0 aWFsaXplZChyaW5nKSkgewo+ICsJCURSTV9ERUJVRygiUmluZyBub3QgaW5pdGlhbGl6ZWQhXG4i KTsKPiArCQlyZXR1cm4gLUVBR0FJTjsKPiArCX0KPiArCj4gKwlyZXEgPSByaW5nLT5vdXRzdGFu ZGluZ19sYXp5X3JlcXVlc3Q7Cj4gKwlpZiAoV0FSTl9PTl9PTkNFKCFyZXEpKQo+ICsJCXJldHVy biAtRUNBTkNFTEVEOwo+ICsKPiArCWZkID0gZ2V0X3VudXNlZF9mZF9mbGFncyhPX0NMT0VYRUMp Owo+ICsJaWYgKGZkIDwgMCkgewo+ICsJCURSTV9ERUJVRygiTm8gYXZhaWxhYmxlIGZpbGUgZGVz Y3JpcHRvciFcbiIpOwo+ICsJCXJldHVybiBmZDsKPiArCX0KPiArCj4gKwlpOTE1X2dlbV9yZXF1 ZXN0X3JlZmVyZW5jZShyZXEpOwo+ICsKPiArCWZlbmNlX2luaXQoJnJlcS0+ZmVuY2UsICZpOTE1 X2ZlbmNlX3Jpbmdfb3BzLCAmZmVuY2VfbG9jaywKPiArCQkgICBjdHgtPnVzZXJfaGFuZGxlLCBy ZXEtPnNlcW5vKTsKPiArCj4gKwlyaW5nX25hbWVbNF0gKz0gcmluZy0+aWQ7Cj4gKwlzZmVuY2Ug PSBzeW5jX2ZlbmNlX2NyZWF0ZV9kbWEocmluZ19uYW1lLCAmcmVxLT5mZW5jZSk7Cj4gKwlpZiAo IXNmZW5jZSkKPiArCQlnb3RvIGVycjsKPiArCj4gKwkqc3luY19mZW5jZSA9IHNmZW5jZTsKPiAr CSpmZW5jZV9mZCA9IGZkOwo+ICsKPiArCXJldHVybiAwOwo+ICsKPiArZXJyOgo+ICsJaTkxNV9n ZW1fcmVxdWVzdF91bnJlZmVyZW5jZShyZXEpOwo+ICsJcHV0X3VudXNlZF9mZChmZCk7Cj4gKwly ZXR1cm4gLUVOT01FTTsKPiArfQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVf ZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKPiBpbmRleCAyZTU1OWY2ZS4uYzE5 Nzc3MCAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKPiArKysgYi9p bmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKPiBAQCAtMjQ2LDcgKzI0Niw3IEBAIHR5cGVkZWYg c3RydWN0IF9kcm1faTkxNV9zYXJlYSB7Cj4gICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfSFdTX0FE RFIJCURSTV9JT1coRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0hXU19BRERSLCBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX2luaXQpCj4gICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX0lOSVQJCURS TV9JT1coRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9JTklULCBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2luaXQpCj4gICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX0VYRUNCVUZGRVIJRFJN X0lPVyhEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0VYRUNCVUZGRVIsIHN0cnVjdCBk cm1faTkxNV9nZW1fZXhlY2J1ZmZlcikKPiAtI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fRVhF Q0JVRkZFUjIJRFJNX0lPVyhEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0VYRUNCVUZG RVIyLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyKQo+ICsjZGVmaW5lIERSTV9JT0NU TF9JOTE1X0dFTV9FWEVDQlVGRkVSMglEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5 MTVfR0VNX0VYRUNCVUZGRVIyLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyKQo+ICAj ZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9QSU4JCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0Ug KyBEUk1fSTkxNV9HRU1fUElOLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3BpbikKPiAgI2RlZmluZSBE Uk1fSU9DVExfSTkxNV9HRU1fVU5QSU4JRFJNX0lPVyhEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5 MTVfR0VNX1VOUElOLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3VucGluKQo+ICAjZGVmaW5lIERSTV9J T0NUTF9JOTE1X0dFTV9CVVNZCQlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVf R0VNX0JVU1ksIHN0cnVjdCBkcm1faTkxNV9nZW1fYnVzeSkKPiBAQCAtNzE4LDcgKzcxOCw3IEBA IHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgewo+ICAjZGVmaW5lIEk5MTVfRVhFQ19D T05TVEFOVFNfUkVMX1NVUkZBQ0UgKDI8PDYpIC8qIGdlbjQvNSBvbmx5ICovCj4gIAlfX3U2NCBm bGFnczsKPiAgCV9fdTY0IHJzdmQxOyAvKiBub3cgdXNlZCBmb3IgY29udGV4dCBpbmZvICovCj4g LQlfX3U2NCByc3ZkMjsKPiArCV9fdTY0IHJzdmQyOyAvKiBub3cgdXNlZCBmb3IgZmVuY2UgZmQg Ki8KPiAgfTsKPiAgCj4gIC8qKiBSZXNldHMgdGhlIFNPIHdyaXRlIG9mZnNldCByZWdpc3RlcnMg Zm9yIHRyYW5zZm9ybSBmZWVkYmFjayBvbiBnZW43LiAqLwo+IEBAIC03NTAsNyArNzUwLDkgQEAg c3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiB7Cj4gICAqLwo+ICAjZGVmaW5lIEk5MTVf RVhFQ19IQU5ETEVfTFVUCQkoMTw8MTIpCj4gIAo+IC0jZGVmaW5lIF9fSTkxNV9FWEVDX1VOS05P V05fRkxBR1MgLShJOTE1X0VYRUNfSEFORExFX0xVVDw8MSkKPiArI2RlZmluZSBJOTE1X0VYRUNf RkVOQ0VfT1VUCQkoMTw8MTMpCj4gKwo+ICsjZGVmaW5lIF9fSTkxNV9FWEVDX1VOS05PV05fRkxB R1MgLShJOTE1X0VYRUNfRkVOQ0VfT1VUPDwxKQo+ICAKPiAgI2RlZmluZSBJOTE1X0VYRUNfQ09O VEVYVF9JRF9NQVNLCSgweGZmZmZmZmZmKQo+ICAjZGVmaW5lIGk5MTVfZXhlY2J1ZmZlcjJfc2V0 X2NvbnRleHRfaWQoZWIyLCBjb250ZXh0KSBcCj4gLS0gCj4gMi4yLjIKPiAKPiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5n IGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gCkRhbmllbCBWZXR0 ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCis0MSAoMCkgNzkgMzY1IDU3 IDQ4IC0gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK