From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Harrison Subject: Re: [PATCH 12/13] drm/i915: Add sync framework support to execbuff IOCTL Date: Mon, 14 Dec 2015 11:46:22 +0000 Message-ID: <566EAC0E.60803@Intel.com> References: <1449839521-21958-1-git-send-email-John.C.Harrison@Intel.com> <1449839521-21958-13-git-send-email-John.C.Harrison@Intel.com> <566AEBD0.3010207@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id CE5436E50B for ; Mon, 14 Dec 2015 03:46:24 -0800 (PST) In-Reply-To: <566AEBD0.3010207@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 , Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org T24gMTEvMTIvMjAxNSAxNToyOSwgVHZydGtvIFVyc3VsaW4gd3JvdGU6Cj4KPgo+IE9uIDExLzEy LzE1IDEzOjEyLCBKb2huLkMuSGFycmlzb25ASW50ZWwuY29tIHdyb3RlOgo+PiBGcm9tOiBKb2hu IEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgo+Pgo+PiBWYXJpb3VzIHByb2pl Y3RzIGRlc2lyZSBhIG1lY2hhbmlzbSBmb3IgbWFuYWdpbmcgZGVwZW5kZW5jaWVzIGJldHdlZW4K Pj4gd29yayBpdGVtcyBhc3luY2hyb25vdXNseS4gVGhpcyBjYW4gYWxzbyBpbmNsdWRlIHdvcmsg aXRlbXMgYWNyb3NzCj4+IGNvbXBsZXRlIGRpZmZlcmVudCBhbmQgaW5kZXBlbmRlbnQgc3lzdGVt cy4gRm9yIGV4YW1wbGUsIGFuCj4+IGFwcGxpY2F0aW9uIHdhbnRzIHRvIHJldHJlaXZlIGEgZnJh bWUgZnJvbSBhIHZpZGVvIGluIGRldmljZSwKPj4gdXNpbmcgaXQgZm9yIHJlbmRlcmluZyBvbiBh IEdQVSB0aGVuIHNlbmQgaXQgdG8gdGhlIHZpZGVvIG91dCBkZXZpY2UKPj4gZm9yIGRpc3BsYXkg YWxsIHdpdGhvdXQgaGF2aW5nIHRvIHN0YWxsIHdhaXRpbmcgZm9yIGNvbXBsZXRpb24gYWxvbmcK Pj4gdGhlIHdheS4gVGhlIHN5bmMgZnJhbWV3b3JrIGFsbG93cyB0aGlzLiBJdCBlbmNhcHN1bGF0 ZXMKPj4gc3luY2hyb25pc2F0aW9uIGV2ZW50cyBpbiBmaWxlIGRlc2NyaXB0b3JzLiBUaGUgYXBw bGljYXRpb24gY2FuCj4+IHJlcXVlc3QgYSBzeW5jIHBvaW50IGZvciB0aGUgY29tcGxldGlvbiBv ZiBlYWNoIHBpZWNlIG9mIHdvcmsuIERyaXZlcnMKPj4gc2hvdWxkIGFsc28gdGFrZSBzeW5jIHBv aW50cyBpbiB3aXRoIGVhY2ggbmV3IHdvcmsgcmVxdWVzdCBhbmQgbm90Cj4+IHNjaGVkdWxlIHRo ZSB3b3JrIHRvIHN0YXJ0IHVudGlsIHRoZSBzeW5jIGhhcyBiZWVuIHNpZ25hbGxlZC4KPj4KPj4g VGhpcyBwYXRjaCBhZGRzIHN5bmMgZnJhbWV3b3JrIHN1cHBvcnQgdG8gdGhlIGV4ZWMgYnVmZmVy IElPQ1RMLiBBCj4+IHN5bmMgcG9pbnQgY2FuIGJlIHBhc3NlZCBpbiB0byBzdGFsbCBleGVjdXRp b24gb2YgdGhlIGJhdGNoIGJ1ZmZlcgo+PiB1bnRpbCBzaWduYWxsZWQuIEFuZCBhIHN5bmMgcG9p bnQgY2FuIGJlIHJldHVybmVkIGFmdGVyIGVhY2ggYmF0Y2gKPj4gYnVmZmVyIHN1Ym1pc3Npb24g d2hpY2ggd2lsbCBiZSBzaWduYWxsZWQgdXBvbiB0aGF0IGJhdGNoIGJ1ZmZlcidzCj4+IGNvbXBs ZXRpb24uCj4+Cj4+IEF0IHByZXNlbnQsIHRoZSBpbnB1dCBzeW5jIHBvaW50IGlzIHNpbXBseSB3 YWl0ZWQgb24gc3luY2hyb25vdXNseQo+PiBpbnNpZGUgdGhlIGV4ZWMgYnVmZmVyIElPQ1RMIGNh bGwuIE9uY2UgdGhlIEdQVSBzY2hlZHVsZXIgYXJyaXZlcywKPj4gdGhpcyB3aWxsIGJlIGhhbmRs ZWQgYXN5bmNocm9ub3VzbHkgaW5zaWRlIHRoZSBzY2hlZHVsZXIgYW5kIHRoZSBJT0NUTAo+PiBj YW4gcmV0dXJuIHdpdGhvdXQgaGF2aW5nIHRvIHdhaXQuCj4+Cj4+IE5vdGUgYWxzbyB0aGF0IHRo ZSBzY2hlZHVsZXIgd2lsbCByZS1vcmRlciB0aGUgZXhlY3V0aW9uIG9mIGJhdGNoCj4+IGJ1ZmZl cnMsIGUuZy4gYmVjYXVzZSBhIGJhdGNoIGJ1ZmZlciBpcyBzdGFsbGVkIG9uIGEgc3luYyBwb2lu dCBhbmQKPj4gY2Fubm90IGJlIHN1Ym1pdHRlZCB5ZXQgYnV0IG90aGVyLCBpbmRlcGVuZGVudCwg YmF0Y2ggYnVmZmVycyBhcmUKPj4gYmVpbmcgcHJlc2VudGVkIHRvIHRoZSBkcml2ZXIuIFRoaXMg bWVhbnMgdGhhdCB0aGUgdGltZWxpbmUgd2l0aGluIHRoZQo+PiBzeW5jIHBvaW50cyByZXR1cm5l ZCBjYW5ub3QgYmUgZ2xvYmFsIHRvIHRoZSBlbmdpbmUuIEluc3RlYWQgdGhleSBtdXN0Cj4+IGJl IGtlcHQgcGVyIGNvbnRleHQgcGVyIGVuZ2luZSAodGhlIHNjaGVkdWxlciBtYXkgbm90IHJlLW9y ZGVyIGJhdGNoZXMKPj4gd2l0aGluIGEgY29udGV4dCkuIEhlbmNlIHRoZSB0aW1lbGluZSBjYW5u b3QgYmUgYmFzZWQgb24gdGhlIGV4aXN0aW5nCj4+IHNlcW5vIHZhbHVlcyBidXQgbXVzdCBiZSBh IG5ldyBpbXBsZW1lbnRhdGlvbi4KPj4KPj4gVGhpcyBwYXRjaCBpcyBhIHBvcnQgb2Ygd29yayBi eSBzZXZlcmFsIHBlb3BsZSB0aGF0IGhhcyBiZWVuIHB1bGxlZAo+PiBhY3Jvc3MgZnJvbSBBbmRy b2lkLiBJdCBoYXMgYmVlbiB1cGRhdGVkIHNldmVyYWwgdGltZXMgYWNyb3NzIHNldmVyYWwKPj4g cGF0Y2hlcy4gUmF0aGVyIHRoYW4gYXR0ZW1wdCB0byBwb3J0IGVhY2ggaW5kaXZpZHVhbCBwYXRj aCwgdGhpcwo+PiB2ZXJzaW9uIGlzIHRoZSBmaW5pc2hlZCBwcm9kdWN0IGFzIGEgc2luZ2xlIHBh dGNoLiBUaGUgdmFyaW91cwo+PiBjb250cmlidXRvcnMvYXV0aG9ycyBhbG9uZyB0aGUgd2F5IChp biBhZGRpdGlvbiB0byBteXNlbGYpIHdlcmU6Cj4+ICAgIFNhdHlhbmFudGhhIFJhbWFHb3BhbCBN IDxyYW1hLmdvcGFsLm0uc2F0eWFuYW50aGFAaW50ZWwuY29tPgo+PiAgICBUdnJ0a28gVXJzdWxp biA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+PiAgICBNaWNoZWwgVGhpZXJyeSA8bWljaGVs LnRoaWVycnlAaW50ZWwuY29tPgo+PiAgICBBcnVuIFNpbHV2ZXJ5IDxhcnVuLnNpbHV2ZXJ5QGxp bnV4LmludGVsLmNvbT4KPj4KPj4gdjI6IE5ldyBwYXRjaCBpbiBzZXJpZXMuCj4+Cj4+IHYzOiBV cGRhdGVkIHRvIHVzZSB0aGUgbmV3ICdzeW5jX2ZlbmNlX2lzX3NpZ25hbGVkJyBBUEkgcmF0aGVy IHRoYW4KPj4gaGF2aW5nIHRvIGtub3cgYWJvdXQgdGhlIGludGVybmFsIG1lYW5pbmcgb2YgdGhl ICdmZW5jZTo6c3RhdHVzJyBmaWVsZAo+PiAod2hpY2ggcmVjZW50bHkgZ290IGludmVydGVkISkg W3dvcmsgYnkgUGV0ZXIgTGF3dGhlcnNdLgo+Pgo+PiBVcGRhdGVkIGFmdGVyIHJldmlldyBjb21t ZW50cyBieSBEYW5pZWwgVmV0dGVyLiBSZW1vdmVkICcjaWZkZWYKPj4gQ09ORklHX1NZTkMnIGFu ZCBhZGQgJ3NlbGVjdCBTWU5DJyB0byB0aGUgS2NvbmZpZyBpbnN0ZWFkLiBNb3ZlZCB0aGUKPj4g ZmQgaW5zdGFsbGF0aW9uIG9mIGZlbmNlcyB0byB0aGUgZW5kIG9mIHRoZSBleGVjYnVmZiBjYWxs IHRvIGluIG9yZGVyCj4+IHRvIHJlbW92ZSB0aGUgbmVlZCB0byB1c2UgJ3N5c19jbG9zZScgdG8g Y2xlYW4gdXAgb24gZmFpbHVyZS4KPj4KPj4gVXBkYXRlZCBhZnRlciByZXZpZXcgY29tbWVudHMg YnkgVHZydGtvIFVyc3VsaW4uIFJlbXZvZWQgdGhlCj4+ICdmZW5jZV9leHRlcm5hbCcgZmxhZyBh cyByZWR1bmRhbnQuIENvdm5lcnRlZCBEUk1fRVJST1JzIHRvCj4+IERSTV9ERUJVR3MuIENoYW5n ZWQgb25lIHNlY29uZCB3YWl0IHRvIGEgd2FpdCBmb3JldmVyIHdoZW4gd2FpdGluZyBvbgo+PiBp bmNvbWluZyBmZW5jZXMuCj4+Cj4+IHY0OiBSZS1pbnN0YXRlZCBtaXNzaW5nIHJldHVybiBvZiBm ZCB0byB1c2VyIGxhbmQgdGhhdCBzb21laG93IGdvdAo+PiBsb3N0IGluIHRoZSBhbnRpLXN5c19j bG9zZSgpIHJlLWZhY3Rvci4KPj4KPj4gRm9yOiBWSVotNTE5MAo+PiBTaWduZWQtb2ZmLWJ5OiBK b2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgo+PiBTaWduZWQtb2ZmLWJ5 OiBQZXRlciBMYXd0aGVycyA8cGV0ZXIubGF3dGhlcnNAaW50ZWwuY29tPgo+PiBDYzogVHZydGtv IFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPj4gQ2M6IERhbmllbCBWZXR0ZXIg PGRhbmllbEBmZndsbC5jaD4KPj4gLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZp ZyAgICAgICAgICAgICAgIHwgIDMgKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggICAgICAgICAgICB8ICA2ICsrCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u YyAgICAgICAgICAgIHwgODkgCj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgfCA5NSAKPj4gKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tCj4+ICAgaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5o ICAgICAgICAgICAgICAgIHwgMTYgKysrKy0KPj4gICA1IGZpbGVzIGNoYW5nZWQsIDIwMCBpbnNl cnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcKPj4gaW5kZXgg MWQ5NmZlMS4uY2I1ZDViMiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvS2Nv bmZpZwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnCj4+IEBAIC0yMiw2ICsy Miw5IEBAIGNvbmZpZyBEUk1fSTkxNQo+PiAgICAgICBzZWxlY3QgQUNQSV9WSURFTyBpZiBBQ1BJ Cj4+ICAgICAgIHNlbGVjdCBBQ1BJX0JVVFRPTiBpZiBBQ1BJCj4+ICAgICAgIHNlbGVjdCBNTVVf Tk9USUZJRVIKPgo+IHNlbGVjdCBNTVVfTk9USUZJRVIgaXMgbm90IHVwc3RyZWFtISA6KQpPb3Bz LiBUaGF0J3MgZnJvbSBhIHBhdGNoIG5vdCBiZWluZyB1cHN0cmVhbWVkLiBJdCBpcyByZXF1aXJl ZCBmb3IgCk9DTDIuMCB3aGljaCBpcyBzb21ldGhpbmcgd2UgYXJlIHVzaW5nIHRvIHRlc3QgdGhl IHNjaGVkdWxlci4KCj4KPj4gKyAgICAjIEFORFJPSUQgaXMgcmVxdWlyZWQgZm9yIFNZTkMKPj4g KyAgICBzZWxlY3QgQU5EUk9JRAo+PiArICAgIHNlbGVjdCBTWU5DCj4+ICAgICAgIGhlbHAKPj4g ICAgICAgICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IGhhdmUgYSBzeXN0ZW0gdGhhdCBoYXMg IkludGVsIEdyYXBoaWNzCj4+ICAgICAgICAgTWVkaWEgQWNjZWxlcmF0b3IiIG9yICJIRCBHcmFw aGljcyIgaW50ZWdyYXRlZCBncmFwaGljcywKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ PiBpbmRleCBkMDEzYzZkLi4xOTRiY2EwIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK Pj4gQEAgLTIyNzgsNiArMjI3OCwxMiBAQCB2b2lkIGk5MTVfZ2VtX3JlcXVlc3Rfbm90aWZ5KHN0 cnVjdCAKPj4gaW50ZWxfZW5naW5lX2NzICpyaW5nLCBib29sIGZlbmNlX2xvY2tlZCk7Cj4+ICAg aW50IGk5MTVfY3JlYXRlX2ZlbmNlX3RpbWVsaW5lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+ ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCj4+ICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwo+PiArc3RydWN0 IHN5bmNfZmVuY2U7Cj4+ICtpbnQgaTkxNV9jcmVhdGVfc3luY19mZW5jZShzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBzeW5jX2ZlbmNl ICoqc3luY19mZW5jZSwgaW50ICpmZW5jZV9mZCk7Cj4+ICt2b2lkIGk5MTVfaW5zdGFsbF9zeW5j X2ZlbmNlX2ZkKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+PiArICAgICAgICAg ICAgICAgIHN0cnVjdCBzeW5jX2ZlbmNlICpzeW5jX2ZlbmNlLCBpbnQgZmVuY2VfZmQpOwo+PiAr Ym9vbCBpOTE1X3NhZmVfdG9faWdub3JlX2ZlbmNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmcsIHN0cnVjdCAKPj4gc3luY19mZW5jZSAqZmVuY2UpOwo+Pgo+PiAgIHN0YXRpYyBpbmxpbmUg Ym9vbCBpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChzdHJ1Y3QgCj4+IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEpCj4+ICAgewo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4+IGluZGV4 IDQ4MTcwMTUuLjI3OWQ3OWYgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+PiBAQCAt MzcsNiArMzcsNyBAQAo+PiAgICNpbmNsdWRlIDxsaW51eC9zd2FwLmg+Cj4+ICAgI2luY2x1ZGUg PGxpbnV4L3BjaS5oPgo+PiAgICNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+Cj4+ICsjaW5jbHVk ZSA8Li4vZHJpdmVycy9hbmRyb2lkL3N5bmMuaD4KPj4KPj4gICAjZGVmaW5lIFJRX0JVR19PTihl eHByKQo+Pgo+PiBAQCAtMjU2MCw3ICsyNTYxLDEzIEBAIHZvaWQgX19pOTE1X2FkZF9yZXF1ZXN0 KHN0cnVjdCAKPj4gZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsCj4+Cj4+ICAgICAgIC8q Cj4+ICAgICAgICAqIEFkZCB0aGUgZmVuY2UgdG8gdGhlIHBlbmRpbmcgbGlzdCBiZWZvcmUgZW1p dHRpbmcgdGhlIAo+PiBjb21tYW5kcyB0bwo+PiAtICAgICAqIGdlbmVyYXRlIGEgc2Vxbm8gbm90 aWZpY2F0aW9uIGludGVycnVwdC4KPj4gKyAgICAgKiBnZW5lcmF0ZSBhIHNlcW5vIG5vdGlmaWNh dGlvbiBpbnRlcnJ1cHQuIFRoaXMgd2lsbCBhbHNvIGVuYWJsZQo+PiArICAgICAqIGludGVycnVw dHMgaWYgJ3NpZ25hbF9yZXF1ZXN0ZWQnIGhhcyBiZWVuIHNldC4KPj4gKyAgICAgKgo+PiArICAg ICAqIEZvciBleGFtcGxlLCBpZiBhbiBleHBvcnRlZCBzeW5jIHBvaW50IGhhcyBiZWVuIHJlcXVl c3RlZCBmb3IgCj4+IHRoaXMKPj4gKyAgICAgKiByZXF1ZXN0IHRoZW4gaXQgY2FuIGJlIHdhaXRl ZCBvbiB3aXRob3V0IHRoZSBkcml2ZXIncyBrbm93bGVkZ2UsCj4+ICsgICAgICogaS5lLiB3aXRo b3V0IGNhbGxpbmcgX19pOTE1X3dhaXRfcmVxdWVzdCgpLiBUaHVzIGludGVycnVwdHMgbXVzdAo+ PiArICAgICAqIGJlIGVuYWJsZWQgZnJvbSB0aGUgc3RhcnQgcmF0aGVyIHRoYW4gb25seSBvbiBk ZW1hbmQuCj4+ICAgICAgICAqLwo+PiAgICAgICBpOTE1X2dlbV9yZXF1ZXN0X3N1Ym1pdChyZXF1 ZXN0KTsKPj4KPj4gQEAgLTI5MDEsNiArMjkwOCw4NiBAQCBzdGF0aWMgdW5zaWduZWQgCj4+IGk5 MTVfZmVuY2VfdGltZWxpbmVfZ2V0X25leHRfc2Vxbm8oc3RydWN0IGk5MTVfZmVuY2VfdGltZWxp bmUgKnQKPj4gICAgICAgcmV0dXJuIHNlcW5vOwo+PiAgIH0KPj4KPj4gK2ludCBpOTE1X2NyZWF0 ZV9zeW5jX2ZlbmNlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+PiArICAgICAg ICAgICAgICAgc3RydWN0IHN5bmNfZmVuY2UgKipzeW5jX2ZlbmNlLCBpbnQgKmZlbmNlX2ZkKQo+ PiArewo+PiArICAgIGNoYXIgcmluZ19uYW1lW10gPSAiaTkxNV9yaW5nMCI7Cj4+ICsgICAgaW50 IGZkOwo+PiArCj4+ICsgICAgZmQgPSBnZXRfdW51c2VkX2ZkX2ZsYWdzKE9fQ0xPRVhFQyk7Cj4+ ICsgICAgaWYgKGZkIDwgMCkgewo+PiArICAgICAgICBEUk1fREVCVUcoIk5vIGF2YWlsYWJsZSBm aWxlIGRlc2NyaXB0b3JzIVxuIik7Cj4+ICsgICAgICAgICpmZW5jZV9mZCA9IC0xOwo+PiArICAg ICAgICByZXR1cm4gZmQ7Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgcmluZ19uYW1lWzldICs9IHJl cS0+cmluZy0+aWQ7Cj4KPiBJIHRoaW5rIHRoaXMgd2lsbCBwb3NzaWJseSBibG93IHVwIGlmIENP TkZJR19ERUJVR19ST0RBVEEgaXMgc2V0LCAKPiB3aGljaCBpcyB0aGUgY2FzZSBvbiBtb3N0IGtl cm5lbHMuCj4KPiBTbyBJIHRoaW5rIHlvdSBuZWVkIHRvIG1ha2UgYSBsb2NhbCBjb3B5IHdpdGgg a3N0cmR1cCBhbmQgZnJlZSBpdCAKPiBhZnRlciBjYWxsaW5nIHN5bmNfZmVuY2VfY3JlYXRlX2Rt YS4KV2hhdCB3aWxsIGJsb3cgdXA/IFRoZSByaW5nX25hbWUgbG9jYWwgaXMgYSBzdGFjayBhcnJh eSBub3QgYSBwb2ludGVyIHRvIAp0aGUgZGF0YSBzZWdtZW50LiBEaWQgeW91IG1pc3MgdGhlICdb XSc/Cgo+Cj4+ICsgICAgKnN5bmNfZmVuY2UgPSBzeW5jX2ZlbmNlX2NyZWF0ZV9kbWEocmluZ19u YW1lLCAmcmVxLT5mZW5jZSk7Cj4+ICsgICAgaWYgKCEqc3luY19mZW5jZSkgewo+PiArICAgICAg ICBwdXRfdW51c2VkX2ZkKGZkKTsKPj4gKyAgICAgICAgKmZlbmNlX2ZkID0gLTE7Cj4+ICsgICAg ICAgIHJldHVybiAtRU5PTUVNOwo+PiArICAgIH0KPj4gKwo+PiArICAgICpmZW5jZV9mZCA9IGZk Owo+PiArCj4+ICsgICAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3ZvaWQgaTkxNV9pbnN0YWxs X3N5bmNfZmVuY2VfZmQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4+ICsgICAg ICAgICAgICAgICAgc3RydWN0IHN5bmNfZmVuY2UgKnN5bmNfZmVuY2UsIGludCBmZW5jZV9mZCkK Pj4gK3sKPj4gKyAgICBzeW5jX2ZlbmNlX2luc3RhbGwoc3luY19mZW5jZSwgZmVuY2VfZmQpOwo+ PiArCj4+ICsgICAgLyoKPj4gKyAgICAgKiBOQjogVGhlIGNvcnJlc3BvbmRpbmcgcHV0IGhhcHBl bnMgYXV0b21hdGljYWxseSBvbiBmaWxlIGNsb3NlCj4+ICsgICAgICogZnJvbSBzeW5jX2ZlbmNl X3JlbGVhc2UoKSB2aWEgdGhlIGZvcHMgY2FsbGJhY2suCj4+ICsgICAgICovCj4+ICsgICAgZmVu Y2VfZ2V0KCZyZXEtPmZlbmNlKTsKPj4gKwo+PiArICAgIC8qCj4+ICsgICAgICogVGhlIHN5bmMg ZnJhbWV3b3JrIGFkZHMgYSBjYWxsYmFjayB0byB0aGUgZmVuY2UuIFRoZSBmZW5jZQo+PiArICAg ICAqIGZyYW1ld29yayBjYWxscyAnZW5hYmxlX3NpZ25hbGxpbmcnIHdoZW4gYSBjYWxsYmFjayBp cyBhZGRlZC4KPj4gKyAgICAgKiBUaHVzIHRoaXMgZmxhZyBzaG91bGQgaGF2ZSBiZWVuIHNldCBi eSBub3cuIElmIG5vdCB0aGVuCj4+ICsgICAgICogJ2VuYWJsZV9zaWduYWxsaW5nJyBtdXN0IGJl IGNhbGxlZCBleHBsaWNpdGx5IGJlY2F1c2UgZXhwb3J0aW5nCj4+ICsgICAgICogYSBmZW5jZSB0 byB1c2VyIGxhbmQgbWVhbnMgaXQgY2FuIGJlIHdhaXRlZCBvbiBhc3luY2hyb25vdXNseSAKPj4g YW5kCj4+ICsgICAgICogdGh1cyBtdXN0IGJlIHNpZ25hbGxlZCBhc3luY2hyb25vdXNseS4KPj4g KyAgICAgKi8KPj4gKyAgICBXQVJOX09OKCFyZXEtPnNpZ25hbF9yZXF1ZXN0ZWQpOwo+PiArfQo+ PiArCj4+ICtib29sIGk5MTVfc2FmZV90b19pZ25vcmVfZmVuY2Uoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqcmluZywgc3RydWN0IAo+PiBzeW5jX2ZlbmNlICpzeW5jX2ZlbmNlKQo+PiArewo+PiAr ICAgIHN0cnVjdCBmZW5jZSAqZG1hX2ZlbmNlOwo+PiArICAgIHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxOwo+PiArICAgIGludCBpOwo+PiArCj4+ICsgICAgaWYgKHN5bmNfZmVuY2Vf aXNfc2lnbmFsZWQoc3luY19mZW5jZSkpCj4+ICsgICAgICAgIHJldHVybiB0cnVlOwo+PiArCj4+ ICsgICAgZm9yKGkgPSAwOyBpIDwgc3luY19mZW5jZS0+bnVtX2ZlbmNlczsgaSsrKSB7Cj4+ICsg ICAgICAgIGRtYV9mZW5jZSA9IHN5bmNfZmVuY2UtPmNic1tpXS5zeW5jX3B0Owo+PiArCj4+ICsg ICAgICAgIC8qIE5vIG5lZWQgdG8gd29ycnkgYWJvdXQgZGVhZCBwb2ludHM6ICovCj4+ICsgICAg ICAgIGlmIChmZW5jZV9pc19zaWduYWxlZChkbWFfZmVuY2UpKQo+PiArICAgICAgICAgICAgY29u dGludWU7Cj4+ICsKPj4gKyAgICAgICAgLyogQ2FuJ3QgaWdub3JlIG90aGVyIHBlb3BsZSdzIHBv aW50czogKi8KPgo+IE1heWJlIGFkZCAidW5zaWduYWxlZCIgdG8gcXVhbGlmeS4KVGhlIHRlc3Qg YWJvdmUgZmlsdGVycyBvdXQgYW55dGhpbmcgdGhhdCBpcyBzaWduYWxsZWQgKG9yIGVycm9yZWQp LiAKU3RhdGluZyB0aGF0IGFnYWluIG9uIGVhY2ggc3Vic2VxdWVudCB0ZXN0IHNlZW1zIHVubmVj ZXNzYXJpbHkgdmVyYm9zZS4KCj4KPj4gKyAgICAgICAgaWYoZG1hX2ZlbmNlLT5vcHMgIT0gJmk5 MTVfZ2VtX3JlcXVlc3RfZm9wcykKPj4gKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKPj4gKwo+ PiArICAgICAgICByZXEgPSBjb250YWluZXJfb2YoZG1hX2ZlbmNlLCB0eXBlb2YoKnJlcSksIGZl bmNlKTsKPj4gKwo+PiArICAgICAgICAvKiBDYW4ndCBpZ25vcmUgcG9pbnRzIG9uIG90aGVyIHJp bmdzOiAqLwo+PiArICAgICAgICBpZiAocmVxLT5yaW5nICE9IHJpbmcpCj4+ICsgICAgICAgICAg ICByZXR1cm4gZmFsc2U7Cj4+ICsKPj4gKyAgICAgICAgLyogU2FtZSByaW5nIG1lYW5zIGd1YXJh bnRlZWQgdG8gYmUgaW4gb3JkZXIgc28gaWdub3JlIGl0LiAqLwo+PiArICAgIH0KPj4gKwo+PiAr ICAgIHJldHVybiB0cnVlOwo+PiArfQo+PiArCj4+ICAgaW50IGk5MTVfZ2VtX3JlcXVlc3RfYWxs b2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPj4gICAgICAgICAgICAgICAgICBzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY3R4LAo+PiAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqKnJlcV9vdXQpCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZXhlY2J1ZmZlci5jCj4+IGluZGV4IGJmYzRjMTcuLjVmNjI5ZjggMTAwNjQ0Cj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPj4gQEAgLTI2LDYgKzI2 LDcgQEAKPj4gICAgKgo+PiAgICAqLwo+Pgo+PiArI2luY2x1ZGUgPGxpbnV4L3N5c2NhbGxzLmg+ Cj4+ICAgI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4+ICAgI2luY2x1ZGUgPGRybS9pOTE1X2RybS5o Pgo+PiAgICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+PiBAQCAtMzMsNiArMzQsNyBAQAo+PiAgICNp bmNsdWRlICJpbnRlbF9kcnYuaCIKPj4gICAjaW5jbHVkZSA8bGludXgvZG1hX3JlbWFwcGluZy5o Pgo+PiAgICNpbmNsdWRlIDxsaW51eC91YWNjZXNzLmg+Cj4+ICsjaW5jbHVkZSA8Li4vZHJpdmVy cy9hbmRyb2lkL3N5bmMuaD4KPj4KPj4gICAjZGVmaW5lICBfX0VYRUNfT0JKRUNUX0hBU19QSU4g KDE8PDMxKQo+PiAgICNkZWZpbmUgIF9fRVhFQ19PQkpFQ1RfSEFTX0ZFTkNFICgxPDwzMCkKPj4g QEAgLTEzMjIsNiArMTMyNCwzOCBAQCBlYl9nZXRfYmF0Y2goc3RydWN0IGViX3ZtYXMgKmViKQo+ PiAgICAgICByZXR1cm4gdm1hLT5vYmo7Cj4+ICAgfQo+Pgo+PiArc3RhdGljIGludCBpOTE1X2Vh cmx5X2ZlbmNlX3dhaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgaW50IAo+PiBmZW5j ZV9mZCkKPj4gK3sKPj4gKyAgICBzdHJ1Y3Qgc3luY19mZW5jZSAqZmVuY2U7Cj4+ICsgICAgaW50 IHJldCA9IDA7Cj4+ICsKPj4gKyAgICBpZiAoZmVuY2VfZmQgPCAwKSB7Cj4+ICsgICAgICAgIERS TV9ERUJVRygiSW52YWxpZCB3YWl0IGZlbmNlIGZkICVkIG9uIHJpbmcgJWRcbiIsIGZlbmNlX2Zk LAo+PiArICAgICAgICAgICAgICAoaW50KSByaW5nLT5pZCk7Cj4+ICsgICAgICAgIHJldHVybiAx Owo+Cj4gU3VnZ2VzdCBhZGRpbmcga2VybmVsZG9jIGRlc2NyaWJpbmcgcmV0dXJuIHZhbHVlcyBm cm9tIHRoaXMgZnVuY3Rpb24uCj4KPiBJdCB3YXNuJ3QgaW1tZWRpYXRlbHkgY2xlYXIgdG8gbWUg d2hhdCBvbmUgbWVhbnMuClRvIGJlIGhvbmVzdCwgSSB0aGluayB0aGUgb25lIGlzIGxlZnQgb3Zl ciBmcm9tIGFuIGVhcmxpZXIgaXRlcmF0aW9uIG9mIAp0aGUgY29kZSB3aGljaCBkaWQgdGhpbmdz IHNsaWdodGx5IGRpZmZlcmVudGx5LiBJdCBwcm9iYWJseSBjb3VsZCBqdXN0IApyZXR1cm4gemVy byBvciAtZXJyb3IuCgo+IEJ1dCBJIGFtIGFsc28gbm90IHN1cmUgdGhhdCBpbnZhbGlkIGZkIHNo b3VsZG4ndCBiZSBhbiBvdXRyaWdodCBlcnJvciAKPiBpbnN0ZWFkIG9mIGFsbG93aW5nIGV4ZWNi dWYgdG8gY29udGl1ZS4KV2Fzbid0IHN1cmUgaWYgaXQgd2FzIHBvc3NpYmxlIGZvciBhIGZlbmNl IHRvIGJlIGludmFsaWRhdGVkIGJlaGluZCB0aGUgCmJhY2sgb2YgYW4gYXBwbGljYXRpb24uIEFu ZCB5b3UgZG9uJ3Qgd2FudCB0byByZWplY3QgcmVuZGVyaW5nIGZyb20gb25lIAphcHAganVzdCBi ZWNhdXNlIGFub3RoZXIgYXBwIHdlbnQgc3BsYXQuIEkgZ3Vlc3MgZXZlbiBpZiB0aGUgdW5kZXJs eWluZyAKZmVuY2UgaGFzIGJlZW4gZGVzdHJveWVkLCB0aGUgZmQgd2lsbCBzdGlsbCBiZSBwcml2 YXRlIHRvIHRoZSBjdXJyZW50IAphcHAgYW5kIGhlbmNlIHZhbGlkLiBTbyBtYXliZSBpdCBzaG91 bGQganVzdCByZXR1cm4gLUVJTlZBTCBvciBzb21lIHN1Y2ggCm9mIHRoZSBmZCBpdHNlbGYgaXMg dG9hc3QuCgoKPgo+PiArICAgIH0KPj4gKwo+PiArICAgIGZlbmNlID0gc3luY19mZW5jZV9mZGdl dChmZW5jZV9mZCk7Cj4+ICsgICAgaWYgKGZlbmNlID09IE5VTEwpIHsKPj4gKyAgICAgICAgRFJN X0RFQlVHKCJJbnZhbGlkIHdhaXQgZmVuY2UgJWQgb24gcmluZyAlZFxuIiwgZmVuY2VfZmQsCj4+ ICsgICAgICAgICAgICAgIChpbnQpIHJpbmctPmlkKTsKPj4gKyAgICAgICAgcmV0dXJuIDE7Cj4+ ICsgICAgfQo+PiArCj4+ICsgICAgaWYgKCFzeW5jX2ZlbmNlX2lzX3NpZ25hbGVkKGZlbmNlKSkg ewo+Cj4gTWlub3IgY29tbWVudCwgYnV0IGk5MTVfc2FmZV90b19pZ25vcmVfZmVuY2UgY2hlY2tz IHRoaXMgYXMgd2VsbCBzbyAKPiB5b3UgY291bGQgcmVtb3ZlIGl0IGhlcmUuCj4KPj4gKyAgICAg ICAgLyoKPj4gKyAgICAgICAgICogV2FpdCBmb3JldmVyIGZvciB0aGUgZmVuY2UgdG8gYmUgc2ln bmFsbGVkLiBUaGlzIGlzIHNhZmUKPj4gKyAgICAgICAgICogYmVjYXVzZSB0aGUgdGhlIG11dGV4 IGxvY2sgaGFzIG5vdCB5ZXQgYmVlbiBhY3F1aXJlZCBhbmQKPj4gKyAgICAgICAgICogdGhlIHdh aXQgaXMgaW50ZXJydXB0aWJsZS4KPj4gKyAgICAgICAgICovCj4+ICsgICAgICAgIGlmICghaTkx NV9zYWZlX3RvX2lnbm9yZV9mZW5jZShyaW5nLCBmZW5jZSkpCj4+ICsgICAgICAgICAgICByZXQg PSBzeW5jX2ZlbmNlX3dhaXQoZmVuY2UsIC0xKTsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICBzeW5j X2ZlbmNlX3B1dChmZW5jZSk7Cj4+ICsgICAgcmV0dXJuIHJldDsKPj4gK30KPj4gKwo+PiAgIHN0 YXRpYyBpbnQKPj4gICBpOTE1X2dlbV9kb19leGVjYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCj4+ICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9maWxlICpmaWxl LAo+PiBAQCAtMTM0MSw2ICsxMzc1LDE3IEBAIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgCj4+IHZvaWQgKmRhdGEsCj4+ICAgICAgIHUzMiBkaXNwYXRjaF9m bGFnczsKPj4gICAgICAgaW50IHJldDsKPj4gICAgICAgYm9vbCBuZWVkX3JlbG9jczsKPj4gKyAg ICBpbnQgZmRfZmVuY2VfY29tcGxldGUgPSAtMTsKPj4gKyAgICBpbnQgZmRfZmVuY2Vfd2FpdCA9 IGxvd2VyXzMyX2JpdHMoYXJncy0+cnN2ZDIpOwo+PiArICAgIHN0cnVjdCBzeW5jX2ZlbmNlICpz eW5jX2ZlbmNlOwo+PiArCj4+ICsgICAgLyoKPj4gKyAgICAgKiBNYWtlIHN1cmUgYW4gYnJva2Vu IGZlbmNlIGhhbmRsZSBpcyBub3QgcmV0dXJuZWQgbm8gbWF0dGVyCj4+ICsgICAgICogaG93IGVh cmx5IGFuIGVycm9yIG1pZ2h0IGJlIGhpdC4gTm90ZSB0aGF0IHJzdmQyIGhhcyB0byBiZQo+PiAr ICAgICAqIHNhdmVkIGF3YXkgZmlyc3QgYmVjYXVzZSBpdCBpcyBhbHNvIGFuIGlucHV0IHBhcmFt ZXRlciEKPj4gKyAgICAgKi8KPgo+IEluc3RlYWQgb2YgdGhlIDJuZCBzZW50ZW5jZSBtYXliZSBz YXkgc29tZXRoaW5nIGxpa2UgIk5vdGUgdGhhdCB3ZSAKPiBoYXZlIHNhdmVkIHJzdmQyIGFscmVh ZHkgZm9yIGxhdGVyIHVzZSBzaW5jZSBpdCBpcyBhbHNvIGluIGlucHV0IAo+IHBhcmFtZXRlciEi LiBMaWtlIHdyaXR0ZW4gSSB3YXMgZXhwZWN0aW5nIHRoZSBjb2RlIGZvbGxvd2luZyB0aGUgCj4g Y29tbWVudCB0byBkbyB0aGF0LCBhbmQgdGhlbiB3YXMgY29uZnVzZWQgd2hlbiBpdCBkaWRuJ3Qu IE9yIG1heWJlIG15IAo+IGF0dGVudGlvbiBzcGFuIGlzIHRvbyBzaG9ydC4KV2lsbCB1cGRhdGUg dGhlIGNvbW1lbnQgZm9yIHRob3NlIHdobyBjYW4ndCByZW1lbWJlciB3aGF0IHRoZXkgcmVhZCB0 d28gCmxpbmVzIGVhcmxpZXIuLi4KCj4KPj4gKyAgICBpZiAoYXJncy0+ZmxhZ3MgJiBJOTE1X0VY RUNfQ1JFQVRFX0ZFTkNFKQo+PiArICAgICAgICBhcmdzLT5yc3ZkMiA9IChfX3U2NCkgLTE7Cj4+ Cj4+ICAgICAgIGlmICghaTkxNV9nZW1fY2hlY2tfZXhlY2J1ZmZlcihhcmdzKSkKPj4gICAgICAg ICAgIHJldHVybiAtRUlOVkFMOwo+PiBAQCAtMTQyNCw2ICsxNDY5LDE3IEBAIGk5MTVfZ2VtX2Rv X2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgCj4+IHZvaWQgKmRhdGEsCj4+ICAg ICAgICAgICBkaXNwYXRjaF9mbGFncyB8PSBJOTE1X0RJU1BBVENIX1JTOwo+PiAgICAgICB9Cj4+ Cj4+ICsgICAgLyoKPj4gKyAgICAgKiBXaXRob3V0IGEgR1BVIHNjaGVkdWxlciwgYW55IGZlbmNl IHdhaXRzIG11c3QgYmUgZG9uZSB1cCBmcm9udC4KPj4gKyAgICAgKi8KPj4gKyAgICBpZiAoYXJn cy0+ZmxhZ3MgJiBJOTE1X0VYRUNfV0FJVF9GRU5DRSkgewo+PiArICAgICAgICByZXQgPSBpOTE1 X2Vhcmx5X2ZlbmNlX3dhaXQocmluZywgZmRfZmVuY2Vfd2FpdCk7Cj4+ICsgICAgICAgIGlmIChy ZXQgPCAwKQo+PiArICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4gKwo+PiArICAgICAgICBhcmdz LT5mbGFncyAmPSB+STkxNV9FWEVDX1dBSVRfRkVOQ0U7Cj4+ICsgICAgfQo+PiArCj4+ICAgICAg IGludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPj4KPj4gICAgICAgcmV0ID0gaTkxNV9t dXRleF9sb2NrX2ludGVycnVwdGlibGUoZGV2KTsKPj4gQEAgLTE1NzEsOCArMTYyNyw0MSBAQCBp OTE1X2dlbV9kb19leGVjYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIAo+PiB2b2lkICpk YXRhLAo+PiAgICAgICBwYXJhbXMtPmJhdGNoX29iaiAgICAgICAgICAgICAgID0gYmF0Y2hfb2Jq Owo+PiAgICAgICBwYXJhbXMtPmN0eCAgICAgICAgICAgICAgICAgICAgID0gY3R4Owo+Pgo+PiAr ICAgIGlmIChhcmdzLT5mbGFncyAmIEk5MTVfRVhFQ19DUkVBVEVfRkVOQ0UpIHsKPj4gKyAgICAg ICAgLyoKPj4gKyAgICAgICAgICogQ2FsbGVyIGhhcyByZXF1ZXN0ZWQgYSBzeW5jIGZlbmNlLgo+ PiArICAgICAgICAgKiBVc2VyIGludGVycnVwdHMgd2lsbCBiZSBlbmFibGVkIHRvIG1ha2Ugc3Vy ZSB0aGF0Cj4+ICsgICAgICAgICAqIHRoZSB0aW1lbGluZSBpcyBzaWduYWxsZWQgb24gY29tcGxl dGlvbi4KPj4gKyAgICAgICAgICovCj4KPiBJcyBpdCBzaWduYWxlZCBvciBzaWduYWxsZWQ/IFRo ZXJlIGlzIGEgbG90IG9mIHVzYWdlIG9mIGJvdGggCj4gdGhyb3VnaG91dCB0aGUgcGF0Y2hlcyBh bmQgSSBhcyBhIG5vbi1uYXRpdmUgc3BlYWtlciBhbSAKPiBhbXVeSF5IXkhjb25mdXNlZC4gOykK SXQgZGVwZW5kcyB3aGljaCBzaWRlIG9mIHRoZSBBdGxhbnRpYyB5b3UgYXJlIG9uLiBFbmdsaXNo IGhhcyBhIGRvdWJsZSAKbCwgQW1lcmljYW4ganVzdCBhIHNpbmdsZS4gU28gbGFyZ2VseSBpdCBk ZXBlbmRzIHdobyB3cm90ZSB0aGUgCmNvZGUvY29tbWVudCBhbmQgd2hvIChpZiBhbnlvbmUhKSBo YXMgcmV2aWV3ZWQgaXQuCgo+Cj4+ICsgICAgICAgIHJldCA9IGk5MTVfY3JlYXRlX3N5bmNfZmVu Y2UocGFyYW1zLT5yZXF1ZXN0LCAmc3luY19mZW5jZSwKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAmZmRfZmVuY2VfY29tcGxldGUpOwo+PiArICAgICAgICBpZiAocmV0KSB7Cj4+ICsgICAg ICAgICAgICBEUk1fRVJST1IoIkZlbmNlIGNyZWF0aW9uIGZhaWxlZCBmb3IgcmluZyAlZCwgY3R4 ICVwXG4iLAo+PiArICAgICAgICAgICAgICAgICAgcmluZy0+aWQsIGN0eCk7Cj4+ICsgICAgICAg ICAgICBnb3RvIGVycl9iYXRjaF91bnBpbjsKPj4gKyAgICAgICAgfQo+PiArICAgIH0KPj4gKwo+ PiAgICAgICByZXQgPSBkZXZfcHJpdi0+Z3QuZXhlY2J1Zl9zdWJtaXQocGFyYW1zLCBhcmdzLCAm ZWItPnZtYXMpOwo+Pgo+PiArICAgIGlmIChmZF9mZW5jZV9jb21wbGV0ZSAhPSAtMSkgewo+PiAr ICAgICAgICBpZiAocmV0KSB7Cj4+ICsgICAgICAgICAgICBzeW5jX2ZlbmNlX3B1dChzeW5jX2Zl bmNlKTsKPj4gKyAgICAgICAgICAgIHB1dF91bnVzZWRfZmQoZmRfZmVuY2VfY29tcGxldGUpOwo+ PiArICAgICAgICB9IGVsc2Ugewo+PiArICAgICAgICAgICAgLyoKPj4gKyAgICAgICAgICAgICAq IEluc3RhbGwgdGhlIGZlbmNlIGludG8gdGhlIHByZS1hbGxvY2F0ZWQgZmlsZQo+PiArICAgICAg ICAgICAgICogZGVzY3JpcHRvciB0byB0aGUgZmVuY2Ugb2JqZWN0IHNvIHRoYXQgdXNlciBsYW5k Cj4+ICsgICAgICAgICAgICAgKiBjYW4gd2FpdCBvbiBpdC4uLgo+PiArICAgICAgICAgICAgICov Cj4+ICsgICAgICAgICAgICBpOTE1X2luc3RhbGxfc3luY19mZW5jZV9mZChwYXJhbXMtPnJlcXVl c3QsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW5jX2ZlbmNlLCBmZF9mZW5jZV9j b21wbGV0ZSk7Cj4+ICsKPj4gKyAgICAgICAgICAgIC8qIFJldHVybiB0aGUgZmVuY2UgdGhyb3Vn aCB0aGUgcnN2ZDIgZmllbGQgKi8KPj4gKyAgICAgICAgICAgIGFyZ3MtPnJzdmQyID0gKF9fdTY0 KSBmZF9mZW5jZV9jb21wbGV0ZTsKPj4gKyAgICAgICAgfQo+PiArICAgIH0KPj4gKwo+PiAgIGVy cl9iYXRjaF91bnBpbjoKPj4gICAgICAgLyoKPj4gICAgICAgICogRklYTUU6IFdlIGNydWNpYWxs eSByZWx5IHVwb24gdGhlIGFjdGl2ZSB0cmFja2luZyBmb3IgdGhlIAo+PiAocHBndHQpCj4+IEBA IC0xNjAyLDYgKzE2OTEsNyBAQCBwcmVfbXV0ZXhfZXJyOgo+PiAgICAgICAvKiBpbnRlbF9ncHVf YnVzeSBzaG91bGQgYWxzbyBnZXQgYSByZWYsIHNvIGl0IHdpbGwgZnJlZSB3aGVuIAo+PiB0aGUg ZGV2aWNlCj4+ICAgICAgICAqIGlzIHJlYWxseSBpZGxlLiAqLwo+PiAgICAgICBpbnRlbF9ydW50 aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4+ICsKPj4gICAgICAgcmV0dXJuIHJldDsKPj4gICB9Cj4+ Cj4+IEBAIC0xNzA3LDExICsxNzk3LDYgQEAgaTkxNV9nZW1fZXhlY2J1ZmZlcjIoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgCj4+IHZvaWQgKmRhdGEsCj4+ICAgICAgICAgICByZXR1cm4gLUVJTlZB TDsKPj4gICAgICAgfQo+Pgo+PiAtICAgIGlmIChhcmdzLT5yc3ZkMiAhPSAwKSB7Cj4+IC0gICAg ICAgIERSTV9ERUJVRygiZGlydHkgcnZzZDIgZmllbGRcbiIpOwo+PiAtICAgICAgICByZXR1cm4g LUVJTlZBTDsKPj4gLSAgICB9Cj4+IC0KPj4gICAgICAgZXhlYzJfbGlzdCA9IGttYWxsb2Moc2l6 ZW9mKCpleGVjMl9saXN0KSphcmdzLT5idWZmZXJfY291bnQsCj4+ICAgICAgICAgICAgICAgICAg ICBHRlBfVEVNUE9SQVJZIHwgX19HRlBfTk9XQVJOIHwgX19HRlBfTk9SRVRSWSk7Cj4+ICAgICAg IGlmIChleGVjMl9saXN0ID09IE5VTEwpCj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJt L2k5MTVfZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKPj4gaW5kZXggNjdjZWJl Ni4uODZmNzkyMSAxMDA2NDQKPj4gLS0tIGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4+ ICsrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+PiBAQCAtMjUwLDcgKzI1MCw3IEBA IHR5cGVkZWYgc3RydWN0IF9kcm1faTkxNV9zYXJlYSB7Cj4+ICAgI2RlZmluZSBEUk1fSU9DVExf STkxNV9IV1NfQUREUiBEUk1fSU9XKERSTV9DT01NQU5EX0JBU0UgKyAKPj4gRFJNX0k5MTVfSFdT X0FERFIsIHN0cnVjdCBkcm1faTkxNV9nZW1faW5pdCkKPj4gICAjZGVmaW5lIERSTV9JT0NUTF9J OTE1X0dFTV9JTklUIERSTV9JT1coRFJNX0NPTU1BTkRfQkFTRSArIAo+PiBEUk1fSTkxNV9HRU1f SU5JVCwgc3RydWN0IGRybV9pOTE1X2dlbV9pbml0KQo+PiAgICNkZWZpbmUgRFJNX0lPQ1RMX0k5 MTVfR0VNX0VYRUNCVUZGRVIgRFJNX0lPVyhEUk1fQ09NTUFORF9CQVNFICsgCj4+IERSTV9JOTE1 X0dFTV9FWEVDQlVGRkVSLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIpCj4+IC0jZGVm aW5lIERSTV9JT0NUTF9JOTE1X0dFTV9FWEVDQlVGRkVSMiBEUk1fSU9XKERSTV9DT01NQU5EX0JB U0UgKyAKPj4gRFJNX0k5MTVfR0VNX0VYRUNCVUZGRVIyLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4 ZWNidWZmZXIyKQo+PiArI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fRVhFQ0JVRkZFUjIgRFJN X0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIAo+PiBEUk1fSTkxNV9HRU1fRVhFQ0JVRkZFUjIsIHN0 cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIpCj4+ICAgI2RlZmluZSBEUk1fSU9DVExfSTkx NV9HRU1fUElOIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyAKPj4gRFJNX0k5MTVfR0VNX1BJ Tiwgc3RydWN0IGRybV9pOTE1X2dlbV9waW4pCj4+ICAgI2RlZmluZSBEUk1fSU9DVExfSTkxNV9H RU1fVU5QSU4gICAgRFJNX0lPVyhEUk1fQ09NTUFORF9CQVNFICsgCj4+IERSTV9JOTE1X0dFTV9V TlBJTiwgc3RydWN0IGRybV9pOTE1X2dlbV91bnBpbikKPj4gICAjZGVmaW5lIERSTV9JT0NUTF9J OTE1X0dFTV9CVVNZIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyAKPj4gRFJNX0k5MTVfR0VN X0JVU1ksIHN0cnVjdCBkcm1faTkxNV9nZW1fYnVzeSkKPj4gQEAgLTY5NSw3ICs2OTUsNyBAQCBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiB7Cj4+ICAgICAgIF9fdTY0IGZsYWdzOwo+ Pgo+PiAgICAgICBfX3U2NCByc3ZkMTsKPj4gLSAgICBfX3U2NCByc3ZkMjsKPj4gKyAgICBfX3U2 NCByc3ZkMjsgICAgLyogVXNlZCBmb3IgZmVuY2UgZmQgKi8KPj4gICB9Owo+Pgo+PiAgIHN0cnVj dCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgewo+PiBAQCAtNzc2LDcgKzc3NiwxNyBAQCBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIHsKPj4gICAgKi8KPj4gICAjZGVmaW5lIEk5MTVf RVhFQ19SRVNPVVJDRV9TVFJFQU1FUiAgICAgKDE8PDE1KQo+Pgo+PiAtI2RlZmluZSBfX0k5MTVf RVhFQ19VTktOT1dOX0ZMQUdTIC0oSTkxNV9FWEVDX1JFU09VUkNFX1NUUkVBTUVSPDwxKQo+PiAr LyoqIENhbGxlciBzdXBwbGllcyBhIHN5bmMgZmVuY2UgZmQgaW4gdGhlIHJzdmQyIGZpZWxkLgo+ PiArICogV2FpdCBmb3IgaXQgdG8gYmUgc2lnbmFsbGVkIGJlZm9yZSBzdGFydGluZyB0aGUgd29y awo+PiArICovCj4+ICsjZGVmaW5lIEk5MTVfRVhFQ19XQUlUX0ZFTkNFICAgICAgICAoMTw8MTYp Cj4+ICsKPj4gKy8qKiBDYWxsZXIgd2FudHMgYSBzeW5jIGZlbmNlIGZkIGZvciB0aGlzIGV4ZWNi dWZmZXIuCj4+ICsgKiAgSXQgd2lsbCBiZSByZXR1cm5lZCBpbiByc3ZkMgo+PiArICovCj4+ICsj ZGVmaW5lIEk5MTVfRVhFQ19DUkVBVEVfRkVOQ0UgICAgICAgICgxPDwxNykKPj4gKwo+PiArI2Rl ZmluZSBfX0k5MTVfRVhFQ19VTktOT1dOX0ZMQUdTIC0oSTkxNV9FWEVDX0NSRUFURV9GRU5DRTw8 MSkKPj4KPj4gICAjZGVmaW5lIEk5MTVfRVhFQ19DT05URVhUX0lEX01BU0sgICAgKDB4ZmZmZmZm ZmYpCj4+ICAgI2RlZmluZSBpOTE1X2V4ZWNidWZmZXIyX3NldF9jb250ZXh0X2lkKGViMiwgY29u dGV4dCkgXAo+Pgo+Cj4gUmVnYXJkcywKPgo+IFR2cnRrbwo+CgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=