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 14:07:15 -0400 Message-ID: <277e44be-d618-ad29-06d2-ea12466571c9@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> <20bdb4b1-1986-22e4-b0d1-1713b8794f83@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: 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 UGxlYXNlIGNsYXJpZnksIENocmlzdGlhbi4gSG93IHdvdWxkIHlvdSBsaWtlIGl0IHRvIGJlIGlt cGxlbWVudGVkPwoKU2FtCgoKT24gMjAxOC0wNC0xMiAwMjowMCBQTSwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPj4gMSkgVHVybiBvZmYgaW1tZWRpYXRlIG1vZGUgd2hlbiBmbGlwcGluZyBiZXR3 ZWVuIFZSQU0vR1RULgo+IFRoYXQgbXVzdCBiZSBpbXBsZW1lbnRlZCBpbmRlcGVuZGVudGx5Lgo+ IAo+IFNlZSB3b3JraW5nIGFyb3VuZCB0aGUgaGFyZHdhcmUgYnVnIHNob3VsZCBiZSBhIGRpZmZl cmVudCBwYXRjaCB0aGFuIGltcGxlbWVudGluZyBhIHBsYWNlbWVudCBwb2xpY3kuCj4gCj4+IEFz IHBlciBkaXNjdXNzaW9uLCB0aGUgM3JkIG9uZSwgd2hpY2ggaXMgdGhlIGN1cnJlbnQgcGF0Y2gs IHNlZW1zIHRoZSBiZXN0IHNvIGZhci4KPiBBbmQgSSBjYW4gb25seSByZXBlYXQgbXlzZWxmLiBB bGV4IGFuZCBJIGFyZSB0aGUgbWFpbnRhaW5lcnMgb2YgdGhlIGtlcm5lbCBtb2R1bGUsIHNvIHdl IGFyZSB0aGUgb25lIHdobyBkZWNpZGUgb24gaG93IHRvIGltcGxlbWVudCB0aGluZ3MgaGVyZS4K PiAKPiBBbmQgd2UgYm90aCBub3RlZCB0aGF0IHRoaXMgYXBwcm9hY2ggb2Ygb3ZlcnJpZGluZyB1 c2VyIHNwYWNlIGRlY2lzaW9ucyBpcyBub3QgYSBnb29kIGRlc2lnbi4KPiAKPiBUaGUgcGxhY2Vt ZW50IHBvbGljeSBJIHN1Z2dlc3QgYnkgcHJlZmVycmluZyBHVFQgb3ZlciBWUkFNIG9uIEFQVXMg c2hvdWxkIGJlIHRyaXZpYWwgdG8gaW1wbGVtZW50IGFuZCBhcyBmYXIgYXMgSSBjYW4gc2VlIGF2 b2lkcyBhbGwgbmVnYXRpdmUgc2lkZSBlZmZlY3RzLgo+IAo+IFJlZ2FyZHMsCj4gQ2hyaXN0aWFu Lgo+IAo+IEFtIDEyLjA0LjIwMTggdW0gMTk6MjEgc2NocmllYiBTYW11ZWwgTGk6Cj4+PiBUaGUg cG9pbnQgaXMgdGhpcyBrZXJuZWwgY2hhbmdlIG5vdyBuZWVkcyB0byBiZSByZXdvcmtlZCBhbmQg YWRhcHRlZCB0byB3aGF0IE1lc2EgaXMgZG9pbmcuCj4+IFRocmVlIG9wdGlvbnMgaGF2ZSBiZWVu IGJyb3VnaHQgdXAgZm9yIGtlcm5lbCwKPj4gMSkgVHVybiBvZmYgaW1tZWRpYXRlIG1vZGUgd2hl biBmbGlwcGluZyBiZXR3ZWVuIFZSQU0vR1RULgo+PiAyKSBDaGVjayB0aGUgZG9tYWluIG9mIHRo ZSBjdXJyZW50IGZiIGFuZCB0aGVuIGFkanVzdCB0aGUgbmV3IG9uZSBiZWZvcmUgcGlubmluZyBp dC4KPj4gMykgVXNlIG9ubHkgVlJBTSBvciBHVFQgZGVwZW5kaW5nIG9uIGEgdGhyZXNoaG9sZC4K Pj4KPj4gQXMgcGVyIGRpc2N1c3Npb24sIHRoZSAzcmQgb25lLCB3aGljaCBpcyB0aGUgY3VycmVu dCBwYXRjaCwgc2VlbXMgdGhlIGJlc3Qgc28gZmFyLgo+Pgo+PiBSZWdhcmRzLAo+PiBTYW11ZWwg TGkKPj4KPj4KPj4KPj4gT24gMjAxOC0wNC0xMiAwMTowMyBQTSwgQ2hyaXN0aWFuIEvDtm5pZyB3 cm90ZToKPj4+PiBDYW4geW91IGJlIG1vcmUgc3BlY2lmaWMsIENocmlzdGlhbj8gTWVzYSBoYXMg dGhpcywgSSBkb24ndCB0aGluayBpdCBuZWVkcyBhbnl0aGluZyBlbHNlOgo+Pj4gQ29tcGxldGVs eSBhZ3JlZSwgdGhhdCdzIHdoYXQgSSBzdWdnZXN0ZWQgdG8gaW1wbGVtZW50Lgo+Pj4KPj4+IFRo ZSBwb2ludCBpcyB0aGlzIGtlcm5lbCBjaGFuZ2Ugbm93IG5lZWRzIHRvIGJlIHJld29ya2VkIGFu ZCBhZGFwdGVkIHRvIHdoYXQgTWVzYSBpcyBkb2luZy4KPj4+Cj4+PiBSZWdhcmRzLAo+Pj4gQ2hy aXN0aWFuLgo+Pj4KPj4+IEFtIDEyLjA0LjIwMTggdW0gMTg6NDAgc2NocmllYiBNYXJlayBPbMWh w6FrOgo+Pj4+IENhbiB5b3UgYmUgbW9yZSBzcGVjaWZpYywgQ2hyaXN0aWFuPyBNZXNhIGhhcyB0 aGlzLCBJIGRvbid0IHRoaW5rIGl0IG5lZWRzIGFueXRoaW5nIGVsc2U6Cj4+Pj4gaHR0cHM6Ly9j Z2l0LmZyZWVkZXNrdG9wLm9yZy9tZXNhL21lc2EvY29tbWl0Lz9pZD03ZDIwNzk5MDhkOWVmMDVl YzNmMzViNzA3ODgzM2U1Nzg0NmNhYjViCj4+Pj4KPj4+PiBNYXJlawo+Pj4+Cj4+Pj4gT24gV2Vk LCBNYXIgMjgsIDIwMTggYXQgMzo0NiBBTSwgQ2hyaXN0aWFuIEvDtm5pZyA8Y2tvZW5pZy5sZWlj aHR6dW1lcmtlbkBnbWFpbC5jb20gPG1haWx0bzpja29lbmlnLmxlaWNodHp1bWVya2VuQGdtYWls LmNvbT4+IHdyb3RlOgo+Pj4+Cj4+Pj4gwqDCoMKgwqAgQW0gMjguMDMuMjAxOCB1bSAwMDoyMiBz Y2hyaWViIFNhbXVlbCBMaToKPj4+Pgo+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgSXQncyBhdXRvIGJ5 IGRlZmF1bHQuIEZvciBDWi9TVCwgYXV0byBzZXR0aW5nIGVuYWJsZXMgc2cgZGlzcGxheQo+Pj4+ IMKgwqDCoMKgwqDCoMKgwqAgd2hlbiB2cmFtIHNpemUgaXMgc21hbGw7IG90aGVyd2lzZSBzdGls bCB1c2VzIHZyYW0uCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCBUaGlzIHBhdGNoIGZpeGVkIHNvbWUg cG90ZW50aWFsIGhhbmcgaXNzdWUgaW50cm9kdWNlZCBieSBjaGFuZ2UKPj4+PiDCoMKgwqDCoMKg wqDCoMKgICJhbGxvdyBmcmFtZWJ1ZmZlciBpbiBHQVJUIG1lbW9yeSBhcyB3ZWxsIiBkdWUgdG8g Q1ovU1QgaGFyZHdhcmUKPj4+PiDCoMKgwqDCoMKgwqDCoMKgIGxpbWl0YXRpb24uCj4+Pj4KPj4+ Pgo+Pj4+IMKgwqDCoMKgIFdlbGwgdGhhdCBpcyBzdGlsbCBhIE5BSy4KPj4+Pgo+Pj4+IMKgwqDC oMKgIEFzIGRpc2N1c3NlZCBub3cgbXVsdGlwbGUgdGltZXMgcGxlYXNlIGltcGxlbWVudCB0aGUg bmVjZXNzYXJ5Cj4+Pj4gwqDCoMKgwqAgY2hhbmdlcyBpbiBNZXNhLgo+Pj4+Cj4+Pj4gwqDCoMKg wqAgUmVnYXJkcywKPj4+PiDCoMKgwqDCoCBDaHJpc3RpYW4uCj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4g wqDCoMKgwqDCoMKgwqDCoCB2MjogQ2hhbmdlIGRlZmF1bHQgc2V0dGluZyB0byBhdXRvLCBhbHNv IHNvbWUgbWlzYyBjaGFuZ2VzLgo+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgU2lnbmVkLW9mZi1ieTog U2FtdWVsIExpIDxTYW11ZWwuTGlAYW1kLmNvbQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgPG1haWx0 bzpTYW11ZWwuTGlAYW1kLmNvbT4+Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCAtLS0KPj4+PiDCoMKg wqDCoMKgwqDCoMKgIMKgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oIMKgIMKg fMKgIDEgKwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2Rpc3BsYXkuYyDCoCDCoHwgMTAgKysrKysrKystLQo+Pj4+IMKgwqDCoMKgwqDC oMKgwqAgwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc3BsYXkuaCDCoCDC oHzCoCAyICsrCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfZHJ2LmMgwqAgwqB8wqAgNCArKysrCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCDC oCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZmIuYyDCoCB8wqAgMiArKwo+Pj4+ IMKgwqDCoMKgwqDCoMKgwqAgwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9k bS9hbWRncHVfZG0uYyB8wqAgMyArKy0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgIMKgIDYgZmlsZXMg Y2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IMKgwqDC oMKgwqDCoMKgwqAgZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dS5oCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdS5oCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCBpbmRleCBhN2UyMjI5Li5jOTQyMzYyIDEwMDY0 NAo+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1LmgKPj4+PiDCoMKgwqDCoMKgwqDCoMKgICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdS5oCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCBAQCAtMTI5LDYgKzEyOSw3IEBA IGV4dGVybiBpbnQgYW1kZ3B1X2xicHc7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCDCoCBleHRlcm4g aW50IGFtZGdwdV9jb21wdXRlX211bHRpcGlwZTsKPj4+PiDCoMKgwqDCoMKgwqDCoMKgIMKgIGV4 dGVybiBpbnQgYW1kZ3B1X2dwdV9yZWNvdmVyeTsKPj4+PiDCoMKgwqDCoMKgwqDCoMKgIMKgIGV4 dGVybiBpbnQgYW1kZ3B1X2VtdV9tb2RlOwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgK2V4dGVybiBp bnQgYW1kZ3B1X3NnX2Rpc3BsYXk7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCDCoCDCoCAjaWZkZWYg Q09ORklHX0RSTV9BTURHUFVfU0kKPj4+PiDCoMKgwqDCoMKgwqDCoMKgIMKgIGV4dGVybiBpbnQg YW1kZ3B1X3NpX3N1cHBvcnQ7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc3BsYXkuYwo+Pj4+IMKgwqDCoMKgwqDC oMKgwqAgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzcGxheS5jCj4+Pj4g wqDCoMKgwqDCoMKgwqDCoCBpbmRleCA1NDk1YjI5Li4xZTdiOTUwIDEwMDY0NAo+Pj4+IMKgwqDC oMKgwqDCoMKgwqAgLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc3Bs YXkuYwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2Rpc3BsYXkuYwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgQEAgLTUxMyw4ICs1MTMs MTQgQEAgdWludDMyX3QKPj4+PiDCoMKgwqDCoMKgwqDCoMKgIGFtZGdwdV9kaXNwbGF5X2ZyYW1l YnVmZmVyX2RvbWFpbnMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4+Pj4gwqDCoMKgwqDC oMKgwqDCoCDCoCAjaWYgZGVmaW5lZChDT05GSUdfRFJNX0FNRF9EQykKPj4+PiDCoMKgwqDCoMKg wqDCoMKgIMKgIMKgIMKgIMKgIGlmIChhZGV2LT5hc2ljX3R5cGUgPj0gQ0hJUF9DQVJSSVpPICYm IGFkZXYtPmFzaWNfdHlwZQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgPCBDSElQX1JBVkVOICYmCj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoCDCoCDCoCDCoCDCoCDCoCDCoCBhZGV2LT5mbGFncyAmIEFNRF9J U19BUFUgJiYKPj4+PiDCoMKgwqDCoMKgwqDCoMKgIC3CoCDCoCDCoCDCoCDCoCDCoGFtZGdwdV9k ZXZpY2VfYXNpY19oYXNfZGNfc3VwcG9ydChhZGV2LT5hc2ljX3R5cGUpKQo+Pj4+IMKgwqDCoMKg wqDCoMKgwqAgLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgZG9tYWluIHw9IEFNREdQVV9HRU1fRE9N QUlOX0dUVDsKPj4+PiDCoMKgwqDCoMKgwqDCoMKgICvCoCDCoCDCoCDCoCDCoCDCoGFtZGdwdV9k ZXZpY2VfYXNpY19oYXNfZGNfc3VwcG9ydChhZGV2LT5hc2ljX3R5cGUpKSB7Cj4+Pj4gwqDCoMKg wqDCoMKgwqDCoCArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAoYW1kZ3B1X3NnX2Rpc3BsYXkg PT0gMSkKPj4+PiDCoMKgwqDCoMKgwqDCoMKgICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoGRvbWFpbiA9IEFNREdQVV9HRU1fRE9NQUlOX0dUVDsKPj4+PiDCoMKgwqDCoMKgwqDC oMKgICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGVsc2UgaWYgKGFtZGdwdV9zZ19kaXNwbGF5ID09 IC0xKSB7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCArwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqBpZiAoYWRldi0+Z21jLnJlYWxfdnJhbV9zaXplIDwKPj4+PiDCoMKgwqDCoMKgwqDC oMKgIEFNREdQVV9TR19USFJFU0hPTEQpCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCArwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBkb21haW4gPSBBTURHUFVfR0VN X0RPTUFJTl9HVFQ7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCArwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqB9Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCArwqAgwqAgwqAgwqB9Cj4+Pj4gwqDCoMKgwqDCoMKg wqDCoCDCoCAjZW5kaWYKPj4+PiDCoMKgwqDCoMKgwqDCoMKgIMKgIMKgIMKgIMKgIHJldHVybiBk b21haW47Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2Rpc3BsYXkuaAo+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzcGxheS5oCj4+Pj4gwqDCoMKgwqDCoMKg wqDCoCBpbmRleCAyYjExZDgwLi4yYjI1MzkzIDEwMDY0NAo+Pj4+IMKgwqDCoMKgwqDCoMKgwqAg LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc3BsYXkuaAo+Pj4+IMKg wqDCoMKgwqDCoMKgwqAgKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rp c3BsYXkuaAo+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgQEAgLTIzLDYgKzIzLDggQEAKPj4+PiDCoMKg wqDCoMKgwqDCoMKgIMKgICNpZm5kZWYgX19BTURHUFVfRElTUExBWV9IX18KPj4+PiDCoMKgwqDC oMKgwqDCoMKgIMKgICNkZWZpbmUgX19BTURHUFVfRElTUExBWV9IX18KPj4+PiDCoMKgwqDCoMKg wqDCoMKgIMKgICsjZGVmaW5lIEFNREdQVV9TR19USFJFU0hPTETCoCAoMjU2KjEwMjQqMTAyNCkK Pj4+PiDCoMKgwqDCoMKgwqDCoMKgICsKPj4+PiDCoMKgwqDCoMKgwqDCoMKgIMKgIHVpbnQzMl90 IGFtZGdwdV9kaXNwbGF5X2ZyYW1lYnVmZmVyX2RvbWFpbnMoc3RydWN0Cj4+Pj4gwqDCoMKgwqDC oMKgwqDCoCBhbWRncHVfZGV2aWNlICphZGV2KTsKPj4+PiDCoMKgwqDCoMKgwqDCoMKgIMKgIHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKgo+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgwqAgYW1kZ3B1X2Rp c3BsYXlfdXNlcl9mcmFtZWJ1ZmZlcl9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4+ PiDCoMKgwqDCoMKgwqDCoMKgIGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfZHJ2LmMKPj4+PiDCoMKgwqDCoMKgwqDCoMKgIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2Rydi5jCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCBpbmRleCAxYmZjZTc5 Li4xOWYxMWE1IDEwMDY0NAo+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCArKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMKPj4+PiDCoMKgwqDCoMKgwqDC oMKgIEBAIC0xMzIsNiArMTMyLDcgQEAgaW50IGFtZGdwdV9sYnB3ID0gLTE7Cj4+Pj4gwqDCoMKg wqDCoMKgwqDCoCDCoCBpbnQgYW1kZ3B1X2NvbXB1dGVfbXVsdGlwaXBlID0gLTE7Cj4+Pj4gwqDC oMKgwqDCoMKgwqDCoCDCoCBpbnQgYW1kZ3B1X2dwdV9yZWNvdmVyeSA9IC0xOyAvKiBhdXRvICov Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCDCoCBpbnQgYW1kZ3B1X2VtdV9tb2RlID0gMDsKPj4+PiDC oMKgwqDCoMKgwqDCoMKgICtpbnQgYW1kZ3B1X3NnX2Rpc3BsYXkgPSAtMTsKPj4+PiDCoMKgwqDC oMKgwqDCoMKgIMKgIMKgIE1PRFVMRV9QQVJNX0RFU0ModnJhbWxpbWl0LCAiUmVzdHJpY3QgVlJB TSBmb3IgdGVzdGluZywgaW4KPj4+PiDCoMKgwqDCoMKgwqDCoMKgIG1lZ2FieXRlcyIpOwo+Pj4+ IMKgwqDCoMKgwqDCoMKgwqAgwqAgbW9kdWxlX3BhcmFtX25hbWVkKHZyYW1saW1pdCwgYW1kZ3B1 X3ZyYW1fbGltaXQsIGludCwgMDYwMCk7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCBAQCAtMjkwLDYg KzI5MSw5IEBAIG1vZHVsZV9wYXJhbV9uYW1lZChncHVfcmVjb3ZlcnksCj4+Pj4gwqDCoMKgwqDC oMKgwqDCoCBhbWRncHVfZ3B1X3JlY292ZXJ5LCBpbnQsIDA0NDQpOwo+Pj4+IMKgwqDCoMKgwqDC oMKgwqAgwqAgTU9EVUxFX1BBUk1fREVTQyhlbXVfbW9kZSwgIkVtdWxhdGlvbiBtb2RlLCAoMSA9 IGVuYWJsZSwgMCA9Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCBkaXNhYmxlKSIpOwo+Pj4+IMKgwqDC oMKgwqDCoMKgwqAgwqAgbW9kdWxlX3BhcmFtX25hbWVkKGVtdV9tb2RlLCBhbWRncHVfZW11X21v ZGUsIGludCwgMDQ0NCk7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCDCoCArTU9EVUxFX1BBUk1fREVT QyhzZ19kaXNwbGF5LCAiRW5hYmxlIHNjYXR0ZXIgZ2F0aGVyCj4+Pj4gwqDCoMKgwqDCoMKgwqDC oCBkaXNwbGF5LCAoMSA9IGVuYWJsZSwgMCA9IGRpc2FibGUsIC0xID0gYXV0byIpOwo+Pj4+IMKg wqDCoMKgwqDCoMKgwqAgK21vZHVsZV9wYXJhbV9uYW1lZChzZ19kaXNwbGF5LCBhbWRncHVfc2df ZGlzcGxheSwgaW50LCAwNDQ0KTsKPj4+PiDCoMKgwqDCoMKgwqDCoMKgICsKPj4+PiDCoMKgwqDC oMKgwqDCoMKgIMKgICNpZmRlZiBDT05GSUdfRFJNX0FNREdQVV9TSQo+Pj4+IMKgwqDCoMKgwqDC oMKgwqAgwqAgwqAgI2lmIGRlZmluZWQoQ09ORklHX0RSTV9SQURFT04pIHx8Cj4+Pj4gwqDCoMKg wqDCoMKgwqDCoCBkZWZpbmVkKENPTkZJR19EUk1fUkFERU9OX01PRFVMRSkKPj4+PiDCoMKgwqDC oMKgwqDCoMKgIGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf ZmIuYwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfZmIuYwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgaW5kZXggMTIwNjMwMS4uZjU3YzM1NSAx MDA2NDQKPj4+PiDCoMKgwqDCoMKgwqDCoMKgIC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9mYi5jCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCArKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfZmIuYwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgQEAgLTEzOCw2 ICsxMzgsOCBAQCBzdGF0aWMgaW50Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCBhbWRncHVmYl9jcmVh dGVfcGlubmVkX29iamVjdChzdHJ1Y3QgYW1kZ3B1X2ZiZGV2ICpyZmJkZXYsCj4+Pj4gwqDCoMKg wqDCoMKgwqDCoCDCoCDCoCDCoCDCoCBtb2RlX2NtZC0+cGl0Y2hlc1swXSA9IGFtZGdwdV9hbGln bl9waXRjaChhZGV2LAo+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgbW9kZV9jbWQtPndpZHRoLCBjcHAs Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCBmYl90aWxlZCk7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCDC oCDCoCDCoCDCoCBkb21haW4gPSBhbWRncHVfZGlzcGxheV9mcmFtZWJ1ZmZlcl9kb21haW5zKGFk ZXYpOwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgK8KgIMKgIMKgIMKgaWYgKGRvbWFpbiAmIEFNREdQ VV9HRU1fRE9NQUlOX0dUVCkKPj4+PiDCoMKgwqDCoMKgwqDCoMKgICvCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoERSTV9ERUJVR19EUklWRVIoIlNjYXR0ZXIgZ2F0aGVyIGRpc3BsYXk6Cj4+Pj4gwqDC oMKgwqDCoMKgwqDCoCBlbmFibGVkXG4iKTsKPj4+PiDCoMKgwqDCoMKgwqDCoMKgIMKgIMKgIMKg IMKgIGhlaWdodCA9IEFMSUdOKG1vZGVfY21kLT5oZWlnaHQsIDgpOwo+Pj4+IMKgwqDCoMKgwqDC oMKgwqAgwqAgwqAgwqAgwqAgc2l6ZSA9IG1vZGVfY21kLT5waXRjaGVzWzBdICogaGVpZ2h0Owo+ Pj4+IMKgwqDCoMKgwqDCoMKgwqAgZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMKPj4+PiDCoMKgwqDCoMKgwqDCoMKgIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYwo+Pj4+IMKgwqDCoMKg wqDCoMKgwqAgaW5kZXggNjhhYjMyNS4uN2U5ZjI0NyAxMDA2NDQKPj4+PiDCoMKgwqDCoMKgwqDC oMKgIC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2Rt LmMKPj4+PiDCoMKgwqDCoMKgwqDCoMKgICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxh eS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMKPj4+PiDCoMKgwqDCoMKgwqDCoMKgIEBAIC0zMDc0LDcg KzMwNzQsOCBAQCBzdGF0aWMgaW50Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCBkbV9wbGFuZV9oZWxw ZXJfcHJlcGFyZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPj4+PiDCoMKgwqDCoMKgwqDC oMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRvbWFpbiA9IEFNREdQVV9HRU1fRE9NQUlOX1ZS QU07Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCDCoCDCoCDCoCDCoCByID0gYW1kZ3B1X2JvX3Bpbihy Ym8sIGRvbWFpbiwgJmFmYi0+YWRkcmVzcyk7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCAtCj4+Pj4g wqDCoMKgwqDCoMKgwqDCoCArwqAgwqAgwqAgwqByYm8tPnByZWZlcnJlZF9kb21haW5zID0gZG9t YWluOwo+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgK8KgIMKgIMKgIMKgcmJvLT5hbGxvd2VkX2RvbWFp bnMgPSBkb21haW47Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCDCoCDCoCDCoCDCoCBhbWRncHVfYm9f dW5yZXNlcnZlKHJibyk7Cj4+Pj4gwqDCoMKgwqDCoMKgwqDCoCDCoCDCoCDCoCDCoCBpZiAodW5s aWtlbHkociAhPSAwKSkgewo+Pj4+Cj4+Pj4KPj4+PiDCoMKgwqDCoCBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4+IMKgwqDCoMKgIGFtZC1nZnggbWFp bGluZyBsaXN0Cj4+Pj4gwqDCoMKgwqAgYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcgPG1h aWx0bzphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZz4KPj4+PiDCoMKgwqDCoCBodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngKPj4+PiDCoMKg wqDCoCA8aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQt Z2Z4Pgo+Pj4+Cj4+Pj4KPj4+Cj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1k LWdmeAo=