From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Clark Subject: Re: [DPU PATCH 06/11] drm/msm: Remove msm_commit/kthread, use atomic helper commit Date: Thu, 1 Mar 2018 19:37:10 -0500 Message-ID: References: <20180228191906.185417-1-seanpaul@chromium.org> <20180228191906.185417-7-seanpaul@chromium.org> <82098cc2efdbf6b91f1e3009457eaccb@codeaurora.org> <20180301152724.GM223881@art_vandelay> <156ab33c41d436c79cc661e84bebc353@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <156ab33c41d436c79cc661e84bebc353-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Jeykumar Sankaran Cc: linux-arm-msm , abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, Sean Paul , dri-devel , "Kristian H. Kristensen" , freedreno List-Id: linux-arm-msm@vger.kernel.org T24gVGh1LCBNYXIgMSwgMjAxOCBhdCAzOjM3IFBNLCAgPGpzYW5rYUBjb2RlYXVyb3JhLm9yZz4g d3JvdGU6Cj4gT24gMjAxOC0wMy0wMSAwNzoyNywgU2VhbiBQYXVsIHdyb3RlOgo+Pgo+PiBPbiBX ZWQsIEZlYiAyOCwgMjAxOCBhdCAwODowNzowMFBNIC0wODAwLCBqc2Fua2FAY29kZWF1cm9yYS5v cmcgd3JvdGU6Cj4+Pgo+Pj4gT24gMjAxOC0wMi0yOCAxMToxOSwgU2VhbiBQYXVsIHdyb3RlOgo+ Pj4gPiBNb3ZpbmcgZnVydGhlciB0b3dhcmRzIHN3aXRjaGluZyBmdWxseSB0byB0aGUgdGhlIGF0 b21pYyBoZWxwZXJzLCB0aGlzCj4+PiA+IHBhdGNoIHJlbW92ZXMgdGhlIGhhbmQtcm9sbGVkIGt0 aHJlYWQgbm9uYmxvY2sgY29tbWl0IGNvZGUgYW5kIHVzZXMKPj4KPj4gdGhlCj4+Pgo+Pj4gPiBh dG9taWMgaGVscGVycyBjb21taXRfd29yayBtb2RlbC4KPj4+ID4KPj4+ID4gVGhlcmUncyBzdGls bCBhIGxvdCBvZiBjb3B5cGFzdGEgaGVyZSwgYnV0IGl0J3Mgc3RpbGwgbmVlZGVkIHRvCj4+PiA+ IGZhY2lsaXRhdGUgdGhlIHN3YXBfc3RhdGUgYW5kIHByZXBhcmVfZmVuY2UgcHJpdmF0ZSBmdW5j dGlvbnMuIFRoZXNlCj4+PiA+IHdpbGwgYmUgc29ydGVkIG91dCBpbiBhIGZvbGxvdy1vbiBwYXRj aC4KPj4+ID4KPj4+ID4gQ2hhbmdlLUlkOiBJOWZjYmEyNzgyNGJhNjNkM2ZhYjk2Y2IyYmMxOTRi ZmE2ZjM0NzViNwo+Pj4gPiBTaWduZWQtb2ZmLWJ5OiBTZWFuIFBhdWwgPHNlYW5wYXVsQGNocm9t aXVtLm9yZz4KPj4+ID4gLS0tCj4+PiA+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9hdG9taWMu YyB8IDE5OQo+Pgo+PiArKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+Pgo+Pj4gPiAg ZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMgICAgfCAgIDEgLQo+Pj4gPiAgZHJpdmVycy9n cHUvZHJtL21zbS9tc21fZHJ2LmggICAgfCAgIDQgLQo+Pj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAz NSBpbnNlcnRpb25zKCspLCAxNjkgZGVsZXRpb25zKC0pCj4+PiA+Cj4+PiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9hdG9taWMuYwo+Pj4gPiBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vbXNtX2F0b21pYy5jCj4+PiA+IGluZGV4IDNhMThiZDNkYzIxNS4uN2U1NGViNjVkMDk2 IDEwMDY0NAo+Pj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9hdG9taWMuYwo+Pj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9hdG9taWMuYwo+Pj4gPiBAQCAtMjEsNTEg KzIxLDYgQEAKPj4+ID4gICNpbmNsdWRlICJtc21fZ2VtLmgiCj4+PiA+ICAjaW5jbHVkZSAibXNt X2ZlbmNlLmgiCj4+PiA+Cj4+PiA+IC1zdHJ1Y3QgbXNtX2NvbW1pdCB7Cj4+PiA+IC0gICAgIHN0 cnVjdCBkcm1fZGV2aWNlICpkZXY7Cj4+PiA+IC0gICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZTsKPj4+ID4gLSAgICAgdWludDMyX3QgY3J0Y19tYXNrOwo+Pj4gPiAtICAgICBib29s IG5vbmJsb2NrOwo+Pj4gPiAtICAgICBzdHJ1Y3Qga3RocmVhZF93b3JrIGNvbW1pdF93b3JrOwo+ Pj4gPiAtfTsKPj4+ID4gLQo+Pj4gPiAtLyogYmxvY2sgdW50aWwgc3BlY2lmaWVkIGNydGNzIGFy ZSBubyBsb25nZXIgcGVuZGluZyB1cGRhdGUsIGFuZAo+Pj4gPiAtICogYXRvbWljYWxseSBtYXJr IHRoZW0gYXMgcGVuZGluZyB1cGRhdGUKPj4+ID4gLSAqLwo+Pj4gPiAtc3RhdGljIGludCBzdGFy dF9hdG9taWMoc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiwgdWludDMyX3QKPj4+ID4gY3J0 Y19tYXNrKQo+Pj4gPiAtewo+Pj4gPiAtICAgICBpbnQgcmV0Owo+Pj4gPiAtCj4+PiA+IC0gICAg IHNwaW5fbG9jaygmcHJpdi0+cGVuZGluZ19jcnRjc19ldmVudC5sb2NrKTsKPj4+ID4gLSAgICAg cmV0ID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX2xvY2tlZChwcml2LT5wZW5kaW5nX2NydGNz X2V2ZW50LAo+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgIShwcml2LT5wZW5kaW5nX2NydGNz ICYgY3J0Y19tYXNrKSk7Cj4+PiA+IC0gICAgIGlmIChyZXQgPT0gMCkgewo+Pj4gPiAtICAgICAg ICAgICAgIERCRygic3RhcnQ6ICUwOHgiLCBjcnRjX21hc2spOwo+Pj4gPiAtICAgICAgICAgICAg IHByaXYtPnBlbmRpbmdfY3J0Y3MgfD0gY3J0Y19tYXNrOwo+Pj4gPiAtICAgICB9Cj4+PiA+IC0g ICAgIHNwaW5fdW5sb2NrKCZwcml2LT5wZW5kaW5nX2NydGNzX2V2ZW50LmxvY2spOwo+Pj4gPiAt Cj4+PiA+IC0gICAgIHJldHVybiByZXQ7Cj4+PiA+IC19Cj4+PiA+IC0KPj4+ID4gLS8qIGNsZWFy IHNwZWNpZmllZCBjcnRjcyAobm8gbG9uZ2VyIHBlbmRpbmcgdXBkYXRlKQo+Pj4gPiAtICovCj4+ PiA+IC1zdGF0aWMgdm9pZCBlbmRfYXRvbWljKHN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXYs IHVpbnQzMl90Cj4+PiA+IGNydGNfbWFzaykKPj4+ID4gLXsKPj4+ID4gLSAgICAgc3Bpbl9sb2Nr KCZwcml2LT5wZW5kaW5nX2NydGNzX2V2ZW50LmxvY2spOwo+Pj4gPiAtICAgICBEQkcoImVuZDog JTA4eCIsIGNydGNfbWFzayk7Cj4+PiA+IC0gICAgIHByaXYtPnBlbmRpbmdfY3J0Y3MgJj0gfmNy dGNfbWFzazsKPj4+ID4gLSAgICAgd2FrZV91cF9hbGxfbG9ja2VkKCZwcml2LT5wZW5kaW5nX2Ny dGNzX2V2ZW50KTsKPj4+ID4gLSAgICAgc3Bpbl91bmxvY2soJnByaXYtPnBlbmRpbmdfY3J0Y3Nf ZXZlbnQubG9jayk7Cj4+PiA+IC19Cj4+PiA+IC0KPj4+ID4gLXN0YXRpYyB2b2lkIGNvbW1pdF9k ZXN0cm95KHN0cnVjdCBtc21fY29tbWl0ICpjKQo+Pj4gPiAtewo+Pj4gPiAtICAgICBlbmRfYXRv bWljKGMtPmRldi0+ZGV2X3ByaXZhdGUsIGMtPmNydGNfbWFzayk7Cj4+PiA+IC0gICAgIGlmIChj LT5ub25ibG9jaykKPj4+ID4gLSAgICAgICAgICAgICBrZnJlZShjKTsKPj4+ID4gLX0KPj4+ID4g LQo+Pj4gPiAgc3RhdGljIHZvaWQgbXNtX2F0b21pY193YWl0X2Zvcl9jb21taXRfZG9uZSgKPj4+ ID4gICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+Pj4gPiAgICAgICAgICAg ICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCj4+PiA+IEBAIC0xMTgsNiAr NzMsMTAgQEAgc3RhdGljIHZvaWQgbXNtX2F0b21pY19jb21taXRfdGFpbChzdHJ1Y3QKPj4+ID4g ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4+PiA+Cj4+PiA+ICAgICAgIG1zbV9hdG9taWNfd2Fp dF9mb3JfY29tbWl0X2RvbmUoZGV2LCBzdGF0ZSk7Cj4+PiA+Cj4+PiA+ICsgICAgIGRybV9hdG9t aWNfaGVscGVyX2NvbW1pdF9od19kb25lKHN0YXRlKTsKPj4+ID4gKwo+Pj4gPiArICAgICBkcm1f YXRvbWljX2hlbHBlcl93YWl0X2Zvcl92YmxhbmtzKGRldiwgc3RhdGUpOwo+Pj4gPiArCj4+PiA+ ICAgICAgIGRybV9hdG9taWNfaGVscGVyX2NsZWFudXBfcGxhbmVzKGRldiwgc3RhdGUpOwo+Pj4g Pgo+Pj4gPiAgICAgICBrbXMtPmZ1bmNzLT5jb21wbGV0ZV9jb21taXQoa21zLCBzdGF0ZSk7Cj4+ PiA+IEBAIC0xMjYsMTA5ICs4NSwyNSBAQCBzdGF0aWMgdm9pZCBtc21fYXRvbWljX2NvbW1pdF90 YWlsKHN0cnVjdAo+Pj4gPiBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPj4+ID4gIC8qIFRoZSAo cG90ZW50aWFsbHkpIGFzeW5jaHJvbm91cyBwYXJ0IG9mIHRoZSBjb21taXQuICBBdCB0aGlzIHBv aW50Cj4+PiA+ICAgKiBub3RoaW5nIGNhbiBmYWlsIHNob3J0IG9mIGFybWFnZWRkb24uCj4+PiA+ ICAgKi8KPj4+ID4gLXN0YXRpYyB2b2lkIGNvbXBsZXRlX2NvbW1pdChzdHJ1Y3QgbXNtX2NvbW1p dCAqYykKPj4+ID4gK3N0YXRpYyB2b2lkIGNvbW1pdF90YWlsKHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSkKPj4+ID4gIHsKPj4+ID4gLSAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlID0gYy0+c3RhdGU7Cj4+PiA+IC0gICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBz dGF0ZS0+ZGV2Owo+Pj4gPiArICAgICBkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl9mZW5jZXMo c3RhdGUtPmRldiwgc3RhdGUsIGZhbHNlKTsKPj4+ID4KPj4+ID4gLSAgICAgZHJtX2F0b21pY19o ZWxwZXJfd2FpdF9mb3JfZmVuY2VzKGRldiwgc3RhdGUsIGZhbHNlKTsKPj4+ID4gKyAgICAgZHJt X2F0b21pY19oZWxwZXJfd2FpdF9mb3JfZGVwZW5kZW5jaWVzKHN0YXRlKTsKPj4+ID4KPj4+ID4g ICAgICAgbXNtX2F0b21pY19jb21taXRfdGFpbChzdGF0ZSk7Cj4+PiA+Cj4+PiA+IC0gICAgIGRy bV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKPj4+ID4gLX0KPj4+ID4gLQo+Pj4gPiAtc3RhdGlj IHZvaWQgX21zbV9kcm1fY29tbWl0X3dvcmtfY2Ioc3RydWN0IGt0aHJlYWRfd29yayAqd29yaykK Pj4+ID4gLXsKPj4+ID4gLSAgICAgc3RydWN0IG1zbV9jb21taXQgKmNvbW1pdCA9ICBOVUxMOwo+ Pj4gPiAtCj4+PiA+IC0gICAgIGlmICghd29yaykgewo+Pj4gPiAtICAgICAgICAgICAgIERSTV9F UlJPUigiJXM6IEludmFsaWQgY29tbWl0IHdvcmsgZGF0YSFcbiIsIF9fZnVuY19fKTsKPj4+ID4g LSAgICAgICAgICAgICByZXR1cm47Cj4+PiA+IC0gICAgIH0KPj4+ID4gLQo+Pj4gPiAtICAgICBj b21taXQgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG1zbV9jb21taXQsIGNvbW1pdF93b3Jr KTsKPj4+ID4gLQo+Pj4gPiAtICAgICBjb21wbGV0ZV9jb21taXQoY29tbWl0KTsKPj4+ID4gLQo+ Pj4gPiAtICAgICBjb21taXRfZGVzdHJveShjb21taXQpOwo+Pj4gPiAtfQo+Pj4gPiAtCj4+PiA+ IC1zdGF0aWMgc3RydWN0IG1zbV9jb21taXQgKmNvbW1pdF9pbml0KHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSwKPj4+ID4gLSAgICAgICAgICAgICBib29sIG5vbmJsb2NrKQo+Pj4gPiAt ewo+Pj4gPiAtICAgICBzdHJ1Y3QgbXNtX2NvbW1pdCAqYyA9IGt6YWxsb2Moc2l6ZW9mKCpjKSwg R0ZQX0tFUk5FTCk7Cj4+PiA+ICsgICAgIGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9jbGVhbnVw X2RvbmUoc3RhdGUpOwo+Pj4gPgo+Pj4gPiAtICAgICBpZiAoIWMpCj4+PiA+IC0gICAgICAgICAg ICAgcmV0dXJuIE5VTEw7Cj4+PiA+IC0KPj4+ID4gLSAgICAgYy0+ZGV2ID0gc3RhdGUtPmRldjsK Pj4+ID4gLSAgICAgYy0+c3RhdGUgPSBzdGF0ZTsKPj4+ID4gLSAgICAgYy0+bm9uYmxvY2sgPSBu b25ibG9jazsKPj4+ID4gLQo+Pj4gPiAtICAgICBrdGhyZWFkX2luaXRfd29yaygmYy0+Y29tbWl0 X3dvcmssIF9tc21fZHJtX2NvbW1pdF93b3JrX2NiKTsKPj4+ID4gLQo+Pj4gPiAtICAgICByZXR1 cm4gYzsKPj4+ID4gKyAgICAgZHJtX2F0b21pY19zdGF0ZV9wdXQoc3RhdGUpOwo+Pj4gPiAgfQo+ Pj4gPgo+Pj4gPiAtLyogU3RhcnQgZGlzcGxheSB0aHJlYWQgZnVuY3Rpb24gKi8KPj4+ID4gLXN0 YXRpYyB2b2lkIG1zbV9hdG9taWNfY29tbWl0X2Rpc3BhdGNoKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4+PiA+IC0gICAgICAgICAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLCBz dHJ1Y3QgbXNtX2NvbW1pdAo+Pj4gPiAqY29tbWl0KQo+Pj4gPiArc3RhdGljIHZvaWQgY29tbWl0 X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+Pj4gPiAgewo+Pj4gPiAtICAgICBzdHJ1 Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4+ID4gLSAgICAg c3RydWN0IGRybV9jcnRjICpjcnRjID0gTlVMTDsKPj4+ID4gLSAgICAgc3RydWN0IGRybV9jcnRj X3N0YXRlICpuZXdfY3J0Y19zdGF0ZSA9IE5VTEw7Cj4+PiA+IC0gICAgIGludCByZXQgPSAtRUlO VkFMLCBpID0gMCwgaiA9IDA7Cj4+PiA+IC0gICAgIGJvb2wgbm9uYmxvY2s7Cj4+PiA+IC0KPj4+ ID4gLSAgICAgLyogY2FjaGUgc2luY2Ugd29yayB3aWxsIGtmcmVlIGNvbW1pdCBpbiBub24tYmxv Y2tpbmcgY2FzZSAqLwo+Pj4gPiAtICAgICBub25ibG9jayA9IGNvbW1pdC0+bm9uYmxvY2s7Cj4+ PiA+IC0KPj4+ID4gLSAgICAgZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMs IG5ld19jcnRjX3N0YXRlLCBpKSB7Cj4+PiA+IC0gICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8 IHByaXYtPm51bV9jcnRjczsgaisrKSB7Cj4+PiA+IC0gICAgICAgICAgICAgICAgICAgICBpZiAo cHJpdi0+ZGlzcF90aHJlYWRbal0uY3J0Y19pZCA9PQo+Pj4gPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3J0Yy0+YmFzZS5pZCkgewo+Pj4gPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJpdi0+ZGlzcF90aHJlYWRbal0udGhyZWFkKSB7 Cj4+PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3RocmVhZF9xdWV1 ZV93b3JrKAo+Pj4gPiAtCj4+PiA+ICZwcml2LT5kaXNwX3RocmVhZFtqXS53b3JrZXIsCj4+PiA+ IC0KPj4+ID4gJmNvbW1pdC0+Y29tbWl0X3dvcmspOwo+Pj4gQXJlIHRoZXJlIGFueSBrbm93biBw cm9wb3NhbHMgZmxvYXRpbmcgYXJvdW5kIHRvIHN1cHBvcnQgQVNZTkMgY29tbWl0cwo+Pgo+PiBm b3IKPj4+Cj4+PiBjb25jdXJyZW50IGRpc3BsYXlzIHJlbmRlcmluZyBhdCBkaWZmZXJlbnQgRlBT PyBUaGUgYWJvdmUga3RocmVhZCBtb2RlbAo+Pgo+PiBpcwo+Pj4KPj4+IGludHJvZHVjZWQgd2hl biB3ZSBmYWNlZCBzb21lIHBlcmZvcm1hbmNlIHJvYWQgYmxvY2tlcnMgd2hlbiBhIGRpc3BsYXkK Pj4KPj4gaGFzCj4+Pgo+Pj4gdG8gd2FpdCBmb3IgYW4gb25nb2luZyBkaXNwbGF5IGNvbW1pdCB0 byBjb21wbGV0ZS4KPj4KPj4KPj4gSSB0aGluayBwZW9wbGUgaGF2ZSBkaXNjdXNzZWQgaXQsIEkn bSBub3Qgc3VyZSBpZiB0aGVyZSBhcmUgYW55IHBhdGNoZXMKPj4gZmxvYXRpbmcKPj4gYXJvdW5k LiBPbiB0aGUgc3VyZmFjZSwgaXQgc2VlbXMgZWFzeSB0byBqdXN0IHB1c2ggdGhlIGNvbW1pdF93 b3JrIGludG8KPj4gdGhlIGNydGMKPj4gY29tbWl0IGFuZCBoYXZlIG9uZSB3b3JrIGl0ZW0gcGVy IGNydGMuIEhvd2V2ZXIgSSB0aGluayB0aGUgcHJvYmxlbSBpcwo+PiB0aGF0IHRoZXJlCj4+IGNv dWxkIGJlIHJlc291cmNlcyBzd2l0Y2hpbmcgYmV0d2VlbiBjcnRjcyBmb3IgYSBnaXZlbiBjb21t aXQsIG9yIGZyb20gb25lCj4+IGNvbW1pdAo+PiB0byB0aGUgbmV4dCwgYW5kIHN5bmNocm9uaXpp bmcgdGhhdCBiZWNvbWVzIGEgSGFyZCBQcm9ibGVtLgo+Pgo+PiBQZXJoYXBzIEknbSBtaXN1bmRl cnN0YW5kaW5nLCBidXQgdGhlIHN0YXJ0L2VuZCBhdG9taWMgZnVuY3Rpb25zIHNlcmlhbGl6ZQo+ PiB0aGUKPj4gaW5jb21pbmcgY29tbWl0cywgcmlnaHQ/IFNvIHRoZSBvbmx5IGJlbmVmaXQgdGhl IGt0aHJlYWQgcHJvdmlkZXMgaXMgdG8KPj4gbWl0aWdhdGUKPj4gYW55IGJsb2NraW5nIGNhbGxz IG1hZGUgb24gb25lIGNydGMgZnJvbSBibG9ja2luZyBhIHNlY29uZCBjcnRjIGluIHRoZQo+PiBz YW1lCj4+IGNvbW1pdD8KPj4KPj4gU2Vhbgo+Cj4gSSBhbSBub3Qgc3VyZSB3aGF0IGxldmVsIG9m IHJlc291cmNlIChJIGFzc3VtZSBodyBibG9ja3MpIHN3aXRjaGluZyB3ZSBjYW4KPiBleHBlY3Qg YmV0d2Vlbgo+IHR3byBhY3RpdmUgQ1JUQydzIG9uIHN1Y2Nlc3NpdmUgY29tbWl0cy4gV2l0aCB2 aXJ0dWFsaXphdGlvbiBpbiBwbGF5LCB0aGUKPiByZXNvdXJjZXMgYWxsb2NhdGVkIHRvCj4gQ1JU QyAvIGVuY29kZXIgLyBDb25uZWN0b3Igd2lsbCByZW1haW4gYXR0YWNoZWQgdG8gdGhlIGNvbXBv bmVudHMgYXMgbG9uZyBhcwo+IHRoZSBkaXNwbGF5IGlzIGFjdGl2ZS4KPiBQbGFuZXMgKEhXIHBp cGVzKSBhcmUgb25lIHN1Y2ggZW50aXR5IHdoaWNoIGNhbiBtb3ZlIGJldHdlZW4gdGhlIENSVEMn cwo+IGZyZXF1ZW50bHkuIEV2ZW4KPiB3aXRoIHRoZW0gcGxhbmVzLCB0aGUgaHcgYXNzaWdubWVu dCBzaG91bGQgcmVtYWluIHZhbGlkIHVudGlsIHRoZSBwbGFuZSBpcwo+IGRldGFjaGVkIGZyb20K PiBhIENSVEMgYmVmb3JlIGF0dGFjaGluZyB0byB0aGUgbmV4dCBvbmUuCgpJIHRoaW5rIGEgZ29v ZCBleGFtcGxlIHRvIHRoaW5rIGFib3V0IGlzIHZpcnR1YWxpemluZyBod3BpcGU8LT5wbGFuZQpt YXBwaW5nLCBmb3IgZXhhbXBsZSwgd2hlbiB5b3UgbmVlZCB0byByZS1hc3NpZ24gaHdwaXBlcyBm b3IgdGhlIG5leHQKZnJhbWUgYWNjb3JkaW5nIHRvIHdoYXQgY2FwYWJpbGl0aWVzIGFyZSBuZWVk ZWQgKHl1diwgc2NhbGluZykgb3IgZ2FuZwp1cCB0d28gaHdwaXBlcyBmb3Igd2lkZSBidWZmZXIg c2Nhbm91dCAob3IgcmUtdXNlIG9uZSBod3BpcGUgZm9yIHR3bwpwbGFuZXMpLi4gaW4gbWRwNSB3 ZSBrZWVwIHRyYWNrIG9mIHdoYXQgaHdwaXBlcyBhcmUgaW4gdXNlIGJ5IHdoaWNoCnBsYW5lcyBp biBkcml2ZXIgZ2xvYmFsIGF0b21pYyBzdGF0ZSAoSSBoYXZlIHNvbWUgcmV2aXZlZCBwYXRjaGVz IGZyb20KYXJjaGl0dCB0byBjb252ZXJ0IHRoaXMgdG8gZHJpdmVyIHByaXZhdGUgb2JqcykuLgoK V2l0aCB0aGUgYXRvbWljIG1vZGVsIHdlIGhhdmUgc2VyaWFsaXphdGlvbiBpbiB0aGUgKHRvIGFi dXNlIHNvbWUKdGVybXMpICJ0b3AgaGFsZiIgKGllLiB1c2Vyc3BhY2UgY2FsbGluZyBpbnRvIGlv Y3RsKSBieSB2aXJ0dWUgb2YgdGhlCm1vZGVzZXQgbG9ja3MuICBCdXQgdGhlcmUgaXMgYSBzZWNv bmQgaGFsZiB0byB0aGlzLiAgQmVjYXVzZSB3ZSB1cGRhdGUKdGhlIG5ldyBpbmNvbWluZyBnbG9i YWwgc3RhdGUgb2JqZWN0IGFib3V0IHdoYXQgaHdwaXBlcyBhcmUgcmVsZWFzZWQKaW4gYXRvbWlj X2NoZWNrLCBpZiB0aGUgaW5jb21pbmcgc3RhdGUgaXMgY29tbWl0dGVkL3N3YXBwZWQgaW4gdGhl CiJ0b3AgaGFsZiIgd2UgcmVseSBvbiB0aGlzIHN0YXRlIGJlaW5nIHZhbGlkIGluIHRoZSAiYm90 dG9tIGhhbGYiIChpbgp0aGlzIGNhc2UgdGhlIHdxKSBiZWZvcmUgcHVzaGluZyB0aGUgbmV3IHN0 YXRlIHRvIHRoZSBody4uIHdoaWNoCmVzc2VudGlhbGx5IGZvcmNlcyB1cyB0byBzZXJpYWxpemUg Y29tbWl0dGluZyB0aGUgc3RhdGUgaW4gdGhlICJib3R0b20KaGFsZiIgc28gdGhpbmdzIGhhcHBl biBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgInRvcCBoYWxmIiBpbnRlbmRlZC4KT3RoZXJ3aXNl IHdlIGNvdWxkIHRyeSB0byBhc3NpZ24gYSBod3BpcGUgdG8gYSBkaWZmZXJlbnQgY3J0YyB3aGls ZSBpdAppcyBzdGlsbCBzY2FubmluZyBvdXQgZm9yIGl0J3MgcHJldmlvdXMgY3J0Yy4gIElmIHlv dSBoYXZlIGEgMzBIegpkaXNwbGF5IHBsdXMgYSAxMjBIeiBkaXNwbGF5LCBJIGd1ZXNzIHRoaXMg aXMgYSBiaXQgc3ViLW9wdGltYWwuCgpNYXliZSB0aGUgYW5zd2VyIGlzIHBlci1jcnRjIHdxJ3Mg Zm9yIGNvbW1pdHMgcGx1cyBzb21lIHNvcnQgb2YKZmVuY2luZyBzY2hlbWUgdG8gc3RhbGwgdGhp bmdzIHdoZW4gdGhlcmUgYXJlIGNyb3NzLWNydGMgZGVwZW5kZW5jaWVzCihpZS4gY29tbWl0IG9u IGNydGMgQiBkZXBlbmRzIG9uIGh3cGlwZSByZWxlYXNlZCBieSBjb21taXQgb24gY3J0YyBBKT8K IFRoaXMgd2F5IHdlIGRvbid0IGJsb2NrIHVwZGF0ZXMgb24gdGhlIGZhc3RlciBkaXNwbGF5IHdo ZW4gaXQgaXNuJ3QKcmVxdWlyZWQuICBJJ20gbm90IHF1aXRlIHN1cmUgaG93IHRoYXQgd291bGQg d29yay4gIEJ1dCBwZXJoYXBzIGF0CmxlYXN0IHdlIGNvdWxkIHNvbWVob3cgYWxsb3cgb3V0LW9m LW9yZGVyIGNvbW1pdHMgd2hlbiB0d28gdXBkYXRlcwpkb24ndCB0b3VjaCBhbnkgb2YgdGhlIHNh bWUgc3RhdGUgb2JqJ3MuCgooQnV0IEkgZG8gdGhpbmsgdGhpcyBpcyBzb21ldGhpbmcgd2Ugc2hv dWxkIGRpc2N1c3Mgb24gZHJpLWRldmVsLCBhbmQKSSdkIHByZWZlciBkbyBzb2x2ZSB0aGlzIGlu IHRoZSBhdG9taWMgaGVscGVycywgcmF0aGVyIHRoYW4gaGF2aW5nCnVzZXJzcGFjZSB3b3JrYXJv dW5kIGRpZmZlcmVudCBzZXRzIG9mIGJ1Z3MvcXVpcmtzIGZvciBlYWNoIGRpZmZlcmVudApkcml2 ZXIuICBJdCByZWFsbHkgaXNuJ3Qgc29tZXRoaW5nIHRoYXQgaXMgaHcgc3BlY2lmaWMsIHNvIGl0 IGRvZXNuJ3QKYmVsb25nIGluIHRoZSBkcml2ZXIuKQoKQlIsCi1SCgoKPiAiU3RhcnQgYXRvbWlj IiBzeW5jaHJvbml6ZXMgdGhlIGNvbW1pdCBjeWNsZSBmb3IgYWxsIHRoZSBDUlRDJ3MgYnkgd2Fp dGluZwo+IGZvciBjb21taXQgY29tcGxldGUKPiBvZiBhbGwgdGhlIHByZXZpb3VzIGZyYW1lcy4g QnV0IHBlciBjcnRjIGt0aHJlYWRzIGFsbG93cyB0aGUgY3VycmVudCBmcmFtZQo+IGNvbW1pdHMg dG8gaGFwcGVuCj4gaW5kZXBlbmRlbnRseS4gRm9yIGFuZHJvaWQsIHdlIG5lZWRlZCB0aGlzIG1v ZGVsIGFzIGVhY2ggY29tbWl0IHRocmVhZCBuZWVkCj4gdG8gd2FpdCBmb3IgaW5wdXQKPiBwbGFu ZSBmZW5jZXMgYmVmb3JlIHByb2dyYW1taW5nIHRoZSBoYXJkd2FyZS4KPgo+IEpleWt1bWFyIFMu Cj4KPj4KPj4+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvbmx5 IHJldHVybiB6ZXJvIGlmIHdvcmsgaXMKPj4+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKiBxdWV1ZWQgc3VjY2Vzc2Z1bGx5Lgo+Pj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqLwo+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldCA9IDA7Cj4+PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0gZWxzZSB7Cj4+PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFJN X0VSUk9SKCIgRXJyb3IgZm9yIGNydGNfaWQ6Cj4+PiA+ICVkXG4iLAo+Pj4gPiAtCj4+PiA+IHBy aXYtPmRpc3BfdGhyZWFkW2pdLmNydGNfaWQpOwo+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9Cj4+PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+Pj4g PiAtICAgICAgICAgICAgICAgICAgICAgfQo+Pj4gPiAtICAgICAgICAgICAgIH0KPj4+ID4gLSAg ICAgICAgICAgICAvKgo+Pj4gPiAtICAgICAgICAgICAgICAqIFRPRE86IGhhbmRsZSBjYXNlcyB3 aGVyZSB0aGVyZSB3aWxsIGJlIG1vcmUgdGhhbgo+Pj4gPiAtICAgICAgICAgICAgICAqIG9uZSBj cnRjIHBlciBjb21taXQgY3ljbGUuIFJlbW92ZSB0aGlzIGNoZWNrIHRoZW4uCj4+PiA+IC0gICAg ICAgICAgICAgICogQ3VycmVudCBhc3N1bXB0aW9uIGlzIHRoZXJlIHdpbGwgYmUgb25seSBvbmUg Y3J0Ywo+Pj4gPiAtICAgICAgICAgICAgICAqIHBlciBjb21taXQgY3ljbGUuCj4+PiA+IC0gICAg ICAgICAgICAgICovCj4+PiA+IC0gICAgICAgICAgICAgaWYgKGogPCBwcml2LT5udW1fY3J0Y3Mp Cj4+PiA+IC0gICAgICAgICAgICAgICAgICAgICBicmVhazsKPj4+ID4gLSAgICAgfQo+Pj4gPiAt Cj4+PiA+IC0gICAgIGlmIChyZXQpIHsKPj4+ID4gLSAgICAgICAgICAgICAvKioKPj4+ID4gLSAg ICAgICAgICAgICAgKiB0aGlzIGlzIG5vdCBleHBlY3RlZCB0byBoYXBwZW4sIGJ1dCBhdCB0aGlz IHBvaW50IHRoZQo+Pj4gPiBzdGF0ZQo+Pj4gPiAtICAgICAgICAgICAgICAqIGhhcyBiZWVuIHN3 YXBwZWQsIGJ1dCB3ZSBjb3VsZG4ndCBkaXNwYXRjaCB0byBhIGNydGMKPj4+ID4gdGhyZWFkLgo+ Pj4gPiAtICAgICAgICAgICAgICAqIGZhbGxiYWNrIG5vdyB0byBhIHN5bmNocm9ub3VzIGNvbXBs ZXRlX2NvbW1pdCB0byB0cnkKPj4+ID4gYW5kCj4+PiA+IC0gICAgICAgICAgICAgICogZW5zdXJl IHRoYXQgU1cgYW5kIEhXIHN0YXRlIGRvbid0IGdldCBvdXQgb2Ygc3luYy4KPj4+ID4gLSAgICAg ICAgICAgICAgKi8KPj4+ID4gLSAgICAgICAgICAgICBEUk1fRVJST1IoImZhaWxlZCB0byBkaXNw YXRjaCBjb21taXQgdG8gYW55IENSVENcbiIpOwo+Pj4gPiAtICAgICAgICAgICAgIGNvbXBsZXRl X2NvbW1pdChjb21taXQpOwo+Pj4gPiAtICAgICB9IGVsc2UgaWYgKCFub25ibG9jaykgewo+Pj4g PiAtICAgICAgICAgICAgIGt0aHJlYWRfZmx1c2hfd29yaygmY29tbWl0LT5jb21taXRfd29yayk7 Cj4+PiA+IC0gICAgIH0KPj4+ID4gLQo+Pj4gPiAtICAgICAvKiBmcmVlIG5vbmJsb2NraW5nIGNv bW1pdHMgaW4gdGhpcyBjb250ZXh0LCBhZnRlciBwcm9jZXNzaW5nICovCj4+PiA+IC0gICAgIGlm ICghbm9uYmxvY2spCj4+PiA+IC0gICAgICAgICAgICAga2ZyZWUoY29tbWl0KTsKPj4+ID4gKyAg ICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gY29udGFpbmVyX29mKHdvcmssCj4+ PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QKPj4+ID4gZHJtX2F0b21pY19zdGF0ZSwKPj4+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1pdF93b3JrKTsKPj4+ID4gKyAgICAg Y29tbWl0X3RhaWwoc3RhdGUpOwo+Pj4gPiAgfQo+Pj4gPgo+Pj4gPiAgLyoqCj4+PiA+IEBAIC0y NDcsMTcgKzEyMiwxMiBAQCBpbnQgbXNtX2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPj4+ID4gICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUs IGJvb2wgbm9uYmxvY2spCj4+PiA+ICB7Cj4+PiA+ICAgICAgIHN0cnVjdCBtc21fZHJtX3ByaXZh dGUgKnByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+Pj4gPiAtICAgICBzdHJ1Y3QgbXNtX2NvbW1p dCAqYzsKPj4+ID4gICAgICAgc3RydWN0IGRybV9jcnRjICpjcnRjOwo+Pj4gPiAgICAgICBzdHJ1 Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4+PiA+ICAgICAgIHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lOwo+Pj4gPiAgICAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfcGxhbmVf c3RhdGUsICpuZXdfcGxhbmVfc3RhdGU7Cj4+PiA+ICAgICAgIGludCBpLCByZXQ7Cj4+PiA+Cj4+ PiA+IC0gICAgIHJldCA9IGRybV9hdG9taWNfaGVscGVyX3ByZXBhcmVfcGxhbmVzKGRldiwgc3Rh dGUpOwo+Pj4gPiAtICAgICBpZiAocmV0KQo+Pj4gPiAtICAgICAgICAgICAgIHJldHVybiByZXQ7 Cj4+PiA+IC0KPj4+ID4gICAgICAgLyoKPj4+ID4gICAgICAgICogTm90ZSB0aGF0IHBsYW5lLT5h dG9taWNfYXN5bmNfY2hlY2soKSBzaG91bGQgZmFpbCBpZiB3ZSBuZWVkCj4+PiA+ICAgICAgICAq IHRvIHJlLWFzc2lnbiBod3BpcGUgb3IgYW55dGhpbmcgdGhhdCB0b3VjaGVzIGdsb2JhbCBhdG9t aWMKPj4+ID4gQEAgLTI2NSwzMiArMTM1LDMwIEBAIGludCBtc21fYXRvbWljX2NvbW1pdChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+Pj4gPiAgICAgICAgKiBjYXNlcy4KPj4+ID4gICAgICAgICov Cj4+PiA+ICAgICAgIGlmIChzdGF0ZS0+YXN5bmNfdXBkYXRlKSB7Cj4+PiA+ICsgICAgICAgICAg ICAgcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfcHJlcGFyZV9wbGFuZXMoZGV2LCBzdGF0ZSk7Cj4+ PiA+ICsgICAgICAgICAgICAgaWYgKHJldCkKPj4+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJl dHVybiByZXQ7Cj4+PiA+ICsKPj4+ID4gICAgICAgICAgICAgICBkcm1fYXRvbWljX2hlbHBlcl9h c3luY19jb21taXQoZGV2LCBzdGF0ZSk7Cj4+PiA+ICAgICAgICAgICAgICAgZHJtX2F0b21pY19o ZWxwZXJfY2xlYW51cF9wbGFuZXMoZGV2LCBzdGF0ZSk7Cj4+PiA+ICAgICAgICAgICAgICAgcmV0 dXJuIDA7Cj4+PiA+ICAgICAgIH0KPj4+ID4KPj4+ID4gLSAgICAgYyA9IGNvbW1pdF9pbml0KHN0 YXRlLCBub25ibG9jayk7Cj4+PiA+IC0gICAgIGlmICghYykgewo+Pj4gPiAtICAgICAgICAgICAg IHJldCA9IC1FTk9NRU07Cj4+PiA+IC0gICAgICAgICAgICAgZ290byBlcnJvcjsKPj4+ID4gLSAg ICAgfQo+Pj4gPiArICAgICByZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9zZXR1cF9jb21taXQoc3Rh dGUsIG5vbmJsb2NrKTsKPj4+ID4gKyAgICAgaWYgKHJldCkKPj4+ID4gKyAgICAgICAgICAgICBy ZXR1cm4gcmV0Owo+Pj4gPgo+Pj4gPiAtICAgICAvKgo+Pj4gPiAtICAgICAgKiBGaWd1cmUgb3V0 IHdoYXQgY3J0Y3Mgd2UgaGF2ZToKPj4+ID4gLSAgICAgICovCj4+PiA+IC0gICAgIGZvcl9lYWNo X25ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKQo+Pj4gPiAtICAg ICAgICAgICAgIGMtPmNydGNfbWFzayB8PSBkcm1fY3J0Y19tYXNrKGNydGMpOwo+Pj4gPiArICAg ICBJTklUX1dPUksoJnN0YXRlLT5jb21taXRfd29yaywgY29tbWl0X3dvcmspOwo+Pj4gPgo+Pj4g PiAtICAgICAvKgo+Pj4gPiAtICAgICAgKiBXYWl0IGZvciBwZW5kaW5nIHVwZGF0ZXMgb24gYW55 IG9mIHRoZSBzYW1lIGNydGMncyBhbmQgdGhlbgo+Pj4gPiAtICAgICAgKiBtYXJrIG91ciBzZXQg b2YgY3J0YydzIGFzIGJ1c3k6Cj4+PiA+IC0gICAgICAqLwo+Pj4gPiAtICAgICByZXQgPSBzdGFy dF9hdG9taWMoZGV2LT5kZXZfcHJpdmF0ZSwgYy0+Y3J0Y19tYXNrKTsKPj4+ID4gKyAgICAgcmV0 ID0gZHJtX2F0b21pY19oZWxwZXJfcHJlcGFyZV9wbGFuZXMoZGV2LCBzdGF0ZSk7Cj4+PiA+ICAg ICAgIGlmIChyZXQpCj4+PiA+IC0gICAgICAgICAgICAgZ290byBlcnJfZnJlZTsKPj4+ID4gKyAg ICAgICAgICAgICByZXR1cm4gcmV0Owo+Pj4gPgo+Pj4gPiAtICAgICBCVUdfT04oZHJtX2F0b21p Y19oZWxwZXJfc3dhcF9zdGF0ZShzdGF0ZSwgZmFsc2UpIDwgMCk7Cj4+PiA+ICsgICAgIGlmICgh bm9uYmxvY2spIHsKPj4+ID4gKyAgICAgICAgICAgICByZXQgPSBkcm1fYXRvbWljX2hlbHBlcl93 YWl0X2Zvcl9mZW5jZXMoZGV2LCBzdGF0ZSwKPj4+ID4gdHJ1ZSk7Cj4+PiA+ICsgICAgICAgICAg ICAgaWYgKHJldCkKPj4+ID4gKyAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Cj4+PiA+ ICsgICAgIH0KPj4+ID4KPj4+ID4gICAgICAgLyoKPj4+ID4gICAgICAgICogVGhpcyBpcyB0aGUg cG9pbnQgb2Ygbm8gcmV0dXJuIC0gZXZlcnl0aGluZyBiZWxvdyBuZXZlciBmYWlscwo+Pj4gPiBl eGNlcHQKPj4+ID4gQEAgLTI5OSw2ICsxNjcsOCBAQCBpbnQgbXNtX2F0b21pY19jb21taXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPj4+ID4gICAgICAgICoKPj4+ID4gICAgICAgICogc3dhcCBk cml2ZXIgcHJpdmF0ZSBzdGF0ZSB3aGlsZSBzdGlsbCBob2xkaW5nIHN0YXRlX2xvY2sKPj4+ID4g ICAgICAgICovCj4+PiA+ICsgICAgIEJVR19PTihkcm1fYXRvbWljX2hlbHBlcl9zd2FwX3N0YXRl KHN0YXRlLCBmYWxzZSkgPCAwKTsKPj4+ID4gKwo+Pj4gPiAgICAgICBpZiAodG9fa21zX3N0YXRl KHN0YXRlKS0+c3RhdGUpCj4+PiA+ICAgICAgICAgICAgICAgcHJpdi0+a21zLT5mdW5jcy0+c3dh cF9zdGF0ZShwcml2LT5rbXMsIHN0YXRlKTsKPj4+ID4KPj4+ID4gQEAgLTMyOSwxMiArMTk5LDEz IEBAIGludCBtc21fYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+Pj4gPiAg ICAgICAgKi8KPj4+ID4KPj4+ID4gICAgICAgZHJtX2F0b21pY19zdGF0ZV9nZXQoc3RhdGUpOwo+ Pj4gPiAtICAgICBtc21fYXRvbWljX2NvbW1pdF9kaXNwYXRjaChkZXYsIHN0YXRlLCBjKTsKPj4+ ID4gKyAgICAgaWYgKG5vbmJsb2NrKQo+Pj4gPiArICAgICAgICAgICAgIHF1ZXVlX3dvcmsoc3lz dGVtX3VuYm91bmRfd3EsICZzdGF0ZS0+Y29tbWl0X3dvcmspOwo+Pj4gPiArICAgICBlbHNlCj4+ PiA+ICsgICAgICAgICAgICAgY29tbWl0X3RhaWwoc3RhdGUpOwo+Pj4gPgo+Pj4gPiAgICAgICBy ZXR1cm4gMDsKPj4+ID4KPj4+ID4gLWVycl9mcmVlOgo+Pj4gPiAtICAgICBrZnJlZShjKTsKPj4+ ID4gIGVycm9yOgo+Pj4gPiAgICAgICBkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVwX3BsYW5lcyhk ZXYsIHN0YXRlKTsKPj4+ID4gICAgICAgcmV0dXJuIHJldDsKPj4+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jCj4+PiA+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9t c21fZHJ2LmMKPj4+ID4gaW5kZXggZWRhNGEyMzQwZjkzLi5iMzU0NDI0Y2NjYjUgMTAwNjQ0Cj4+ PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jCj4+PiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jCj4+PiA+IEBAIC01NDksNyArNTQ5LDYgQEAgc3RhdGlj IGludCBtc21fZHJtX2luaXQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QKPj4+ID4gZHJtX2Ry aXZlciAqZHJ2KQo+Pj4gPiAgICAgICAgICAgICAgIGdvdG8gbWRzc19pbml0X2ZhaWw7Cj4+PiA+ Cj4+PiA+ICAgICAgIHByaXYtPndxID0gYWxsb2Nfb3JkZXJlZF93b3JrcXVldWUoIm1zbV9kcm0i LCAwKTsKPj4+ID4gLSAgICAgaW5pdF93YWl0cXVldWVfaGVhZCgmcHJpdi0+cGVuZGluZ19jcnRj c19ldmVudCk7Cj4+PiA+Cj4+PiA+ICAgICAgIElOSVRfTElTVF9IRUFEKCZwcml2LT5jbGllbnRf ZXZlbnRfbGlzdCk7Cj4+PiA+ICAgICAgIElOSVRfTElTVF9IRUFEKCZwcml2LT5pbmFjdGl2ZV9s aXN0KTsKPj4+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCj4+ PiA+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKPj4+ID4gaW5kZXggY2Y5NmE4NWY0 YjU1Li4yOTI0OTZiNjgyZTggMTAwNjQ0Cj4+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20v bXNtX2Rydi5oCj4+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCj4+PiA+ IEBAIC01MzYsMTAgKzUzNiw2IEBAIHN0cnVjdCBtc21fZHJtX3ByaXZhdGUgewo+Pj4gPgo+Pj4g PiAgICAgICBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqd3E7Cj4+PiA+Cj4+PiA+IC0gICAgIC8q IGNydGNzIHBlbmRpbmcgYXN5bmMgYXRvbWljIHVwZGF0ZXM6ICovCj4+PiA+IC0gICAgIHVpbnQz Ml90IHBlbmRpbmdfY3J0Y3M7Cj4+PiA+IC0gICAgIHdhaXRfcXVldWVfaGVhZF90IHBlbmRpbmdf Y3J0Y3NfZXZlbnQ7Cj4+PiA+IC0KPj4+ID4gICAgICAgdW5zaWduZWQgaW50IG51bV9wbGFuZXM7 Cj4+PiA+ICAgICAgIHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lc1tNQVhfUExBTkVTXTsKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5vIG1haWxp bmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg==