From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 22/50] drm/i915: Allow a context to define its set of engines Date: Mon, 15 Apr 2019 13:19:45 +0100 Message-ID: References: <20190412085410.10392-1-chris@chris-wilson.co.uk> <20190412085410.10392-23-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id C825689688 for ; Mon, 15 Apr 2019 12:19:47 +0000 (UTC) In-Reply-To: <20190412085410.10392-23-chris@chris-wilson.co.uk> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDEyLzA0LzIwMTkgMDk6NTMsIENocmlzIFdpbHNvbiB3cm90ZToKPiBPdmVyIHRoZSBsYXN0 IGZldyB5ZWFycywgd2UgaGF2ZSBkZWJhdGVkIGhvdyB0byBleHRlbmQgdGhlIHVzZXIgQVBJIHRv Cj4gc3VwcG9ydCBhbiBpbmNyZWFzZSBpbiB0aGUgbnVtYmVyIG9mIGVuZ2luZXMsIHRoYXQgbWF5 IGJlIHNwYXJzZSBhbmQKPiBldmVuIGJlIGhldGVyb2dlbmVvdXMgd2l0aGluIGEgY2xhc3MgKG5v dCBhbGwgdmlkZW8gZGVjb2RlcnMgY3JlYXRlZAo+IGVxdWFsKS4gV2Ugc2V0dGxlZCBvbiB1c2lu ZyAoY2xhc3MsIGluc3RhbmNlKSB0dXBsZXMgdG8gaWRlbnRpZnkgYQo+IHNwZWNpZmljIGVuZ2lu ZSwgd2l0aCBhbiBBUEkgZm9yIHRoZSB1c2VyIHRvIGNvbnN0cnVjdCBhIG1hcCBvZiBlbmdpbmVz Cj4gdG8gY2FwYWJpbGl0aWVzLiBJbnRvIHRoaXMgcGljdHVyZSwgd2UgdGhlbiBhZGQgYSBjaGFs bGVuZ2Ugb2YgdmlydHVhbAo+IGVuZ2luZXM7IG9uZSB1c2VyIGVuZ2luZSB0aGF0IG1hcHMgYmVo aW5kIHRoZSBzY2VuZXMgdG8gYW55IG51bWJlciBvZgo+IHBoeXNpY2FsIGVuZ2luZXMuIFRvIGtl ZXAgaXQgZ2VuZXJhbCwgd2Ugd2FudCB0aGUgdXNlciB0byBoYXZlIGZ1bGwKPiBjb250cm9sIG92 ZXIgdGhhdCBtYXBwaW5nLiBUbyB0aGF0IGVuZCwgd2UgYWxsb3cgdGhlIHVzZXIgdG8gY29uc3Ry YWluIGEKPiBjb250ZXh0IHRvIGRlZmluZSB0aGUgc2V0IG9mIGVuZ2luZXMgdGhhdCBpdCBjYW4g YWNjZXNzLCBvcmRlciBmdWxseQo+IGNvbnRyb2xsZWQgYnkgdGhlIHVzZXIgdmlhIChjbGFzcywg aW5zdGFuY2UpLiBXaXRoIHN1Y2ggcHJlY2lzZSBjb250cm9sCj4gaW4gY29udGV4dCBzZXR1cCwg d2UgY2FuIGNvbnRpbnVlIHRvIHVzZSB0aGUgZXhpc3RpbmcgZXhlY2J1ZiB1QUJJIG9mCj4gc3Bl Y2lmeWluZyBhIHNpbmdsZSBpbmRleDsgb25seSBub3cgaXQgZG9lc24ndCBhdXRvbWFnaWNhbGx5 IG1hcCBvbnRvCj4gdGhlIGVuZ2luZXMsIGl0IHVzZXMgdGhlIHVzZXIgZGVmaW5lZCBlbmdpbmUg bWFwIGZyb20gdGhlIGNvbnRleHQuCj4gCj4gVGhlIEk5MTVfRVhFQ19ERUZBVUxUIHNsb3QgaXMg bGVmdCBlbXB0eSwgYW5kIGludmFsaWQgZm9yIHVzZSBieQo+IGV4ZWNidWYuIEl0J3MgdXNlIHdp bGwgYmUgcmV2ZWFsZWQgaW4gdGhlIG5leHQgcGF0Y2guCj4gCj4gdjI6IEZpeHVwIGZyZWVpbmcg b2YgbG9jYWwgb24gc3VjY2VzcyBvZiBnZXRfZW5naW5lcygpCj4gdjM6IEFsbG93IGVtcHR5IGVu Z2luZXNbXQo+IHY0OiBzL25lbmdpbmUvbnVtX2VuZ2luZXMvCj4gdjU6IFJlcGxhY2UgNjQgbGlt aXQgb24gbnVtX2VuZ2luZXMgd2l0aCBhIG5vdGUgdGhhdCBleGVjYnVmIGlzCj4gY3VycmVudGx5 IGxpbWl0ZWQgdG8gb25seSB1c2luZyB0aGUgZmlyc3QgNjQgZW5naW5lcy4KPiAKPiBUZXN0Y2Fz ZTogaWd0L2dlbV9jdHhfZW5naW5lcwo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hy aXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3Vs aW5AaW50ZWwuY29tPgo+IFJldmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3Vs aW5AaW50ZWwuY29tPiAjdjQKPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuYyAgICAgICB8IDIxOSArKysrKysrKysrKysrKysrKy0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaCAgICAgICB8ICAxOCArKwo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dF90eXBlcy5oIHwgICA4ICsKPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyAgICB8ICAgNSArLQo+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV91dGlscy5oICAgICAgICAgICAgIHwgIDM2ICsrKwo+ICAgaW5j bHVkZS91YXBpL2RybS9pOTE1X2RybS5oICAgICAgICAgICAgICAgICAgIHwgIDMxICsrKwo+ICAg NiBmaWxlcyBjaGFuZ2VkLCAzMTAgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKPiAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggOWQzMzI0NDM5ZjFi Li40ZTk0MTE1MDhkZWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fY29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4 dC5jCj4gQEAgLTkwLDcgKzkwLDYgQEAKPiAgICNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KPiAg IAo+ICAgI2luY2x1ZGUgImd0L2ludGVsX2xyY19yZWcuaCIKPiAtI2luY2x1ZGUgImd0L2ludGVs X3dvcmthcm91bmRzLmgiCj4gICAKPiAgICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICAgI2luY2x1 ZGUgImk5MTVfZ2xvYmFscy5oIgo+IEBAIC0xNDMsMTMgKzE0MiwxNyBAQCBzdGF0aWMgdm9pZCBs dXRfY2xvc2Uoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiAgIHN0YXRpYyBzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqCj4gICBsb29rdXBfdXNlcl9lbmdpbmUoc3RydWN0IGk5MTVfZ2VtX2Nv bnRleHQgKmN0eCwgdTE2IGNsYXNzLCB1MTYgaW5zdGFuY2UpCj4gICB7Cj4gLQlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gKwlpZiAoIWk5MTVfZ2VtX2NvbnRleHRfdXNlcl9lbmdp bmVzKGN0eCkpIHsKPiArCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gICAKPiAt CWVuZ2luZSA9IGludGVsX2VuZ2luZV9sb29rdXBfdXNlcihjdHgtPmk5MTUsIGNsYXNzLCBpbnN0 YW5jZSk7Cj4gLQlpZiAoIWVuZ2luZSkKPiAtCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKPiAr CQllbmdpbmUgPSBpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIoY3R4LT5pOTE1LCBjbGFzcywgaW5z dGFuY2UpOwo+ICsJCWlmICghZW5naW5lKQo+ICsJCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsK PiArCj4gKwkJaW5zdGFuY2UgPSBlbmdpbmUtPmlkOwo+ICsJfQo+ICAgCj4gLQlyZXR1cm4gaTkx NV9nZW1fY29udGV4dF9nZXRfZW5naW5lKGN0eCwgZW5naW5lLT5pZCk7Cj4gKwlyZXR1cm4gaTkx NV9nZW1fY29udGV4dF9nZXRfZW5naW5lKGN0eCwgaW5zdGFuY2UpOwo+ICAgfQo+ICAgCj4gICBz dGF0aWMgaW5saW5lIGludCBuZXdfaHdfaWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs IGdmcF90IGdmcCkKPiBAQCAtMjU3LDYgKzI2MCwxNyBAQCBzdGF0aWMgdm9pZCBmcmVlX2VuZ2lu ZXMoc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXMgKmUpCj4gICAJX19mcmVlX2VuZ2luZXMoZSwgZS0+ bnVtX2VuZ2luZXMpOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyB2b2lkIGZyZWVfZW5naW5lc19yY3Uo c3RydWN0IHdvcmtfc3RydWN0ICp3cmspCj4gK3sKPiArCXN0cnVjdCBpOTE1X2dlbV9lbmdpbmVz ICplID0KPiArCQljb250YWluZXJfb2Yod3JrLCBzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lcywgcmN1 LndvcmspOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlLT5pOTE1Owo+ICsK PiArCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJZnJlZV9lbmdpbmVz KGUpOwo+ICsJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArfQo+ICsK PiAgIHN0YXRpYyBzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lcyAqZGVmYXVsdF9lbmdpbmVzKHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gICB7Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lOwo+IEBAIC0xMzg1LDYgKzEzOTksMTkxIEBAIHN0YXRpYyBpbnQgc2V0X3NzZXUo c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+ICAg Cj4gK3N0cnVjdCBzZXRfZW5naW5lcyB7Cj4gKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4 Owo+ICsJc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXMgKmVuZ2luZXM7Cj4gK307Cj4gKwo+ICtzdGF0 aWMgY29uc3QgaTkxNV91c2VyX2V4dGVuc2lvbl9mbiBzZXRfZW5naW5lc19fZXh0ZW5zaW9uc1td ID0gewo+ICt9Owo+ICsKPiArc3RhdGljIGludAo+ICtzZXRfZW5naW5lcyhzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqY3R4LAo+ICsJICAgIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4 dF9wYXJhbSAqYXJncykKPiArewo+ICsJc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVz IF9fdXNlciAqdXNlciA9Cj4gKwkJdTY0X3RvX3VzZXJfcHRyKGFyZ3MtPnZhbHVlKTsKPiArCXN0 cnVjdCBzZXRfZW5naW5lcyBzZXQgPSB7IC5jdHggPSBjdHggfTsKPiArCXVuc2lnbmVkIGludCBu dW1fZW5naW5lcywgbjsKPiArCXU2NCBleHRlbnNpb25zOwo+ICsJaW50IGVycjsKPiArCj4gKwlp ZiAoIWFyZ3MtPnNpemUpIHsgLyogc3dpdGNoIGJhY2sgdG8gbGVnYWN5IHVzZXJfcmluZ19tYXAg Ki8KPiArCQlpZiAoIWk5MTVfZ2VtX2NvbnRleHRfdXNlcl9lbmdpbmVzKGN0eCkpCj4gKwkJCXJl dHVybiAwOwo+ICsKPiArCQlzZXQuZW5naW5lcyA9IGRlZmF1bHRfZW5naW5lcyhjdHgpOwo+ICsJ CWlmIChJU19FUlIoc2V0LmVuZ2luZXMpKQo+ICsJCQlyZXR1cm4gUFRSX0VSUihzZXQuZW5naW5l cyk7Cj4gKwo+ICsJCWdvdG8gcmVwbGFjZTsKPiArCX0KPiArCj4gKwlCVUlMRF9CVUdfT04oIUlT X0FMSUdORUQoc2l6ZW9mKCp1c2VyKSwgc2l6ZW9mKCp1c2VyLT5lbmdpbmVzKSkpOwo+ICsJaWYg KGFyZ3MtPnNpemUgPCBzaXplb2YoKnVzZXIpIHx8Cj4gKwkgICAgIUlTX0FMSUdORUQoYXJncy0+ c2l6ZSwgc2l6ZW9mKCp1c2VyLT5lbmdpbmVzKSkpIHsKPiArCQlEUk1fREVCVUcoIkludmFsaWQg c2l6ZSBmb3IgZW5naW5lIGFycmF5OiAlZFxuIiwKPiArCQkJICBhcmdzLT5zaXplKTsKPiArCQly ZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwkvKgo+ICsJICogTm90ZSB0aGF0IEk5MTVfRVhF Q19SSU5HX01BU0sgbGltaXRzIGV4ZWNidWYgdG8gb25seSB1c2luZyB0aGUKPiArCSAqIGZpcnN0 IDY0IGVuZ2luZXMgZGVmaW5lZCBoZXJlLgo+ICsJICovCj4gKwludW1fZW5naW5lcyA9IChhcmdz LT5zaXplIC0gc2l6ZW9mKCp1c2VyKSkgLyBzaXplb2YoKnVzZXItPmVuZ2luZXMpOwo+ICsKPiAr CXNldC5lbmdpbmVzID0ga21hbGxvYyhzdHJ1Y3Rfc2l6ZShzZXQuZW5naW5lcywgZW5naW5lcywg bnVtX2VuZ2luZXMpLAo+ICsJCQkgICAgICBHRlBfS0VSTkVMKTsKPiArCWlmICghc2V0LmVuZ2lu ZXMpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJc2V0LmVuZ2luZXMtPmk5MTUgPSBjdHgt Pmk5MTU7Cj4gKwlmb3IgKG4gPSAwOyBuIDwgbnVtX2VuZ2luZXM7IG4rKykgewo+ICsJCXN0cnVj dCBpOTE1X2VuZ2luZV9jbGFzc19pbnN0YW5jZSBjaTsKPiArCQlzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmU7Cj4gKwo+ICsJCWlmIChjb3B5X2Zyb21fdXNlcigmY2ksICZ1c2VyLT5lbmdp bmVzW25dLCBzaXplb2YoY2kpKSkgewo+ICsJCQlfX2ZyZWVfZW5naW5lcyhzZXQuZW5naW5lcywg bik7Cj4gKwkJCXJldHVybiAtRUZBVUxUOwo+ICsJCX0KPiArCj4gKwkJaWYgKGNpLmVuZ2luZV9j bGFzcyA9PSAodTE2KUk5MTVfRU5HSU5FX0NMQVNTX0lOVkFMSUQgJiYKPiArCQkgICAgY2kuZW5n aW5lX2luc3RhbmNlID09ICh1MTYpSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJRF9OT05FKSB7Cj4g KwkJCXNldC5lbmdpbmVzLT5lbmdpbmVzW25dID0gTlVMTDsKPiArCQkJY29udGludWU7Cj4gKwkJ fQo+ICsKPiArCQllbmdpbmUgPSBpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIoY3R4LT5pOTE1LAo+ ICsJCQkJCQkgIGNpLmVuZ2luZV9jbGFzcywKPiArCQkJCQkJICBjaS5lbmdpbmVfaW5zdGFuY2Up Owo+ICsJCWlmICghZW5naW5lKSB7Cj4gKwkJCURSTV9ERUJVRygiSW52YWxpZCBlbmdpbmVbJWRd OiB7IGNsYXNzOiVkLCBpbnN0YW5jZTolZCB9XG4iLAoKU3RhbmRhcmRpemUgZWFybHkgb24gIiV1 OiV1IiBmb3IgY2xhc3M6aW5zdGFuY2U/IEFsdGhvdWdoIGluIHRoaXMgCnNwZWNpZmljIGNhc2Ug SSBhbSBub3QgdGhlIGRlYnVnIGlzIHNvIHVzZWZ1bC4gKFRoZXJlIGFyZSBtYW55IG90aGVyIAp3 YXlzIHRoZSBpb2N0bCBjYW4gZmFpbC4pIFNhbWUgZ29lcyBmb3IgdGhlIGVhcmxpZXIgb25lLgoK PiArCQkJCSAgbiwgY2kuZW5naW5lX2NsYXNzLCBjaS5lbmdpbmVfaW5zdGFuY2UpOwo+ICsJCQlf X2ZyZWVfZW5naW5lcyhzZXQuZW5naW5lcywgbik7Cj4gKwkJCXJldHVybiAtRU5PRU5UOwo+ICsJ CX0KPiArCj4gKwkJc2V0LmVuZ2luZXMtPmVuZ2luZXNbbl0gPSBpbnRlbF9jb250ZXh0X2NyZWF0 ZShjdHgsIGVuZ2luZSk7Cj4gKwkJaWYgKCFzZXQuZW5naW5lcy0+ZW5naW5lc1tuXSkgewo+ICsJ CQlfX2ZyZWVfZW5naW5lcyhzZXQuZW5naW5lcywgbik7Cj4gKwkJCXJldHVybiAtRU5PTUVNOwo+ ICsJCX0KPiArCX0KPiArCXNldC5lbmdpbmVzLT5udW1fZW5naW5lcyA9IG51bV9lbmdpbmVzOwo+ ICsKPiArCWVyciA9IC1FRkFVTFQ7Cj4gKwlpZiAoIWdldF91c2VyKGV4dGVuc2lvbnMsICZ1c2Vy LT5leHRlbnNpb25zKSkKPiArCQllcnIgPSBpOTE1X3VzZXJfZXh0ZW5zaW9ucyh1NjRfdG9fdXNl cl9wdHIoZXh0ZW5zaW9ucyksCj4gKwkJCQkJICAgc2V0X2VuZ2luZXNfX2V4dGVuc2lvbnMsCj4g KwkJCQkJICAgQVJSQVlfU0laRShzZXRfZW5naW5lc19fZXh0ZW5zaW9ucyksCj4gKwkJCQkJICAg JnNldCk7Cj4gKwlpZiAoZXJyKSB7Cj4gKwkJZnJlZV9lbmdpbmVzKHNldC5lbmdpbmVzKTsKPiAr CQlyZXR1cm4gZXJyOwo+ICsJfQo+ICsKPiArcmVwbGFjZToKPiArCW11dGV4X2xvY2soJmN0eC0+ aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwlpZiAoYXJncy0+c2l6ZSkKPiArCQlpOTE1X2dl bV9jb250ZXh0X3NldF91c2VyX2VuZ2luZXMoY3R4KTsKPiArCWVsc2UKPiArCQlpOTE1X2dlbV9j b250ZXh0X2NsZWFyX3VzZXJfZW5naW5lcyhjdHgpOwo+ICsJcmN1X3N3YXBfcHJvdGVjdGVkKGN0 eC0+ZW5naW5lcywgc2V0LmVuZ2luZXMsIDEpOwo+ICsJbXV0ZXhfdW5sb2NrKCZjdHgtPmk5MTUt PmRybS5zdHJ1Y3RfbXV0ZXgpOwoKSG0gc28gd2hhdCBpcyB0aGUgbmV3IGVuZ2luZSBsaXN0IG11 dGV4IGZvcj8KCj4gKwo+ICsJSU5JVF9SQ1VfV09SSygmc2V0LmVuZ2luZXMtPnJjdSwgZnJlZV9l bmdpbmVzX3JjdSk7Cj4gKwlxdWV1ZV9yY3Vfd29yayhzeXN0ZW1fd3EsICZzZXQuZW5naW5lcy0+ cmN1KTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludAo+ICtnZXRfZW5n aW5lcyhzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICsJICAgIHN0cnVjdCBkcm1faTkx NV9nZW1fY29udGV4dF9wYXJhbSAqYXJncykKPiArewo+ICsJc3RydWN0IGk5MTVfY29udGV4dF9w YXJhbV9lbmdpbmVzIF9fdXNlciAqdXNlcjsKPiArCXN0cnVjdCBpOTE1X2dlbV9lbmdpbmVzICpl Owo+ICsJc2l6ZV90IG4sIGNvdW50LCBzaXplOwo+ICsJaW50IGVyciA9IDA7Cj4gKwo+ICsJZXJy ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZjdHgtPmVuZ2luZXNfbXV0ZXgpOwo+ICsJaWYg KGVycikKPiArCQlyZXR1cm4gZXJyOwo+ICsKPiArCWlmICghaTkxNV9nZW1fY29udGV4dF91c2Vy X2VuZ2luZXMoY3R4KSkgewo+ICsJCWFyZ3MtPnNpemUgPSAwOwo+ICsJCWdvdG8gdW5sb2NrOwo+ ICsJfQo+ICsKPiArCWUgPSBpOTE1X2dlbV9jb250ZXh0X2VuZ2luZV9saXN0KGN0eCk7Cj4gKwlj b3VudCA9IGUtPm51bV9lbmdpbmVzOwo+ICsKPiArCS8qIEJlIHBhcmFub2lkIGluIGNhc2Ugd2Ug aGF2ZSBhbiBpbXBlZGFuY2UgbWlzbWF0Y2ggKi8KPiArCWlmICghY2hlY2tfc3RydWN0X3NpemUo dXNlciwgZW5naW5lcywgY291bnQsICZzaXplKSkgewo+ICsJCWVyciA9IC1FTk9NRU07Cj4gKwkJ Z290byB1bmxvY2s7Cj4gKwl9Cj4gKwlpZiAodW5saWtlbHkob3ZlcmZsb3dzX3R5cGUoc2l6ZSwg YXJncy0+c2l6ZSkpKSB7CgpJIHdvdWxkbid0IGJvdGhlciB3aXRoIHVubGlrZWx5LCBub25lIG9m IHRoZSBvdGhlciBmYWlsdXJlIG1vZGVzIGRvZXMuCgo+ICsJCWVyciA9IC1FTk9NRU07Cj4gKwkJ Z290byB1bmxvY2s7CgpPciBhYnVzZSBhIGJpdCAtRTJCSUcgZm9yIHRoZSB0d28/Cgo+ICsJfQo+ ICsKPiArCWlmICghYXJncy0+c2l6ZSkgewo+ICsJCWFyZ3MtPnNpemUgPSBzaXplOwo+ICsJCWdv dG8gdW5sb2NrOwo+ICsJfQo+ICsKPiArCWlmIChhcmdzLT5zaXplIDwgc2l6ZSkgewo+ICsJCWVy ciA9IC1FSU5WQUw7Cj4gKwkJZ290byB1bmxvY2s7Cj4gKwl9Cj4gKwo+ICsJdXNlciA9IHU2NF90 b191c2VyX3B0cihhcmdzLT52YWx1ZSk7Cj4gKwlpZiAoIWFjY2Vzc19vayh1c2VyLCBzaXplKSkg ewo+ICsJCWVyciA9IC1FRkFVTFQ7Cj4gKwkJZ290byB1bmxvY2s7Cj4gKwl9Cj4gKwo+ICsJaWYg KHB1dF91c2VyKDAsICZ1c2VyLT5leHRlbnNpb25zKSkgewo+ICsJCWVyciA9IC1FRkFVTFQ7CgpI bSB3aHk/Cgo+ICsJCWdvdG8gdW5sb2NrOwo+ICsJfQo+ICsKPiArCWZvciAobiA9IDA7IG4gPCBj b3VudDsgbisrKSB7Cj4gKwkJc3RydWN0IGk5MTVfZW5naW5lX2NsYXNzX2luc3RhbmNlIGNpID0g ewo+ICsJCQkuZW5naW5lX2NsYXNzID0gSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJRCwKPiArCQkJ LmVuZ2luZV9pbnN0YW5jZSA9IEk5MTVfRU5HSU5FX0NMQVNTX0lOVkFMSURfTk9ORSwKPiArCQl9 Owo+ICsKPiArCQlpZiAoZS0+ZW5naW5lc1tuXSkgewo+ICsJCQljaS5lbmdpbmVfY2xhc3MgPSBl LT5lbmdpbmVzW25dLT5lbmdpbmUtPnVhYmlfY2xhc3M7Cj4gKwkJCWNpLmVuZ2luZV9pbnN0YW5j ZSA9IGUtPmVuZ2luZXNbbl0tPmVuZ2luZS0+aW5zdGFuY2U7Cj4gKwkJfQoKSSB3b3VsZCBiZSB0 ZW1wdGVkIHRvIHB1dCB0aGUgaW52YWxpZCBpbml0aWFsaXplcnMgaW50byB0aGUgZWxzZSBibG9j ay4KCj4gKwo+ICsJCWlmIChjb3B5X3RvX3VzZXIoJnVzZXItPmVuZ2luZXNbbl0sICZjaSwgc2l6 ZW9mKGNpKSkpIHsKCl9fY29weV90b191c2VyIGFmdGVyIGFjY2Vzc19vayBwYXNzZWQ/IE9yIHRo ZXJlIHdlcmUgc29tZSBjaGFuZ2VzIGluIAp0aGlzIGFyZWE/Cgo+ICsJCQllcnIgPSAtRUZBVUxU Owo+ICsJCQlnb3RvIHVubG9jazsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJYXJncy0+c2l6ZSA9IHNp emU7Cj4gKwo+ICt1bmxvY2s6Cj4gKwltdXRleF91bmxvY2soJmN0eC0+ZW5naW5lc19tdXRleCk7 Cj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICAgc3RhdGljIGludCBjdHhfc2V0cGFyYW0oc3Ry dWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZnByaXYsCj4gICAJCQlzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqY3R4LAo+ICAgCQkJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtICph cmdzKQo+IEBAIC0xNDU4LDYgKzE2NTcsMTAgQEAgc3RhdGljIGludCBjdHhfc2V0cGFyYW0oc3Ry dWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZnByaXYsCj4gICAJCXJldCA9IHNldF9wcGd0dChm cHJpdiwgY3R4LCBhcmdzKTsKPiAgIAkJYnJlYWs7Cj4gICAKPiArCWNhc2UgSTkxNV9DT05URVhU X1BBUkFNX0VOR0lORVM6Cj4gKwkJcmV0ID0gc2V0X2VuZ2luZXMoY3R4LCBhcmdzKTsKPiArCQli cmVhazsKPiArCj4gICAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fQkFOX1BFUklPRDoKPiAgIAlk ZWZhdWx0Ogo+ICAgCQlyZXQgPSAtRUlOVkFMOwo+IEBAIC0xNjg4LDYgKzE4OTEsMTAgQEAgaW50 IGk5MTVfZ2VtX2NvbnRleHRfZ2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKPiAgIAkJcmV0ID0gZ2V0X3BwZ3R0KGZpbGVfcHJpdiwgY3R4LCBhcmdzKTsK PiAgIAkJYnJlYWs7Cj4gICAKPiArCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVM6Cj4g KwkJcmV0ID0gZ2V0X2VuZ2luZXMoY3R4LCBhcmdzKTsKPiArCQlicmVhazsKPiArCj4gICAJY2Fz ZSBJOTE1X0NPTlRFWFRfUEFSQU1fQkFOX1BFUklPRDoKPiAgIAlkZWZhdWx0Ogo+ICAgCQlyZXQg PSAtRUlOVkFMOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKPiBpbmRl eCAyNTIzOGY3NTAyODYuLjVhODI3NjljNmZkNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmgKPiBAQCAtMTEyLDYgKzExMiwyNCBAQCBzdGF0aWMgaW5saW5lIHZv aWQgaTkxNV9nZW1fY29udGV4dF9zZXRfZm9yY2Vfc2luZ2xlX3N1Ym1pc3Npb24oc3RydWN0IGk5 MTVfZ2VtXwo+ICAgCV9fc2V0X2JpdChDT05URVhUX0ZPUkNFX1NJTkdMRV9TVUJNSVNTSU9OLCAm Y3R4LT5mbGFncyk7Cj4gICB9Cj4gICAKPiArc3RhdGljIGlubGluZSBib29sCj4gK2k5MTVfZ2Vt X2NvbnRleHRfdXNlcl9lbmdpbmVzKGNvbnN0IHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgp Cj4gK3sKPiArCXJldHVybiB0ZXN0X2JpdChDT05URVhUX1VTRVJfRU5HSU5FUywgJmN0eC0+Zmxh Z3MpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHZvaWQKPiAraTkxNV9nZW1fY29udGV4dF9z ZXRfdXNlcl9lbmdpbmVzKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gK3sKPiArCXNl dF9iaXQoQ09OVEVYVF9VU0VSX0VOR0lORVMsICZjdHgtPmZsYWdzKTsKPiArfQo+ICsKPiArc3Rh dGljIGlubGluZSB2b2lkCj4gK2k5MTVfZ2VtX2NvbnRleHRfY2xlYXJfdXNlcl9lbmdpbmVzKHN0 cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gK3sKPiArCWNsZWFyX2JpdChDT05URVhUX1VT RVJfRU5HSU5FUywgJmN0eC0+ZmxhZ3MpOwo+ICt9Cj4gKwo+ICAgaW50IF9faTkxNV9nZW1fY29u dGV4dF9waW5faHdfaWQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCk7Cj4gICBzdGF0aWMg aW5saW5lIGludCBpOTE1X2dlbV9jb250ZXh0X3Bpbl9od19pZChzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4KQo+ICAgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9jb250ZXh0X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250 ZXh0X3R5cGVzLmgKPiBpbmRleCAzM2U1YTBlMzZlNzUuLjUyODRiNTBhNDc1MSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0X3R5cGVzLmgKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0X3R5cGVzLmgKPiBAQCAtMTM5 LDYgKzEzOSwxNCBAQCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCB7Cj4gICAjZGVmaW5lIENPTlRF WFRfQkFOTkVECQkJMAo+ICAgI2RlZmluZSBDT05URVhUX0NMT1NFRAkJCTEKPiAgICNkZWZpbmUg Q09OVEVYVF9GT1JDRV9TSU5HTEVfU1VCTUlTU0lPTgkyCj4gKyNkZWZpbmUgQ09OVEVYVF9VU0VS X0VOR0lORVMJCTMKPiArCj4gKwkvKioKPiArCSAqIEBudW1fZW5naW5lczogTnVtYmVyIG9mIHVz ZXIgZGVmaW5lZCBlbmdpbmVzIGZvciB0aGlzIGNvbnRleHQKPiArCSAqCj4gKwkgKiBTZWUgQGVu Z2luZXMgZm9yIHRoZSBlbGVtZW50cy4KPiArCSAqLwo+ICsJdW5zaWduZWQgaW50IG51bV9lbmdp bmVzOwoKV2hlcmUgaXMgdGhpcyBzZXQgb3IgdXNlZD8KCj4gICAKPiAgIAkvKioKPiAgIAkgKiBA aHdfaWQ6IC0gdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjb250ZXh0Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IGluZGV4IDY3OWY3YzE1NjFiYS4uZDZj NTIyMGFkZGQwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4 ZWNidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZm ZXIuYwo+IEBAIC0yMTY1LDcgKzIxNjUsMTAgQEAgZWJfc2VsZWN0X2VuZ2luZShzdHJ1Y3QgaTkx NV9leGVjYnVmZmVyICplYiwKPiAgIAl1bnNpZ25lZCBpbnQgaWR4Owo+ICAgCWludCBlcnI7Cj4g ICAKPiAtCWlkeCA9IGViX3NlbGVjdF9sZWdhY3lfcmluZyhlYiwgZmlsZSwgYXJncyk7Cj4gKwlp ZiAoaTkxNV9nZW1fY29udGV4dF91c2VyX2VuZ2luZXMoZWItPmdlbV9jb250ZXh0KSkKPiArCQlp ZHggPSBhcmdzLT5mbGFncyAmIEk5MTVfRVhFQ19SSU5HX01BU0s7Cj4gKwllbHNlCj4gKwkJaWR4 ID0gZWJfc2VsZWN0X2xlZ2FjeV9yaW5nKGViLCBmaWxlLCBhcmdzKTsKPiAgIAo+ICAgCWNlID0g aTkxNV9nZW1fY29udGV4dF9nZXRfZW5naW5lKGViLT5nZW1fY29udGV4dCwgaWR4KTsKPiAgIAlp ZiAoSVNfRVJSKGNlKSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV91 dGlscy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV91dGlscy5oCj4gaW5kZXggMmRiZTg5 MzNiNTBhLi4xNDM2ZmUyZmI1ZjggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV91dGlscy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV91dGlscy5oCj4g QEAgLTI1LDYgKzI1LDkgQEAKPiAgICNpZm5kZWYgX19JOTE1X1VUSUxTX0gKPiAgICNkZWZpbmUg X19JOTE1X1VUSUxTX0gKPiAgIAo+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4gKyNpbmNs dWRlIDxsaW51eC9vdmVyZmxvdy5oPgo+ICsKPiAgICN1bmRlZiBXQVJOX09OCj4gICAvKiBNYW55 IGdjYyBzZWVtIHRvIG5vIHNlZSB0aHJvdWdoIHRoaXMgYW5kIGZhbGwgb3ZlciA6KCAqLwo+ICAg I2lmIDAKPiBAQCAtNzMsNiArNzYsMzkgQEAKPiAgICNkZWZpbmUgb3ZlcmZsb3dzX3R5cGUoeCwg VCkgXAo+ICAgCShzaXplb2YoeCkgPiBzaXplb2YoVCkgJiYgKHgpID4+IEJJVFNfUEVSX1RZUEUo VCkpCj4gICAKPiArc3RhdGljIGlubGluZSBib29sCj4gK19fY2hlY2tfc3RydWN0X3NpemUoc2l6 ZV90IGJhc2UsIHNpemVfdCBhcnIsIHNpemVfdCBjb3VudCwgc2l6ZV90ICpzaXplKQo+ICt7Cj4g KwlzaXplX3Qgc3o7Cj4gKwo+ICsJaWYgKGNoZWNrX211bF9vdmVyZmxvdyhjb3VudCwgYXJyLCAm c3opKQo+ICsJCXJldHVybiBmYWxzZTsKPiArCj4gKwlpZiAoY2hlY2tfYWRkX292ZXJmbG93KHN6 LCBiYXNlLCAmc3opKQo+ICsJCXJldHVybiBmYWxzZTsKPiArCj4gKwkqc2l6ZSA9IHN6Owo+ICsJ cmV0dXJuIHRydWU7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBjaGVja19zdHJ1Y3Rfc2l6ZSgpIC0g Q2FsY3VsYXRlIHNpemUgb2Ygc3RydWN0dXJlIHdpdGggdHJhaWxpbmcgYXJyYXkuCj4gKyAqIEBw OiBQb2ludGVyIHRvIHRoZSBzdHJ1Y3R1cmUuCj4gKyAqIEBtZW1iZXI6IE5hbWUgb2YgdGhlIGFy cmF5IG1lbWJlci4KPiArICogQG46IE51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgYXJyYXkuCj4g KyAqIEBzejogVG90YWwgc2l6ZSBvZiBzdHJ1Y3R1cmUgYW5kIGFycmF5Cj4gKyAqCj4gKyAqIENh bGN1bGF0ZXMgc2l6ZSBvZiBtZW1vcnkgbmVlZGVkIGZvciBzdHJ1Y3R1cmUgQHAgZm9sbG93ZWQg YnkgYW4KPiArICogYXJyYXkgb2YgQG4gQG1lbWJlciBlbGVtZW50cywgbGlrZSBzdHJ1Y3Rfc2l6 ZSgpIGJ1dCByZXBvcnRzCj4gKyAqIHdoZXRoZXIgaXQgb3ZlcmZsb3dlZCwgYW5kIHRoZSByZXN1 bHRhbnQgc2l6ZSBpbiBAc3oKPiArICoKPiArICogUmV0dXJuOiBmYWxzZSBpZiB0aGUgY2FsY3Vs YXRpb24gb3ZlcmZsb3dlZC4KPiArICovCj4gKyNkZWZpbmUgY2hlY2tfc3RydWN0X3NpemUocCwg bWVtYmVyLCBuLCBzeikgXAo+ICsJbGlrZWx5KF9fY2hlY2tfc3RydWN0X3NpemUoc2l6ZW9mKCoo cCkpLCBcCj4gKwkJCQkgICBzaXplb2YoKihwKS0+bWVtYmVyKSArIF9fbXVzdF9iZV9hcnJheSgo cCktPm1lbWJlciksIFwKPiArCQkJCSAgIG4sIHN6KSkKPiArCj4gICAjZGVmaW5lIHB0cl9tYXNr X2JpdHMocHRyLCBuKSAoewkJCQkJXAo+ICAgCXVuc2lnbmVkIGxvbmcgX192ID0gKHVuc2lnbmVk IGxvbmcpKHB0cik7CQkJXAo+ICAgCSh0eXBlb2YocHRyKSkoX192ICYgLUJJVChuKSk7CQkJCQlc Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUvdWFw aS9kcm0vaTkxNV9kcm0uaAo+IGluZGV4IGQ2YWQ0YTE1YjJiOS4uOGUxYmIyMjkyNmU0IDEwMDY0 NAo+IC0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+ICsrKyBiL2luY2x1ZGUvdWFw aS9kcm0vaTkxNV9kcm0uaAo+IEBAIC0xMzYsNiArMTM2LDcgQEAgZW51bSBkcm1faTkxNV9nZW1f ZW5naW5lX2NsYXNzIHsKPiAgIHN0cnVjdCBpOTE1X2VuZ2luZV9jbGFzc19pbnN0YW5jZSB7Cj4g ICAJX191MTYgZW5naW5lX2NsYXNzOyAvKiBzZWUgZW51bSBkcm1faTkxNV9nZW1fZW5naW5lX2Ns YXNzICovCj4gICAJX191MTYgZW5naW5lX2luc3RhbmNlOwo+ICsjZGVmaW5lIEk5MTVfRU5HSU5F X0NMQVNTX0lOVkFMSURfTk9ORSAtMQo+ICAgfTsKPiAgIAo+ICAgLyoqCj4gQEAgLTE1MjIsNiAr MTUyMywyNiBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gewo+ICAgCSAqIFNl ZSBEUk1fSTkxNV9HRU1fVk1fQ1JFQVRFIGFuZCBEUk1fSTkxNV9HRU1fVk1fREVTVFJPWS4KPiAg IAkgKi8KPiAgICNkZWZpbmUgSTkxNV9DT05URVhUX1BBUkFNX1ZNCQkweDkKPiArCj4gKy8qCj4g KyAqIEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTOgo+ICsgKgo+ICsgKiBCaW5kIHRoaXMgY29u dGV4dCB0byBvcGVyYXRlIG9uIHRoaXMgc3Vic2V0IG9mIGF2YWlsYWJsZSBlbmdpbmVzLiBIZW5j ZWZvcnRoLAo+ICsgKiB0aGUgSTkxNV9FWEVDX1JJTkcgc2VsZWN0b3IgZm9yIERSTV9JT0NUTF9J OTE1X0dFTV9FWEVDQlVGRkVSMiBvcGVyYXRlcyBhcwo+ICsgKiBhbiBpbmRleCBpbnRvIHRoaXMg YXJyYXkgb2YgZW5naW5lczsgSTkxNV9FWEVDX0RFRkFVTFQgc2VsZWN0aW5nIGVuZ2luZVswXQo+ ICsgKiBhbmQgdXB3YXJkcy4gU2xvdHMgMC4uLk4gYXJlIGZpbGxlZCBpbiB1c2luZyB0aGUgc3Bl Y2lmaWVkIChjbGFzcywgaW5zdGFuY2UpLgo+ICsgKiBVc2UKPiArICoJZW5naW5lX2NsYXNzOiBJ OTE1X0VOR0lORV9DTEFTU19JTlZBTElELAo+ICsgKgllbmdpbmVfaW5zdGFuY2U6IEk5MTVfRU5H SU5FX0NMQVNTX0lOVkFMSURfTk9ORQo+ICsgKiB0byBzcGVjaWZ5IGEgZ2FwIGluIHRoZSBhcnJh eSB0aGF0IGNhbiBiZSBmaWxsZWQgaW4gbGF0ZXIsIGUuZy4gYnkgYQo+ICsgKiB2aXJ0dWFsIGVu Z2luZSB1c2VkIGZvciBsb2FkIGJhbGFuY2luZy4KPiArICoKPiArICogU2V0dGluZyB0aGUgbnVt YmVyIG9mIGVuZ2luZXMgYm91bmQgdG8gdGhlIGNvbnRleHQgdG8gMCwgYnkgcGFzc2luZyBhIHpl cm8KPiArICogc2l6ZWQgYXJndW1lbnQsIHdpbGwgcmV2ZXJ0IGJhY2sgdG8gZGVmYXVsdCBzZXR0 aW5ncy4KPiArICoKPiArICogU2VlIHN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcy4K PiArICovCj4gKyNkZWZpbmUgSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVMJMHhhCj4gICAvKiBN dXN0IGJlIGtlcHQgY29tcGFjdCAtLSBubyBob2xlcyBhbmQgd2VsbCBkb2N1bWVudGVkICovCj4g ICAKPiAgIAlfX3U2NCB2YWx1ZTsKPiBAQCAtMTU4NSw2ICsxNjA2LDE2IEBAIHN0cnVjdCBkcm1f aTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1IHsKPiAgIAlfX3UzMiByc3ZkOwo+ICAgfTsKPiAg IAo+ICtzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMgewo+ICsJX191NjQgZXh0ZW5z aW9uczsgLyogbGlua2VkIGNoYWluIG9mIGV4dGVuc2lvbiBibG9ja3MsIDAgdGVybWluYXRlcyAq Lwo+ICsJc3RydWN0IGk5MTVfZW5naW5lX2NsYXNzX2luc3RhbmNlIGVuZ2luZXNbMF07Cj4gK30g X19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cj4gKwo+ICsjZGVmaW5lIEk5MTVfREVGSU5FX0NPTlRF WFRfUEFSQU1fRU5HSU5FUyhuYW1lX18sIE5fXykgc3RydWN0IHsgXAo+ICsJX191NjQgZXh0ZW5z aW9uczsgXAo+ICsJc3RydWN0IGk5MTVfZW5naW5lX2NsYXNzX2luc3RhbmNlIGVuZ2luZXNbTl9f XTsgXAo+ICt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpIG5hbWVfXwo+ICsKPiAgIHN0cnVjdCBk cm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZXh0X3NldHBhcmFtIHsKPiAgICNkZWZpbmUgSTkx NV9DT05URVhUX0NSRUFURV9FWFRfU0VUUEFSQU0gMAo+ICAgCXN0cnVjdCBpOTE1X3VzZXJfZXh0 ZW5zaW9uIGJhc2U7Cj4gCgpSZWdhcmRzLAoKVHZydGtvCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeA==