From mboxrd@z Thu Jan 1 00:00:00 1970 From: Samuel Li Subject: Re: [PATCH v2 1/1] drm/amdgpu: Enable scatter gather display support Date: Thu, 12 Apr 2018 13:21:38 -0400 Message-ID: <20bdb4b1-1986-22e4-b0d1-1713b8794f83@amd.com> References: <1522189371-13767-1-git-send-email-Samuel.Li@amd.com> <7cc47f78-66eb-148d-96a2-b97760f767bf@gmail.com> <15196bc3-76cb-0a52-c05f-f23131f77e7f@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <15196bc3-76cb-0a52-c05f-f23131f77e7f-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: =?UTF-8?Q?Christian_K=c3=b6nig?= , Alexander.Deucher-5C7GfCeVMHo@public.gmane.org, Michel.Daenzer-5C7GfCeVMHo@public.gmane.org, =?UTF-8?B?TWFyZWsgT2zFocOhaw==?= Cc: amd-gfx mailing list PiBUaGUgcG9pbnQgaXMgdGhpcyBrZXJuZWwgY2hhbmdlIG5vdyBuZWVkcyB0byBiZSByZXdvcmtl ZCBhbmQgYWRhcHRlZCB0byB3aGF0IE1lc2EgaXMgZG9pbmcuClRocmVlIG9wdGlvbnMgaGF2ZSBi ZWVuIGJyb3VnaHQgdXAgZm9yIGtlcm5lbCwKMSkgVHVybiBvZmYgaW1tZWRpYXRlIG1vZGUgd2hl biBmbGlwcGluZyBiZXR3ZWVuIFZSQU0vR1RULgoyKSBDaGVjayB0aGUgZG9tYWluIG9mIHRoZSBj dXJyZW50IGZiIGFuZCB0aGVuIGFkanVzdCB0aGUgbmV3IG9uZSBiZWZvcmUgcGlubmluZyBpdC4K MykgVXNlIG9ubHkgVlJBTSBvciBHVFQgZGVwZW5kaW5nIG9uIGEgdGhyZXNoaG9sZC4KCkFzIHBl ciBkaXNjdXNzaW9uLCB0aGUgM3JkIG9uZSwgd2hpY2ggaXMgdGhlIGN1cnJlbnQgcGF0Y2gsIHNl ZW1zIHRoZSBiZXN0IHNvIGZhci4KClJlZ2FyZHMsClNhbXVlbCBMaQoKCgpPbiAyMDE4LTA0LTEy IDAxOjAzIFBNLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+PiBDYW4geW91IGJlIG1vcmUgc3Bl Y2lmaWMsIENocmlzdGlhbj8gTWVzYSBoYXMgdGhpcywgSSBkb24ndCB0aGluayBpdCBuZWVkcyBh bnl0aGluZyBlbHNlOgo+IENvbXBsZXRlbHkgYWdyZWUsIHRoYXQncyB3aGF0IEkgc3VnZ2VzdGVk IHRvIGltcGxlbWVudC4KPiAKPiBUaGUgcG9pbnQgaXMgdGhpcyBrZXJuZWwgY2hhbmdlIG5vdyBu ZWVkcyB0byBiZSByZXdvcmtlZCBhbmQgYWRhcHRlZCB0byB3aGF0IE1lc2EgaXMgZG9pbmcuCj4g Cj4gUmVnYXJkcywKPiBDaHJpc3RpYW4uCj4gCj4gQW0gMTIuMDQuMjAxOCB1bSAxODo0MCBzY2hy aWViIE1hcmVrIE9sxaHDoWs6Cj4+IENhbiB5b3UgYmUgbW9yZSBzcGVjaWZpYywgQ2hyaXN0aWFu PyBNZXNhIGhhcyB0aGlzLCBJIGRvbid0IHRoaW5rIGl0IG5lZWRzIGFueXRoaW5nIGVsc2U6Cj4+ IGh0dHBzOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvbWVzYS9tZXNhL2NvbW1pdC8/aWQ9N2QyMDc5 OTA4ZDllZjA1ZWMzZjM1YjcwNzg4MzNlNTc4NDZjYWI1Ygo+Pgo+PiBNYXJlawo+Pgo+PiBPbiBX ZWQsIE1hciAyOCwgMjAxOCBhdCAzOjQ2IEFNLCBDaHJpc3RpYW4gS8O2bmlnIDxja29lbmlnLmxl aWNodHp1bWVya2VuQGdtYWlsLmNvbSA8bWFpbHRvOmNrb2VuaWcubGVpY2h0enVtZXJrZW5AZ21h aWwuY29tPj4gd3JvdGU6Cj4+Cj4+IMKgwqDCoCBBbSAyOC4wMy4yMDE4IHVtIDAwOjIyIHNjaHJp ZWIgU2FtdWVsIExpOgo+Pgo+PiDCoMKgwqDCoMKgwqDCoCBJdCdzIGF1dG8gYnkgZGVmYXVsdC4g Rm9yIENaL1NULCBhdXRvIHNldHRpbmcgZW5hYmxlcyBzZyBkaXNwbGF5Cj4+IMKgwqDCoMKgwqDC oMKgIHdoZW4gdnJhbSBzaXplIGlzIHNtYWxsOyBvdGhlcndpc2Ugc3RpbGwgdXNlcyB2cmFtLgo+ PiDCoMKgwqDCoMKgwqDCoCBUaGlzIHBhdGNoIGZpeGVkIHNvbWUgcG90ZW50aWFsIGhhbmcgaXNz dWUgaW50cm9kdWNlZCBieSBjaGFuZ2UKPj4gwqDCoMKgwqDCoMKgwqAgImFsbG93IGZyYW1lYnVm ZmVyIGluIEdBUlQgbWVtb3J5IGFzIHdlbGwiIGR1ZSB0byBDWi9TVCBoYXJkd2FyZQo+PiDCoMKg wqDCoMKgwqDCoCBsaW1pdGF0aW9uLgo+Pgo+Pgo+PiDCoMKgwqAgV2VsbCB0aGF0IGlzIHN0aWxs IGEgTkFLLgo+Pgo+PiDCoMKgwqAgQXMgZGlzY3Vzc2VkIG5vdyBtdWx0aXBsZSB0aW1lcyBwbGVh c2UgaW1wbGVtZW50IHRoZSBuZWNlc3NhcnkKPj4gwqDCoMKgIGNoYW5nZXMgaW4gTWVzYS4KPj4K Pj4gwqDCoMKgIFJlZ2FyZHMsCj4+IMKgwqDCoCBDaHJpc3RpYW4uCj4+Cj4+Cj4+Cj4+IMKgwqDC oMKgwqDCoMKgIHYyOiBDaGFuZ2UgZGVmYXVsdCBzZXR0aW5nIHRvIGF1dG8sIGFsc28gc29tZSBt aXNjIGNoYW5nZXMuCj4+IMKgwqDCoMKgwqDCoMKgIFNpZ25lZC1vZmYtYnk6IFNhbXVlbCBMaSA8 U2FtdWVsLkxpQGFtZC5jb20KPj4gwqDCoMKgwqDCoMKgwqAgPG1haWx0bzpTYW11ZWwuTGlAYW1k LmNvbT4+Cj4+IMKgwqDCoMKgwqDCoMKgIC0tLQo+PiDCoMKgwqDCoMKgwqDCoCDCoCBkcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaCDCoCDCoHzCoCAxICsKPj4gwqDCoMKgwqDCoMKg wqAgwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc3BsYXkuYyDCoCDCoHwg MTAgKysrKysrKystLQo+PiDCoMKgwqDCoMKgwqDCoCDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfZGlzcGxheS5oIMKgIMKgfMKgIDIgKysKPj4gwqDCoMKgwqDCoMKgwqAgwqAg ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jIMKgIMKgfMKgIDQgKysrKwo+ PiDCoMKgwqDCoMKgwqDCoCDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZmIu YyDCoCB8wqAgMiArKwo+PiDCoMKgwqDCoMKgwqDCoCDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rp c3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jIHzCoCAzICsrLQo+PiDCoMKgwqDCoMKgwqDCoCDC oCA2IGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4+Cj4+ IMKgwqDCoMKgwqDCoMKgIGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHUuaAo+PiDCoMKgwqDCoMKgwqDCoCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdS5oCj4+IMKgwqDCoMKgwqDCoMKgIGluZGV4IGE3ZTIyMjkuLmM5NDIzNjIgMTAwNjQ0Cj4+ IMKgwqDCoMKgwqDCoMKgIC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5o Cj4+IMKgwqDCoMKgwqDCoMKgICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dS5oCj4+IMKgwqDCoMKgwqDCoMKgIEBAIC0xMjksNiArMTI5LDcgQEAgZXh0ZXJuIGludCBhbWRn cHVfbGJwdzsKPj4gwqDCoMKgwqDCoMKgwqAgwqAgZXh0ZXJuIGludCBhbWRncHVfY29tcHV0ZV9t dWx0aXBpcGU7Cj4+IMKgwqDCoMKgwqDCoMKgIMKgIGV4dGVybiBpbnQgYW1kZ3B1X2dwdV9yZWNv dmVyeTsKPj4gwqDCoMKgwqDCoMKgwqAgwqAgZXh0ZXJuIGludCBhbWRncHVfZW11X21vZGU7Cj4+ IMKgwqDCoMKgwqDCoMKgICtleHRlcm4gaW50IGFtZGdwdV9zZ19kaXNwbGF5Owo+PiDCoMKgwqDC oMKgwqDCoCDCoCDCoCAjaWZkZWYgQ09ORklHX0RSTV9BTURHUFVfU0kKPj4gwqDCoMKgwqDCoMKg wqAgwqAgZXh0ZXJuIGludCBhbWRncHVfc2lfc3VwcG9ydDsKPj4gwqDCoMKgwqDCoMKgwqAgZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNwbGF5LmMKPj4g wqDCoMKgwqDCoMKgwqAgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzcGxh eS5jCj4+IMKgwqDCoMKgwqDCoMKgIGluZGV4IDU0OTViMjkuLjFlN2I5NTAgMTAwNjQ0Cj4+IMKg wqDCoMKgwqDCoMKgIC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNw bGF5LmMKPj4gwqDCoMKgwqDCoMKgwqAgKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2Rpc3BsYXkuYwo+PiDCoMKgwqDCoMKgwqDCoCBAQCAtNTEzLDggKzUxMywxNCBAQCB1 aW50MzJfdAo+PiDCoMKgwqDCoMKgwqDCoCBhbWRncHVfZGlzcGxheV9mcmFtZWJ1ZmZlcl9kb21h aW5zKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+PiDCoMKgwqDCoMKgwqDCoCDCoCAjaWYg ZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQykKPj4gwqDCoMKgwqDCoMKgwqAgwqAgwqAgwqAgwqAg aWYgKGFkZXYtPmFzaWNfdHlwZSA+PSBDSElQX0NBUlJJWk8gJiYgYWRldi0+YXNpY190eXBlCj4+ IMKgwqDCoMKgwqDCoMKgIDwgQ0hJUF9SQVZFTiAmJgo+PiDCoMKgwqDCoMKgwqDCoCDCoCDCoCDC oCDCoCDCoCDCoCBhZGV2LT5mbGFncyAmIEFNRF9JU19BUFUgJiYKPj4gwqDCoMKgwqDCoMKgwqAg LcKgIMKgIMKgIMKgIMKgIMKgYW1kZ3B1X2RldmljZV9hc2ljX2hhc19kY19zdXBwb3J0KGFkZXYt PmFzaWNfdHlwZSkpCj4+IMKgwqDCoMKgwqDCoMKgIC3CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGRv bWFpbiB8PSBBTURHUFVfR0VNX0RPTUFJTl9HVFQ7Cj4+IMKgwqDCoMKgwqDCoMKgICvCoCDCoCDC oCDCoCDCoCDCoGFtZGdwdV9kZXZpY2VfYXNpY19oYXNfZGNfc3VwcG9ydChhZGV2LT5hc2ljX3R5 cGUpKSB7Cj4+IMKgwqDCoMKgwqDCoMKgICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGlmIChhbWRn cHVfc2dfZGlzcGxheSA9PSAxKQo+PiDCoMKgwqDCoMKgwqDCoCArwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqBkb21haW4gPSBBTURHUFVfR0VNX0RPTUFJTl9HVFQ7Cj4+IMKgwqDC oMKgwqDCoMKgICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGVsc2UgaWYgKGFtZGdwdV9zZ19kaXNw bGF5ID09IC0xKSB7Cj4+IMKgwqDCoMKgwqDCoMKgICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoGlmIChhZGV2LT5nbWMucmVhbF92cmFtX3NpemUgPAo+PiDCoMKgwqDCoMKgwqDC oCBBTURHUFVfU0dfVEhSRVNIT0xEKQo+PiDCoMKgwqDCoMKgwqDCoCArwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBkb21haW4gPSBBTURHUFVfR0VNX0RPTUFJ Tl9HVFQ7Cj4+IMKgwqDCoMKgwqDCoMKgICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoH0KPj4gwqDC oMKgwqDCoMKgwqAgK8KgIMKgIMKgIMKgfQo+PiDCoMKgwqDCoMKgwqDCoCDCoCAjZW5kaWYKPj4g wqDCoMKgwqDCoMKgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIGRvbWFpbjsKPj4gwqDCoMKgwqDCoMKg wqAgZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNwbGF5 LmgKPj4gwqDCoMKgwqDCoMKgwqAgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf ZGlzcGxheS5oCj4+IMKgwqDCoMKgwqDCoMKgIGluZGV4IDJiMTFkODAuLjJiMjUzOTMgMTAwNjQ0 Cj4+IMKgwqDCoMKgwqDCoMKgIC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9kaXNwbGF5LmgKPj4gwqDCoMKgwqDCoMKgwqAgKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2Rpc3BsYXkuaAo+PiDCoMKgwqDCoMKgwqDCoCBAQCAtMjMsNiArMjMsOCBA QAo+PiDCoMKgwqDCoMKgwqDCoCDCoCAjaWZuZGVmIF9fQU1ER1BVX0RJU1BMQVlfSF9fCj4+IMKg wqDCoMKgwqDCoMKgIMKgICNkZWZpbmUgX19BTURHUFVfRElTUExBWV9IX18KPj4gwqDCoMKgwqDC oMKgwqAgwqAgKyNkZWZpbmUgQU1ER1BVX1NHX1RIUkVTSE9MRMKgICgyNTYqMTAyNCoxMDI0KQo+ PiDCoMKgwqDCoMKgwqDCoCArCj4+IMKgwqDCoMKgwqDCoMKgIMKgIHVpbnQzMl90IGFtZGdwdV9k aXNwbGF5X2ZyYW1lYnVmZmVyX2RvbWFpbnMoc3RydWN0Cj4+IMKgwqDCoMKgwqDCoMKgIGFtZGdw dV9kZXZpY2UgKmFkZXYpOwo+PiDCoMKgwqDCoMKgwqDCoCDCoCBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICoKPj4gwqDCoMKgwqDCoMKgwqAgwqAgYW1kZ3B1X2Rpc3BsYXlfdXNlcl9mcmFtZWJ1ZmZl cl9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4gwqDCoMKgwqDCoMKgwqAgZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYwo+PiDCoMKgwqDC oMKgwqDCoCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYwo+PiDCoMKg wqDCoMKgwqDCoCBpbmRleCAxYmZjZTc5Li4xOWYxMWE1IDEwMDY0NAo+PiDCoMKgwqDCoMKgwqDC oCAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMKPj4gwqDCoMKg wqDCoMKgwqAgKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jCj4+ IMKgwqDCoMKgwqDCoMKgIEBAIC0xMzIsNiArMTMyLDcgQEAgaW50IGFtZGdwdV9sYnB3ID0gLTE7 Cj4+IMKgwqDCoMKgwqDCoMKgIMKgIGludCBhbWRncHVfY29tcHV0ZV9tdWx0aXBpcGUgPSAtMTsK Pj4gwqDCoMKgwqDCoMKgwqAgwqAgaW50IGFtZGdwdV9ncHVfcmVjb3ZlcnkgPSAtMTsgLyogYXV0 byAqLwo+PiDCoMKgwqDCoMKgwqDCoCDCoCBpbnQgYW1kZ3B1X2VtdV9tb2RlID0gMDsKPj4gwqDC oMKgwqDCoMKgwqAgK2ludCBhbWRncHVfc2dfZGlzcGxheSA9IC0xOwo+PiDCoMKgwqDCoMKgwqDC oCDCoCDCoCBNT0RVTEVfUEFSTV9ERVNDKHZyYW1saW1pdCwgIlJlc3RyaWN0IFZSQU0gZm9yIHRl c3RpbmcsIGluCj4+IMKgwqDCoMKgwqDCoMKgIG1lZ2FieXRlcyIpOwo+PiDCoMKgwqDCoMKgwqDC oCDCoCBtb2R1bGVfcGFyYW1fbmFtZWQodnJhbWxpbWl0LCBhbWRncHVfdnJhbV9saW1pdCwgaW50 LCAwNjAwKTsKPj4gwqDCoMKgwqDCoMKgwqAgQEAgLTI5MCw2ICsyOTEsOSBAQCBtb2R1bGVfcGFy YW1fbmFtZWQoZ3B1X3JlY292ZXJ5LAo+PiDCoMKgwqDCoMKgwqDCoCBhbWRncHVfZ3B1X3JlY292 ZXJ5LCBpbnQsIDA0NDQpOwo+PiDCoMKgwqDCoMKgwqDCoCDCoCBNT0RVTEVfUEFSTV9ERVNDKGVt dV9tb2RlLCAiRW11bGF0aW9uIG1vZGUsICgxID0gZW5hYmxlLCAwID0KPj4gwqDCoMKgwqDCoMKg wqAgZGlzYWJsZSkiKTsKPj4gwqDCoMKgwqDCoMKgwqAgwqAgbW9kdWxlX3BhcmFtX25hbWVkKGVt dV9tb2RlLCBhbWRncHVfZW11X21vZGUsIGludCwgMDQ0NCk7Cj4+IMKgwqDCoMKgwqDCoMKgIMKg ICtNT0RVTEVfUEFSTV9ERVNDKHNnX2Rpc3BsYXksICJFbmFibGUgc2NhdHRlciBnYXRoZXIKPj4g wqDCoMKgwqDCoMKgwqAgZGlzcGxheSwgKDEgPSBlbmFibGUsIDAgPSBkaXNhYmxlLCAtMSA9IGF1 dG8iKTsKPj4gwqDCoMKgwqDCoMKgwqAgK21vZHVsZV9wYXJhbV9uYW1lZChzZ19kaXNwbGF5LCBh bWRncHVfc2dfZGlzcGxheSwgaW50LCAwNDQ0KTsKPj4gwqDCoMKgwqDCoMKgwqAgKwo+PiDCoMKg wqDCoMKgwqDCoCDCoCAjaWZkZWYgQ09ORklHX0RSTV9BTURHUFVfU0kKPj4gwqDCoMKgwqDCoMKg wqAgwqAgwqAgI2lmIGRlZmluZWQoQ09ORklHX0RSTV9SQURFT04pIHx8Cj4+IMKgwqDCoMKgwqDC oMKgIGRlZmluZWQoQ09ORklHX0RSTV9SQURFT05fTU9EVUxFKQo+PiDCoMKgwqDCoMKgwqDCoCBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ZiLmMKPj4gwqDC oMKgwqDCoMKgwqAgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZmIuYwo+PiDC oMKgwqDCoMKgwqDCoCBpbmRleCAxMjA2MzAxLi5mNTdjMzU1IDEwMDY0NAo+PiDCoMKgwqDCoMKg wqDCoCAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZmIuYwo+PiDCoMKg wqDCoMKgwqDCoCArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZmIuYwo+ PiDCoMKgwqDCoMKgwqDCoCBAQCAtMTM4LDYgKzEzOCw4IEBAIHN0YXRpYyBpbnQKPj4gwqDCoMKg wqDCoMKgwqAgYW1kZ3B1ZmJfY3JlYXRlX3Bpbm5lZF9vYmplY3Qoc3RydWN0IGFtZGdwdV9mYmRl diAqcmZiZGV2LAo+PiDCoMKgwqDCoMKgwqDCoCDCoCDCoCDCoCDCoCBtb2RlX2NtZC0+cGl0Y2hl c1swXSA9IGFtZGdwdV9hbGlnbl9waXRjaChhZGV2LAo+PiDCoMKgwqDCoMKgwqDCoCBtb2RlX2Nt ZC0+d2lkdGgsIGNwcCwKPj4gwqDCoMKgwqDCoMKgwqAgZmJfdGlsZWQpOwo+PiDCoMKgwqDCoMKg wqDCoCDCoCDCoCDCoCDCoCBkb21haW4gPSBhbWRncHVfZGlzcGxheV9mcmFtZWJ1ZmZlcl9kb21h aW5zKGFkZXYpOwo+PiDCoMKgwqDCoMKgwqDCoCArwqAgwqAgwqAgwqBpZiAoZG9tYWluICYgQU1E R1BVX0dFTV9ET01BSU5fR1RUKQo+PiDCoMKgwqDCoMKgwqDCoCArwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqBEUk1fREVCVUdfRFJJVkVSKCJTY2F0dGVyIGdhdGhlciBkaXNwbGF5Ogo+PiDCoMKgwqDC oMKgwqDCoCBlbmFibGVkXG4iKTsKPj4gwqDCoMKgwqDCoMKgwqAgwqAgwqAgwqAgwqAgaGVpZ2h0 ID0gQUxJR04obW9kZV9jbWQtPmhlaWdodCwgOCk7Cj4+IMKgwqDCoMKgwqDCoMKgIMKgIMKgIMKg IMKgIHNpemUgPSBtb2RlX2NtZC0+cGl0Y2hlc1swXSAqIGhlaWdodDsKPj4gwqDCoMKgwqDCoMKg wqAgZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1k Z3B1X2RtLmMKPj4gwqDCoMKgwqDCoMKgwqAgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkv YW1kZ3B1X2RtL2FtZGdwdV9kbS5jCj4+IMKgwqDCoMKgwqDCoMKgIGluZGV4IDY4YWIzMjUuLjdl OWYyNDcgMTAwNjQ0Cj4+IMKgwqDCoMKgwqDCoMKgIC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv ZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMKPj4gwqDCoMKgwqDCoMKgwqAgKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYwo+PiDCoMKgwqDC oMKgwqDCoCBAQCAtMzA3NCw3ICszMDc0LDggQEAgc3RhdGljIGludAo+PiDCoMKgwqDCoMKgwqDC oCBkbV9wbGFuZV9oZWxwZXJfcHJlcGFyZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPj4g wqDCoMKgwqDCoMKgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZG9tYWluID0gQU1ER1BVX0dF TV9ET01BSU5fVlJBTTsKPj4gwqDCoMKgwqDCoMKgwqAgwqAgwqAgwqAgwqAgciA9IGFtZGdwdV9i b19waW4ocmJvLCBkb21haW4sICZhZmItPmFkZHJlc3MpOwo+PiDCoMKgwqDCoMKgwqDCoCAtCj4+ IMKgwqDCoMKgwqDCoMKgICvCoCDCoCDCoCDCoHJiby0+cHJlZmVycmVkX2RvbWFpbnMgPSBkb21h aW47Cj4+IMKgwqDCoMKgwqDCoMKgICvCoCDCoCDCoCDCoHJiby0+YWxsb3dlZF9kb21haW5zID0g ZG9tYWluOwo+PiDCoMKgwqDCoMKgwqDCoCDCoCDCoCDCoCDCoCBhbWRncHVfYm9fdW5yZXNlcnZl KHJibyk7Cj4+IMKgwqDCoMKgwqDCoMKgIMKgIMKgIMKgIMKgIGlmICh1bmxpa2VseShyICE9IDAp KSB7Cj4+Cj4+Cj4+IMKgwqDCoCBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwo+PiDCoMKgwqAgYW1kLWdmeCBtYWlsaW5nIGxpc3QKPj4gwqDCoMKgIGFtZC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnIDxtYWlsdG86YW1kLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmc+Cj4+IMKgwqDCoCBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2FtZC1nZngKPj4gwqDCoMKgIDxodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2FtZC1nZng+Cj4+Cj4+Cj4gCj4gCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vYW1kLWdmeAo=