From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v5 7/7] drm/i915: Expose RPCS (SSEU) configuration to userspace Date: Tue, 15 May 2018 10:05:19 +0100 Message-ID: References: <20180514155600.16521-1-lionel.g.landwerlin@intel.com> <20180514155600.16521-8-lionel.g.landwerlin@intel.com> 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 E66BE6E1DE for ; Tue, 15 May 2018 09:05:21 +0000 (UTC) In-Reply-To: <20180514155600.16521-8-lionel.g.landwerlin@intel.com> Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lionel Landwerlin , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDE0LzA1LzIwMTggMTY6NTYsIExpb25lbCBMYW5kd2VybGluIHdyb3RlOgo+IEZyb206IENo cmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IAo+IFdlIHdhbnQgdG8gYWxs b3cgdXNlcnNwYWNlIHRvIHJlY29uZmlndXJlIHRoZSBzdWJzbGljZSBjb25maWd1cmF0aW9uIGZv cgo+IGl0cyBvd24gdXNlIGNhc2UuIFRvIGRvIHNvLCB3ZSBleHBvc2UgYSBjb250ZXh0IHBhcmFt ZXRlciB0byBhbGxvdwo+IGFkanVzdG1lbnQgb2YgdGhlIFJQQ1MgcmVnaXN0ZXIgc3RvcmVkIHdp dGhpbiB0aGUgY29udGV4dCBpbWFnZSAoYW5kCj4gY3VycmVudGx5IG5vdCBhY2Nlc3NpYmxlIHZp YSBMUkkpLiBJZiB0aGUgY29udGV4dCBpcyBhZGp1c3RlZCBiZWZvcmUKPiBmaXJzdCB1c2UsIHRo ZSBhZGp1c3RtZW50IGlzIGZvciAiZnJlZSI7IG90aGVyd2lzZSBpZiB0aGUgY29udGV4dCBpcwo+ IGFjdGl2ZSB3ZSBmbHVzaCB0aGUgY29udGV4dCBvZmYgdGhlIEdQVSAoc3RhbGxpbmcgYWxsIHVz ZXJzKSBhbmQgZm9yY2luZwo+IHRoZSBHUFUgdG8gc2F2ZSB0aGUgY29udGV4dCB0byBtZW1vcnkg d2hlcmUgd2UgY2FuIG1vZGlmeSBpdCBhbmQgc28KPiBlbnN1cmUgdGhhdCB0aGUgcmVnaXN0ZXIg aXMgcmVsb2FkZWQgb24gbmV4dCBleGVjdXRpb24uCj4gCj4gVGhlIG92ZXJoZWFkIG9mIG1hbmFn aW5nIGFkZGl0aW9uYWwgRVUgc3Vic2xpY2VzIGNhbiBiZSBzaWduaWZpY2FudCwKPiBlc3BlY2lh bGx5IGluIG11bHRpLWNvbnRleHQgd29ya2xvYWRzLiBOb24tR1BHUFUgY29udGV4dHMgc2hvdWxk Cj4gcHJlZmVyYWJseSBkaXNhYmxlIHRoZSBzdWJzbGljZXMgaXQgaXMgbm90IHVzaW5nLCBhbmQg b3RoZXJzIHNob3VsZAo+IGZpbmUtdHVuZSB0aGUgbnVtYmVyIHRvIG1hdGNoIHRoZWlyIHdvcmts b2FkLgo+IAo+IFdlIGV4cG9zZSBjb21wbGV0ZSBjb250cm9sIG92ZXIgdGhlIFJQQ1MgcmVnaXN0 ZXIsIGFsbG93aW5nCj4gY29uZmlndXJhdGlvbiBvZiBzbGljZS9zdWJzbGljZSwgdmlhIG1hc2tz IHBhY2tlZCBpbnRvIGEgdTY0IGZvcgo+IHNpbXBsaWNpdHkuIEZvciBleGFtcGxlLAo+IAo+IAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gYXJnOwo+IAlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2NvbnRleHRfcGFyYW1fc3NldSBzc2V1ID0geyAuY2xhc3MgPSAwLAo+IAkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaW5zdGFuY2UgPSAwLCB9Owo+ IAo+IAltZW1zZXQoJmFyZywgMCwgc2l6ZW9mKGFyZykpOwo+IAlhcmcuY3R4X2lkID0gY3R4Owo+ IAlhcmcucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVTsKPiAJYXJnLnZhbHVlID0gKHVp bnRwdHJfdCkgJnNzZXU7Cj4gCWlmIChkcm1Jb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfR0VNX0NP TlRFWFRfR0VUUEFSQU0sICZhcmcpID09IDApIHsKPiAJCXNzZXUucGFja2VkLnN1YnNsaWNlX21h c2sgPSAwOwo+IAo+IAkJZHJtSW9jdGwoZmQsIERSTV9JT0NUTF9JOTE1X0dFTV9DT05URVhUX1NF VFBBUkFNLCAmYXJnKTsKPiAJfQo+IAo+IGNvdWxkIGJlIHVzZWQgdG8gZGlzYWJsZSBhbGwgc3Vi c2xpY2VzIHdoZXJlIHN1cHBvcnRlZC4KPiAKPiB2MjogRml4IG9mZnNldCBvZiBDVFhfUl9QV1Jf Q0xLX1NUQVRFIGluIGludGVsX2xyX2NvbnRleHRfc2V0X3NzZXUoKSAoTGlvbmVsKQo+IAo+IHYz OiBBZGQgYWJpbGl0eSB0byBwcm9ncmFtIHRoaXMgcGVyIGVuZ2luZSAoQ2hyaXMpCj4gCj4gdjQ6 IE1vdmUgbW9zdCBnZXRfc3NldSgpIGludG8gaTkxNV9nZW1fY29udGV4dC5jIChMaW9uZWwpCj4g Cj4gdjU6IFZhbGlkYXRlIHNzZXUgY29uZmlndXJhdGlvbiBhZ2FpbnN0IHRoZSBkZXZpY2UncyBj YXBhYmlsaXRpZXMgKExpb25lbCkKPiAKPiB2NjogQ2hhbmdlIGNvbnRleHQgcG93ZXJnYXRpbmcg c2V0dGluZ3MgdGhyb3VnaCBNSV9TRE0gb24ga2VybmVsIGNvbnRleHQgKENocmlzKQo+IAo+IEJ1 Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA4 OTkKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51 az4KPiBTaWduZWQtb2ZmLWJ5OiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxp bkBpbnRlbC5jb20+Cj4gYzogRG1pdHJ5IFJvZ296aGtpbiA8ZG1pdHJ5LnYucm9nb3poa2luQGlu dGVsLmNvbT4KPiBDQzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4K PiBDQzogWmhpcGVuZyBHb25nIDx6aGlwZW5nLmdvbmdAaW50ZWwuY29tPgo+IENDOiBKb29uYXMg TGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgfCAxNjkgKysrKysrKysrKysrKysr KysrKysrKysrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgfCAx MDMgKysrKysrKysrKy0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmMgfCAgIDIgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5o IHwgICA0ICsKPiAgIGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCAgICAgICAgICAgICB8ICAz OCArKysrKysKPiAgIDUgZmlsZXMgY2hhbmdlZCwgMjgxIGluc2VydGlvbnMoKyksIDM1IGRlbGV0 aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBpbmRl eCAwMTMxMGM5OWUwMzIuLjBiNzJhNzcxYzNmMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmMKPiBAQCAtNzM0LDYgKzczNCwxMTAgQEAgaW50IGk5MTVfZ2VtX2Nv bnRleHRfZGVzdHJveV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ ICAgCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyBpbnQKPiAraW50ZWxfc3NldV9mcm9t X3VzZXJfc3NldShjb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwKPiArCQkJICBjb25z dCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSAqdXNlcl9zc2V1LAo+ICsJ CQkgIHVuaW9uIGludGVsX3NzZXUgKmN0eF9zc2V1KQo+ICt7Cj4gKwlpZiAoKHVzZXJfc3NldS0+ c2xpY2VfbWFzayAmIH5zc2V1LT5zbGljZV9tYXNrKSAhPSAwIHx8Cj4gKwkgICAgdXNlcl9zc2V1 LT5zbGljZV9tYXNrID09IDApCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJaWYgKCh1c2Vy X3NzZXUtPnN1YnNsaWNlX21hc2sgJiB+c3NldS0+c3Vic2xpY2VfbWFza1swXSkgIT0gMCB8fAo+ ICsJICAgIHVzZXJfc3NldS0+c3Vic2xpY2VfbWFzayA9PSAwKQo+ICsJCXJldHVybiAtRUlOVkFM Owo+ICsKPiArCWlmICh1c2VyX3NzZXUtPm1pbl9ldXNfcGVyX3N1YnNsaWNlID4gc3NldS0+bWF4 X2V1c19wZXJfc3Vic2xpY2UpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJaWYgKHVzZXJf c3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPiBzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSB8 fAo+ICsJICAgIHVzZXJfc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPCB1c2VyX3NzZXUtPm1p bl9ldXNfcGVyX3N1YnNsaWNlIHx8Cj4gKwkgICAgdXNlcl9zc2V1LT5tYXhfZXVzX3Blcl9zdWJz bGljZSA9PSAwKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWN0eF9zc2V1LT5zbGljZV9t YXNrID0gdXNlcl9zc2V1LT5zbGljZV9tYXNrOwo+ICsJY3R4X3NzZXUtPnN1YnNsaWNlX21hc2sg PSB1c2VyX3NzZXUtPnN1YnNsaWNlX21hc2s7Cj4gKwljdHhfc3NldS0+bWluX2V1c19wZXJfc3Vi c2xpY2UgPSB1c2VyX3NzZXUtPm1pbl9ldXNfcGVyX3N1YnNsaWNlOwo+ICsJY3R4X3NzZXUtPm1h eF9ldXNfcGVyX3N1YnNsaWNlID0gdXNlcl9zc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZTsKPiAr Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludAo+ICtpOTE1X2dlbV9jb250ZXh0 X3JlY29uZmlndXJlX3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiArCQkJCSAg c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICsJCQkJICB1bmlvbiBpbnRlbF9zc2V1 IHNzZXUpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGN0eC0+ aTkxNTsKPiArCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZTsKPiArCXN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxOwo+ICsJdW5pb24gaW50ZWxfc3NldSBhY3R1YWxfc3NldTsKPiArCWVudW0g aW50ZWxfZW5naW5lX2lkIGlkOwo+ICsJaW50IHJldDsKPiArCj4gKwkvKgo+ICsJICogRmlyc3Qg bm90aWZ5IHVzZXIgd2hlbiB0aGlzIGNhcGFiaWxpdHkgaXMgbm90IGF2YWlsYWJsZSBzbyB0aGF0 IGl0Cj4gKwkgKiBjYW4gYmUgZGV0ZWN0ZWQgd2l0aCBhbnkgdmFsaWQgaW5wdXQuCj4gKwkgKi8K PiArCWlmICghZW5naW5lLT5lbWl0X3JwY3NfY29uZmlnKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ ICsKPiArCWlmICh0b19pbnRlbF9jb250ZXh0KGN0eCwgZW5naW5lKS0+c3NldS52YWx1ZSA9PSBz c2V1LnZhbHVlKQoKQXJlIHRoZXJlIG90aGVyIHVzZXMgZm9yIHRoZSB2YWx1ZSB1bmlvbiBpbiB0 aGUgc2VyaWVzPyBUaGluayB3aGV0aGVyIGl0IApjb3VsZCBiZSBkcm9wcGVkIGFuZCBtZW1jbXAg dXNlZCBoZXJlIGZvciBzaW1wbGljaXR5LgoKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlsb2NrZGVw X2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwo+ICsJaTkxNV9y ZXRpcmVfcmVxdWVzdHMoZGV2X3ByaXYpOwo+ICsKPiArCS8qIE5vdyB1c2UgdGhlIFJDUyB0byBh Y3R1YWxseSByZWNvbmZpZ3VyZS4gKi8KPiArCWVuZ2luZSA9IGRldl9wcml2LT5lbmdpbmVbUkNT XTsKPiArCj4gKwlycSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGRldl9wcml2LT5rZXJu ZWxfY29udGV4dCk7Cj4gKwlpZiAoSVNfRVJSKHJxKSkKPiArCQlyZXR1cm4gUFRSX0VSUihycSk7 Cj4gKwo+ICsJLyoKPiArCSAqIElmIGk5MTUvcGVyZiBpcyBhY3RpdmUsIHdlIHdhbnQgYSBzdGFi bGUgcG93ZXJnYXRpbmcgY29uZmlndXJhdGlvbgo+ICsJICogb24gdGhlIHN5c3RlbS4gQWN0IGFz IGlmIHdlIHJlY29yZGVkIHRoZSB1c2VyJ3MgcmVxdWVzdCBidXQgcHJvZ3JhbQo+ICsJICogdGhl IGRlZmF1bHQgc3NldSBjb25maWd1cmF0aW9uLiBXaGVuIGk5MTUvcGVyZiBpcyBzdG9wcGVkLCB0 aGUKPiArCSAqIHJlY29yZGVkIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBwcm9ncmFtbWVkLgo+ICsJ ICovCj4gKwlhY3R1YWxfc3NldSA9IGRldl9wcml2LT5wZXJmLm9hLmV4Y2x1c2l2ZV9zdHJlYW0g PwoKVGhpcyBmZWVscyBpdCBzaG91bGQganVtcCBvdXQgbW9yZSBzaW5jZSB0aGVyZSBpcyBubyBv YnZpb3VzIGNvbm5lY3Rpb24gCmJldHdlZW4gdGhlIHR3by4gUHJvYmFibHkgYSBoZWxwZXIgb2Yg c29tZSBzb3J0IGxpa2UgCmludGVsX3Nhbml0aXplX3NzZXU/IE9yIGludGVsX2FwcGx5X3NzZXU/ IE1lcmdlPyAuLi4gPwoKVGhlIGNvbW1lbnQgd291bGQgdGhlbiBiZSBpbiB0aGUgaGVscGVyIHdo aWNoIEkgdGhpbmsgd291bGQgYmUgYmV0dGVyIAp0aGFuIHNwcmlua2xlIE9BIGtub3dsZWRnZSBp bnRvIGNvbnRleHQgcGFyYW1zIGNvZGUuCgo+ICsJCWludGVsX3NzZXVfZnJvbV9kZXZpY2Vfc3Nl dSgmSU5URUxfSU5GTyhkZXZfcHJpdiktPnNzZXUpIDoKPiArCQlzc2V1Owo+ICsKPiArCXJldCA9 IGVuZ2luZS0+ZW1pdF9ycGNzX2NvbmZpZyhycSwgY3R4LCBhY3R1YWxfc3NldSk7Cj4gKwlpZiAo cmV0KSB7Cj4gKwkJX19pOTE1X3JlcXVlc3RfYWRkKHJxLCB0cnVlKTsKPiArCQlyZXR1cm4gcmV0 Owo+ICsJfQo+ICsKPiArCS8qIFF1ZXVlIHRoaXMgc3dpdGNoIGFmdGVyIGFsbCBvdGhlciBhY3Rp dml0eSAqLwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeSh0aW1lbGluZSwgJmRldl9wcml2LT5ndC50 aW1lbGluZXMsIGxpbmspIHsKPiArCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpwcmV2Owo+ICsKPiAr CQlwcmV2ID0gbGFzdF9yZXF1ZXN0X29uX2VuZ2luZSh0aW1lbGluZSwgZW5naW5lKTsKPiArCQlp ZiAocHJldikKPiArCQkJaTkxNV9zd19mZW5jZV9hd2FpdF9zd19mZW5jZV9nZnAoJnJxLT5zdWJt aXQsCj4gKwkJCQkJCQkgJnByZXYtPnN1Ym1pdCwKPiArCQkJCQkJCSBJOTE1X0ZFTkNFX0dGUCk7 Cj4gKwl9Cj4gKwo+ICsJX19pOTE1X3JlcXVlc3RfYWRkKHJxLCB0cnVlKTsKClRoaXMgaXMgYWN0 dWFsbHkgdGhlIGJpdCBJIHJlYWRpbmcgdGhlIHBhdGNoIGZvci4gU28gdGhpcyBJIHRoaW5rIGlz IAptdWNoIGJldHRlci9zYWZlciB0aGFuIHByZXZpb3VzIGlkbGluZy4gSG93ZXZlciBvbmUgY29u Y2VybiwgYW5kIG1heWJlIApub3QgYSBjb25jZXJuIGJ1dCBqdXN0IHNvbWV0aGluZyB3aGljaCBu ZWVkcyB0byBiZSBleHBsYWluZWQgaW4gdGhlIAp1QVBJLCBpcyB3aGF0IGl0IG1lYW5zIHdpdGgg cmVnYXJkcyB0byB0aGUgcG9pbnQgZnJvbSB3aGljaCB0aGUgbmV3IApjb25maWd1cmF0aW9uIGJl Y29tZXMgbGl2ZS4KCkNvdWxkIHByZWVtcHRpb24gZm9yIGluc3RhbmNlIG1ha2UgaXQgbm90IGRl ZmluZWQgZW5vdWdoPyBDb3VsZCB3ZSwgb3IgCnNob3VsZCB3ZSwgYWxzbyBsaW5rIHRoaXMgcmVx dWVzdCBzb21laG93IG9udG8gdGhlIGlzc3VpbmcgY29udGV4dCAKdGltZWxpbmUgc28gaXQgbXVz dCBiZSBmaXJzdCB0aGVyZT8gSG0sIHNob3VsZCB3ZSB1c2UgdGhlIHVzZXIgY29udGV4dCAKaW5z dGVhZCBvZiB0aGUga2VybmVsIG9uZSwgYW5kIHNldCB0aGUgaGlnaGVzdCBwcmlvcml0eT8gQnV0 IHdvdWxkIGhhdmUgCnRvIGF2b2lkIHRyaWdnZXJpbmcgcHJlZW1wdGlvbi4KCj4gKwkvKgo+ICsJ ICogQXBwbHkgdGhlIGNvbmZpZ3VyYXRpb24gdG8gYWxsIGVuZ2luZS4gT3VyIGhhcmR3YXJlIGRv ZXNuJ3QKPiArCSAqIGN1cnJlbnRseSBzdXBwb3J0IGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyBm b3IgZWFjaCBlbmdpbmUuCj4gKwkgKi8KPiArCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9w cml2LCBpZCkgewo+ICsJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IHRvX2ludGVsX2NvbnRl eHQoY3R4LCBlbmdpbmUpOwo+ICsKPiArCQljZS0+c3NldS52YWx1ZSA9IHNzZXUudmFsdWU7Cj4g Kwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gICBpbnQgaTkxNV9nZW1fY29udGV4dF9n ZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgCQkJ CSAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gICB7Cj4gQEAgLTc3MSw2ICs4NzUsMzcgQEAg aW50IGk5MTVfZ2VtX2NvbnRleHRfZ2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKPiAgIAljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9QUklPUklUWToKPiAg IAkJYXJncy0+dmFsdWUgPSBjdHgtPnNjaGVkLnByaW9yaXR5Owo+ICAgCQlicmVhazsKPiArCWNh c2UgSTkxNV9DT05URVhUX1BBUkFNX1NTRVU6IHsKPiArCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2Nv bnRleHRfcGFyYW1fc3NldSBwYXJhbV9zc2V1Owo+ICsJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZTsKPiArCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7Cj4gKwo+ICsJCWlmIChjb3B5 X2Zyb21fdXNlcigmcGFyYW1fc3NldSwgdTY0X3RvX3VzZXJfcHRyKGFyZ3MtPnZhbHVlKSwKPiAr CQkJCSAgIHNpemVvZihwYXJhbV9zc2V1KSkpIHsKPiArCQkJcmV0ID0gLUVGQVVMVDsKPiArCQkJ YnJlYWs7Cj4gKwkJfQo+ICsKPiArCQllbmdpbmUgPSBpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIo dG9faTkxNShkZXYpLAo+ICsJCQkJCQkgIHBhcmFtX3NzZXUuY2xhc3MsCj4gKwkJCQkJCSAgcGFy YW1fc3NldS5pbnN0YW5jZSk7Cj4gKwkJaWYgKCFlbmdpbmUpIHsKPiArCQkJcmV0ID0gLUVJTlZB TDsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsKPiArCQljZSA9ICZjdHgtPl9fZW5naW5lW2VuZ2lu ZS0+aWRdOwoKdG9faW50ZWxfY29udGV4dChjdHgsIGVuZ2luZSkgPwoKPiArCj4gKwkJcGFyYW1f c3NldS5zbGljZV9tYXNrID0gY2UtPnNzZXUuc2xpY2VfbWFzazsKPiArCQlwYXJhbV9zc2V1LnN1 YnNsaWNlX21hc2sgPSBjZS0+c3NldS5zdWJzbGljZV9tYXNrOwo+ICsJCXBhcmFtX3NzZXUubWlu X2V1c19wZXJfc3Vic2xpY2UgPSBjZS0+c3NldS5taW5fZXVzX3Blcl9zdWJzbGljZTsKPiArCQlw YXJhbV9zc2V1Lm1heF9ldXNfcGVyX3N1YnNsaWNlID0gY2UtPnNzZXUubWF4X2V1c19wZXJfc3Vi c2xpY2U7Cj4gKwo+ICsJCWlmIChjb3B5X3RvX3VzZXIodTY0X3RvX3VzZXJfcHRyKGFyZ3MtPnZh bHVlKSwgJnBhcmFtX3NzZXUsCj4gKwkJCQkgc2l6ZW9mKHBhcmFtX3NzZXUpKSkKPiArCQkJcmV0 ID0gLUVGQVVMVDsKPiArCQlicmVhazsKPiArCX0KPiAgIAlkZWZhdWx0Ogo+ICAgCQlyZXQgPSAt RUlOVkFMOwo+ICAgCQlicmVhazsKPiBAQCAtODQ1LDcgKzk4MCw0MSBAQCBpbnQgaTkxNV9nZW1f Y29udGV4dF9zZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAo+ICAgCQkJCWN0eC0+c2NoZWQucHJpb3JpdHkgPSBwcmlvcml0eTsKPiAgIAkJfQo+ICAgCQli cmVhazsKPiArCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX1NTRVU6Cj4gKwkJewo+ICsJCQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gKwkJCXN0cnVj dCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1IHVzZXJfc3NldTsKPiArCQkJc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICsJCQl1bmlvbiBpbnRlbF9zc2V1IGN0eF9zc2V1 Owo+ICsKPiArCQkJaWYgKGFyZ3MtPnNpemUpIHsKPiArCQkJCXJldCA9IC1FSU5WQUw7Cj4gKwkJ CQlicmVhazsKPiArCQkJfQo+ICsKPiArCQkJaWYgKGNvcHlfZnJvbV91c2VyKCZ1c2VyX3NzZXUs IHU2NF90b191c2VyX3B0cihhcmdzLT52YWx1ZSksCj4gKwkJCQkJICAgc2l6ZW9mKHVzZXJfc3Nl dSkpKSB7Cj4gKwkJCQlyZXQgPSAtRUZBVUxUOwo+ICsJCQkJYnJlYWs7Cj4gKwkJCX0KPiArCj4g KwkJCWVuZ2luZSA9IGludGVsX2VuZ2luZV9sb29rdXBfdXNlcihkZXZfcHJpdiwKPiArCQkJCQkJ CSAgdXNlcl9zc2V1LmNsYXNzLAo+ICsJCQkJCQkJICB1c2VyX3NzZXUuaW5zdGFuY2UpOwo+ICsJ CQlpZiAoIWVuZ2luZSkgewo+ICsJCQkJcmV0ID0gLUVJTlZBTDsKPiArCQkJCWJyZWFrOwo+ICsJ CQl9Cj4gKwo+ICsJCQlyZXQgPSBpbnRlbF9zc2V1X2Zyb21fdXNlcl9zc2V1KCZJTlRFTF9JTkZP KGRldl9wcml2KS0+c3NldSwKPiArCQkJCQkJCSZ1c2VyX3NzZXUsICZjdHhfc3NldSk7CgpTaG91 bGQgc2V0dGVyIGhhdmUgYSBoZWxwZXIgYXMgd2VsbD8KCj4gKwkJCWlmIChyZXQpCj4gKwkJCQli cmVhazsKPiAgIAo+ICsJCQlyZXQgPSBpOTE1X2dlbV9jb250ZXh0X3JlY29uZmlndXJlX3NzZXUo Y3R4LCBlbmdpbmUsCj4gKwkJCQkJCQkJY3R4X3NzZXUpOwo+ICsJCX0KPiArCQlicmVhazsKPiAg IAlkZWZhdWx0Ogo+ICAgCQlyZXQgPSAtRUlOVkFMOwo+ICAgCQlicmVhazsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYwo+IGluZGV4IDMyMGI0MTY0ODJlMS4uNGUwMjE2ZjMzYzc1IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBAQCAtMjE4NCw2ICsyMTg0LDcyIEBAIHN0YXRpYyB2 b2lkIGdlbjhfZW1pdF9icmVhZGNydW1iX3JjcyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0 LCB1MzIgKmNzKQo+ICAgfQo+ICAgc3RhdGljIGNvbnN0IGludCBnZW44X2VtaXRfYnJlYWRjcnVt Yl9yY3Nfc3ogPSA4ICsgV0FfVEFJTF9EV09SRFM7Cj4gICAKPiArdTMyIGdlbjhfbWFrZV9ycGNz KGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LAo+ICsJCSAgIHVuaW9uIGludGVsX3Nz ZXUgY3R4X3NzZXUpCj4gK3sKPiArCXUzMiBycGNzID0gMDsKPiArCj4gKwkvKgo+ICsJICogU3Rh cnRpbmcgaW4gR2VuOSwgcmVuZGVyIHBvd2VyIGdhdGluZyBjYW4gbGVhdmUKPiArCSAqIHNsaWNl L3N1YnNsaWNlL0VVIGluIGEgcGFydGlhbGx5IGVuYWJsZWQgc3RhdGUuIFdlCj4gKwkgKiBtdXN0 IG1ha2UgYW4gZXhwbGljaXQgcmVxdWVzdCB0aHJvdWdoIFJQQ1MgZm9yIGZ1bGwKPiArCSAqIGVu YWJsZW1lbnQuCj4gKwkgKi8KPiArCWlmIChzc2V1LT5oYXNfc2xpY2VfcGcpIHsKPiArCQlycGNz IHw9IEdFTjhfUlBDU19TX0NOVF9FTkFCTEU7Cj4gKwkJcnBjcyB8PSBod2VpZ2h0OChjdHhfc3Nl dS5zbGljZV9tYXNrKSA8PCBHRU44X1JQQ1NfU19DTlRfU0hJRlQ7Cj4gKwkJcnBjcyB8PSBHRU44 X1JQQ1NfRU5BQkxFOwo+ICsJfQo+ICsKPiArCWlmIChzc2V1LT5oYXNfc3Vic2xpY2VfcGcpIHsK PiArCQlycGNzIHw9IEdFTjhfUlBDU19TU19DTlRfRU5BQkxFOwo+ICsJCXJwY3MgfD0gaHdlaWdo dDgoY3R4X3NzZXUuc3Vic2xpY2VfbWFzaykgPDwKPiArCQkJR0VOOF9SUENTX1NTX0NOVF9TSElG VDsKPiArCQlycGNzIHw9IEdFTjhfUlBDU19FTkFCTEU7Cj4gKwl9Cj4gKwo+ICsJaWYgKHNzZXUt Pmhhc19ldV9wZykgewo+ICsJCXJwY3MgfD0gY3R4X3NzZXUubWluX2V1c19wZXJfc3Vic2xpY2Ug PDwKPiArCQkJR0VOOF9SUENTX0VVX01JTl9TSElGVDsKPiArCQlycGNzIHw9IGN0eF9zc2V1Lm1h eF9ldXNfcGVyX3N1YnNsaWNlIDw8Cj4gKwkJCUdFTjhfUlBDU19FVV9NQVhfU0hJRlQ7Cj4gKwkJ cnBjcyB8PSBHRU44X1JQQ1NfRU5BQkxFOwo+ICsJfQo+ICsKPiArCXJldHVybiBycGNzOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW50IGdlbjhfZW1pdF9ycGNzX2NvbmZpZyhzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSwKPiArCQkJCSBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICsJCQkJIHVu aW9uIGludGVsX3NzZXUgc3NldSkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gcnEtPmk5MTU7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSB0b19pbnRl bF9jb250ZXh0KGN0eCwgZGV2X3ByaXYtPmVuZ2luZVtSQ1NdKTsKPiArCXU2NCBvZmZzZXQ7Cj4g Kwl1MzIgKmNzOwo+ICsKPiArCS8qIExldCB0aGUgZGVmZXJyZWQgc3RhdGUgYWxsb2NhdGlvbiB0 YWtlIGNhcmUgb2YgdGhpcy4gKi8KPiArCWlmICghY2UtPnN0YXRlKQo+ICsJCXJldHVybiAwOwo+ ICsKPiArCWNzID0gaW50ZWxfcmluZ19iZWdpbihycSwgNCk7Cj4gKwlpZiAoSVNfRVJSKGNzKSkK PiArCQlyZXR1cm4gUFRSX0VSUihjcyk7Cj4gKwo+ICsJb2Zmc2V0ID0gY2UtPnN0YXRlLT5ub2Rl LnN0YXJ0ICsKPiArCQlMUkNfU1RBVEVfUE4gKiBQQUdFX1NJWkUgKwo+ICsJCShDVFhfUl9QV1Jf Q0xLX1NUQVRFICsgMSkgKiA0Owo+ICsKPiArCSpjcysrID0gTUlfU1RPUkVfRFdPUkRfSU1NX0dF TjQ7Cj4gKwkqY3MrKyA9IGxvd2VyXzMyX2JpdHMob2Zmc2V0KTsKPiArCSpjcysrID0gdXBwZXJf MzJfYml0cyhvZmZzZXQpOwo+ICsJKmNzKysgPSBnZW44X21ha2VfcnBjcygmSU5URUxfSU5GTyhk ZXZfcHJpdiktPnNzZXUsIHNzZXUpOwo+ICsKPiArCWludGVsX3JpbmdfYWR2YW5jZShycSwgY3Mp Owo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICAgc3RhdGljIGludCBnZW44X2luaXRfcmNz X2NvbnRleHQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gICB7Cj4gICAJaW50IHJldDsKPiBA QCAtMjI3NCw2ICsyMzQwLDggQEAgbG9naWNhbF9yaW5nX2RlZmF1bHRfdmZ1bmNzKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAllbmdpbmUtPmVtaXRfYnJlYWRjcnVtYiA9IGdl bjhfZW1pdF9icmVhZGNydW1iOwo+ICAgCWVuZ2luZS0+ZW1pdF9icmVhZGNydW1iX3N6ID0gZ2Vu OF9lbWl0X2JyZWFkY3J1bWJfc3o7Cj4gICAKPiArCWVuZ2luZS0+ZW1pdF9ycGNzX2NvbmZpZyA9 IGdlbjhfZW1pdF9ycGNzX2NvbmZpZzsKPiArCj4gICAJZW5naW5lLT5zZXRfZGVmYXVsdF9zdWJt aXNzaW9uID0gZXhlY2xpc3RzX3NldF9kZWZhdWx0X3N1Ym1pc3Npb247Cj4gICAKPiAgIAlpZiAo SU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPCAxMSkgewo+IEBAIC0yNDIyLDQxICsyNDkwLDYgQEAg aW50IGxvZ2ljYWxfeGNzX3JpbmdfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4gICAJcmV0dXJuIGxvZ2ljYWxfcmluZ19pbml0KGVuZ2luZSk7Cj4gICB9Cj4gICAKPiAtdTMy IGdlbjhfbWFrZV9ycGNzKGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LAo+IC0JCSAg IHVuaW9uIGludGVsX3NzZXUgY3R4X3NzZXUpCj4gLXsKPiAtCXUzMiBycGNzID0gMDsKPiAtCj4g LQkvKgo+IC0JICogU3RhcnRpbmcgaW4gR2VuOSwgcmVuZGVyIHBvd2VyIGdhdGluZyBjYW4gbGVh dmUKPiAtCSAqIHNsaWNlL3N1YnNsaWNlL0VVIGluIGEgcGFydGlhbGx5IGVuYWJsZWQgc3RhdGUu IFdlCj4gLQkgKiBtdXN0IG1ha2UgYW4gZXhwbGljaXQgcmVxdWVzdCB0aHJvdWdoIFJQQ1MgZm9y IGZ1bGwKPiAtCSAqIGVuYWJsZW1lbnQuCj4gLQkqLwo+IC0JaWYgKHNzZXUtPmhhc19zbGljZV9w Zykgewo+IC0JCXJwY3MgfD0gR0VOOF9SUENTX1NfQ05UX0VOQUJMRTsKPiAtCQlycGNzIHw9IGh3 ZWlnaHQ4KGN0eF9zc2V1LnNsaWNlX21hc2spIDw8IEdFTjhfUlBDU19TX0NOVF9TSElGVDsKPiAt CQlycGNzIHw9IEdFTjhfUlBDU19FTkFCTEU7Cj4gLQl9Cj4gLQo+IC0JaWYgKHNzZXUtPmhhc19z dWJzbGljZV9wZykgewo+IC0JCXJwY3MgfD0gR0VOOF9SUENTX1NTX0NOVF9FTkFCTEU7Cj4gLQkJ cnBjcyB8PSBod2VpZ2h0OChjdHhfc3NldS5zdWJzbGljZV9tYXNrKSA8PAo+IC0JCQlHRU44X1JQ Q1NfU1NfQ05UX1NISUZUOwo+IC0JCXJwY3MgfD0gR0VOOF9SUENTX0VOQUJMRTsKPiAtCX0KPiAt Cj4gLQlpZiAoc3NldS0+aGFzX2V1X3BnKSB7Cj4gLQkJcnBjcyB8PSBjdHhfc3NldS5taW5fZXVz X3Blcl9zdWJzbGljZSA8PAo+IC0JCQlHRU44X1JQQ1NfRVVfTUlOX1NISUZUOwo+IC0JCXJwY3Mg fD0gY3R4X3NzZXUubWF4X2V1c19wZXJfc3Vic2xpY2UgPDwKPiAtCQkJR0VOOF9SUENTX0VVX01B WF9TSElGVDsKPiAtCQlycGNzIHw9IEdFTjhfUlBDU19FTkFCTEU7Cj4gLQl9Cj4gLQo+IC0JcmV0 dXJuIHJwY3M7Cj4gLX0KPiAtCj4gICBzdGF0aWMgdTMyIGludGVsX2xyX2luZGlyZWN0X2N0eF9v ZmZzZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCXUzMiBpbmRp cmVjdF9jdHhfb2Zmc2V0Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMK PiBpbmRleCA4ZjE5MzQ5YTYwNTUuLjQ0ZmIzYTFjZjhmOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBAQCAtMjAyNiw2ICsyMDI2LDggQEAgc3RhdGljIHZv aWQgaW50ZWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gICAJCQllbmdpbmUtPmVtaXRfYnJlYWRjcnVtYl9zeisrOwo+ICAgCX0KPiAgIAo+ ICsJZW5naW5lLT5lbWl0X3JwY3NfY29uZmlnID0gTlVMTDsgLyogT25seSBzdXBwb3J0ZWQgb24g R2VuOCsgKi8KPiArCj4gICAJZW5naW5lLT5zZXRfZGVmYXVsdF9zdWJtaXNzaW9uID0gaTl4eF9z ZXRfZGVmYXVsdF9zdWJtaXNzaW9uOwo+ICAgCj4gICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gNikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gaW5kZXggY2M3 ZTczNzMwNDY5Li45NzQ1ZjRhYjgyMTQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5oCj4gQEAgLTQ2Myw2ICs0NjMsMTAgQEAgc3RydWN0IGludGVsX2VuZ2luZV9j cyB7Cj4gICAJdm9pZAkJKCplbWl0X2JyZWFkY3J1bWIpKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx LCB1MzIgKmNzKTsKPiAgIAlpbnQJCWVtaXRfYnJlYWRjcnVtYl9zejsKPiAgIAo+ICsJaW50CQko KmVtaXRfcnBjc19jb25maWcpKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAo+ICsJCQkJCSAgICBz dHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICsJCQkJCSAgICB1bmlvbiBpbnRlbF9zc2V1 IHNzZXUpOwo+ICsKPiAgIAkvKiBQYXNzIHRoZSByZXF1ZXN0IHRvIHRoZSBoYXJkd2FyZSBxdWV1 ZSAoZS5nLiBkaXJlY3RseSBpbnRvCj4gICAJICogdGhlIGxlZ2FjeSByaW5nYnVmZmVyIG9yIHRv IHRoZSBlbmQgb2YgYW4gZXhlY2xpc3QpLgo+ICAgCSAqCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUv dWFwaS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+IGluZGV4 IDdmNTYzNGNlOGU4OC4uMjRiOTA4MzZjZTFkIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvdWFwaS9k cm0vaTkxNV9kcm0uaAo+ICsrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+IEBAIC0x NDU2LDkgKzE0NTYsNDcgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIHsKPiAg ICNkZWZpbmUgICBJOTE1X0NPTlRFWFRfTUFYX1VTRVJfUFJJT1JJVFkJMTAyMyAvKiBpbmNsdXNp dmUgKi8KPiAgICNkZWZpbmUgICBJOTE1X0NPTlRFWFRfREVGQVVMVF9QUklPUklUWQkJMAo+ICAg I2RlZmluZSAgIEk5MTVfQ09OVEVYVF9NSU5fVVNFUl9QUklPUklUWQktMTAyMyAvKiBpbmNsdXNp dmUgKi8KPiArCS8qCj4gKwkgKiBXaGVuIHVzaW5nIHRoZSBmb2xsb3dpbmcgcGFyYW0sIHZhbHVl IHNob3VsZCBiZSBhIHBvaW50ZXIgdG8KPiArCSAqIGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFt X3NzZXUuCj4gKwkgKi8KPiArI2RlZmluZSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVQkJMHg3Cj4g ICAJX191NjQgdmFsdWU7Cj4gICB9Owo+ICAgCj4gK3N0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4 dF9wYXJhbV9zc2V1IHsKPiArCS8qCj4gKwkgKiBFbmdpbmUgY2xhc3MgJiBpbnN0YW5jZSB0byBi ZSBjb25maWd1cmVkIG9yIHF1ZXJpZWQuCj4gKwkgKi8KPiArCV9fdTMyIGNsYXNzOwo+ICsJX191 MzIgaW5zdGFuY2U7Cj4gKwo+ICsJLyoKPiArCSAqIE1hc2sgb2Ygc2xpY2VzIHRvIGVuYWJsZSBm b3IgdGhlIGNvbnRleHQuIFZhbGlkIHZhbHVlcyBhcmUgYSBzdWJzZXQKPiArCSAqIG9mIHRoZSBi aXRtYXNrIHZhbHVlIHJldHVybmVkIGZvciBJOTE1X1BBUkFNX1NMSUNFX01BU0suCj4gKwkgKi8K PiArCV9fdTggc2xpY2VfbWFzazsKPiArCj4gKwkvKgo+ICsJICogTWFzayBvZiBzdWJzbGljZXMg dG8gZW5hYmxlIGZvciB0aGUgY29udGV4dC4gVmFsaWQgdmFsdWVzIGFyZSBhCj4gKwkgKiBzdWJz ZXQgb2YgdGhlIGJpdG1hc2sgdmFsdWUgcmV0dXJuIGJ5IEk5MTVfUEFSQU1fU1VCU0xJQ0VfTUFT Sy4KPiArCSAqLwo+ICsJX191OCBzdWJzbGljZV9tYXNrOwo+ICsKPiArCS8qCj4gKwkgKiBNaW5p bXVtL01heGltdW0gbnVtYmVyIG9mIEVVcyB0byBlbmFibGUgcGVyIHN1YnNsaWNlIGZvciB0aGUK PiArCSAqIGNvbnRleHQuIG1pbl9ldXNfcGVyX3N1YnNsaWNlIG11c3QgYmUgaW5mZXJpb3Igb3Ig ZXF1YWwgdG8KPiArCSAqIG1heF9ldXNfcGVyX3N1YnNsaWNlLgo+ICsJICovCj4gKwlfX3U4IG1p bl9ldXNfcGVyX3N1YnNsaWNlOwo+ICsJX191OCBtYXhfZXVzX3Blcl9zdWJzbGljZTsKPiArCj4g KwkvKgo+ICsJICogVW51c2VkIGZvciBub3cuIE11c3QgYmUgY2xlYXJlZCB0byB6ZXJvLgo+ICsJ ICovCj4gKwlfX3UzMiByc3ZkOwo+ICt9Owo+ICsKPiAgIGVudW0gZHJtX2k5MTVfb2FfZm9ybWF0 IHsKPiAgIAlJOTE1X09BX0ZPUk1BVF9BMTMgPSAxLAkgICAgLyogSFNXIG9ubHkgKi8KPiAgIAlJ OTE1X09BX0ZPUk1BVF9BMjksCSAgICAvKiBIU1cgb25seSAqLwo+IAoKUmVnYXJkcywKClR2cnRr bwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK