From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: Re: [DPU PATCH 06/11] drm/msm: Remove msm_commit/kthread, use atomic helper commit Date: Thu, 08 Mar 2018 17:08:03 -0800 Message-ID: <12b07547324c10aa56054216fc9bcd01@codeaurora.org> References: <20180228191906.185417-1-seanpaul@chromium.org> <20180228191906.185417-7-seanpaul@chromium.org> <82098cc2efdbf6b91f1e3009457eaccb@codeaurora.org> <20180301152724.GM223881@art_vandelay> <156ab33c41d436c79cc661e84bebc353@codeaurora.org> <20180302145646.GQ223881@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180302145646.GQ223881@art_vandelay> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Sean Paul Cc: linux-arm-msm , abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, Rob Clark , dri-devel , "Kristian H. Kristensen" , freedreno List-Id: linux-arm-msm@vger.kernel.org T24gMjAxOC0wMy0wMiAwNjo1NiwgU2VhbiBQYXVsIHdyb3RlOgo+IE9uIFRodSwgTWFyIDAxLCAy MDE4IGF0IDA3OjM3OjEwUE0gLTA1MDAsIFJvYiBDbGFyayB3cm90ZToKPj4gT24gVGh1LCBNYXIg MSwgMjAxOCBhdCAzOjM3IFBNLCAgPGpzYW5rYUBjb2RlYXVyb3JhLm9yZz4gd3JvdGU6Cj4+ID4g T24gMjAxOC0wMy0wMSAwNzoyNywgU2VhbiBQYXVsIHdyb3RlOgo+PiA+Pgo+PiA+PiBPbiBXZWQs IEZlYiAyOCwgMjAxOCBhdCAwODowNzowMFBNIC0wODAwLCBqc2Fua2FAY29kZWF1cm9yYS5vcmcK PiB3cm90ZToKPj4gPj4+Cj4+ID4+PiBPbiAyMDE4LTAyLTI4IDExOjE5LCBTZWFuIFBhdWwgd3Jv dGU6Cj4+ID4+PiA+IE1vdmluZyBmdXJ0aGVyIHRvd2FyZHMgc3dpdGNoaW5nIGZ1bGx5IHRvIHRo ZSB0aGUgYXRvbWljIGhlbHBlcnMsCj4gdGhpcwo+PiA+Pj4gPiBwYXRjaCByZW1vdmVzIHRoZSBo YW5kLXJvbGxlZCBrdGhyZWFkIG5vbmJsb2NrIGNvbW1pdCBjb2RlIGFuZAo+IHVzZXMKPj4gPj4K Pj4gPj4gdGhlCj4+ID4+Pgo+PiA+Pj4gPiBhdG9taWMgaGVscGVycyBjb21taXRfd29yayBtb2Rl bC4KPj4gPj4+ID4KPj4gPj4+ID4gVGhlcmUncyBzdGlsbCBhIGxvdCBvZiBjb3B5cGFzdGEgaGVy ZSwgYnV0IGl0J3Mgc3RpbGwgbmVlZGVkIHRvCj4+ID4+PiA+IGZhY2lsaXRhdGUgdGhlIHN3YXBf c3RhdGUgYW5kIHByZXBhcmVfZmVuY2UgcHJpdmF0ZSBmdW5jdGlvbnMuCj4gVGhlc2UKPj4gPj4+ ID4gd2lsbCBiZSBzb3J0ZWQgb3V0IGluIGEgZm9sbG93LW9uIHBhdGNoLgo+PiA+Pj4gPgo+PiA+ Pj4gPiBDaGFuZ2UtSWQ6IEk5ZmNiYTI3ODI0YmE2M2QzZmFiOTZjYjJiYzE5NGJmYTZmMzQ3NWI3 Cj4+ID4+PiA+IFNpZ25lZC1vZmYtYnk6IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3Jn Pgo+PiA+Pj4gPiAtLS0KPj4gPj4+ID4gIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2F0b21pYy5j IHwgMTk5Cj4+ID4+Cj4+ID4+ICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4gPj4+ Cj4+ID4+PiA+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYyAgICB8ICAgMSAtCj4+ID4+ PiA+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaCAgICB8ICAgNCAtCj4+ID4+PiA+ICAz IGZpbGVzIGNoYW5nZWQsIDM1IGluc2VydGlvbnMoKyksIDE2OSBkZWxldGlvbnMoLSkKPj4gPj4+ ID4KPj4gPj4+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2F0b21pYy5j Cj4+ID4+PiA+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fYXRvbWljLmMKPj4gPj4+ID4gaW5k ZXggM2ExOGJkM2RjMjE1Li43ZTU0ZWI2NWQwOTYgMTAwNjQ0Cj4+ID4+PiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9tc20vbXNtX2F0b21pYy5jCj4+ID4+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vbXNtX2F0b21pYy5jCj4+ID4+PiA+IEBAIC0yMSw1MSArMjEsNiBAQAo+PiA+Pj4gPiAg I2luY2x1ZGUgIm1zbV9nZW0uaCIKPj4gPj4+ID4gICNpbmNsdWRlICJtc21fZmVuY2UuaCIKPj4g Pj4+ID4KPj4gPj4+ID4gLXN0cnVjdCBtc21fY29tbWl0IHsKPj4gPj4+ID4gLSAgICAgc3RydWN0 IGRybV9kZXZpY2UgKmRldjsKPj4gPj4+ID4gLSAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlOwo+PiA+Pj4gPiAtICAgICB1aW50MzJfdCBjcnRjX21hc2s7Cj4+ID4+PiA+IC0gICAg IGJvb2wgbm9uYmxvY2s7Cj4+ID4+PiA+IC0gICAgIHN0cnVjdCBrdGhyZWFkX3dvcmsgY29tbWl0 X3dvcms7Cj4+ID4+PiA+IC19Owo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0vKiBibG9jayB1bnRpbCBz cGVjaWZpZWQgY3J0Y3MgYXJlIG5vIGxvbmdlciBwZW5kaW5nIHVwZGF0ZSwgYW5kCj4+ID4+PiA+ IC0gKiBhdG9taWNhbGx5IG1hcmsgdGhlbSBhcyBwZW5kaW5nIHVwZGF0ZQo+PiA+Pj4gPiAtICov Cj4+ID4+PiA+IC1zdGF0aWMgaW50IHN0YXJ0X2F0b21pYyhzdHJ1Y3QgbXNtX2RybV9wcml2YXRl ICpwcml2LCB1aW50MzJfdAo+PiA+Pj4gPiBjcnRjX21hc2spCj4+ID4+PiA+IC17Cj4+ID4+PiA+ IC0gICAgIGludCByZXQ7Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLSAgICAgc3Bpbl9sb2NrKCZwcml2 LT5wZW5kaW5nX2NydGNzX2V2ZW50LmxvY2spOwo+PiA+Pj4gPiAtICAgICByZXQgPQo+IHdhaXRf ZXZlbnRfaW50ZXJydXB0aWJsZV9sb2NrZWQocHJpdi0+cGVuZGluZ19jcnRjc19ldmVudCwKPj4g Pj4+ID4gLSAgICAgICAgICAgICAgICAgICAgICEocHJpdi0+cGVuZGluZ19jcnRjcyAmIGNydGNf bWFzaykpOwo+PiA+Pj4gPiAtICAgICBpZiAocmV0ID09IDApIHsKPj4gPj4+ID4gLSAgICAgICAg ICAgICBEQkcoInN0YXJ0OiAlMDh4IiwgY3J0Y19tYXNrKTsKPj4gPj4+ID4gLSAgICAgICAgICAg ICBwcml2LT5wZW5kaW5nX2NydGNzIHw9IGNydGNfbWFzazsKPj4gPj4+ID4gLSAgICAgfQo+PiA+ Pj4gPiAtICAgICBzcGluX3VubG9jaygmcHJpdi0+cGVuZGluZ19jcnRjc19ldmVudC5sb2NrKTsK Pj4gPj4+ID4gLQo+PiA+Pj4gPiAtICAgICByZXR1cm4gcmV0Owo+PiA+Pj4gPiAtfQo+PiA+Pj4g PiAtCj4+ID4+PiA+IC0vKiBjbGVhciBzcGVjaWZpZWQgY3J0Y3MgKG5vIGxvbmdlciBwZW5kaW5n IHVwZGF0ZSkKPj4gPj4+ID4gLSAqLwo+PiA+Pj4gPiAtc3RhdGljIHZvaWQgZW5kX2F0b21pYyhz dHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2LCB1aW50MzJfdAo+PiA+Pj4gPiBjcnRjX21hc2sp Cj4+ID4+PiA+IC17Cj4+ID4+PiA+IC0gICAgIHNwaW5fbG9jaygmcHJpdi0+cGVuZGluZ19jcnRj c19ldmVudC5sb2NrKTsKPj4gPj4+ID4gLSAgICAgREJHKCJlbmQ6ICUwOHgiLCBjcnRjX21hc2sp Owo+PiA+Pj4gPiAtICAgICBwcml2LT5wZW5kaW5nX2NydGNzICY9IH5jcnRjX21hc2s7Cj4+ID4+ PiA+IC0gICAgIHdha2VfdXBfYWxsX2xvY2tlZCgmcHJpdi0+cGVuZGluZ19jcnRjc19ldmVudCk7 Cj4+ID4+PiA+IC0gICAgIHNwaW5fdW5sb2NrKCZwcml2LT5wZW5kaW5nX2NydGNzX2V2ZW50Lmxv Y2spOwo+PiA+Pj4gPiAtfQo+PiA+Pj4gPiAtCj4+ID4+PiA+IC1zdGF0aWMgdm9pZCBjb21taXRf ZGVzdHJveShzdHJ1Y3QgbXNtX2NvbW1pdCAqYykKPj4gPj4+ID4gLXsKPj4gPj4+ID4gLSAgICAg ZW5kX2F0b21pYyhjLT5kZXYtPmRldl9wcml2YXRlLCBjLT5jcnRjX21hc2spOwo+PiA+Pj4gPiAt ICAgICBpZiAoYy0+bm9uYmxvY2spCj4+ID4+PiA+IC0gICAgICAgICAgICAga2ZyZWUoYyk7Cj4+ ID4+PiA+IC19Cj4+ID4+PiA+IC0KPj4gPj4+ID4gIHN0YXRpYyB2b2lkIG1zbV9hdG9taWNfd2Fp dF9mb3JfY29tbWl0X2RvbmUoCj4+ID4+PiA+ICAgICAgICAgICAgICAgc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPj4gPj4+ID4gICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq b2xkX3N0YXRlKQo+PiA+Pj4gPiBAQCAtMTE4LDYgKzczLDEwIEBAIHN0YXRpYyB2b2lkIG1zbV9h dG9taWNfY29tbWl0X3RhaWwoc3RydWN0Cj4+ID4+PiA+IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl KQo+PiA+Pj4gPgo+PiA+Pj4gPiAgICAgICBtc21fYXRvbWljX3dhaXRfZm9yX2NvbW1pdF9kb25l KGRldiwgc3RhdGUpOwo+PiA+Pj4gPgo+PiA+Pj4gPiArICAgICBkcm1fYXRvbWljX2hlbHBlcl9j b21taXRfaHdfZG9uZShzdGF0ZSk7Cj4+ID4+PiA+ICsKPj4gPj4+ID4gKyAgICAgZHJtX2F0b21p Y19oZWxwZXJfd2FpdF9mb3JfdmJsYW5rcyhkZXYsIHN0YXRlKTsKPj4gPj4+ID4gKwo+PiA+Pj4g PiAgICAgICBkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVwX3BsYW5lcyhkZXYsIHN0YXRlKTsKPj4g Pj4+ID4KPj4gPj4+ID4gICAgICAga21zLT5mdW5jcy0+Y29tcGxldGVfY29tbWl0KGttcywgc3Rh dGUpOwo+PiA+Pj4gPiBAQCAtMTI2LDEwOSArODUsMjUgQEAgc3RhdGljIHZvaWQgbXNtX2F0b21p Y19jb21taXRfdGFpbChzdHJ1Y3QKPj4gPj4+ID4gZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4+ ID4+PiA+ICAvKiBUaGUgKHBvdGVudGlhbGx5KSBhc3luY2hyb25vdXMgcGFydCBvZiB0aGUgY29t bWl0LiAgQXQgdGhpcwo+IHBvaW50Cj4+ID4+PiA+ICAgKiBub3RoaW5nIGNhbiBmYWlsIHNob3J0 IG9mIGFybWFnZWRkb24uCj4+ID4+PiA+ICAgKi8KPj4gPj4+ID4gLXN0YXRpYyB2b2lkIGNvbXBs ZXRlX2NvbW1pdChzdHJ1Y3QgbXNtX2NvbW1pdCAqYykKPj4gPj4+ID4gK3N0YXRpYyB2b2lkIGNv bW1pdF90YWlsKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPj4gPj4+ID4gIHsKPj4g Pj4+ID4gLSAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gYy0+c3RhdGU7Cj4+ ID4+PiA+IC0gICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+ZGV2Owo+PiA+Pj4g PiArICAgICBkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl9mZW5jZXMoc3RhdGUtPmRldiwgc3Rh dGUsIGZhbHNlKTsKPj4gPj4+ID4KPj4gPj4+ID4gLSAgICAgZHJtX2F0b21pY19oZWxwZXJfd2Fp dF9mb3JfZmVuY2VzKGRldiwgc3RhdGUsIGZhbHNlKTsKPj4gPj4+ID4gKyAgICAgZHJtX2F0b21p Y19oZWxwZXJfd2FpdF9mb3JfZGVwZW5kZW5jaWVzKHN0YXRlKTsKPj4gPj4+ID4KPj4gPj4+ID4g ICAgICAgbXNtX2F0b21pY19jb21taXRfdGFpbChzdGF0ZSk7Cj4+ID4+PiA+Cj4+ID4+PiA+IC0g ICAgIGRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKPj4gPj4+ID4gLX0KPj4gPj4+ID4gLQo+ PiA+Pj4gPiAtc3RhdGljIHZvaWQgX21zbV9kcm1fY29tbWl0X3dvcmtfY2Ioc3RydWN0IGt0aHJl YWRfd29yayAqd29yaykKPj4gPj4+ID4gLXsKPj4gPj4+ID4gLSAgICAgc3RydWN0IG1zbV9jb21t aXQgKmNvbW1pdCA9ICBOVUxMOwo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAgIGlmICghd29yaykg ewo+PiA+Pj4gPiAtICAgICAgICAgICAgIERSTV9FUlJPUigiJXM6IEludmFsaWQgY29tbWl0IHdv cmsgZGF0YSFcbiIsCj4gX19mdW5jX18pOwo+PiA+Pj4gPiAtICAgICAgICAgICAgIHJldHVybjsK Pj4gPj4+ID4gLSAgICAgfQo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAgIGNvbW1pdCA9IGNvbnRh aW5lcl9vZih3b3JrLCBzdHJ1Y3QgbXNtX2NvbW1pdCwgY29tbWl0X3dvcmspOwo+PiA+Pj4gPiAt Cj4+ID4+PiA+IC0gICAgIGNvbXBsZXRlX2NvbW1pdChjb21taXQpOwo+PiA+Pj4gPiAtCj4+ID4+ PiA+IC0gICAgIGNvbW1pdF9kZXN0cm95KGNvbW1pdCk7Cj4+ID4+PiA+IC19Cj4+ID4+PiA+IC0K Pj4gPj4+ID4gLXN0YXRpYyBzdHJ1Y3QgbXNtX2NvbW1pdCAqY29tbWl0X2luaXQoc3RydWN0IGRy bV9hdG9taWNfc3RhdGUKPiAqc3RhdGUsCj4+ID4+PiA+IC0gICAgICAgICAgICAgYm9vbCBub25i bG9jaykKPj4gPj4+ID4gLXsKPj4gPj4+ID4gLSAgICAgc3RydWN0IG1zbV9jb21taXQgKmMgPSBr emFsbG9jKHNpemVvZigqYyksIEdGUF9LRVJORUwpOwo+PiA+Pj4gPiArICAgICBkcm1fYXRvbWlj X2hlbHBlcl9jb21taXRfY2xlYW51cF9kb25lKHN0YXRlKTsKPj4gPj4+ID4KPj4gPj4+ID4gLSAg ICAgaWYgKCFjKQo+PiA+Pj4gPiAtICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+PiA+Pj4gPiAt Cj4+ID4+PiA+IC0gICAgIGMtPmRldiA9IHN0YXRlLT5kZXY7Cj4+ID4+PiA+IC0gICAgIGMtPnN0 YXRlID0gc3RhdGU7Cj4+ID4+PiA+IC0gICAgIGMtPm5vbmJsb2NrID0gbm9uYmxvY2s7Cj4+ID4+ PiA+IC0KPj4gPj4+ID4gLSAgICAga3RocmVhZF9pbml0X3dvcmsoJmMtPmNvbW1pdF93b3JrLCBf bXNtX2RybV9jb21taXRfd29ya19jYik7Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLSAgICAgcmV0dXJu IGM7Cj4+ID4+PiA+ICsgICAgIGRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKPj4gPj4+ID4g IH0KPj4gPj4+ID4KPj4gPj4+ID4gLS8qIFN0YXJ0IGRpc3BsYXkgdGhyZWFkIGZ1bmN0aW9uICov Cj4+ID4+PiA+IC1zdGF0aWMgdm9pZCBtc21fYXRvbWljX2NvbW1pdF9kaXNwYXRjaChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+PiA+Pj4gPiAtICAgICAgICAgICAgIHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSwgc3RydWN0IG1zbV9jb21taXQKPj4gPj4+ID4gKmNvbW1pdCkKPj4gPj4+ ID4gK3N0YXRpYyB2b2lkIGNvbW1pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPj4g Pj4+ID4gIHsKPj4gPj4+ID4gLSAgICAgc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRl di0+ZGV2X3ByaXZhdGU7Cj4+ID4+PiA+IC0gICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IE5V TEw7Cj4+ID4+PiA+IC0gICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUg PSBOVUxMOwo+PiA+Pj4gPiAtICAgICBpbnQgcmV0ID0gLUVJTlZBTCwgaSA9IDAsIGogPSAwOwo+ PiA+Pj4gPiAtICAgICBib29sIG5vbmJsb2NrOwo+PiA+Pj4gPiAtCj4+ID4+PiA+IC0gICAgIC8q IGNhY2hlIHNpbmNlIHdvcmsgd2lsbCBrZnJlZSBjb21taXQgaW4gbm9uLWJsb2NraW5nIGNhc2UK PiAqLwo+PiA+Pj4gPiAtICAgICBub25ibG9jayA9IGNvbW1pdC0+bm9uYmxvY2s7Cj4+ID4+PiA+ IC0KPj4gPj4+ID4gLSAgICAgZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMs IG5ld19jcnRjX3N0YXRlLCBpKSB7Cj4+ID4+PiA+IC0gICAgICAgICAgICAgZm9yIChqID0gMDsg aiA8IHByaXYtPm51bV9jcnRjczsgaisrKSB7Cj4+ID4+PiA+IC0gICAgICAgICAgICAgICAgICAg ICBpZiAocHJpdi0+ZGlzcF90aHJlYWRbal0uY3J0Y19pZCA9PQo+PiA+Pj4gPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3J0Yy0+YmFzZS5pZCkgewo+PiA+ Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJpdi0+ZGlzcF90aHJlYWRb al0udGhyZWFkKSB7Cj4+ID4+PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAga3RocmVhZF9xdWV1ZV93b3JrKAo+PiA+Pj4gPiAtCj4+ID4+PiA+ICZwcml2LT5kaXNwX3Ro cmVhZFtqXS53b3JrZXIsCj4+ID4+PiA+IC0KPj4gPj4+ID4gJmNvbW1pdC0+Y29tbWl0X3dvcmsp Owo+PiA+Pj4gQXJlIHRoZXJlIGFueSBrbm93biBwcm9wb3NhbHMgZmxvYXRpbmcgYXJvdW5kIHRv IHN1cHBvcnQgQVNZTkMKPiBjb21taXRzCj4+ID4+Cj4+ID4+IGZvcgo+PiA+Pj4KPj4gPj4+IGNv bmN1cnJlbnQgZGlzcGxheXMgcmVuZGVyaW5nIGF0IGRpZmZlcmVudCBGUFM/IFRoZSBhYm92ZSBr dGhyZWFkCj4gbW9kZWwKPj4gPj4KPj4gPj4gaXMKPj4gPj4+Cj4+ID4+PiBpbnRyb2R1Y2VkIHdo ZW4gd2UgZmFjZWQgc29tZSBwZXJmb3JtYW5jZSByb2FkIGJsb2NrZXJzIHdoZW4gYQo+IGRpc3Bs YXkKPj4gPj4KPj4gPj4gaGFzCj4+ID4+Pgo+PiA+Pj4gdG8gd2FpdCBmb3IgYW4gb25nb2luZyBk aXNwbGF5IGNvbW1pdCB0byBjb21wbGV0ZS4KPj4gPj4KPj4gPj4KPj4gPj4gSSB0aGluayBwZW9w bGUgaGF2ZSBkaXNjdXNzZWQgaXQsIEknbSBub3Qgc3VyZSBpZiB0aGVyZSBhcmUgYW55Cj4gcGF0 Y2hlcwo+PiA+PiBmbG9hdGluZwo+PiA+PiBhcm91bmQuIE9uIHRoZSBzdXJmYWNlLCBpdCBzZWVt cyBlYXN5IHRvIGp1c3QgcHVzaCB0aGUgY29tbWl0X3dvcmsKPiBpbnRvCj4+ID4+IHRoZSBjcnRj Cj4+ID4+IGNvbW1pdCBhbmQgaGF2ZSBvbmUgd29yayBpdGVtIHBlciBjcnRjLiBIb3dldmVyIEkg dGhpbmsgdGhlIHByb2JsZW0KPiBpcwo+PiA+PiB0aGF0IHRoZXJlCj4+ID4+IGNvdWxkIGJlIHJl c291cmNlcyBzd2l0Y2hpbmcgYmV0d2VlbiBjcnRjcyBmb3IgYSBnaXZlbiBjb21taXQsIG9yCj4g ZnJvbSBvbmUKPj4gPj4gY29tbWl0Cj4+ID4+IHRvIHRoZSBuZXh0LCBhbmQgc3luY2hyb25pemlu ZyB0aGF0IGJlY29tZXMgYSBIYXJkIFByb2JsZW0uCj4+ID4+Cj4+ID4+IFBlcmhhcHMgSSdtIG1p c3VuZGVyc3RhbmRpbmcsIGJ1dCB0aGUgc3RhcnQvZW5kIGF0b21pYyBmdW5jdGlvbnMKPiBzZXJp YWxpemUKPj4gPj4gdGhlCj4+ID4+IGluY29taW5nIGNvbW1pdHMsIHJpZ2h0PyBTbyB0aGUgb25s eSBiZW5lZml0IHRoZSBrdGhyZWFkIHByb3ZpZGVzIGlzCj4gdG8KPj4gPj4gbWl0aWdhdGUKPj4g Pj4gYW55IGJsb2NraW5nIGNhbGxzIG1hZGUgb24gb25lIGNydGMgZnJvbSBibG9ja2luZyBhIHNl Y29uZCBjcnRjIGluCj4gdGhlCj4+ID4+IHNhbWUKPj4gPj4gY29tbWl0Pwo+PiA+Pgo+PiA+PiBT ZWFuCj4+ID4KPj4gPiBJIGFtIG5vdCBzdXJlIHdoYXQgbGV2ZWwgb2YgcmVzb3VyY2UgKEkgYXNz dW1lIGh3IGJsb2Nrcykgc3dpdGNoaW5nIHdlCj4gY2FuCj4+ID4gZXhwZWN0IGJldHdlZW4KPj4g PiB0d28gYWN0aXZlIENSVEMncyBvbiBzdWNjZXNzaXZlIGNvbW1pdHMuIFdpdGggdmlydHVhbGl6 YXRpb24gaW4gcGxheSwKPiB0aGUKPj4gPiByZXNvdXJjZXMgYWxsb2NhdGVkIHRvCj4+ID4gQ1JU QyAvIGVuY29kZXIgLyBDb25uZWN0b3Igd2lsbCByZW1haW4gYXR0YWNoZWQgdG8gdGhlIGNvbXBv bmVudHMgYXMKPiBsb25nIGFzCj4+ID4gdGhlIGRpc3BsYXkgaXMgYWN0aXZlLgo+PiA+IFBsYW5l cyAoSFcgcGlwZXMpIGFyZSBvbmUgc3VjaCBlbnRpdHkgd2hpY2ggY2FuIG1vdmUgYmV0d2VlbiB0 aGUKPiBDUlRDJ3MKPj4gPiBmcmVxdWVudGx5LiBFdmVuCj4+ID4gd2l0aCB0aGVtIHBsYW5lcywg dGhlIGh3IGFzc2lnbm1lbnQgc2hvdWxkIHJlbWFpbiB2YWxpZCB1bnRpbCB0aGUKPiBwbGFuZSBp cwo+PiA+IGRldGFjaGVkIGZyb20KPj4gPiBhIENSVEMgYmVmb3JlIGF0dGFjaGluZyB0byB0aGUg bmV4dCBvbmUuCj4+IAo+PiBJIHRoaW5rIGEgZ29vZCBleGFtcGxlIHRvIHRoaW5rIGFib3V0IGlz IHZpcnR1YWxpemluZyBod3BpcGU8LT5wbGFuZQo+PiBtYXBwaW5nLCBmb3IgZXhhbXBsZSwgd2hl biB5b3UgbmVlZCB0byByZS1hc3NpZ24gaHdwaXBlcyBmb3IgdGhlIG5leHQKPj4gZnJhbWUgYWNj b3JkaW5nIHRvIHdoYXQgY2FwYWJpbGl0aWVzIGFyZSBuZWVkZWQgKHl1diwgc2NhbGluZykgb3Ig Z2FuZwo+PiB1cCB0d28gaHdwaXBlcyBmb3Igd2lkZSBidWZmZXIgc2Nhbm91dCAob3IgcmUtdXNl IG9uZSBod3BpcGUgZm9yIHR3bwo+PiBwbGFuZXMpLi4gaW4gbWRwNSB3ZSBrZWVwIHRyYWNrIG9m IHdoYXQgaHdwaXBlcyBhcmUgaW4gdXNlIGJ5IHdoaWNoCj4+IHBsYW5lcyBpbiBkcml2ZXIgZ2xv YmFsIGF0b21pYyBzdGF0ZSAoSSBoYXZlIHNvbWUgcmV2aXZlZCBwYXRjaGVzIGZyb20KPj4gYXJj aGl0dCB0byBjb252ZXJ0IHRoaXMgdG8gZHJpdmVyIHByaXZhdGUgb2JqcykuLgo+PiAKPj4gV2l0 aCB0aGUgYXRvbWljIG1vZGVsIHdlIGhhdmUgc2VyaWFsaXphdGlvbiBpbiB0aGUgKHRvIGFidXNl IHNvbWUKPj4gdGVybXMpICJ0b3AgaGFsZiIgKGllLiB1c2Vyc3BhY2UgY2FsbGluZyBpbnRvIGlv Y3RsKSBieSB2aXJ0dWUgb2YgdGhlCj4+IG1vZGVzZXQgbG9ja3MuICBCdXQgdGhlcmUgaXMgYSBz ZWNvbmQgaGFsZiB0byB0aGlzLiAgQmVjYXVzZSB3ZSB1cGRhdGUKPj4gdGhlIG5ldyBpbmNvbWlu ZyBnbG9iYWwgc3RhdGUgb2JqZWN0IGFib3V0IHdoYXQgaHdwaXBlcyBhcmUgcmVsZWFzZWQKPj4g aW4gYXRvbWljX2NoZWNrLCBpZiB0aGUgaW5jb21pbmcgc3RhdGUgaXMgY29tbWl0dGVkL3N3YXBw ZWQgaW4gdGhlCj4+ICJ0b3AgaGFsZiIgd2UgcmVseSBvbiB0aGlzIHN0YXRlIGJlaW5nIHZhbGlk IGluIHRoZSAiYm90dG9tIGhhbGYiIChpbgo+PiB0aGlzIGNhc2UgdGhlIHdxKSBiZWZvcmUgcHVz aGluZyB0aGUgbmV3IHN0YXRlIHRvIHRoZSBody4uIHdoaWNoCj4+IGVzc2VudGlhbGx5IGZvcmNl cyB1cyB0byBzZXJpYWxpemUgY29tbWl0dGluZyB0aGUgc3RhdGUgaW4gdGhlICJib3R0b20KPj4g aGFsZiIgc28gdGhpbmdzIGhhcHBlbiBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgInRvcCBoYWxm IiBpbnRlbmRlZC4KPj4gT3RoZXJ3aXNlIHdlIGNvdWxkIHRyeSB0byBhc3NpZ24gYSBod3BpcGUg dG8gYSBkaWZmZXJlbnQgY3J0YyB3aGlsZSBpdAo+PiBpcyBzdGlsbCBzY2FubmluZyBvdXQgZm9y IGl0J3MgcHJldmlvdXMgY3J0Yy4gIElmIHlvdSBoYXZlIGEgMzBIego+PiBkaXNwbGF5IHBsdXMg YSAxMjBIeiBkaXNwbGF5LCBJIGd1ZXNzIHRoaXMgaXMgYSBiaXQgc3ViLW9wdGltYWwuCj4gCj4g SXQncyBzdGlsbCBiYWQgZXZlbiB3aXRoIGRpc3BsYXlzIHJlZnJlc2hpbmcgYXQgdGhlIHNhbWUg cmF0ZSwgdGhlIAo+IHdvcnN0Cj4gY2FzZQo+IGNvdWxkIGhhbHZlIHRoZSByZWZyZXNoIHJhdGUg aWYgdmJsYW5rcyBhcmVuJ3QgaW4gc3luYy4KPiAKPj4gCj4+IE1heWJlIHRoZSBhbnN3ZXIgaXMg cGVyLWNydGMgd3EncyBmb3IgY29tbWl0cyBwbHVzIHNvbWUgc29ydCBvZgo+PiBmZW5jaW5nIHNj aGVtZSB0byBzdGFsbCB0aGluZ3Mgd2hlbiB0aGVyZSBhcmUgY3Jvc3MtY3J0YyBkZXBlbmRlbmNp ZXMKPj4gKGllLiBjb21taXQgb24gY3J0YyBCIGRlcGVuZHMgb24gaHdwaXBlIHJlbGVhc2VkIGJ5 IGNvbW1pdCBvbiBjcnRjIEEpPwo+PiAgVGhpcyB3YXkgd2UgZG9uJ3QgYmxvY2sgdXBkYXRlcyBv biB0aGUgZmFzdGVyIGRpc3BsYXkgd2hlbiBpdCBpc24ndAo+PiByZXF1aXJlZC4gIEknbSBub3Qg cXVpdGUgc3VyZSBob3cgdGhhdCB3b3VsZCB3b3JrLiAgQnV0IHBlcmhhcHMgYXQKPj4gbGVhc3Qg d2UgY291bGQgc29tZWhvdyBhbGxvdyBvdXQtb2Ytb3JkZXIgY29tbWl0cyB3aGVuIHR3byB1cGRh dGVzCj4+IGRvbid0IHRvdWNoIGFueSBvZiB0aGUgc2FtZSBzdGF0ZSBvYmoncy4KPiAKPiBSaWdo dCwgZm9yICJub3JtYWwiIHVwZGF0ZXMsIHlvdSBjb3VsZCB1c2UgdGhlIGZhc3QgcGF0aC4gV2Ug YWxyZWFkeSAKPiBoYXZlCj4gbmVlZHNfbW9kZXNldCwgc28gYWRkaW5nIG5lZWRzX3N5bmMgd291 bGRuJ3QgYmUgdG9vIGJhZC4gSSB0aGluayBJIHJhbgo+IGludG8gdGhpcwo+IHdpdGggdGVncmEg YmFjayBpbiBQaXhlbCBDIGRheXMgYW5kIGhhY2tlZCBpbiBhIHBlci1jcnRjIHdvcmtlciBzaW5j ZSAKPiB0aGUKPiByZXNvdXJjZXMgd2VyZSBzdGF0aWNhbGx5IG1hcHBlZC4gV2UnbGwgcHJvYmFi bHkgcnVuIGludG8gdGhpcyBpbiBDck9TIAo+IGFzCj4gd2UKPiBleHBhbmQgb3VyIGV4cGxpY2l0 IHN5bmMgc3VwcG9ydCBpbiB0aGUgY29tcG9zaXRvci4KPiAKPj4gCj4+IChCdXQgSSBkbyB0aGlu ayB0aGlzIGlzIHNvbWV0aGluZyB3ZSBzaG91bGQgZGlzY3VzcyBvbiBkcmktZGV2ZWwsIGFuZAo+ PiBJJ2QgcHJlZmVyIGRvIHNvbHZlIHRoaXMgaW4gdGhlIGF0b21pYyBoZWxwZXJzLCByYXRoZXIg dGhhbiBoYXZpbmcKPj4gdXNlcnNwYWNlIHdvcmthcm91bmQgZGlmZmVyZW50IHNldHMgb2YgYnVn cy9xdWlya3MgZm9yIGVhY2ggZGlmZmVyZW50Cj4+IGRyaXZlci4gIEl0IHJlYWxseSBpc24ndCBz b21ldGhpbmcgdGhhdCBpcyBodyBzcGVjaWZpYywgc28gaXQgZG9lc24ndAo+PiBiZWxvbmcgaW4g dGhlIGRyaXZlci4pCj4gCj4gQWdyZWVkLCB0aGlzIGlzIGEgdHJpY2t5IGJpdCBvZiBjb2RlIGFu ZCBpdCB3b3VsZCBiZW5lZml0IGZyb20gYmVpbmcgCj4gdXNlZAo+IGFjcm9zcwo+IGFsbCBkcml2 ZXJzIChhcyB3ZWxsIGFzIGFsbCBkcml2ZXJzIGJlbmVmaXRpbmcgZnJvbSBpdCkuIEF0IGFueSBy YXRlLCBJCj4gY2FuJ3QKPiB1c2UgbXVsdGktZGlzcGxheSBvbiBteSBkZXZlbG9wbWVudCBkZXZp Y2UgcmlnaHQgbm93LCBzbyBJIHRoaW5rIHdlJ2xsCj4gbmVlZCB0bwo+IGRlZmVyIGZvciBub3cu Cj4gCj4gU2Vhbgo+IAo+PiAKPj4gQlIsCj4+IC1SCj4+IAo+PiAKPj4gPiAiU3RhcnQgYXRvbWlj IiBzeW5jaHJvbml6ZXMgdGhlIGNvbW1pdCBjeWNsZSBmb3IgYWxsIHRoZSBDUlRDJ3MgYnkKPiB3 YWl0aW5nCj4+ID4gZm9yIGNvbW1pdCBjb21wbGV0ZQo+PiA+IG9mIGFsbCB0aGUgcHJldmlvdXMg ZnJhbWVzLiBCdXQgcGVyIGNydGMga3RocmVhZHMgYWxsb3dzIHRoZSBjdXJyZW50Cj4gZnJhbWUK Pj4gPiBjb21taXRzIHRvIGhhcHBlbgo+PiA+IGluZGVwZW5kZW50bHkuIEZvciBhbmRyb2lkLCB3 ZSBuZWVkZWQgdGhpcyBtb2RlbCBhcyBlYWNoIGNvbW1pdCB0aHJlYWQKPiBuZWVkCj4+ID4gdG8g d2FpdCBmb3IgaW5wdXQKPj4gPiBwbGFuZSBmZW5jZXMgYmVmb3JlIHByb2dyYW1taW5nIHRoZSBo YXJkd2FyZS4KPj4gPgo+PiA+IEpleWt1bWFyIFMuCj4+ID4KPj4gPj4KPj4gPj4+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvbmx5IHJldHVybiB6ZXJvIGlmIHdv cmsKPiBpcwo+PiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq IHF1ZXVlZCBzdWNjZXNzZnVsbHkuCj4+ID4+PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICovCj4+ID4+PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmV0ID0gMDsKPj4gPj4+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBl bHNlIHsKPj4gPj4+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUk1f RVJST1IoIiBFcnJvciBmb3IKPiBjcnRjX2lkOgo+PiA+Pj4gPiAlZFxuIiwKPj4gPj4+ID4gLQo+ PiA+Pj4gPiBwcml2LT5kaXNwX3RocmVhZFtqXS5jcnRjX2lkKTsKPj4gPj4+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfQo+PiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBicmVhazsKPj4gPj4+ID4gLSAgICAgICAgICAgICAgICAgICAgIH0KPj4gPj4+ID4gLSAg ICAgICAgICAgICB9CgpDYXJlIHRvIHJlbW92ZSBwcml2LT5kaXNwX3RocmVhZCBhbmQgYWxsIGl0 cyByZWZlcmVuY2VzIGFzIGEgcGFydCBvZiAKdGhpcyBjaGFuZ2U/CgotIEpleWt1bWFyIFMKPj4g Pj4+ID4gLSAgICAgICAgICAgICAvKgo+PiA+Pj4gPiAtICAgICAgICAgICAgICAqIFRPRE86IGhh bmRsZSBjYXNlcyB3aGVyZSB0aGVyZSB3aWxsIGJlIG1vcmUgdGhhbgo+PiA+Pj4gPiAtICAgICAg ICAgICAgICAqIG9uZSBjcnRjIHBlciBjb21taXQgY3ljbGUuIFJlbW92ZSB0aGlzIGNoZWNrCj4g dGhlbi4KPj4gPj4+ID4gLSAgICAgICAgICAgICAgKiBDdXJyZW50IGFzc3VtcHRpb24gaXMgdGhl cmUgd2lsbCBiZSBvbmx5IG9uZSBjcnRjCj4+ID4+PiA+IC0gICAgICAgICAgICAgICogcGVyIGNv bW1pdCBjeWNsZS4KPj4gPj4+ID4gLSAgICAgICAgICAgICAgKi8KPj4gPj4+ID4gLSAgICAgICAg ICAgICBpZiAoaiA8IHByaXYtPm51bV9jcnRjcykKPj4gPj4+ID4gLSAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOwo+PiA+Pj4gPiAtICAgICB9Cj4+ID4+PiA+IC0KPj4gPj4+ID4gLSAgICAgaWYg KHJldCkgewo+PiA+Pj4gPiAtICAgICAgICAgICAgIC8qKgo+PiA+Pj4gPiAtICAgICAgICAgICAg ICAqIHRoaXMgaXMgbm90IGV4cGVjdGVkIHRvIGhhcHBlbiwgYnV0IGF0IHRoaXMgcG9pbnQKPiB0 aGUKPj4gPj4+ID4gc3RhdGUKPj4gPj4+ID4gLSAgICAgICAgICAgICAgKiBoYXMgYmVlbiBzd2Fw cGVkLCBidXQgd2UgY291bGRuJ3QgZGlzcGF0Y2ggdG8gYQo+IGNydGMKPj4gPj4+ID4gdGhyZWFk Lgo+PiA+Pj4gPiAtICAgICAgICAgICAgICAqIGZhbGxiYWNrIG5vdyB0byBhIHN5bmNocm9ub3Vz IGNvbXBsZXRlX2NvbW1pdCB0bwo+IHRyeQo+PiA+Pj4gPiBhbmQKPj4gPj4+ID4gLSAgICAgICAg ICAgICAgKiBlbnN1cmUgdGhhdCBTVyBhbmQgSFcgc3RhdGUgZG9uJ3QgZ2V0IG91dCBvZgo+IHN5 bmMuCj4+ID4+PiA+IC0gICAgICAgICAgICAgICovCj4+ID4+PiA+IC0gICAgICAgICAgICAgRFJN X0VSUk9SKCJmYWlsZWQgdG8gZGlzcGF0Y2ggY29tbWl0IHRvIGFueQo+IENSVENcbiIpOwo+PiA+ Pj4gPiAtICAgICAgICAgICAgIGNvbXBsZXRlX2NvbW1pdChjb21taXQpOwo+PiA+Pj4gPiAtICAg ICB9IGVsc2UgaWYgKCFub25ibG9jaykgewo+PiA+Pj4gPiAtICAgICAgICAgICAgIGt0aHJlYWRf Zmx1c2hfd29yaygmY29tbWl0LT5jb21taXRfd29yayk7Cj4+ID4+PiA+IC0gICAgIH0KPj4gPj4+ ID4gLQo+PiA+Pj4gPiAtICAgICAvKiBmcmVlIG5vbmJsb2NraW5nIGNvbW1pdHMgaW4gdGhpcyBj b250ZXh0LCBhZnRlcgo+IHByb2Nlc3NpbmcgKi8KPj4gPj4+ID4gLSAgICAgaWYgKCFub25ibG9j aykKPj4gPj4+ID4gLSAgICAgICAgICAgICBrZnJlZShjb21taXQpOwo+PiA+Pj4gPiArICAgICBz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBjb250YWluZXJfb2Yod29yaywKPj4gPj4+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdAo+PiA+Pj4gPiBkcm1fYXRvbWljX3N0YXRlLAo+PiA+Pj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0X3dvcmspOwo+PiA+Pj4g PiArICAgICBjb21taXRfdGFpbChzdGF0ZSk7Cj4+ID4+PiA+ICB9Cj4+ID4+PiA+Cj4+ID4+PiA+ ICAvKioKPj4gPj4+ID4gQEAgLTI0NywxNyArMTIyLDEyIEBAIGludCBtc21fYXRvbWljX2NvbW1p dChzdHJ1Y3QgZHJtX2RldmljZQo+ICpkZXYsCj4+ID4+PiA+ICAgICAgICAgICAgICAgc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLCBib29sIG5vbmJsb2NrKQo+PiA+Pj4gPiAgewo+PiA+ Pj4gPiAgICAgICBzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKPj4gPj4+ID4gLSAgICAgc3RydWN0IG1zbV9jb21taXQgKmM7Cj4+ID4+PiA+ICAgICAgIHN0 cnVjdCBkcm1fY3J0YyAqY3J0YzsKPj4gPj4+ID4gICAgICAgc3RydWN0IGRybV9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlOwo+PiA+Pj4gPiAgICAgICBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPj4g Pj4+ID4gICAgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlLCAqbmV3 X3BsYW5lX3N0YXRlOwo+PiA+Pj4gPiAgICAgICBpbnQgaSwgcmV0Owo+PiA+Pj4gPgo+PiA+Pj4g PiAtICAgICByZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9wcmVwYXJlX3BsYW5lcyhkZXYsIHN0YXRl KTsKPj4gPj4+ID4gLSAgICAgaWYgKHJldCkKPj4gPj4+ID4gLSAgICAgICAgICAgICByZXR1cm4g cmV0Owo+PiA+Pj4gPiAtCj4+ID4+PiA+ICAgICAgIC8qCj4+ID4+PiA+ICAgICAgICAqIE5vdGUg dGhhdCBwbGFuZS0+YXRvbWljX2FzeW5jX2NoZWNrKCkgc2hvdWxkIGZhaWwgaWYgd2UKPiBuZWVk Cj4+ID4+PiA+ICAgICAgICAqIHRvIHJlLWFzc2lnbiBod3BpcGUgb3IgYW55dGhpbmcgdGhhdCB0 b3VjaGVzIGdsb2JhbAo+IGF0b21pYwo+PiA+Pj4gPiBAQCAtMjY1LDMyICsxMzUsMzAgQEAgaW50 IG1zbV9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlCj4gKmRldiwKPj4gPj4+ID4gICAg ICAgICogY2FzZXMuCj4+ID4+PiA+ICAgICAgICAqLwo+PiA+Pj4gPiAgICAgICBpZiAoc3RhdGUt PmFzeW5jX3VwZGF0ZSkgewo+PiA+Pj4gPiArICAgICAgICAgICAgIHJldCA9IGRybV9hdG9taWNf aGVscGVyX3ByZXBhcmVfcGxhbmVzKGRldiwgc3RhdGUpOwo+PiA+Pj4gPiArICAgICAgICAgICAg IGlmIChyZXQpCj4+ID4+PiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+PiA+ Pj4gPiArCj4+ID4+PiA+ICAgICAgICAgICAgICAgZHJtX2F0b21pY19oZWxwZXJfYXN5bmNfY29t bWl0KGRldiwgc3RhdGUpOwo+PiA+Pj4gPiAgICAgICAgICAgICAgIGRybV9hdG9taWNfaGVscGVy X2NsZWFudXBfcGxhbmVzKGRldiwgc3RhdGUpOwo+PiA+Pj4gPiAgICAgICAgICAgICAgIHJldHVy biAwOwo+PiA+Pj4gPiAgICAgICB9Cj4+ID4+PiA+Cj4+ID4+PiA+IC0gICAgIGMgPSBjb21taXRf aW5pdChzdGF0ZSwgbm9uYmxvY2spOwo+PiA+Pj4gPiAtICAgICBpZiAoIWMpIHsKPj4gPj4+ID4g LSAgICAgICAgICAgICByZXQgPSAtRU5PTUVNOwo+PiA+Pj4gPiAtICAgICAgICAgICAgIGdvdG8g ZXJyb3I7Cj4+ID4+PiA+IC0gICAgIH0KPj4gPj4+ID4gKyAgICAgcmV0ID0gZHJtX2F0b21pY19o ZWxwZXJfc2V0dXBfY29tbWl0KHN0YXRlLCBub25ibG9jayk7Cj4+ID4+PiA+ICsgICAgIGlmIChy ZXQpCj4+ID4+PiA+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4gPj4+ID4KPj4gPj4+ID4g LSAgICAgLyoKPj4gPj4+ID4gLSAgICAgICogRmlndXJlIG91dCB3aGF0IGNydGNzIHdlIGhhdmU6 Cj4+ID4+PiA+IC0gICAgICAqLwo+PiA+Pj4gPiAtICAgICBmb3JfZWFjaF9uZXdfY3J0Y19pbl9z dGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkKPj4gPj4+ID4gLSAgICAgICAgICAgICBj LT5jcnRjX21hc2sgfD0gZHJtX2NydGNfbWFzayhjcnRjKTsKPj4gPj4+ID4gKyAgICAgSU5JVF9X T1JLKCZzdGF0ZS0+Y29tbWl0X3dvcmssIGNvbW1pdF93b3JrKTsKPj4gPj4+ID4KPj4gPj4+ID4g LSAgICAgLyoKPj4gPj4+ID4gLSAgICAgICogV2FpdCBmb3IgcGVuZGluZyB1cGRhdGVzIG9uIGFu eSBvZiB0aGUgc2FtZSBjcnRjJ3MgYW5kCj4gdGhlbgo+PiA+Pj4gPiAtICAgICAgKiBtYXJrIG91 ciBzZXQgb2YgY3J0YydzIGFzIGJ1c3k6Cj4+ID4+PiA+IC0gICAgICAqLwo+PiA+Pj4gPiAtICAg ICByZXQgPSBzdGFydF9hdG9taWMoZGV2LT5kZXZfcHJpdmF0ZSwgYy0+Y3J0Y19tYXNrKTsKPj4g Pj4+ID4gKyAgICAgcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfcHJlcGFyZV9wbGFuZXMoZGV2LCBz dGF0ZSk7Cj4+ID4+PiA+ICAgICAgIGlmIChyZXQpCj4+ID4+PiA+IC0gICAgICAgICAgICAgZ290 byBlcnJfZnJlZTsKPj4gPj4+ID4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Owo+PiA+Pj4gPgo+ PiA+Pj4gPiAtICAgICBCVUdfT04oZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZShzdGF0ZSwg ZmFsc2UpIDwgMCk7Cj4+ID4+PiA+ICsgICAgIGlmICghbm9uYmxvY2spIHsKPj4gPj4+ID4gKyAg ICAgICAgICAgICByZXQgPSBkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl9mZW5jZXMoZGV2LCBz dGF0ZSwKPj4gPj4+ID4gdHJ1ZSk7Cj4+ID4+PiA+ICsgICAgICAgICAgICAgaWYgKHJldCkKPj4g Pj4+ID4gKyAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Cj4+ID4+PiA+ICsgICAgIH0K Pj4gPj4+ID4KPj4gPj4+ID4gICAgICAgLyoKPj4gPj4+ID4gICAgICAgICogVGhpcyBpcyB0aGUg cG9pbnQgb2Ygbm8gcmV0dXJuIC0gZXZlcnl0aGluZyBiZWxvdyBuZXZlcgo+IGZhaWxzCj4+ID4+ PiA+IGV4Y2VwdAo+PiA+Pj4gPiBAQCAtMjk5LDYgKzE2Nyw4IEBAIGludCBtc21fYXRvbWljX2Nv bW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiA+Pj4gPiAgICAgICAgKgo+PiA+Pj4gPiAg ICAgICAgKiBzd2FwIGRyaXZlciBwcml2YXRlIHN0YXRlIHdoaWxlIHN0aWxsIGhvbGRpbmcgc3Rh dGVfbG9jawo+PiA+Pj4gPiAgICAgICAgKi8KPj4gPj4+ID4gKyAgICAgQlVHX09OKGRybV9hdG9t aWNfaGVscGVyX3N3YXBfc3RhdGUoc3RhdGUsIGZhbHNlKSA8IDApOwo+PiA+Pj4gPiArCj4+ID4+ PiA+ICAgICAgIGlmICh0b19rbXNfc3RhdGUoc3RhdGUpLT5zdGF0ZSkKPj4gPj4+ID4gICAgICAg ICAgICAgICBwcml2LT5rbXMtPmZ1bmNzLT5zd2FwX3N0YXRlKHByaXYtPmttcywgc3RhdGUpOwo+ PiA+Pj4gPgo+PiA+Pj4gPiBAQCAtMzI5LDEyICsxOTksMTMgQEAgaW50IG1zbV9hdG9taWNfY29t bWl0KHN0cnVjdCBkcm1fZGV2aWNlCj4gKmRldiwKPj4gPj4+ID4gICAgICAgICovCj4+ID4+PiA+ Cj4+ID4+PiA+ICAgICAgIGRybV9hdG9taWNfc3RhdGVfZ2V0KHN0YXRlKTsKPj4gPj4+ID4gLSAg ICAgbXNtX2F0b21pY19jb21taXRfZGlzcGF0Y2goZGV2LCBzdGF0ZSwgYyk7Cj4+ID4+PiA+ICsg ICAgIGlmIChub25ibG9jaykKPj4gPj4+ID4gKyAgICAgICAgICAgICBxdWV1ZV93b3JrKHN5c3Rl bV91bmJvdW5kX3dxLCAmc3RhdGUtPmNvbW1pdF93b3JrKTsKPj4gPj4+ID4gKyAgICAgZWxzZQo+ PiA+Pj4gPiArICAgICAgICAgICAgIGNvbW1pdF90YWlsKHN0YXRlKTsKPj4gPj4+ID4KPj4gPj4+ ID4gICAgICAgcmV0dXJuIDA7Cj4+ID4+PiA+Cj4+ID4+PiA+IC1lcnJfZnJlZToKPj4gPj4+ID4g LSAgICAga2ZyZWUoYyk7Cj4+ID4+PiA+ICBlcnJvcjoKPj4gPj4+ID4gICAgICAgZHJtX2F0b21p Y19oZWxwZXJfY2xlYW51cF9wbGFuZXMoZGV2LCBzdGF0ZSk7Cj4+ID4+PiA+ICAgICAgIHJldHVy biByZXQ7Cj4+ID4+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYu Ywo+PiA+Pj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jCj4+ID4+PiA+IGluZGV4 IGVkYTRhMjM0MGY5My4uYjM1NDQyNGNjY2I1IDEwMDY0NAo+PiA+Pj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vbXNtL21zbV9kcnYuYwo+PiA+Pj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L21zbV9kcnYuYwo+PiA+Pj4gPiBAQCAtNTQ5LDcgKzU0OSw2IEBAIHN0YXRpYyBpbnQgbXNtX2Ry bV9pbml0KHN0cnVjdCBkZXZpY2UgKmRldiwKPiBzdHJ1Y3QKPj4gPj4+ID4gZHJtX2RyaXZlciAq ZHJ2KQo+PiA+Pj4gPiAgICAgICAgICAgICAgIGdvdG8gbWRzc19pbml0X2ZhaWw7Cj4+ID4+PiA+ Cj4+ID4+PiA+ICAgICAgIHByaXYtPndxID0gYWxsb2Nfb3JkZXJlZF93b3JrcXVldWUoIm1zbV9k cm0iLCAwKTsKPj4gPj4+ID4gLSAgICAgaW5pdF93YWl0cXVldWVfaGVhZCgmcHJpdi0+cGVuZGlu Z19jcnRjc19ldmVudCk7Cj4+ID4+PiA+Cj4+ID4+PiA+ICAgICAgIElOSVRfTElTVF9IRUFEKCZw cml2LT5jbGllbnRfZXZlbnRfbGlzdCk7Cj4+ID4+PiA+ICAgICAgIElOSVRfTElTVF9IRUFEKCZw cml2LT5pbmFjdGl2ZV9saXN0KTsKPj4gPj4+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vbXNtX2Rydi5oCj4+ID4+PiA+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgK Pj4gPj4+ID4gaW5kZXggY2Y5NmE4NWY0YjU1Li4yOTI0OTZiNjgyZTggMTAwNjQ0Cj4+ID4+PiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCj4+ID4+PiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCj4+ID4+PiA+IEBAIC01MzYsMTAgKzUzNiw2IEBAIHN0 cnVjdCBtc21fZHJtX3ByaXZhdGUgewo+PiA+Pj4gPgo+PiA+Pj4gPiAgICAgICBzdHJ1Y3Qgd29y a3F1ZXVlX3N0cnVjdCAqd3E7Cj4+ID4+PiA+Cj4+ID4+PiA+IC0gICAgIC8qIGNydGNzIHBlbmRp bmcgYXN5bmMgYXRvbWljIHVwZGF0ZXM6ICovCj4+ID4+PiA+IC0gICAgIHVpbnQzMl90IHBlbmRp bmdfY3J0Y3M7Cj4+ID4+PiA+IC0gICAgIHdhaXRfcXVldWVfaGVhZF90IHBlbmRpbmdfY3J0Y3Nf ZXZlbnQ7Cj4+ID4+PiA+IC0KPj4gPj4+ID4gICAgICAgdW5zaWduZWQgaW50IG51bV9wbGFuZXM7 Cj4+ID4+PiA+ICAgICAgIHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lc1tNQVhfUExBTkVTXTsKCi0t IApKZXlrdW1hciBTCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVu bwo=