From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [DPU PATCH 06/11] drm/msm: Remove msm_commit/kthread, use atomic helper commit Date: Fri, 2 Mar 2018 09:56:46 -0500 Message-ID: <20180302145646.GQ223881@art_vandelay> 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: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Rob Clark Cc: linux-arm-msm , dri-devel , Sean Paul , abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, Jeykumar Sankaran , freedreno , "Kristian H. Kristensen" List-Id: linux-arm-msm@vger.kernel.org T24gVGh1LCBNYXIgMDEsIDIwMTggYXQgMDc6Mzc6MTBQTSAtMDUwMCwgUm9iIENsYXJrIHdyb3Rl Ogo+IE9uIFRodSwgTWFyIDEsIDIwMTggYXQgMzozNyBQTSwgIDxqc2Fua2FAY29kZWF1cm9yYS5v cmc+IHdyb3RlOgo+ID4gT24gMjAxOC0wMy0wMSAwNzoyNywgU2VhbiBQYXVsIHdyb3RlOgo+ID4+ Cj4gPj4gT24gV2VkLCBGZWIgMjgsIDIwMTggYXQgMDg6MDc6MDBQTSAtMDgwMCwganNhbmthQGNv ZGVhdXJvcmEub3JnIHdyb3RlOgo+ID4+Pgo+ID4+PiBPbiAyMDE4LTAyLTI4IDExOjE5LCBTZWFu IFBhdWwgd3JvdGU6Cj4gPj4+ID4gTW92aW5nIGZ1cnRoZXIgdG93YXJkcyBzd2l0Y2hpbmcgZnVs bHkgdG8gdGhlIHRoZSBhdG9taWMgaGVscGVycywgdGhpcwo+ID4+PiA+IHBhdGNoIHJlbW92ZXMg dGhlIGhhbmQtcm9sbGVkIGt0aHJlYWQgbm9uYmxvY2sgY29tbWl0IGNvZGUgYW5kIHVzZXMKPiA+ Pgo+ID4+IHRoZQo+ID4+Pgo+ID4+PiA+IGF0b21pYyBoZWxwZXJzIGNvbW1pdF93b3JrIG1vZGVs Lgo+ID4+PiA+Cj4gPj4+ID4gVGhlcmUncyBzdGlsbCBhIGxvdCBvZiBjb3B5cGFzdGEgaGVyZSwg YnV0IGl0J3Mgc3RpbGwgbmVlZGVkIHRvCj4gPj4+ID4gZmFjaWxpdGF0ZSB0aGUgc3dhcF9zdGF0 ZSBhbmQgcHJlcGFyZV9mZW5jZSBwcml2YXRlIGZ1bmN0aW9ucy4gVGhlc2UKPiA+Pj4gPiB3aWxs IGJlIHNvcnRlZCBvdXQgaW4gYSBmb2xsb3ctb24gcGF0Y2guCj4gPj4+ID4KPiA+Pj4gPiBDaGFu Z2UtSWQ6IEk5ZmNiYTI3ODI0YmE2M2QzZmFiOTZjYjJiYzE5NGJmYTZmMzQ3NWI3Cj4gPj4+ID4g U2lnbmVkLW9mZi1ieTogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+Cj4gPj4+ID4g LS0tCj4gPj4+ID4gIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2F0b21pYy5jIHwgMTk5Cj4gPj4K PiA+PiArKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPj4+Cj4gPj4+ID4gIGRyaXZl cnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jICAgIHwgICAxIC0KPiA+Pj4gPiAgZHJpdmVycy9ncHUv ZHJtL21zbS9tc21fZHJ2LmggICAgfCAgIDQgLQo+ID4+PiA+ICAzIGZpbGVzIGNoYW5nZWQsIDM1 IGluc2VydGlvbnMoKyksIDE2OSBkZWxldGlvbnMoLSkKPiA+Pj4gPgo+ID4+PiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9hdG9taWMuYwo+ID4+PiA+IGIvZHJpdmVycy9n cHUvZHJtL21zbS9tc21fYXRvbWljLmMKPiA+Pj4gPiBpbmRleCAzYTE4YmQzZGMyMTUuLjdlNTRl YjY1ZDA5NiAxMDA2NDQKPiA+Pj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9hdG9t aWMuYwo+ID4+PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2F0b21pYy5jCj4gPj4+ ID4gQEAgLTIxLDUxICsyMSw2IEBACj4gPj4+ID4gICNpbmNsdWRlICJtc21fZ2VtLmgiCj4gPj4+ ID4gICNpbmNsdWRlICJtc21fZmVuY2UuaCIKPiA+Pj4gPgo+ID4+PiA+IC1zdHJ1Y3QgbXNtX2Nv bW1pdCB7Cj4gPj4+ID4gLSAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRldjsKPiA+Pj4gPiAtICAg ICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Cj4gPj4+ID4gLSAgICAgdWludDMyX3Qg Y3J0Y19tYXNrOwo+ID4+PiA+IC0gICAgIGJvb2wgbm9uYmxvY2s7Cj4gPj4+ID4gLSAgICAgc3Ry dWN0IGt0aHJlYWRfd29yayBjb21taXRfd29yazsKPiA+Pj4gPiAtfTsKPiA+Pj4gPiAtCj4gPj4+ ID4gLS8qIGJsb2NrIHVudGlsIHNwZWNpZmllZCBjcnRjcyBhcmUgbm8gbG9uZ2VyIHBlbmRpbmcg dXBkYXRlLCBhbmQKPiA+Pj4gPiAtICogYXRvbWljYWxseSBtYXJrIHRoZW0gYXMgcGVuZGluZyB1 cGRhdGUKPiA+Pj4gPiAtICovCj4gPj4+ID4gLXN0YXRpYyBpbnQgc3RhcnRfYXRvbWljKHN0cnVj dCBtc21fZHJtX3ByaXZhdGUgKnByaXYsIHVpbnQzMl90Cj4gPj4+ID4gY3J0Y19tYXNrKQo+ID4+ PiA+IC17Cj4gPj4+ID4gLSAgICAgaW50IHJldDsKPiA+Pj4gPiAtCj4gPj4+ID4gLSAgICAgc3Bp bl9sb2NrKCZwcml2LT5wZW5kaW5nX2NydGNzX2V2ZW50LmxvY2spOwo+ID4+PiA+IC0gICAgIHJl dCA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZV9sb2NrZWQocHJpdi0+cGVuZGluZ19jcnRjc19l dmVudCwKPiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgIShwcml2LT5wZW5kaW5nX2NydGNz ICYgY3J0Y19tYXNrKSk7Cj4gPj4+ID4gLSAgICAgaWYgKHJldCA9PSAwKSB7Cj4gPj4+ID4gLSAg ICAgICAgICAgICBEQkcoInN0YXJ0OiAlMDh4IiwgY3J0Y19tYXNrKTsKPiA+Pj4gPiAtICAgICAg ICAgICAgIHByaXYtPnBlbmRpbmdfY3J0Y3MgfD0gY3J0Y19tYXNrOwo+ID4+PiA+IC0gICAgIH0K PiA+Pj4gPiAtICAgICBzcGluX3VubG9jaygmcHJpdi0+cGVuZGluZ19jcnRjc19ldmVudC5sb2Nr KTsKPiA+Pj4gPiAtCj4gPj4+ID4gLSAgICAgcmV0dXJuIHJldDsKPiA+Pj4gPiAtfQo+ID4+PiA+ IC0KPiA+Pj4gPiAtLyogY2xlYXIgc3BlY2lmaWVkIGNydGNzIChubyBsb25nZXIgcGVuZGluZyB1 cGRhdGUpCj4gPj4+ID4gLSAqLwo+ID4+PiA+IC1zdGF0aWMgdm9pZCBlbmRfYXRvbWljKHN0cnVj dCBtc21fZHJtX3ByaXZhdGUgKnByaXYsIHVpbnQzMl90Cj4gPj4+ID4gY3J0Y19tYXNrKQo+ID4+ PiA+IC17Cj4gPj4+ID4gLSAgICAgc3Bpbl9sb2NrKCZwcml2LT5wZW5kaW5nX2NydGNzX2V2ZW50 LmxvY2spOwo+ID4+PiA+IC0gICAgIERCRygiZW5kOiAlMDh4IiwgY3J0Y19tYXNrKTsKPiA+Pj4g PiAtICAgICBwcml2LT5wZW5kaW5nX2NydGNzICY9IH5jcnRjX21hc2s7Cj4gPj4+ID4gLSAgICAg d2FrZV91cF9hbGxfbG9ja2VkKCZwcml2LT5wZW5kaW5nX2NydGNzX2V2ZW50KTsKPiA+Pj4gPiAt ICAgICBzcGluX3VubG9jaygmcHJpdi0+cGVuZGluZ19jcnRjc19ldmVudC5sb2NrKTsKPiA+Pj4g PiAtfQo+ID4+PiA+IC0KPiA+Pj4gPiAtc3RhdGljIHZvaWQgY29tbWl0X2Rlc3Ryb3koc3RydWN0 IG1zbV9jb21taXQgKmMpCj4gPj4+ID4gLXsKPiA+Pj4gPiAtICAgICBlbmRfYXRvbWljKGMtPmRl di0+ZGV2X3ByaXZhdGUsIGMtPmNydGNfbWFzayk7Cj4gPj4+ID4gLSAgICAgaWYgKGMtPm5vbmJs b2NrKQo+ID4+PiA+IC0gICAgICAgICAgICAga2ZyZWUoYyk7Cj4gPj4+ID4gLX0KPiA+Pj4gPiAt Cj4gPj4+ID4gIHN0YXRpYyB2b2lkIG1zbV9hdG9taWNfd2FpdF9mb3JfY29tbWl0X2RvbmUoCj4g Pj4+ID4gICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4+PiA+ICAgICAg ICAgICAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPiA+Pj4gPiBAQCAt MTE4LDYgKzczLDEwIEBAIHN0YXRpYyB2b2lkIG1zbV9hdG9taWNfY29tbWl0X3RhaWwoc3RydWN0 Cj4gPj4+ID4gZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gPj4+ID4KPiA+Pj4gPiAgICAgICBt c21fYXRvbWljX3dhaXRfZm9yX2NvbW1pdF9kb25lKGRldiwgc3RhdGUpOwo+ID4+PiA+Cj4gPj4+ ID4gKyAgICAgZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X2h3X2RvbmUoc3RhdGUpOwo+ID4+PiA+ ICsKPiA+Pj4gPiArICAgICBkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl92YmxhbmtzKGRldiwg c3RhdGUpOwo+ID4+PiA+ICsKPiA+Pj4gPiAgICAgICBkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVw X3BsYW5lcyhkZXYsIHN0YXRlKTsKPiA+Pj4gPgo+ID4+PiA+ICAgICAgIGttcy0+ZnVuY3MtPmNv bXBsZXRlX2NvbW1pdChrbXMsIHN0YXRlKTsKPiA+Pj4gPiBAQCAtMTI2LDEwOSArODUsMjUgQEAg c3RhdGljIHZvaWQgbXNtX2F0b21pY19jb21taXRfdGFpbChzdHJ1Y3QKPiA+Pj4gPiBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSkKPiA+Pj4gPiAgLyogVGhlIChwb3RlbnRpYWxseSkgYXN5bmNocm9u b3VzIHBhcnQgb2YgdGhlIGNvbW1pdC4gIEF0IHRoaXMgcG9pbnQKPiA+Pj4gPiAgICogbm90aGlu ZyBjYW4gZmFpbCBzaG9ydCBvZiBhcm1hZ2VkZG9uLgo+ID4+PiA+ICAgKi8KPiA+Pj4gPiAtc3Rh dGljIHZvaWQgY29tcGxldGVfY29tbWl0KHN0cnVjdCBtc21fY29tbWl0ICpjKQo+ID4+PiA+ICtz dGF0aWMgdm9pZCBjb21taXRfdGFpbChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4g Pj4+ID4gIHsKPiA+Pj4gPiAtICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBj LT5zdGF0ZTsKPiA+Pj4gPiAtICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmRl djsKPiA+Pj4gPiArICAgICBkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl9mZW5jZXMoc3RhdGUt PmRldiwgc3RhdGUsIGZhbHNlKTsKPiA+Pj4gPgo+ID4+PiA+IC0gICAgIGRybV9hdG9taWNfaGVs cGVyX3dhaXRfZm9yX2ZlbmNlcyhkZXYsIHN0YXRlLCBmYWxzZSk7Cj4gPj4+ID4gKyAgICAgZHJt X2F0b21pY19oZWxwZXJfd2FpdF9mb3JfZGVwZW5kZW5jaWVzKHN0YXRlKTsKPiA+Pj4gPgo+ID4+ PiA+ICAgICAgIG1zbV9hdG9taWNfY29tbWl0X3RhaWwoc3RhdGUpOwo+ID4+PiA+Cj4gPj4+ID4g LSAgICAgZHJtX2F0b21pY19zdGF0ZV9wdXQoc3RhdGUpOwo+ID4+PiA+IC19Cj4gPj4+ID4gLQo+ ID4+PiA+IC1zdGF0aWMgdm9pZCBfbXNtX2RybV9jb21taXRfd29ya19jYihzdHJ1Y3Qga3RocmVh ZF93b3JrICp3b3JrKQo+ID4+PiA+IC17Cj4gPj4+ID4gLSAgICAgc3RydWN0IG1zbV9jb21taXQg KmNvbW1pdCA9ICBOVUxMOwo+ID4+PiA+IC0KPiA+Pj4gPiAtICAgICBpZiAoIXdvcmspIHsKPiA+ Pj4gPiAtICAgICAgICAgICAgIERSTV9FUlJPUigiJXM6IEludmFsaWQgY29tbWl0IHdvcmsgZGF0 YSFcbiIsIF9fZnVuY19fKTsKPiA+Pj4gPiAtICAgICAgICAgICAgIHJldHVybjsKPiA+Pj4gPiAt ICAgICB9Cj4gPj4+ID4gLQo+ID4+PiA+IC0gICAgIGNvbW1pdCA9IGNvbnRhaW5lcl9vZih3b3Jr LCBzdHJ1Y3QgbXNtX2NvbW1pdCwgY29tbWl0X3dvcmspOwo+ID4+PiA+IC0KPiA+Pj4gPiAtICAg ICBjb21wbGV0ZV9jb21taXQoY29tbWl0KTsKPiA+Pj4gPiAtCj4gPj4+ID4gLSAgICAgY29tbWl0 X2Rlc3Ryb3koY29tbWl0KTsKPiA+Pj4gPiAtfQo+ID4+PiA+IC0KPiA+Pj4gPiAtc3RhdGljIHN0 cnVjdCBtc21fY29tbWl0ICpjb21taXRfaW5pdChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUsCj4gPj4+ID4gLSAgICAgICAgICAgICBib29sIG5vbmJsb2NrKQo+ID4+PiA+IC17Cj4gPj4+ ID4gLSAgICAgc3RydWN0IG1zbV9jb21taXQgKmMgPSBremFsbG9jKHNpemVvZigqYyksIEdGUF9L RVJORUwpOwo+ID4+PiA+ICsgICAgIGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9jbGVhbnVwX2Rv bmUoc3RhdGUpOwo+ID4+PiA+Cj4gPj4+ID4gLSAgICAgaWYgKCFjKQo+ID4+PiA+IC0gICAgICAg ICAgICAgcmV0dXJuIE5VTEw7Cj4gPj4+ID4gLQo+ID4+PiA+IC0gICAgIGMtPmRldiA9IHN0YXRl LT5kZXY7Cj4gPj4+ID4gLSAgICAgYy0+c3RhdGUgPSBzdGF0ZTsKPiA+Pj4gPiAtICAgICBjLT5u b25ibG9jayA9IG5vbmJsb2NrOwo+ID4+PiA+IC0KPiA+Pj4gPiAtICAgICBrdGhyZWFkX2luaXRf d29yaygmYy0+Y29tbWl0X3dvcmssIF9tc21fZHJtX2NvbW1pdF93b3JrX2NiKTsKPiA+Pj4gPiAt Cj4gPj4+ID4gLSAgICAgcmV0dXJuIGM7Cj4gPj4+ID4gKyAgICAgZHJtX2F0b21pY19zdGF0ZV9w dXQoc3RhdGUpOwo+ID4+PiA+ICB9Cj4gPj4+ID4KPiA+Pj4gPiAtLyogU3RhcnQgZGlzcGxheSB0 aHJlYWQgZnVuY3Rpb24gKi8KPiA+Pj4gPiAtc3RhdGljIHZvaWQgbXNtX2F0b21pY19jb21taXRf ZGlzcGF0Y2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+Pj4gPiAtICAgICAgICAgICAgIHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwgc3RydWN0IG1zbV9jb21taXQKPiA+Pj4gPiAq Y29tbWl0KQo+ID4+PiA+ICtzdGF0aWMgdm9pZCBjb21taXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKndvcmspCj4gPj4+ID4gIHsKPiA+Pj4gPiAtICAgICBzdHJ1Y3QgbXNtX2RybV9wcml2YXRl ICpwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+Pj4gPiAtICAgICBzdHJ1Y3QgZHJtX2NydGMg KmNydGMgPSBOVUxMOwo+ID4+PiA+IC0gICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqbmV3X2Ny dGNfc3RhdGUgPSBOVUxMOwo+ID4+PiA+IC0gICAgIGludCByZXQgPSAtRUlOVkFMLCBpID0gMCwg aiA9IDA7Cj4gPj4+ID4gLSAgICAgYm9vbCBub25ibG9jazsKPiA+Pj4gPiAtCj4gPj4+ID4gLSAg ICAgLyogY2FjaGUgc2luY2Ugd29yayB3aWxsIGtmcmVlIGNvbW1pdCBpbiBub24tYmxvY2tpbmcg Y2FzZSAqLwo+ID4+PiA+IC0gICAgIG5vbmJsb2NrID0gY29tbWl0LT5ub25ibG9jazsKPiA+Pj4g PiAtCj4gPj4+ID4gLSAgICAgZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMs IG5ld19jcnRjX3N0YXRlLCBpKSB7Cj4gPj4+ID4gLSAgICAgICAgICAgICBmb3IgKGogPSAwOyBq IDwgcHJpdi0+bnVtX2NydGNzOyBqKyspIHsKPiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAg aWYgKHByaXYtPmRpc3BfdGhyZWFkW2pdLmNydGNfaWQgPT0KPiA+Pj4gPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3J0Yy0+YmFzZS5pZCkgewo+ID4+PiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcml2LT5kaXNwX3RocmVhZFtqXS50 aHJlYWQpIHsKPiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt0 aHJlYWRfcXVldWVfd29yaygKPiA+Pj4gPiAtCj4gPj4+ID4gJnByaXYtPmRpc3BfdGhyZWFkW2pd LndvcmtlciwKPiA+Pj4gPiAtCj4gPj4+ID4gJmNvbW1pdC0+Y29tbWl0X3dvcmspOwo+ID4+PiBB cmUgdGhlcmUgYW55IGtub3duIHByb3Bvc2FscyBmbG9hdGluZyBhcm91bmQgdG8gc3VwcG9ydCBB U1lOQyBjb21taXRzCj4gPj4KPiA+PiBmb3IKPiA+Pj4KPiA+Pj4gY29uY3VycmVudCBkaXNwbGF5 cyByZW5kZXJpbmcgYXQgZGlmZmVyZW50IEZQUz8gVGhlIGFib3ZlIGt0aHJlYWQgbW9kZWwKPiA+ Pgo+ID4+IGlzCj4gPj4+Cj4gPj4+IGludHJvZHVjZWQgd2hlbiB3ZSBmYWNlZCBzb21lIHBlcmZv cm1hbmNlIHJvYWQgYmxvY2tlcnMgd2hlbiBhIGRpc3BsYXkKPiA+Pgo+ID4+IGhhcwo+ID4+Pgo+ ID4+PiB0byB3YWl0IGZvciBhbiBvbmdvaW5nIGRpc3BsYXkgY29tbWl0IHRvIGNvbXBsZXRlLgo+ ID4+Cj4gPj4KPiA+PiBJIHRoaW5rIHBlb3BsZSBoYXZlIGRpc2N1c3NlZCBpdCwgSSdtIG5vdCBz dXJlIGlmIHRoZXJlIGFyZSBhbnkgcGF0Y2hlcwo+ID4+IGZsb2F0aW5nCj4gPj4gYXJvdW5kLiBP biB0aGUgc3VyZmFjZSwgaXQgc2VlbXMgZWFzeSB0byBqdXN0IHB1c2ggdGhlIGNvbW1pdF93b3Jr IGludG8KPiA+PiB0aGUgY3J0Ywo+ID4+IGNvbW1pdCBhbmQgaGF2ZSBvbmUgd29yayBpdGVtIHBl ciBjcnRjLiBIb3dldmVyIEkgdGhpbmsgdGhlIHByb2JsZW0gaXMKPiA+PiB0aGF0IHRoZXJlCj4g Pj4gY291bGQgYmUgcmVzb3VyY2VzIHN3aXRjaGluZyBiZXR3ZWVuIGNydGNzIGZvciBhIGdpdmVu IGNvbW1pdCwgb3IgZnJvbSBvbmUKPiA+PiBjb21taXQKPiA+PiB0byB0aGUgbmV4dCwgYW5kIHN5 bmNocm9uaXppbmcgdGhhdCBiZWNvbWVzIGEgSGFyZCBQcm9ibGVtLgo+ID4+Cj4gPj4gUGVyaGFw cyBJJ20gbWlzdW5kZXJzdGFuZGluZywgYnV0IHRoZSBzdGFydC9lbmQgYXRvbWljIGZ1bmN0aW9u cyBzZXJpYWxpemUKPiA+PiB0aGUKPiA+PiBpbmNvbWluZyBjb21taXRzLCByaWdodD8gU28gdGhl IG9ubHkgYmVuZWZpdCB0aGUga3RocmVhZCBwcm92aWRlcyBpcyB0bwo+ID4+IG1pdGlnYXRlCj4g Pj4gYW55IGJsb2NraW5nIGNhbGxzIG1hZGUgb24gb25lIGNydGMgZnJvbSBibG9ja2luZyBhIHNl Y29uZCBjcnRjIGluIHRoZQo+ID4+IHNhbWUKPiA+PiBjb21taXQ/Cj4gPj4KPiA+PiBTZWFuCj4g Pgo+ID4gSSBhbSBub3Qgc3VyZSB3aGF0IGxldmVsIG9mIHJlc291cmNlIChJIGFzc3VtZSBodyBi bG9ja3MpIHN3aXRjaGluZyB3ZSBjYW4KPiA+IGV4cGVjdCBiZXR3ZWVuCj4gPiB0d28gYWN0aXZl IENSVEMncyBvbiBzdWNjZXNzaXZlIGNvbW1pdHMuIFdpdGggdmlydHVhbGl6YXRpb24gaW4gcGxh eSwgdGhlCj4gPiByZXNvdXJjZXMgYWxsb2NhdGVkIHRvCj4gPiBDUlRDIC8gZW5jb2RlciAvIENv bm5lY3RvciB3aWxsIHJlbWFpbiBhdHRhY2hlZCB0byB0aGUgY29tcG9uZW50cyBhcyBsb25nIGFz Cj4gPiB0aGUgZGlzcGxheSBpcyBhY3RpdmUuCj4gPiBQbGFuZXMgKEhXIHBpcGVzKSBhcmUgb25l IHN1Y2ggZW50aXR5IHdoaWNoIGNhbiBtb3ZlIGJldHdlZW4gdGhlIENSVEMncwo+ID4gZnJlcXVl bnRseS4gRXZlbgo+ID4gd2l0aCB0aGVtIHBsYW5lcywgdGhlIGh3IGFzc2lnbm1lbnQgc2hvdWxk IHJlbWFpbiB2YWxpZCB1bnRpbCB0aGUgcGxhbmUgaXMKPiA+IGRldGFjaGVkIGZyb20KPiA+IGEg Q1JUQyBiZWZvcmUgYXR0YWNoaW5nIHRvIHRoZSBuZXh0IG9uZS4KPiAKPiBJIHRoaW5rIGEgZ29v ZCBleGFtcGxlIHRvIHRoaW5rIGFib3V0IGlzIHZpcnR1YWxpemluZyBod3BpcGU8LT5wbGFuZQo+ IG1hcHBpbmcsIGZvciBleGFtcGxlLCB3aGVuIHlvdSBuZWVkIHRvIHJlLWFzc2lnbiBod3BpcGVz IGZvciB0aGUgbmV4dAo+IGZyYW1lIGFjY29yZGluZyB0byB3aGF0IGNhcGFiaWxpdGllcyBhcmUg bmVlZGVkICh5dXYsIHNjYWxpbmcpIG9yIGdhbmcKPiB1cCB0d28gaHdwaXBlcyBmb3Igd2lkZSBi dWZmZXIgc2Nhbm91dCAob3IgcmUtdXNlIG9uZSBod3BpcGUgZm9yIHR3bwo+IHBsYW5lcykuLiBp biBtZHA1IHdlIGtlZXAgdHJhY2sgb2Ygd2hhdCBod3BpcGVzIGFyZSBpbiB1c2UgYnkgd2hpY2gK PiBwbGFuZXMgaW4gZHJpdmVyIGdsb2JhbCBhdG9taWMgc3RhdGUgKEkgaGF2ZSBzb21lIHJldml2 ZWQgcGF0Y2hlcyBmcm9tCj4gYXJjaGl0dCB0byBjb252ZXJ0IHRoaXMgdG8gZHJpdmVyIHByaXZh dGUgb2JqcykuLgo+IAo+IFdpdGggdGhlIGF0b21pYyBtb2RlbCB3ZSBoYXZlIHNlcmlhbGl6YXRp b24gaW4gdGhlICh0byBhYnVzZSBzb21lCj4gdGVybXMpICJ0b3AgaGFsZiIgKGllLiB1c2Vyc3Bh Y2UgY2FsbGluZyBpbnRvIGlvY3RsKSBieSB2aXJ0dWUgb2YgdGhlCj4gbW9kZXNldCBsb2Nrcy4g IEJ1dCB0aGVyZSBpcyBhIHNlY29uZCBoYWxmIHRvIHRoaXMuICBCZWNhdXNlIHdlIHVwZGF0ZQo+ IHRoZSBuZXcgaW5jb21pbmcgZ2xvYmFsIHN0YXRlIG9iamVjdCBhYm91dCB3aGF0IGh3cGlwZXMg YXJlIHJlbGVhc2VkCj4gaW4gYXRvbWljX2NoZWNrLCBpZiB0aGUgaW5jb21pbmcgc3RhdGUgaXMg Y29tbWl0dGVkL3N3YXBwZWQgaW4gdGhlCj4gInRvcCBoYWxmIiB3ZSByZWx5IG9uIHRoaXMgc3Rh dGUgYmVpbmcgdmFsaWQgaW4gdGhlICJib3R0b20gaGFsZiIgKGluCj4gdGhpcyBjYXNlIHRoZSB3 cSkgYmVmb3JlIHB1c2hpbmcgdGhlIG5ldyBzdGF0ZSB0byB0aGUgaHcuLiB3aGljaAo+IGVzc2Vu dGlhbGx5IGZvcmNlcyB1cyB0byBzZXJpYWxpemUgY29tbWl0dGluZyB0aGUgc3RhdGUgaW4gdGhl ICJib3R0b20KPiBoYWxmIiBzbyB0aGluZ3MgaGFwcGVuIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRo ZSAidG9wIGhhbGYiIGludGVuZGVkLgo+IE90aGVyd2lzZSB3ZSBjb3VsZCB0cnkgdG8gYXNzaWdu IGEgaHdwaXBlIHRvIGEgZGlmZmVyZW50IGNydGMgd2hpbGUgaXQKPiBpcyBzdGlsbCBzY2Fubmlu ZyBvdXQgZm9yIGl0J3MgcHJldmlvdXMgY3J0Yy4gIElmIHlvdSBoYXZlIGEgMzBIego+IGRpc3Bs YXkgcGx1cyBhIDEyMEh6IGRpc3BsYXksIEkgZ3Vlc3MgdGhpcyBpcyBhIGJpdCBzdWItb3B0aW1h bC4KCkl0J3Mgc3RpbGwgYmFkIGV2ZW4gd2l0aCBkaXNwbGF5cyByZWZyZXNoaW5nIGF0IHRoZSBz YW1lIHJhdGUsIHRoZSB3b3JzdCBjYXNlCmNvdWxkIGhhbHZlIHRoZSByZWZyZXNoIHJhdGUgaWYg dmJsYW5rcyBhcmVuJ3QgaW4gc3luYy4KCj4gCj4gTWF5YmUgdGhlIGFuc3dlciBpcyBwZXItY3J0 YyB3cSdzIGZvciBjb21taXRzIHBsdXMgc29tZSBzb3J0IG9mCj4gZmVuY2luZyBzY2hlbWUgdG8g c3RhbGwgdGhpbmdzIHdoZW4gdGhlcmUgYXJlIGNyb3NzLWNydGMgZGVwZW5kZW5jaWVzCj4gKGll LiBjb21taXQgb24gY3J0YyBCIGRlcGVuZHMgb24gaHdwaXBlIHJlbGVhc2VkIGJ5IGNvbW1pdCBv biBjcnRjIEEpPwo+ICBUaGlzIHdheSB3ZSBkb24ndCBibG9jayB1cGRhdGVzIG9uIHRoZSBmYXN0 ZXIgZGlzcGxheSB3aGVuIGl0IGlzbid0Cj4gcmVxdWlyZWQuICBJJ20gbm90IHF1aXRlIHN1cmUg aG93IHRoYXQgd291bGQgd29yay4gIEJ1dCBwZXJoYXBzIGF0Cj4gbGVhc3Qgd2UgY291bGQgc29t ZWhvdyBhbGxvdyBvdXQtb2Ytb3JkZXIgY29tbWl0cyB3aGVuIHR3byB1cGRhdGVzCj4gZG9uJ3Qg dG91Y2ggYW55IG9mIHRoZSBzYW1lIHN0YXRlIG9iaidzLgoKUmlnaHQsIGZvciAibm9ybWFsIiB1 cGRhdGVzLCB5b3UgY291bGQgdXNlIHRoZSBmYXN0IHBhdGguIFdlIGFscmVhZHkgaGF2ZQpuZWVk c19tb2Rlc2V0LCBzbyBhZGRpbmcgbmVlZHNfc3luYyB3b3VsZG4ndCBiZSB0b28gYmFkLiBJIHRo aW5rIEkgcmFuIGludG8gdGhpcwp3aXRoIHRlZ3JhIGJhY2sgaW4gUGl4ZWwgQyBkYXlzIGFuZCBo YWNrZWQgaW4gYSBwZXItY3J0YyB3b3JrZXIgc2luY2UgdGhlCnJlc291cmNlcyB3ZXJlIHN0YXRp Y2FsbHkgbWFwcGVkLiBXZSdsbCBwcm9iYWJseSBydW4gaW50byB0aGlzIGluIENyT1MgYXMgd2UK ZXhwYW5kIG91ciBleHBsaWNpdCBzeW5jIHN1cHBvcnQgaW4gdGhlIGNvbXBvc2l0b3IuCgo+IAo+ IChCdXQgSSBkbyB0aGluayB0aGlzIGlzIHNvbWV0aGluZyB3ZSBzaG91bGQgZGlzY3VzcyBvbiBk cmktZGV2ZWwsIGFuZAo+IEknZCBwcmVmZXIgZG8gc29sdmUgdGhpcyBpbiB0aGUgYXRvbWljIGhl bHBlcnMsIHJhdGhlciB0aGFuIGhhdmluZwo+IHVzZXJzcGFjZSB3b3JrYXJvdW5kIGRpZmZlcmVu dCBzZXRzIG9mIGJ1Z3MvcXVpcmtzIGZvciBlYWNoIGRpZmZlcmVudAo+IGRyaXZlci4gIEl0IHJl YWxseSBpc24ndCBzb21ldGhpbmcgdGhhdCBpcyBodyBzcGVjaWZpYywgc28gaXQgZG9lc24ndAo+ IGJlbG9uZyBpbiB0aGUgZHJpdmVyLikKCkFncmVlZCwgdGhpcyBpcyBhIHRyaWNreSBiaXQgb2Yg Y29kZSBhbmQgaXQgd291bGQgYmVuZWZpdCBmcm9tIGJlaW5nIHVzZWQgYWNyb3NzCmFsbCBkcml2 ZXJzIChhcyB3ZWxsIGFzIGFsbCBkcml2ZXJzIGJlbmVmaXRpbmcgZnJvbSBpdCkuIEF0IGFueSBy YXRlLCBJIGNhbid0CnVzZSBtdWx0aS1kaXNwbGF5IG9uIG15IGRldmVsb3BtZW50IGRldmljZSBy aWdodCBub3csIHNvIEkgdGhpbmsgd2UnbGwgbmVlZCB0bwpkZWZlciBmb3Igbm93LgoKU2VhbgoK PiAKPiBCUiwKPiAtUgo+IAo+IAo+ID4gIlN0YXJ0IGF0b21pYyIgc3luY2hyb25pemVzIHRoZSBj b21taXQgY3ljbGUgZm9yIGFsbCB0aGUgQ1JUQydzIGJ5IHdhaXRpbmcKPiA+IGZvciBjb21taXQg Y29tcGxldGUKPiA+IG9mIGFsbCB0aGUgcHJldmlvdXMgZnJhbWVzLiBCdXQgcGVyIGNydGMga3Ro cmVhZHMgYWxsb3dzIHRoZSBjdXJyZW50IGZyYW1lCj4gPiBjb21taXRzIHRvIGhhcHBlbgo+ID4g aW5kZXBlbmRlbnRseS4gRm9yIGFuZHJvaWQsIHdlIG5lZWRlZCB0aGlzIG1vZGVsIGFzIGVhY2gg Y29tbWl0IHRocmVhZCBuZWVkCj4gPiB0byB3YWl0IGZvciBpbnB1dAo+ID4gcGxhbmUgZmVuY2Vz IGJlZm9yZSBwcm9ncmFtbWluZyB0aGUgaGFyZHdhcmUuCj4gPgo+ID4gSmV5a3VtYXIgUy4KPiA+ Cj4gPj4KPiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG9u bHkgcmV0dXJuIHplcm8gaWYgd29yayBpcwo+ID4+PiA+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICogcXVldWVkIHN1Y2Nlc3NmdWxseS4KPiA+Pj4gPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwo+ID4+PiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmV0ID0gMDsKPiA+Pj4gPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9IGVsc2Ugewo+ID4+PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRFJNX0VSUk9SKCIgRXJyb3IgZm9yIGNydGNfaWQ6Cj4gPj4+ID4gJWRcbiIsCj4g Pj4+ID4gLQo+ID4+PiA+IHByaXYtPmRpc3BfdGhyZWFkW2pdLmNydGNfaWQpOwo+ID4+PiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KPiA+Pj4gPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBicmVhazsKPiA+Pj4gPiAtICAgICAgICAgICAgICAgICAgICAgfQo+ID4+PiA+ IC0gICAgICAgICAgICAgfQo+ID4+PiA+IC0gICAgICAgICAgICAgLyoKPiA+Pj4gPiAtICAgICAg ICAgICAgICAqIFRPRE86IGhhbmRsZSBjYXNlcyB3aGVyZSB0aGVyZSB3aWxsIGJlIG1vcmUgdGhh bgo+ID4+PiA+IC0gICAgICAgICAgICAgICogb25lIGNydGMgcGVyIGNvbW1pdCBjeWNsZS4gUmVt b3ZlIHRoaXMgY2hlY2sgdGhlbi4KPiA+Pj4gPiAtICAgICAgICAgICAgICAqIEN1cnJlbnQgYXNz dW1wdGlvbiBpcyB0aGVyZSB3aWxsIGJlIG9ubHkgb25lIGNydGMKPiA+Pj4gPiAtICAgICAgICAg ICAgICAqIHBlciBjb21taXQgY3ljbGUuCj4gPj4+ID4gLSAgICAgICAgICAgICAgKi8KPiA+Pj4g PiAtICAgICAgICAgICAgIGlmIChqIDwgcHJpdi0+bnVtX2NydGNzKQo+ID4+PiA+IC0gICAgICAg ICAgICAgICAgICAgICBicmVhazsKPiA+Pj4gPiAtICAgICB9Cj4gPj4+ID4gLQo+ID4+PiA+IC0g ICAgIGlmIChyZXQpIHsKPiA+Pj4gPiAtICAgICAgICAgICAgIC8qKgo+ID4+PiA+IC0gICAgICAg ICAgICAgICogdGhpcyBpcyBub3QgZXhwZWN0ZWQgdG8gaGFwcGVuLCBidXQgYXQgdGhpcyBwb2lu dCB0aGUKPiA+Pj4gPiBzdGF0ZQo+ID4+PiA+IC0gICAgICAgICAgICAgICogaGFzIGJlZW4gc3dh cHBlZCwgYnV0IHdlIGNvdWxkbid0IGRpc3BhdGNoIHRvIGEgY3J0Ywo+ID4+PiA+IHRocmVhZC4K PiA+Pj4gPiAtICAgICAgICAgICAgICAqIGZhbGxiYWNrIG5vdyB0byBhIHN5bmNocm9ub3VzIGNv bXBsZXRlX2NvbW1pdCB0byB0cnkKPiA+Pj4gPiBhbmQKPiA+Pj4gPiAtICAgICAgICAgICAgICAq IGVuc3VyZSB0aGF0IFNXIGFuZCBIVyBzdGF0ZSBkb24ndCBnZXQgb3V0IG9mIHN5bmMuCj4gPj4+ ID4gLSAgICAgICAgICAgICAgKi8KPiA+Pj4gPiAtICAgICAgICAgICAgIERSTV9FUlJPUigiZmFp bGVkIHRvIGRpc3BhdGNoIGNvbW1pdCB0byBhbnkgQ1JUQ1xuIik7Cj4gPj4+ID4gLSAgICAgICAg ICAgICBjb21wbGV0ZV9jb21taXQoY29tbWl0KTsKPiA+Pj4gPiAtICAgICB9IGVsc2UgaWYgKCFu b25ibG9jaykgewo+ID4+PiA+IC0gICAgICAgICAgICAga3RocmVhZF9mbHVzaF93b3JrKCZjb21t aXQtPmNvbW1pdF93b3JrKTsKPiA+Pj4gPiAtICAgICB9Cj4gPj4+ID4gLQo+ID4+PiA+IC0gICAg IC8qIGZyZWUgbm9uYmxvY2tpbmcgY29tbWl0cyBpbiB0aGlzIGNvbnRleHQsIGFmdGVyIHByb2Nl c3NpbmcgKi8KPiA+Pj4gPiAtICAgICBpZiAoIW5vbmJsb2NrKQo+ID4+PiA+IC0gICAgICAgICAg ICAga2ZyZWUoY29tbWl0KTsKPiA+Pj4gPiArICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUgPSBjb250YWluZXJfb2Yod29yaywKPiA+Pj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0Cj4gPj4+ID4gZHJtX2F0b21pY19z dGF0ZSwKPiA+Pj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29tbWl0X3dvcmspOwo+ID4+PiA+ICsgICAgIGNvbW1pdF90YWlsKHN0YXRlKTsK PiA+Pj4gPiAgfQo+ID4+PiA+Cj4gPj4+ID4gIC8qKgo+ID4+PiA+IEBAIC0yNDcsMTcgKzEyMiwx MiBAQCBpbnQgbXNtX2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+Pj4g PiAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwgYm9vbCBub25i bG9jaykKPiA+Pj4gPiAgewo+ID4+PiA+ICAgICAgIHN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnBy aXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4+PiA+IC0gICAgIHN0cnVjdCBtc21fY29tbWl0ICpj Owo+ID4+PiA+ICAgICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiA+Pj4gPiAgICAgICBzdHJ1 Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gPj4+ID4gICAgICAgc3RydWN0IGRybV9w bGFuZSAqcGxhbmU7Cj4gPj4+ID4gICAgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3Bs YW5lX3N0YXRlLCAqbmV3X3BsYW5lX3N0YXRlOwo+ID4+PiA+ICAgICAgIGludCBpLCByZXQ7Cj4g Pj4+ID4KPiA+Pj4gPiAtICAgICByZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9wcmVwYXJlX3BsYW5l cyhkZXYsIHN0YXRlKTsKPiA+Pj4gPiAtICAgICBpZiAocmV0KQo+ID4+PiA+IC0gICAgICAgICAg ICAgcmV0dXJuIHJldDsKPiA+Pj4gPiAtCj4gPj4+ID4gICAgICAgLyoKPiA+Pj4gPiAgICAgICAg KiBOb3RlIHRoYXQgcGxhbmUtPmF0b21pY19hc3luY19jaGVjaygpIHNob3VsZCBmYWlsIGlmIHdl IG5lZWQKPiA+Pj4gPiAgICAgICAgKiB0byByZS1hc3NpZ24gaHdwaXBlIG9yIGFueXRoaW5nIHRo YXQgdG91Y2hlcyBnbG9iYWwgYXRvbWljCj4gPj4+ID4gQEAgLTI2NSwzMiArMTM1LDMwIEBAIGlu dCBtc21fYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4+PiA+ICAgICAg ICAqIGNhc2VzLgo+ID4+PiA+ICAgICAgICAqLwo+ID4+PiA+ICAgICAgIGlmIChzdGF0ZS0+YXN5 bmNfdXBkYXRlKSB7Cj4gPj4+ID4gKyAgICAgICAgICAgICByZXQgPSBkcm1fYXRvbWljX2hlbHBl cl9wcmVwYXJlX3BsYW5lcyhkZXYsIHN0YXRlKTsKPiA+Pj4gPiArICAgICAgICAgICAgIGlmIChy ZXQpCj4gPj4+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPj4+ID4gKwo+ ID4+PiA+ICAgICAgICAgICAgICAgZHJtX2F0b21pY19oZWxwZXJfYXN5bmNfY29tbWl0KGRldiwg c3RhdGUpOwo+ID4+PiA+ICAgICAgICAgICAgICAgZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9w bGFuZXMoZGV2LCBzdGF0ZSk7Cj4gPj4+ID4gICAgICAgICAgICAgICByZXR1cm4gMDsKPiA+Pj4g PiAgICAgICB9Cj4gPj4+ID4KPiA+Pj4gPiAtICAgICBjID0gY29tbWl0X2luaXQoc3RhdGUsIG5v bmJsb2NrKTsKPiA+Pj4gPiAtICAgICBpZiAoIWMpIHsKPiA+Pj4gPiAtICAgICAgICAgICAgIHJl dCA9IC1FTk9NRU07Cj4gPj4+ID4gLSAgICAgICAgICAgICBnb3RvIGVycm9yOwo+ID4+PiA+IC0g ICAgIH0KPiA+Pj4gPiArICAgICByZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9zZXR1cF9jb21taXQo c3RhdGUsIG5vbmJsb2NrKTsKPiA+Pj4gPiArICAgICBpZiAocmV0KQo+ID4+PiA+ICsgICAgICAg ICAgICAgcmV0dXJuIHJldDsKPiA+Pj4gPgo+ID4+PiA+IC0gICAgIC8qCj4gPj4+ID4gLSAgICAg ICogRmlndXJlIG91dCB3aGF0IGNydGNzIHdlIGhhdmU6Cj4gPj4+ID4gLSAgICAgICovCj4gPj4+ ID4gLSAgICAgZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3Rh dGUsIGkpCj4gPj4+ID4gLSAgICAgICAgICAgICBjLT5jcnRjX21hc2sgfD0gZHJtX2NydGNfbWFz ayhjcnRjKTsKPiA+Pj4gPiArICAgICBJTklUX1dPUksoJnN0YXRlLT5jb21taXRfd29yaywgY29t bWl0X3dvcmspOwo+ID4+PiA+Cj4gPj4+ID4gLSAgICAgLyoKPiA+Pj4gPiAtICAgICAgKiBXYWl0 IGZvciBwZW5kaW5nIHVwZGF0ZXMgb24gYW55IG9mIHRoZSBzYW1lIGNydGMncyBhbmQgdGhlbgo+ ID4+PiA+IC0gICAgICAqIG1hcmsgb3VyIHNldCBvZiBjcnRjJ3MgYXMgYnVzeToKPiA+Pj4gPiAt ICAgICAgKi8KPiA+Pj4gPiAtICAgICByZXQgPSBzdGFydF9hdG9taWMoZGV2LT5kZXZfcHJpdmF0 ZSwgYy0+Y3J0Y19tYXNrKTsKPiA+Pj4gPiArICAgICByZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9w cmVwYXJlX3BsYW5lcyhkZXYsIHN0YXRlKTsKPiA+Pj4gPiAgICAgICBpZiAocmV0KQo+ID4+PiA+ IC0gICAgICAgICAgICAgZ290byBlcnJfZnJlZTsKPiA+Pj4gPiArICAgICAgICAgICAgIHJldHVy biByZXQ7Cj4gPj4+ID4KPiA+Pj4gPiAtICAgICBCVUdfT04oZHJtX2F0b21pY19oZWxwZXJfc3dh cF9zdGF0ZShzdGF0ZSwgZmFsc2UpIDwgMCk7Cj4gPj4+ID4gKyAgICAgaWYgKCFub25ibG9jaykg ewo+ID4+PiA+ICsgICAgICAgICAgICAgcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3Jf ZmVuY2VzKGRldiwgc3RhdGUsCj4gPj4+ID4gdHJ1ZSk7Cj4gPj4+ID4gKyAgICAgICAgICAgICBp ZiAocmV0KQo+ID4+PiA+ICsgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwo+ID4+PiA+ ICsgICAgIH0KPiA+Pj4gPgo+ID4+PiA+ICAgICAgIC8qCj4gPj4+ID4gICAgICAgICogVGhpcyBp cyB0aGUgcG9pbnQgb2Ygbm8gcmV0dXJuIC0gZXZlcnl0aGluZyBiZWxvdyBuZXZlciBmYWlscwo+ ID4+PiA+IGV4Y2VwdAo+ID4+PiA+IEBAIC0yOTksNiArMTY3LDggQEAgaW50IG1zbV9hdG9taWNf Y29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPj4+ID4gICAgICAgICoKPiA+Pj4gPiAg ICAgICAgKiBzd2FwIGRyaXZlciBwcml2YXRlIHN0YXRlIHdoaWxlIHN0aWxsIGhvbGRpbmcgc3Rh dGVfbG9jawo+ID4+PiA+ICAgICAgICAqLwo+ID4+PiA+ICsgICAgIEJVR19PTihkcm1fYXRvbWlj X2hlbHBlcl9zd2FwX3N0YXRlKHN0YXRlLCBmYWxzZSkgPCAwKTsKPiA+Pj4gPiArCj4gPj4+ID4g ICAgICAgaWYgKHRvX2ttc19zdGF0ZShzdGF0ZSktPnN0YXRlKQo+ID4+PiA+ICAgICAgICAgICAg ICAgcHJpdi0+a21zLT5mdW5jcy0+c3dhcF9zdGF0ZShwcml2LT5rbXMsIHN0YXRlKTsKPiA+Pj4g Pgo+ID4+PiA+IEBAIC0zMjksMTIgKzE5OSwxMyBAQCBpbnQgbXNtX2F0b21pY19jb21taXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiA+Pj4gPiAgICAgICAgKi8KPiA+Pj4gPgo+ID4+PiA+ICAg ICAgIGRybV9hdG9taWNfc3RhdGVfZ2V0KHN0YXRlKTsKPiA+Pj4gPiAtICAgICBtc21fYXRvbWlj X2NvbW1pdF9kaXNwYXRjaChkZXYsIHN0YXRlLCBjKTsKPiA+Pj4gPiArICAgICBpZiAobm9uYmxv Y2spCj4gPj4+ID4gKyAgICAgICAgICAgICBxdWV1ZV93b3JrKHN5c3RlbV91bmJvdW5kX3dxLCAm c3RhdGUtPmNvbW1pdF93b3JrKTsKPiA+Pj4gPiArICAgICBlbHNlCj4gPj4+ID4gKyAgICAgICAg ICAgICBjb21taXRfdGFpbChzdGF0ZSk7Cj4gPj4+ID4KPiA+Pj4gPiAgICAgICByZXR1cm4gMDsK PiA+Pj4gPgo+ID4+PiA+IC1lcnJfZnJlZToKPiA+Pj4gPiAtICAgICBrZnJlZShjKTsKPiA+Pj4g PiAgZXJyb3I6Cj4gPj4+ID4gICAgICAgZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9wbGFuZXMo ZGV2LCBzdGF0ZSk7Cj4gPj4+ID4gICAgICAgcmV0dXJuIHJldDsKPiA+Pj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKPiA+Pj4gPiBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vbXNtX2Rydi5jCj4gPj4+ID4gaW5kZXggZWRhNGEyMzQwZjkzLi5iMzU0NDI0Y2NjYjUg MTAwNjQ0Cj4gPj4+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKPiA+Pj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYwo+ID4+PiA+IEBAIC01NDksNyAr NTQ5LDYgQEAgc3RhdGljIGludCBtc21fZHJtX2luaXQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1 Y3QKPiA+Pj4gPiBkcm1fZHJpdmVyICpkcnYpCj4gPj4+ID4gICAgICAgICAgICAgICBnb3RvIG1k c3NfaW5pdF9mYWlsOwo+ID4+PiA+Cj4gPj4+ID4gICAgICAgcHJpdi0+d3EgPSBhbGxvY19vcmRl cmVkX3dvcmtxdWV1ZSgibXNtX2RybSIsIDApOwo+ID4+PiA+IC0gICAgIGluaXRfd2FpdHF1ZXVl X2hlYWQoJnByaXYtPnBlbmRpbmdfY3J0Y3NfZXZlbnQpOwo+ID4+PiA+Cj4gPj4+ID4gICAgICAg SU5JVF9MSVNUX0hFQUQoJnByaXYtPmNsaWVudF9ldmVudF9saXN0KTsKPiA+Pj4gPiAgICAgICBJ TklUX0xJU1RfSEVBRCgmcHJpdi0+aW5hY3RpdmVfbGlzdCk7Cj4gPj4+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCj4gPj4+ID4gYi9kcml2ZXJzL2dwdS9kcm0v bXNtL21zbV9kcnYuaAo+ID4+PiA+IGluZGV4IGNmOTZhODVmNGI1NS4uMjkyNDk2YjY4MmU4IDEw MDY0NAo+ID4+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCj4gPj4+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKPiA+Pj4gPiBAQCAtNTM2LDEwICs1 MzYsNiBAQCBzdHJ1Y3QgbXNtX2RybV9wcml2YXRlIHsKPiA+Pj4gPgo+ID4+PiA+ICAgICAgIHN0 cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cTsKPiA+Pj4gPgo+ID4+PiA+IC0gICAgIC8qIGNydGNz IHBlbmRpbmcgYXN5bmMgYXRvbWljIHVwZGF0ZXM6ICovCj4gPj4+ID4gLSAgICAgdWludDMyX3Qg cGVuZGluZ19jcnRjczsKPiA+Pj4gPiAtICAgICB3YWl0X3F1ZXVlX2hlYWRfdCBwZW5kaW5nX2Ny dGNzX2V2ZW50Owo+ID4+PiA+IC0KPiA+Pj4gPiAgICAgICB1bnNpZ25lZCBpbnQgbnVtX3BsYW5l czsKPiA+Pj4gPiAgICAgICBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZXNbTUFYX1BMQU5FU107Cgot LSAKU2VhbiBQYXVsLCBTb2Z0d2FyZSBFbmdpbmVlciwgR29vZ2xlIC8gQ2hyb21pdW0gT1MKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5vIG1h aWxpbmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg==