From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 25/32] drm/i915: Allow a context to define its set of engines Date: Wed, 17 Apr 2019 10:50:16 +0100 Message-ID: <29d01378-cca5-95b0-d109-8fb5e75f1630@linux.intel.com> References: <20190417075657.19456-1-chris@chris-wilson.co.uk> <20190417075657.19456-25-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 mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1760189FE8 for ; Wed, 17 Apr 2019 09:50:21 +0000 (UTC) In-Reply-To: <20190417075657.19456-25-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 Ck9uIDE3LzA0LzIwMTkgMDg6NTYsIENocmlzIFdpbHNvbiB3cm90ZToKPiBPdmVyIHRoZSBsYXN0 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 IGxpbWl0ZWQgdG8gb25seSB1c2luZyB0aGUgZmlyc3QgNjQgZW5naW5lcy4KPiB2NjogQWN0dWFs bHkgdXNlIHRoZSBlbmdpbmVzX211dGV4IHRvIGd1YXJkIHRoZSBjdHgtPmVuZ2luZXMuCj4gCj4g VGVzdGNhc2U6IGlndC9nZW1fY3R4X2VuZ2luZXMKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxz b24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRr by51cnN1bGluQGludGVsLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2NvbnRleHQuYyAgICAgICB8IDIxOSArKysrKysrKysrKysrKysrKy0KPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaCAgICAgICB8ICAxOCArKwo+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dF90eXBlcy5oIHwgICAxICsKPiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyAgICB8ICAgNSArLQo+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV91dGlscy5oICAgICAgICAgICAgIHwgIDM2ICsrKwo+ICAg aW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oICAgICAgICAgICAgICAgICAgIHwgIDMxICsrKwo+ ICAgNiBmaWxlcyBjaGFuZ2VkLCAzMDMgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKPiAK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggMjE3ZDRmZTAz NDlkLi5iNGI3YTJlZWUxYzkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fY29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29u dGV4dC5jCj4gQEAgLTkwLDcgKzkwLDYgQEAKPiAgICNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4K PiAgIAo+ICAgI2luY2x1ZGUgImd0L2ludGVsX2xyY19yZWcuaCIKPiAtI2luY2x1ZGUgImd0L2lu dGVsX3dvcmthcm91bmRzLmgiCj4gICAKPiAgICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICAgI2lu Y2x1ZGUgImk5MTVfZ2xvYmFscy5oIgo+IEBAIC0xNDMsMTMgKzE0MiwxNyBAQCBzdGF0aWMgdm9p ZCBsdXRfY2xvc2Uoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiAgIHN0YXRpYyBzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqCj4gICBsb29rdXBfdXNlcl9lbmdpbmUoc3RydWN0IGk5MTVfZ2Vt X2NvbnRleHQgKmN0eCwgdTE2IGNsYXNzLCB1MTYgaW5zdGFuY2UpCj4gICB7Cj4gLQlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gKwlpZiAoIWk5MTVfZ2VtX2NvbnRleHRfdXNlcl9l bmdpbmVzKGN0eCkpIHsKPiArCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gICAK PiAtCWVuZ2luZSA9IGludGVsX2VuZ2luZV9sb29rdXBfdXNlcihjdHgtPmk5MTUsIGNsYXNzLCBp bnN0YW5jZSk7Cj4gLQlpZiAoIWVuZ2luZSkKPiAtCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsK PiArCQllbmdpbmUgPSBpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIoY3R4LT5pOTE1LCBjbGFzcywg aW5zdGFuY2UpOwo+ICsJCWlmICghZW5naW5lKQo+ICsJCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFM KTsKPiArCj4gKwkJaW5zdGFuY2UgPSBlbmdpbmUtPmlkOwo+ICsJfQo+ICAgCj4gLQlyZXR1cm4g aTkxNV9nZW1fY29udGV4dF9nZXRfZW5naW5lKGN0eCwgZW5naW5lLT5pZCk7Cj4gKwlyZXR1cm4g aTkxNV9nZW1fY29udGV4dF9nZXRfZW5naW5lKGN0eCwgaW5zdGFuY2UpOwo+ICAgfQo+ICAgCj4g ICBzdGF0aWMgaW5saW5lIGludCBuZXdfaHdfaWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsIGdmcF90IGdmcCkKPiBAQCAtMjU3LDYgKzI2MCwxNyBAQCBzdGF0aWMgdm9pZCBmcmVlX2Vu Z2luZXMoc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXMgKmUpCj4gICAJX19mcmVlX2VuZ2luZXMoZSwg ZS0+bnVtX2VuZ2luZXMpOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyB2b2lkIGZyZWVfZW5naW5lc19y Y3Uoc3RydWN0IHdvcmtfc3RydWN0ICp3cmspCj4gK3sKPiArCXN0cnVjdCBpOTE1X2dlbV9lbmdp bmVzICplID0KPiArCQljb250YWluZXJfb2Yod3JrLCBzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lcywg cmN1LndvcmspOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlLT5pOTE1Owo+ ICsKPiArCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJZnJlZV9lbmdp bmVzKGUpOwo+ICsJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArfQo+ ICsKPiAgIHN0YXRpYyBzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lcyAqZGVmYXVsdF9lbmdpbmVzKHN0 cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gICB7Cj4gICAJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lOwo+IEBAIC0xMzgyLDYgKzEzOTYsMTkxIEBAIHN0YXRpYyBpbnQgc2V0X3Nz ZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+ ICAgCj4gK3N0cnVjdCBzZXRfZW5naW5lcyB7Cj4gKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq Y3R4Owo+ICsJc3RydWN0IGk5MTVfZ2VtX2VuZ2luZXMgKmVuZ2luZXM7Cj4gK307Cj4gKwo+ICtz dGF0aWMgY29uc3QgaTkxNV91c2VyX2V4dGVuc2lvbl9mbiBzZXRfZW5naW5lc19fZXh0ZW5zaW9u c1tdID0gewo+ICt9Owo+ICsKPiArc3RhdGljIGludAo+ICtzZXRfZW5naW5lcyhzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqY3R4LAo+ICsJICAgIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fY29u dGV4dF9wYXJhbSAqYXJncykKPiArewo+ICsJc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdp bmVzIF9fdXNlciAqdXNlciA9Cj4gKwkJdTY0X3RvX3VzZXJfcHRyKGFyZ3MtPnZhbHVlKTsKPiAr CXN0cnVjdCBzZXRfZW5naW5lcyBzZXQgPSB7IC5jdHggPSBjdHggfTsKPiArCXVuc2lnbmVkIGlu dCBudW1fZW5naW5lcywgbjsKPiArCXU2NCBleHRlbnNpb25zOwo+ICsJaW50IGVycjsKPiArCj4g KwlpZiAoIWFyZ3MtPnNpemUpIHsgLyogc3dpdGNoIGJhY2sgdG8gbGVnYWN5IHVzZXJfcmluZ19t YXAgKi8KPiArCQlpZiAoIWk5MTVfZ2VtX2NvbnRleHRfdXNlcl9lbmdpbmVzKGN0eCkpCj4gKwkJ CXJldHVybiAwOwo+ICsKPiArCQlzZXQuZW5naW5lcyA9IGRlZmF1bHRfZW5naW5lcyhjdHgpOwo+ ICsJCWlmIChJU19FUlIoc2V0LmVuZ2luZXMpKQo+ICsJCQlyZXR1cm4gUFRSX0VSUihzZXQuZW5n aW5lcyk7Cj4gKwo+ICsJCWdvdG8gcmVwbGFjZTsKPiArCX0KPiArCj4gKwlCVUlMRF9CVUdfT04o IUlTX0FMSUdORUQoc2l6ZW9mKCp1c2VyKSwgc2l6ZW9mKCp1c2VyLT5lbmdpbmVzKSkpOwo+ICsJ aWYgKGFyZ3MtPnNpemUgPCBzaXplb2YoKnVzZXIpIHx8Cj4gKwkgICAgIUlTX0FMSUdORUQoYXJn cy0+c2l6ZSwgc2l6ZW9mKCp1c2VyLT5lbmdpbmVzKSkpIHsKPiArCQlEUk1fREVCVUcoIkludmFs aWQgc2l6ZSBmb3IgZW5naW5lIGFycmF5OiAlZFxuIiwKPiArCQkJICBhcmdzLT5zaXplKTsKPiAr CQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwkvKgo+ICsJICogTm90ZSB0aGF0IEk5MTVf RVhFQ19SSU5HX01BU0sgbGltaXRzIGV4ZWNidWYgdG8gb25seSB1c2luZyB0aGUKPiArCSAqIGZp cnN0IDY0IGVuZ2luZXMgZGVmaW5lZCBoZXJlLgo+ICsJICovCj4gKwludW1fZW5naW5lcyA9IChh cmdzLT5zaXplIC0gc2l6ZW9mKCp1c2VyKSkgLyBzaXplb2YoKnVzZXItPmVuZ2luZXMpOwo+ICsK PiArCXNldC5lbmdpbmVzID0ga21hbGxvYyhzdHJ1Y3Rfc2l6ZShzZXQuZW5naW5lcywgZW5naW5l cywgbnVtX2VuZ2luZXMpLAo+ICsJCQkgICAgICBHRlBfS0VSTkVMKTsKPiArCWlmICghc2V0LmVu Z2luZXMpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJc2V0LmVuZ2luZXMtPmk5MTUgPSBj dHgtPmk5MTU7Cj4gKwlmb3IgKG4gPSAwOyBuIDwgbnVtX2VuZ2luZXM7IG4rKykgewo+ICsJCXN0 cnVjdCBpOTE1X2VuZ2luZV9jbGFzc19pbnN0YW5jZSBjaTsKPiArCQlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmU7Cj4gKwo+ICsJCWlmIChjb3B5X2Zyb21fdXNlcigmY2ksICZ1c2VyLT5l bmdpbmVzW25dLCBzaXplb2YoY2kpKSkgewo+ICsJCQlfX2ZyZWVfZW5naW5lcyhzZXQuZW5naW5l cywgbik7Cj4gKwkJCXJldHVybiAtRUZBVUxUOwo+ICsJCX0KPiArCj4gKwkJaWYgKGNpLmVuZ2lu ZV9jbGFzcyA9PSAodTE2KUk5MTVfRU5HSU5FX0NMQVNTX0lOVkFMSUQgJiYKPiArCQkgICAgY2ku ZW5naW5lX2luc3RhbmNlID09ICh1MTYpSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJRF9OT05FKSB7 Cj4gKwkJCXNldC5lbmdpbmVzLT5lbmdpbmVzW25dID0gTlVMTDsKPiArCQkJY29udGludWU7Cj4g KwkJfQo+ICsKPiArCQllbmdpbmUgPSBpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIoY3R4LT5pOTE1 LAo+ICsJCQkJCQkgIGNpLmVuZ2luZV9jbGFzcywKPiArCQkJCQkJICBjaS5lbmdpbmVfaW5zdGFu Y2UpOwo+ICsJCWlmICghZW5naW5lKSB7Cj4gKwkJCURSTV9ERUJVRygiSW52YWxpZCBlbmdpbmVb JWRdOiB7IGNsYXNzOiVkLCBpbnN0YW5jZTolZCB9XG4iLAo+ICsJCQkJICBuLCBjaS5lbmdpbmVf Y2xhc3MsIGNpLmVuZ2luZV9pbnN0YW5jZSk7Cj4gKwkJCV9fZnJlZV9lbmdpbmVzKHNldC5lbmdp bmVzLCBuKTsKPiArCQkJcmV0dXJuIC1FTk9FTlQ7Cj4gKwkJfQo+ICsKPiArCQlzZXQuZW5naW5l cy0+ZW5naW5lc1tuXSA9IGludGVsX2NvbnRleHRfY3JlYXRlKGN0eCwgZW5naW5lKTsKPiArCQlp ZiAoIXNldC5lbmdpbmVzLT5lbmdpbmVzW25dKSB7Cj4gKwkJCV9fZnJlZV9lbmdpbmVzKHNldC5l bmdpbmVzLCBuKTsKPiArCQkJcmV0dXJuIC1FTk9NRU07Cj4gKwkJfQo+ICsJfQo+ICsJc2V0LmVu Z2luZXMtPm51bV9lbmdpbmVzID0gbnVtX2VuZ2luZXM7Cj4gKwo+ICsJZXJyID0gLUVGQVVMVDsK PiArCWlmICghZ2V0X3VzZXIoZXh0ZW5zaW9ucywgJnVzZXItPmV4dGVuc2lvbnMpKQo+ICsJCWVy ciA9IGk5MTVfdXNlcl9leHRlbnNpb25zKHU2NF90b191c2VyX3B0cihleHRlbnNpb25zKSwKPiAr CQkJCQkgICBzZXRfZW5naW5lc19fZXh0ZW5zaW9ucywKPiArCQkJCQkgICBBUlJBWV9TSVpFKHNl dF9lbmdpbmVzX19leHRlbnNpb25zKSwKPiArCQkJCQkgICAmc2V0KTsKPiArCWlmIChlcnIpIHsK PiArCQlmcmVlX2VuZ2luZXMoc2V0LmVuZ2luZXMpOwo+ICsJCXJldHVybiBlcnI7Cj4gKwl9Cj4g Kwo+ICtyZXBsYWNlOgo+ICsJbXV0ZXhfbG9jaygmY3R4LT5lbmdpbmVzX211dGV4KTsKPiArCWlm IChhcmdzLT5zaXplKQo+ICsJCWk5MTVfZ2VtX2NvbnRleHRfc2V0X3VzZXJfZW5naW5lcyhjdHgp Owo+ICsJZWxzZQo+ICsJCWk5MTVfZ2VtX2NvbnRleHRfY2xlYXJfdXNlcl9lbmdpbmVzKGN0eCk7 Cj4gKwlyY3Vfc3dhcF9wcm90ZWN0ZWQoY3R4LT5lbmdpbmVzLCBzZXQuZW5naW5lcywgMSk7Cj4g KwltdXRleF91bmxvY2soJmN0eC0+ZW5naW5lc19tdXRleCk7Cj4gKwo+ICsJSU5JVF9SQ1VfV09S Sygmc2V0LmVuZ2luZXMtPnJjdSwgZnJlZV9lbmdpbmVzX3JjdSk7Cj4gKwlxdWV1ZV9yY3Vfd29y ayhzeXN0ZW1fd3EsICZzZXQuZW5naW5lcy0+cmN1KTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ ICsKPiArc3RhdGljIGludAo+ICtnZXRfZW5naW5lcyhzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq Y3R4LAo+ICsJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSAqYXJncykKPiAr ewo+ICsJc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzIF9fdXNlciAqdXNlcjsKPiAr CXN0cnVjdCBpOTE1X2dlbV9lbmdpbmVzICplOwo+ICsJc2l6ZV90IG4sIGNvdW50LCBzaXplOwo+ ICsJaW50IGVyciA9IDA7Cj4gKwo+ICsJZXJyID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZj dHgtPmVuZ2luZXNfbXV0ZXgpOwo+ICsJaWYgKGVycikKPiArCQlyZXR1cm4gZXJyOwo+ICsKPiAr CWlmICghaTkxNV9nZW1fY29udGV4dF91c2VyX2VuZ2luZXMoY3R4KSkgewo+ICsJCWFyZ3MtPnNp emUgPSAwOwo+ICsJCWdvdG8gdW5sb2NrOwo+ICsJfQo+ICsKPiArCWUgPSBpOTE1X2dlbV9jb250 ZXh0X2VuZ2luZXMoY3R4KTsKPiArCWNvdW50ID0gZS0+bnVtX2VuZ2luZXM7Cj4gKwo+ICsJLyog QmUgcGFyYW5vaWQgaW4gY2FzZSB3ZSBoYXZlIGFuIGltcGVkYW5jZSBtaXNtYXRjaCAqLwo+ICsJ aWYgKCFjaGVja19zdHJ1Y3Rfc2l6ZSh1c2VyLCBlbmdpbmVzLCBjb3VudCwgJnNpemUpKSB7Cj4g KwkJZXJyID0gLUVJTlZBTDsKPiArCQlnb3RvIHVubG9jazsKPiArCX0KPiArCWlmIChvdmVyZmxv d3NfdHlwZShzaXplLCBhcmdzLT5zaXplKSkgewo+ICsJCWVyciA9IC1FSU5WQUw7Cj4gKwkJZ290 byB1bmxvY2s7Cj4gKwl9Cj4gKwo+ICsJaWYgKCFhcmdzLT5zaXplKSB7Cj4gKwkJYXJncy0+c2l6 ZSA9IHNpemU7Cj4gKwkJZ290byB1bmxvY2s7Cj4gKwl9Cj4gKwo+ICsJaWYgKGFyZ3MtPnNpemUg PCBzaXplKSB7Cj4gKwkJZXJyID0gLUVJTlZBTDsKPiArCQlnb3RvIHVubG9jazsKPiArCX0KPiAr Cj4gKwl1c2VyID0gdTY0X3RvX3VzZXJfcHRyKGFyZ3MtPnZhbHVlKTsKPiArCWlmICghYWNjZXNz X29rKHVzZXIsIHNpemUpKSB7Cj4gKwkJZXJyID0gLUVGQVVMVDsKPiArCQlnb3RvIHVubG9jazsK PiArCX0KPiArCj4gKwlpZiAocHV0X3VzZXIoMCwgJnVzZXItPmV4dGVuc2lvbnMpKSB7Cj4gKwkJ ZXJyID0gLUVGQVVMVDsKPiArCQlnb3RvIHVubG9jazsKPiArCX0KPiArCj4gKwlmb3IgKG4gPSAw OyBuIDwgY291bnQ7IG4rKykgewo+ICsJCXN0cnVjdCBpOTE1X2VuZ2luZV9jbGFzc19pbnN0YW5j ZSBjaSA9IHsKPiArCQkJLmVuZ2luZV9jbGFzcyA9IEk5MTVfRU5HSU5FX0NMQVNTX0lOVkFMSUQs Cj4gKwkJCS5lbmdpbmVfaW5zdGFuY2UgPSBJOTE1X0VOR0lORV9DTEFTU19JTlZBTElEX05PTkUs Cj4gKwkJfTsKPiArCj4gKwkJaWYgKGUtPmVuZ2luZXNbbl0pIHsKPiArCQkJY2kuZW5naW5lX2Ns YXNzID0gZS0+ZW5naW5lc1tuXS0+ZW5naW5lLT51YWJpX2NsYXNzOwo+ICsJCQljaS5lbmdpbmVf aW5zdGFuY2UgPSBlLT5lbmdpbmVzW25dLT5lbmdpbmUtPmluc3RhbmNlOwo+ICsJCX0KPiArCj4g KwkJaWYgKGNvcHlfdG9fdXNlcigmdXNlci0+ZW5naW5lc1tuXSwgJmNpLCBzaXplb2YoY2kpKSkg ewo+ICsJCQllcnIgPSAtRUZBVUxUOwo+ICsJCQlnb3RvIHVubG9jazsKPiArCQl9Cj4gKwl9Cj4g Kwo+ICsJYXJncy0+c2l6ZSA9IHNpemU7Cj4gKwo+ICt1bmxvY2s6Cj4gKwltdXRleF91bmxvY2so JmN0eC0+ZW5naW5lc19tdXRleCk7Cj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICAgc3RhdGlj IGludCBjdHhfc2V0cGFyYW0oc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZnByaXYsCj4g ICAJCQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAgCQkJc3RydWN0IGRybV9pOTE1 X2dlbV9jb250ZXh0X3BhcmFtICphcmdzKQo+IEBAIC0xNDU1LDYgKzE2NTQsMTAgQEAgc3RhdGlj IGludCBjdHhfc2V0cGFyYW0oc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZnByaXYsCj4g ICAJCXJldCA9IHNldF9wcGd0dChmcHJpdiwgY3R4LCBhcmdzKTsKPiAgIAkJYnJlYWs7Cj4gICAK PiArCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVM6Cj4gKwkJcmV0ID0gc2V0X2VuZ2lu ZXMoY3R4LCBhcmdzKTsKPiArCQlicmVhazsKPiArCj4gICAJY2FzZSBJOTE1X0NPTlRFWFRfUEFS QU1fQkFOX1BFUklPRDoKPiAgIAlkZWZhdWx0Ogo+ICAgCQlyZXQgPSAtRUlOVkFMOwo+IEBAIC0x Njg1LDYgKzE4ODgsMTAgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfZ2V0cGFyYW1faW9jdGwoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgIAkJcmV0ID0gZ2V0X3BwZ3R0KGZp bGVfcHJpdiwgY3R4LCBhcmdzKTsKPiAgIAkJYnJlYWs7Cj4gICAKPiArCWNhc2UgSTkxNV9DT05U RVhUX1BBUkFNX0VOR0lORVM6Cj4gKwkJcmV0ID0gZ2V0X2VuZ2luZXMoY3R4LCBhcmdzKTsKPiAr CQlicmVhazsKPiArCj4gICAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fQkFOX1BFUklPRDoKPiAg IAlkZWZhdWx0Ogo+ICAgCQlyZXQgPSAtRUlOVkFMOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9jb250ZXh0LmgKPiBpbmRleCAyNzJlMTgzZWJjMGMuLjlhZDRhNjM2MjQzOCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKPiBAQCAtMTEyLDYgKzExMiwy NCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9nZW1fY29udGV4dF9zZXRfZm9yY2Vfc2luZ2xl X3N1Ym1pc3Npb24oc3RydWN0IGk5MTVfZ2VtXwo+ICAgCV9fc2V0X2JpdChDT05URVhUX0ZPUkNF X1NJTkdMRV9TVUJNSVNTSU9OLCAmY3R4LT5mbGFncyk7Cj4gICB9Cj4gICAKPiArc3RhdGljIGlu bGluZSBib29sCj4gK2k5MTVfZ2VtX2NvbnRleHRfdXNlcl9lbmdpbmVzKGNvbnN0IHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gK3sKPiArCXJldHVybiB0ZXN0X2JpdChDT05URVhUX1VT RVJfRU5HSU5FUywgJmN0eC0+ZmxhZ3MpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHZvaWQK PiAraTkxNV9nZW1fY29udGV4dF9zZXRfdXNlcl9lbmdpbmVzKHN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICpjdHgpCj4gK3sKPiArCXNldF9iaXQoQ09OVEVYVF9VU0VSX0VOR0lORVMsICZjdHgtPmZs YWdzKTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkCj4gK2k5MTVfZ2VtX2NvbnRleHRf Y2xlYXJfdXNlcl9lbmdpbmVzKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gK3sKPiAr CWNsZWFyX2JpdChDT05URVhUX1VTRVJfRU5HSU5FUywgJmN0eC0+ZmxhZ3MpOwo+ICt9Cj4gKwo+ ICAgaW50IF9faTkxNV9nZW1fY29udGV4dF9waW5faHdfaWQoc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmN0eCk7Cj4gICBzdGF0aWMgaW5saW5lIGludCBpOTE1X2dlbV9jb250ZXh0X3Bpbl9od19p ZChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ICAgewo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0X3R5cGVzLmgKPiBpbmRleCBkNWNiNGYxMjFhYWQuLmZi OTY1ZGVkMjUwOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0X3R5cGVzLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250 ZXh0X3R5cGVzLmgKPiBAQCAtMTQ2LDYgKzE0Niw3IEBAIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 IHsKPiAgICNkZWZpbmUgQ09OVEVYVF9CQU5ORUQJCQkwCj4gICAjZGVmaW5lIENPTlRFWFRfQ0xP U0VECQkJMQo+ICAgI2RlZmluZSBDT05URVhUX0ZPUkNFX1NJTkdMRV9TVUJNSVNTSU9OCTIKPiAr I2RlZmluZSBDT05URVhUX1VTRVJfRU5HSU5FUwkJMwo+ICAgCj4gICAJLyoqCj4gICAJICogQGh3 X2lkOiAtIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29udGV4dAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiBpbmRleCA2NzlmN2MxNTYxYmEuLmQ2YzUy MjBhZGRkMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVj YnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVy LmMKPiBAQCAtMjE2NSw3ICsyMTY1LDEwIEBAIGViX3NlbGVjdF9lbmdpbmUoc3RydWN0IGk5MTVf ZXhlY2J1ZmZlciAqZWIsCj4gICAJdW5zaWduZWQgaW50IGlkeDsKPiAgIAlpbnQgZXJyOwo+ICAg Cj4gLQlpZHggPSBlYl9zZWxlY3RfbGVnYWN5X3JpbmcoZWIsIGZpbGUsIGFyZ3MpOwo+ICsJaWYg KGk5MTVfZ2VtX2NvbnRleHRfdXNlcl9lbmdpbmVzKGViLT5nZW1fY29udGV4dCkpCj4gKwkJaWR4 ID0gYXJncy0+ZmxhZ3MgJiBJOTE1X0VYRUNfUklOR19NQVNLOwo+ICsJZWxzZQo+ICsJCWlkeCA9 IGViX3NlbGVjdF9sZWdhY3lfcmluZyhlYiwgZmlsZSwgYXJncyk7Cj4gICAKPiAgIAljZSA9IGk5 MTVfZ2VtX2NvbnRleHRfZ2V0X2VuZ2luZShlYi0+Z2VtX2NvbnRleHQsIGlkeCk7Cj4gICAJaWYg KElTX0VSUihjZSkpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdXRp bHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdXRpbHMuaAo+IGluZGV4IDJkYmU4OTMz YjUwYS4uMTQzNmZlMmZiNWY4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfdXRpbHMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdXRpbHMuaAo+IEBA IC0yNSw2ICsyNSw5IEBACj4gICAjaWZuZGVmIF9fSTkxNV9VVElMU19ICj4gICAjZGVmaW5lIF9f STkxNV9VVElMU19ICj4gICAKPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+ICsjaW5jbHVk ZSA8bGludXgvb3ZlcmZsb3cuaD4KPiArCj4gICAjdW5kZWYgV0FSTl9PTgo+ICAgLyogTWFueSBn Y2Mgc2VlbSB0byBubyBzZWUgdGhyb3VnaCB0aGlzIGFuZCBmYWxsIG92ZXIgOiggKi8KPiAgICNp ZiAwCj4gQEAgLTczLDYgKzc2LDM5IEBACj4gICAjZGVmaW5lIG92ZXJmbG93c190eXBlKHgsIFQp IFwKPiAgIAkoc2l6ZW9mKHgpID4gc2l6ZW9mKFQpICYmICh4KSA+PiBCSVRTX1BFUl9UWVBFKFQp KQo+ICAgCj4gK3N0YXRpYyBpbmxpbmUgYm9vbAo+ICtfX2NoZWNrX3N0cnVjdF9zaXplKHNpemVf dCBiYXNlLCBzaXplX3QgYXJyLCBzaXplX3QgY291bnQsIHNpemVfdCAqc2l6ZSkKPiArewo+ICsJ c2l6ZV90IHN6Owo+ICsKPiArCWlmIChjaGVja19tdWxfb3ZlcmZsb3coY291bnQsIGFyciwgJnN6 KSkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJaWYgKGNoZWNrX2FkZF9vdmVyZmxvdyhzeiwg YmFzZSwgJnN6KSkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJKnNpemUgPSBzejsKPiArCXJl dHVybiB0cnVlOwo+ICt9Cj4gKwo+ICsvKioKPiArICogY2hlY2tfc3RydWN0X3NpemUoKSAtIENh bGN1bGF0ZSBzaXplIG9mIHN0cnVjdHVyZSB3aXRoIHRyYWlsaW5nIGFycmF5Lgo+ICsgKiBAcDog UG9pbnRlciB0byB0aGUgc3RydWN0dXJlLgo+ICsgKiBAbWVtYmVyOiBOYW1lIG9mIHRoZSBhcnJh eSBtZW1iZXIuCj4gKyAqIEBuOiBOdW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGFycmF5Lgo+ICsg KiBAc3o6IFRvdGFsIHNpemUgb2Ygc3RydWN0dXJlIGFuZCBhcnJheQo+ICsgKgo+ICsgKiBDYWxj dWxhdGVzIHNpemUgb2YgbWVtb3J5IG5lZWRlZCBmb3Igc3RydWN0dXJlIEBwIGZvbGxvd2VkIGJ5 IGFuCj4gKyAqIGFycmF5IG9mIEBuIEBtZW1iZXIgZWxlbWVudHMsIGxpa2Ugc3RydWN0X3NpemUo KSBidXQgcmVwb3J0cwo+ICsgKiB3aGV0aGVyIGl0IG92ZXJmbG93ZWQsIGFuZCB0aGUgcmVzdWx0 YW50IHNpemUgaW4gQHN6Cj4gKyAqCj4gKyAqIFJldHVybjogZmFsc2UgaWYgdGhlIGNhbGN1bGF0 aW9uIG92ZXJmbG93ZWQuCj4gKyAqLwo+ICsjZGVmaW5lIGNoZWNrX3N0cnVjdF9zaXplKHAsIG1l bWJlciwgbiwgc3opIFwKPiArCWxpa2VseShfX2NoZWNrX3N0cnVjdF9zaXplKHNpemVvZigqKHAp KSwgXAo+ICsJCQkJICAgc2l6ZW9mKCoocCktPm1lbWJlcikgKyBfX211c3RfYmVfYXJyYXkoKHAp LT5tZW1iZXIpLCBcCj4gKwkJCQkgICBuLCBzeikpCj4gKwo+ICAgI2RlZmluZSBwdHJfbWFza19i aXRzKHB0ciwgbikgKHsJCQkJCVwKPiAgIAl1bnNpZ25lZCBsb25nIF9fdiA9ICh1bnNpZ25lZCBs b25nKShwdHIpOwkJCVwKPiAgIAkodHlwZW9mKHB0cikpKF9fdiAmIC1CSVQobikpOwkJCQkJXAo+ IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggYi9pbmNsdWRlL3VhcGkv ZHJtL2k5MTVfZHJtLmgKPiBpbmRleCBkNmFkNGExNWIyYjkuLjhlMWJiMjI5MjZlNCAxMDA2NDQK PiAtLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKPiArKysgYi9pbmNsdWRlL3VhcGkv ZHJtL2k5MTVfZHJtLmgKPiBAQCAtMTM2LDYgKzEzNiw3IEBAIGVudW0gZHJtX2k5MTVfZ2VtX2Vu Z2luZV9jbGFzcyB7Cj4gICBzdHJ1Y3QgaTkxNV9lbmdpbmVfY2xhc3NfaW5zdGFuY2Ugewo+ICAg CV9fdTE2IGVuZ2luZV9jbGFzczsgLyogc2VlIGVudW0gZHJtX2k5MTVfZ2VtX2VuZ2luZV9jbGFz cyAqLwo+ICAgCV9fdTE2IGVuZ2luZV9pbnN0YW5jZTsKPiArI2RlZmluZSBJOTE1X0VOR0lORV9D TEFTU19JTlZBTElEX05PTkUgLTEKPiAgIH07Cj4gICAKPiAgIC8qKgo+IEBAIC0xNTIyLDYgKzE1 MjMsMjYgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIHsKPiAgIAkgKiBTZWUg RFJNX0k5MTVfR0VNX1ZNX0NSRUFURSBhbmQgRFJNX0k5MTVfR0VNX1ZNX0RFU1RST1kuCj4gICAJ ICovCj4gICAjZGVmaW5lIEk5MTVfQ09OVEVYVF9QQVJBTV9WTQkJMHg5Cj4gKwo+ICsvKgo+ICsg KiBJOTE1X0NPTlRFWFRfUEFSQU1fRU5HSU5FUzoKPiArICoKPiArICogQmluZCB0aGlzIGNvbnRl eHQgdG8gb3BlcmF0ZSBvbiB0aGlzIHN1YnNldCBvZiBhdmFpbGFibGUgZW5naW5lcy4gSGVuY2Vm b3J0aCwKPiArICogdGhlIEk5MTVfRVhFQ19SSU5HIHNlbGVjdG9yIGZvciBEUk1fSU9DVExfSTkx NV9HRU1fRVhFQ0JVRkZFUjIgb3BlcmF0ZXMgYXMKPiArICogYW4gaW5kZXggaW50byB0aGlzIGFy cmF5IG9mIGVuZ2luZXM7IEk5MTVfRVhFQ19ERUZBVUxUIHNlbGVjdGluZyBlbmdpbmVbMF0KPiAr ICogYW5kIHVwd2FyZHMuIFNsb3RzIDAuLi5OIGFyZSBmaWxsZWQgaW4gdXNpbmcgdGhlIHNwZWNp ZmllZCAoY2xhc3MsIGluc3RhbmNlKS4KPiArICogVXNlCj4gKyAqCWVuZ2luZV9jbGFzczogSTkx NV9FTkdJTkVfQ0xBU1NfSU5WQUxJRCwKPiArICoJZW5naW5lX2luc3RhbmNlOiBJOTE1X0VOR0lO RV9DTEFTU19JTlZBTElEX05PTkUKPiArICogdG8gc3BlY2lmeSBhIGdhcCBpbiB0aGUgYXJyYXkg dGhhdCBjYW4gYmUgZmlsbGVkIGluIGxhdGVyLCBlLmcuIGJ5IGEKPiArICogdmlydHVhbCBlbmdp bmUgdXNlZCBmb3IgbG9hZCBiYWxhbmNpbmcuCj4gKyAqCj4gKyAqIFNldHRpbmcgdGhlIG51bWJl ciBvZiBlbmdpbmVzIGJvdW5kIHRvIHRoZSBjb250ZXh0IHRvIDAsIGJ5IHBhc3NpbmcgYSB6ZXJv Cj4gKyAqIHNpemVkIGFyZ3VtZW50LCB3aWxsIHJldmVydCBiYWNrIHRvIGRlZmF1bHQgc2V0dGlu Z3MuCj4gKyAqCj4gKyAqIFNlZSBzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMuCj4g KyAqLwo+ICsjZGVmaW5lIEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTCTB4YQo+ICAgLyogTXVz dCBiZSBrZXB0IGNvbXBhY3QgLS0gbm8gaG9sZXMgYW5kIHdlbGwgZG9jdW1lbnRlZCAqLwo+ICAg Cj4gICAJX191NjQgdmFsdWU7Cj4gQEAgLTE1ODUsNiArMTYwNiwxNiBAQCBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSB7Cj4gICAJX191MzIgcnN2ZDsKPiAgIH07Cj4gICAK PiArc3RydWN0IGk5MTVfY29udGV4dF9wYXJhbV9lbmdpbmVzIHsKPiArCV9fdTY0IGV4dGVuc2lv bnM7IC8qIGxpbmtlZCBjaGFpbiBvZiBleHRlbnNpb24gYmxvY2tzLCAwIHRlcm1pbmF0ZXMgKi8K PiArCXN0cnVjdCBpOTE1X2VuZ2luZV9jbGFzc19pbnN0YW5jZSBlbmdpbmVzWzBdOwo+ICt9IF9f YXR0cmlidXRlX18oKHBhY2tlZCkpOwo+ICsKPiArI2RlZmluZSBJOTE1X0RFRklORV9DT05URVhU X1BBUkFNX0VOR0lORVMobmFtZV9fLCBOX18pIHN0cnVjdCB7IFwKPiArCV9fdTY0IGV4dGVuc2lv bnM7IFwKPiArCXN0cnVjdCBpOTE1X2VuZ2luZV9jbGFzc19pbnN0YW5jZSBlbmdpbmVzW05fX107 IFwKPiArfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKSBuYW1lX18KPiArCj4gICBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dF9zZXRwYXJhbSB7Cj4gICAjZGVmaW5lIEk5MTVf Q09OVEVYVF9DUkVBVEVfRVhUX1NFVFBBUkFNIDAKPiAgIAlzdHJ1Y3QgaTkxNV91c2VyX2V4dGVu c2lvbiBiYXNlOwo+IAoKTm90IDEwMCUgdG8gbXkgbGlraW5nIGJ1dCBvbmx5IGluIGRldGFpbHMu CgpSZXZpZXdlZC1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4K ClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4