From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Grodzovsky, Andrey" Subject: Re: [PATCH 3/3] drm/amdgpu: Avoid HW reset if guilty job already signaled. Date: Wed, 10 Apr 2019 15:05:24 +0000 Message-ID: <29ed8a29-4b82-a2f3-92aa-a6c660b19f09@amd.com> References: <1554739692-6999-1-git-send-email-andrey.grodzovsky@amd.com> <1554739692-6999-3-git-send-email-andrey.grodzovsky@amd.com> <6ec23212-740d-7931-40e3-3d60ab591679@gmail.com> <209e53f7-5842-1f34-f9bb-a800670b31fe@amd.com> <2e4a76c7-dcba-4c8f-359b-bd30c4cf048f@gmail.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 Content-ID: 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: "Koenig, Christian" , "dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "etnaviv-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "eric-WhKQ6XTQaPysTnJN9+BGXg@public.gmane.org" DQpPbiA0LzEwLzE5IDEwOjQxIEFNLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOg0KPiBBbSAxMC4w NC4xOSB1bSAxNjoyOCBzY2hyaWViIEdyb2R6b3Zza3ksIEFuZHJleToNCj4+IE9uIDQvMTAvMTkg MTA6MDYgQU0sIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6DQo+Pj4gQW0gMDkuMDQuMTkgdW0gMTg6 NDIgc2NocmllYiBHcm9kem92c2t5LCBBbmRyZXk6DQo+Pj4+IE9uIDQvOS8xOSAxMDo1MCBBTSwg Q2hyaXN0aWFuIEvDtm5pZyB3cm90ZToNCj4+Pj4+IEFtIDA4LjA0LjE5IHVtIDE4OjA4IHNjaHJp ZWIgQW5kcmV5IEdyb2R6b3Zza3k6DQo+Pj4+Pj4gQWxzbyByZWplY3QgVERScyBpZiBhbm90aGVy IG9uZSBhbHJlYWR5IHJ1bm5pbmcuDQo+Pj4+Pj4NCj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBBbmRy ZXkgR3JvZHpvdnNreSA8YW5kcmV5Lmdyb2R6b3Zza3lAYW1kLmNvbT4NCj4+Pj4+PiAtLS0NCj4+ Pj4+PiDCoMKgwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jIHwg OTQNCj4+Pj4+PiArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0NCj4+Pj4+PiDCoMKgwqAg MSBmaWxlIGNoYW5nZWQsIDY3IGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQ0KPj4+Pj4+ DQo+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9k ZXZpY2UuYw0KPj4+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rldmlj ZS5jDQo+Pj4+Pj4gaW5kZXggYWFiZDA0My4uNDQ0Njg5MiAxMDA2NDQNCj4+Pj4+PiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMNCj4+Pj4+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMNCj4+Pj4+PiBAQCAtMzMy NywxMCArMzMyNywxMiBAQCBib29sIGFtZGdwdV9kZXZpY2Vfc2hvdWxkX3JlY292ZXJfZ3B1KHN0 cnVjdA0KPj4+Pj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+Pj4+Pj4gwqDCoMKgIMKgIHN0YXRp YyBpbnQgYW1kZ3B1X2RldmljZV9wcmVfYXNpY19yZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZQ0K Pj4+Pj4+ICphZGV2LA0KPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9qb2IgKmpvYiwNCj4+Pj4+PiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYm9vbCAqbmVlZF9mdWxsX3Jlc2V0X2FyZykNCj4+ Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYm9vbCAqbmVlZF9m dWxsX3Jlc2V0X2FyZywNCj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgYm9vbCAqam9iX3NpZ25hbGVkKQ0KPj4+Pj4+IMKgwqDCoCB7DQo+Pj4+Pj4gwqDCoMKg wqDCoMKgwqAgaW50IGksIHIgPSAwOw0KPj4+Pj4+IMKgwqDCoMKgwqDCoMKgIGJvb2wgbmVlZF9m dWxsX3Jlc2V0wqAgPSAqbmVlZF9mdWxsX3Jlc2V0X2FyZzsNCj4+Pj4+PiArwqDCoMKgIHN0cnVj dCBhbWRncHVfcmluZyAqam9iX3JpbmcgPSBqb2IgPw0KPj4+Pj4+IHRvX2FtZGdwdV9yaW5nKGpv Yi0+YmFzZS5zY2hlZCkgOiBOVUxMOw0KPj4+Pj4+IMKgwqDCoCDCoMKgwqDCoMKgIC8qIGJsb2Nr IGFsbCBzY2hlZHVsZXJzIGFuZCByZXNldCBnaXZlbiBqb2IncyByaW5nICovDQo+Pj4+Pj4gwqDC oMKgwqDCoMKgwqAgZm9yIChpID0gMDsgaSA8IEFNREdQVV9NQVhfUklOR1M7ICsraSkgew0KPj4+ Pj4+IEBAIC0zMzQxLDYgKzMzNDMsMTcgQEAgc3RhdGljIGludCANCj4+Pj4+PiBhbWRncHVfZGV2 aWNlX3ByZV9hc2ljX3Jlc2V0KHN0cnVjdA0KPj4+Pj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+ Pj4+Pj4gwqDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoCBkcm1fc2NoZWRfc3RvcCgmcmluZy0+c2No ZWQsICZqb2ItPmJhc2UpOw0KPj4+Pj4+IMKgwqDCoCArwqDCoMKgwqDCoMKgwqAgLyoNCj4+Pj4+ PiArwqDCoMKgwqDCoMKgwqDCoCAqIE11c3QgY2hlY2sgZ3VpbHR5IHNpZ25hbCBoZXJlIHNpbmNl IGFmdGVyIHRoaXMgcG9pbnQNCj4+Pj4+PiBhbGwgb2xkDQo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqAgKiBIVyBmZW5jZXMgYXJlIGZvcmNlIHNpZ25hbGVkLg0KPj4+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgICoNCj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoCAqIGpvYi0+YmFzZSBob2xkcyBhIHJlZmVy ZW5jZSB0byBwYXJlbnQgZmVuY2UNCj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoCAqLw0KPj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoCBpZiAoam9iX3NpZ25hbGVkICYmIGpvYiAmJiByaW5nID09IGpvYl9y aW5nICYmDQo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgam9iLT5iYXNlLnNfZmVuY2Ut PnBhcmVudCAmJg0KPj4+Pj4+ICsgZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKGpvYi0+YmFzZS5zX2Zl bmNlLT5wYXJlbnQpKQ0KPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICpqb2Jfc2lnbmFs ZWQgPSB0cnVlOw0KPj4+Pj4+ICsNCj4+Pj4+IFRoYXQgd29uJ3Qgd29yayBjb3JyZWN0bHkuIFNl ZSB3aGVuIHRoZSBndWlsdHkgam9iIGlzIG5vdCBvbiB0aGUgDQo+Pj4+PiBmaXJzdA0KPj4+Pj4g c2NoZWR1bGVyLCB5b3Ugd291bGQgYWxyZWFkeSBoYXZlIGZvcmNlIGNvbXBsZXRlZCBzb21lIGJl Zm9yZSBnZXR0aW5nDQo+Pj4+PiBoZXJlLg0KPj4+Pj4NCj4+Pj4+IEJldHRlciB0byBzdG9wIGFs bCBzY2hlZHVsZXJzIGZpcnN0IGFuZCB0aGVuIGRvIHRoZSBjaGVjay4NCj4+Pj4+DQo+Pj4+PiBD aHJpc3RpYW4uDQo+Pj4+IFdoYXQgZG8geW91IG1lYW4gYnkgZmlyc3Qgc2NoZWR1bGVyID8gVGhl cmUgaXMgb25lIHNjaGVkdWxlciBvYmplY3QgDQo+Pj4+IHBlcg0KPj4+PiByaW5nIHNvIEkgYW0g bm90IGNsZWFyIHdoYXQgJ2ZpcnN0JyBtZWFucyBoZXJlLg0KPj4+IFdlbGwgZm9yIGV4YW1wbGUg aWYgdGhlIGd1aWx0eSBqb2IgaXMgZnJvbSBhIGNvbXB1dGUgcmluZyB0aGUgd2UgaGF2ZQ0KPj4+ IGFscmVhZHkgZm9yY2Ugc2lnbmFsZWQgdGhlIGdmeCByaW5nIGhlcmUuDQo+Pj4NCj4+PiBTYW1l IGlzIHRydWUgZm9yIG90aGVyIGRldmljZXMgaW4gdGhlIHNhbWUgaGl2ZSwgc28gaXQgd291bGQg cHJvYmFibHkNCj4+PiBiZSBhIGdvb2QgaWRlYSB0byBtb3ZlIHRoZSBmb3JjZSBzaWduYWxpbmcg YW5kIHRoZSBJUCByZXNldCBzb21ld2hlcmUNCj4+PiBlbHNlIGFuZCB0aGlzIGNoZWNrIHVwIGEg bGF5ZXIuDQo+Pj4NCj4+PiBDaHJpc3RpYW4uDQo+Pg0KPj4gTGV0IG1lIHNlZSBpZiBJIHVuZGVy c3RhbmQgeW91IGNvcnJlY3RseSAtIHlvdSB3YW50IHRvIEFWT0lEIEFOWSBmb3JjZQ0KPj4gc2ln bmFsaW5nIGluIGNhc2Ugd2UgYXJlIG5vdCBnb2luZyB0byBIVyByZXNldCBhbmQgc28geW91IHdh bnQgdG8gaGF2ZQ0KPj4gdGhlIGNoZWNrIGlmIGd1aWx0eSBpcyBzaWduYWxlZCBCRUZPUkUgYW55 IHJpbmcgZmVuY2VzIGFyZSBmb3JjZQ0KPj4gc2lnbmFsZWQuIENvcnJlY3QgPw0KPg0KPiBDb3Jy ZWN0Lg0KPg0KPiBCYXNpY2FsbHkgd2Ugc2hvdWxkIGRvIHRoZSBmb2xsb3dpbmc6DQo+IDEuIFN0 b3AgYWxsIHNjaGVkdWxlcnMgdG8gbWFrZSBzdXJlIHRoYXQgbm90aGluZyBpcyBnb2luZyBvbi4N Cj4gMi4gQ2hlY2sgdGhlIGd1aWx0eSBqb2Igb25jZSBtb3JlIHRvIG1ha2Ugc3VyZSB0aGF0IGl0 IGhhc24ndCBzaWduYWxlZCANCj4gaW4gdGhlIG1lYW50aW1lLg0KPiAzLiBTdGFydCBvdXIgcmVz ZXQgcHJvY2VkdXJlLCB3aXRoIGZvcmNlIGNvbXBsZXRlLCBzb2Z0IHJlc2V0IA0KPiBldmVudHVh bGx5IGhhcmQgcmVzZXQgZXRjIGV0Yy4uDQo+IDQuIFJlc3VibWl0IGFsbCBub3QgeWV0IGNvbXBs ZXRlZCBqb2JzLg0KPiA1LiBTdGFydCB0aGUgc2NoZWR1bGVycyBhZ2Fpbi4NCj4NCj4gQ2hyaXN0 aWFuLg0KDQoNCldoeSBub3QganVzdCBhbHdheXMgZW5zdXJlIHRoZSBndWlsdHnCoCBqb2IncyBy aW5nIGlzIGFsd2F5cyBjaGVja2VkIA0KZmlyc3TCoCBhbmQgdGhlbiBkbyB0aGUgcmVzdCBvZiB0 aGUgcmluZ3MgLSBpbnNpZGUgDQphbWRncHVfZGV2aWNlX3ByZV9hc2ljX3Jlc2V0LiBTZWVtcyB0 byBtZSBsaWtlIGEgbXVjaCBzbWFsbGVyIGNoYW5nZSANCndpdGggbGVzcyBpbXBhY3QgdG8gY3Vy cmVudCBjb2RlIHN0cnVjdHVyZS4NCg0KQW5kcmV5DQoNCg0KPg0KPj4NCj4+IEFuZHJleQ0KPj4N Cj4+Pj4gQW5kcmV5DQo+Pj4+DQo+Pj4+DQo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAv KiBhZnRlciBhbGwgaHcgam9icyBhcmUgcmVzZXQsIGh3IGZlbmNlIGlzIA0KPj4+Pj4+IG1lYW5p bmdsZXNzLCBzbw0KPj4+Pj4+IGZvcmNlX2NvbXBsZXRpb24gKi8NCj4+Pj4+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGFtZGdwdV9mZW5jZV9kcml2ZXJfZm9yY2VfY29tcGxldGlvbihyaW5nKTsN Cj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCB9DQo+Pj4+Pj4gQEAgLTMzNTgsNyArMzM3MSw4IEBAIHN0 YXRpYyBpbnQgYW1kZ3B1X2RldmljZV9wcmVfYXNpY19yZXNldChzdHJ1Y3QNCj4+Pj4+PiBhbWRn cHVfZGV2aWNlICphZGV2LA0KPj4+Pj4+IMKgwqDCoCDCoCDCoCAtwqDCoMKgIGlmICghYW1kZ3B1 X3NyaW92X3ZmKGFkZXYpKSB7DQo+Pj4+Pj4gK8KgwqDCoCAvKiBEb24ndCBzdXNwZW5kIG9uIGJh cmUgbWV0YWwgaWYgd2UgYXJlIG5vdCBnb2luZyB0byBIVyByZXNldA0KPj4+Pj4+IHRoZSBBU0lD ICovDQo+Pj4+Pj4gK8KgwqDCoCBpZiAoIWFtZGdwdV9zcmlvdl92ZihhZGV2KSAmJiAhKCpqb2Jf c2lnbmFsZWQpKSB7DQo+Pj4+Pj4gwqDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIW5lZWRf ZnVsbF9yZXNldCkNCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmVlZF9m dWxsX3Jlc2V0ID0NCj4+Pj4+PiBhbWRncHVfZGV2aWNlX2lwX25lZWRfZnVsbF9yZXNldChhZGV2 KTsNCj4+Pj4+PiBAQCAtMzQ5NSw3ICszNTA5LDcgQEAgc3RhdGljIGludCBhbWRncHVfZG9fYXNp Y19yZXNldChzdHJ1Y3QNCj4+Pj4+PiBhbWRncHVfaGl2ZV9pbmZvICpoaXZlLA0KPj4+Pj4+IMKg wqDCoMKgwqDCoMKgIHJldHVybiByOw0KPj4+Pj4+IMKgwqDCoCB9DQo+Pj4+Pj4gwqDCoMKgIC1z dGF0aWMgdm9pZCBhbWRncHVfZGV2aWNlX3Bvc3RfYXNpY19yZXNldChzdHJ1Y3QgYW1kZ3B1X2Rl dmljZQ0KPj4+Pj4+ICphZGV2KQ0KPj4+Pj4+ICtzdGF0aWMgdm9pZCBhbWRncHVfZGV2aWNlX3Bv c3RfYXNpY19yZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZQ0KPj4+Pj4+ICphZGV2LCBib29sIGpv Yl9zaWduYWxlZCkNCj4+Pj4+PiDCoMKgwqAgew0KPj4+Pj4+IMKgwqDCoMKgwqDCoMKgIGludCBp Ow0KPj4+Pj4+IMKgwqDCoCBAQCAtMzUwNSw3ICszNTE5LDggQEAgc3RhdGljIHZvaWQNCj4+Pj4+ PiBhbWRncHVfZGV2aWNlX3Bvc3RfYXNpY19yZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl dikNCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghcmluZyB8fCAhcmluZy0+c2No ZWQudGhyZWFkKQ0KPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51 ZTsNCj4+Pj4+PiDCoMKgwqAgLcKgwqDCoMKgwqDCoMKgIGlmICghYWRldi0+YXNpY19yZXNldF9y ZXMpDQo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIC8qIE5vIHBvaW50IHRvIHJlc3VibWl0IGpvYnMg aWYgd2UgZGlkbid0IEhXIHJlc2V0Ki8NCj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCFhZGV2 LT5hc2ljX3Jlc2V0X3JlcyAmJiAham9iX3NpZ25hbGVkKQ0KPj4+Pj4+IGRybV9zY2hlZF9yZXN1 Ym1pdF9qb2JzKCZyaW5nLT5zY2hlZCk7DQo+Pj4+Pj4gwqDCoMKgIMKgwqDCoMKgwqDCoMKgwqDC oCBkcm1fc2NoZWRfc3RhcnQoJnJpbmctPnNjaGVkLCAhYWRldi0+YXNpY19yZXNldF9yZXMpOw0K Pj4+Pj4+IEBAIC0zNTE4LDE0ICszNTMzLDIxIEBAIHN0YXRpYyB2b2lkDQo+Pj4+Pj4gYW1kZ3B1 X2RldmljZV9wb3N0X2FzaWNfcmVzZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+Pj4+ Pj4gwqDCoMKgwqDCoMKgwqAgYWRldi0+YXNpY19yZXNldF9yZXMgPSAwOw0KPj4+Pj4+IMKgwqDC oCB9DQo+Pj4+Pj4gwqDCoMKgIC1zdGF0aWMgdm9pZCBhbWRncHVfZGV2aWNlX2xvY2tfYWRldihz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikNCj4+Pj4+PiArc3RhdGljIGJvb2wgYW1kZ3B1X2Rl dmljZV9sb2NrX2FkZXYoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIA0KPj4+Pj4+IGJvb2wN Cj4+Pj4+PiB0cnlsb2NrKQ0KPj4+Pj4+IMKgwqDCoCB7DQo+Pj4+Pj4gLcKgwqDCoCBtdXRleF9s b2NrKCZhZGV2LT5sb2NrX3Jlc2V0KTsNCj4+Pj4+PiArwqDCoMKgIGlmICh0cnlsb2NrKSB7DQo+ Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmICghbXV0ZXhfdHJ5bG9jaygmYWRldi0+bG9ja19yZXNl dCkpDQo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGZhbHNlOw0KPj4+Pj4+ ICvCoMKgwqAgfSBlbHNlDQo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIG11dGV4X2xvY2soJmFkZXYt PmxvY2tfcmVzZXQpOw0KPj4+Pj4+ICsNCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCBhdG9taWNfaW5j KCZhZGV2LT5ncHVfcmVzZXRfY291bnRlcik7DQo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqAgYWRldi0+ aW5fZ3B1X3Jlc2V0ID0gMTsNCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCAvKiBCbG9jayBrZmQ6IFNS SU9WIHdvdWxkIGRvIGl0IHNlcGFyYXRlbHkgKi8NCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCBpZiAo IWFtZGdwdV9zcmlvdl92ZihhZGV2KSkNCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBhbWRncHVfYW1ka2ZkX3ByZV9yZXNldChhZGV2KTsNCj4+Pj4+PiArDQo+ Pj4+Pj4gK8KgwqDCoCByZXR1cm4gdHJ1ZTsNCj4+Pj4+PiDCoMKgwqAgfQ0KPj4+Pj4+IMKgwqDC oCDCoCBzdGF0aWMgdm9pZCBhbWRncHVfZGV2aWNlX3VubG9ja19hZGV2KHN0cnVjdCBhbWRncHVf ZGV2aWNlIA0KPj4+Pj4+ICphZGV2KQ0KPj4+Pj4+IEBAIC0zNTU1LDI5ICszNTc3LDQ0IEBAIGlu dCBhbWRncHVfZGV2aWNlX2dwdV9yZWNvdmVyKHN0cnVjdA0KPj4+Pj4+IGFtZGdwdV9kZXZpY2Ug KmFkZXYsDQo+Pj4+Pj4gwqDCoMKgIHsNCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCBpbnQgcjsNCj4+ Pj4+PiDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2hpdmVfaW5mbyAqaGl2ZSA9IE5VTEw7 DQo+Pj4+Pj4gLcKgwqDCoCBib29sIG5lZWRfZnVsbF9yZXNldCA9IGZhbHNlOw0KPj4+Pj4+IMKg wqDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfZGV2aWNlICp0bXBfYWRldiA9IE5VTEw7DQo+Pj4+ Pj4gwqDCoMKgwqDCoMKgwqAgc3RydWN0IGxpc3RfaGVhZCBkZXZpY2VfbGlzdCwgKmRldmljZV9s aXN0X2hhbmRsZSA9IE5VTEw7DQo+Pj4+Pj4gK8KgwqDCoCBib29sIHhnbWlfdG9wb2xvZ3lfcHJl c2VudCwgbmVlZF9mdWxsX3Jlc2V0LCBqb2Jfc2lnbmFsZWQ7DQo+Pj4+Pj4gwqDCoMKgICvCoMKg wqAgbmVlZF9mdWxsX3Jlc2V0ID0gam9iX3NpZ25hbGVkID0gZmFsc2U7DQo+Pj4+Pj4gwqDCoMKg wqDCoMKgwqAgSU5JVF9MSVNUX0hFQUQoJmRldmljZV9saXN0KTsNCj4+Pj4+PiDCoMKgwqAgwqDC oMKgwqDCoCBkZXZfaW5mbyhhZGV2LT5kZXYsICJHUFUgcmVzZXQgYmVnaW4hXG4iKTsNCj4+Pj4+ PiDCoMKgwqAgK8KgwqDCoCBoaXZlID0gYW1kZ3B1X2dldF94Z21pX2hpdmUoYWRldiwgMCk7DQo+ Pj4+Pj4gK8KgwqDCoCB4Z21pX3RvcG9sb2d5X3ByZXNlbnQgPSBoaXZlICYmDQo+Pj4+Pj4gYWRl di0+Z21jLnhnbWkubnVtX3BoeXNpY2FsX25vZGVzID4gMTsNCj4+Pj4+PiArDQo+Pj4+Pj4gwqDC oMKgwqDCoMKgwqAgLyoNCj4+Pj4+PiAtwqDCoMKgwqAgKiBJbiBjYXNlIG9mIFhHTUkgaGl2ZSBk aXNhbGxvdyBjb25jdXJyZW50IHJlc2V0cyB0byBiZQ0KPj4+Pj4+IHRyaWdnZXJlZA0KPj4+Pj4+ IC3CoMKgwqDCoCAqIGJ5IGRpZmZlcmVudCBub2Rlcy4gTm8gcG9pbnQgYWxzbyBzaW5jZSB0aGUg b25lIG5vZGUgYWxyZWFkeQ0KPj4+Pj4+IGV4ZWN1dGluZw0KPj4+Pj4+IC3CoMKgwqDCoCAqIHJl c2V0IHdpbGwgYWxzbyByZXNldCBhbGwgdGhlIG90aGVyIG5vZGVzIGluIHRoZSBoaXZlLg0KPj4+ Pj4+ICvCoMKgwqDCoCAqIEhlcmUgd2UgdHJ5bG9jayB0byBhdm9pZCBjaGFpbiBvZiByZXNldHMg ZXhlY3V0aW5nIGZyb20NCj4+Pj4+PiArwqDCoMKgwqAgKiBlaXRoZXIgdHJpZ2dlciBieSBqb2Jz IG9uIGRpZmZlcmVudCBhZGV2cyBpbiBYR01JIGhpdmUgb3INCj4+Pj4+PiBqb2JzIG9uDQo+Pj4+ Pj4gK8KgwqDCoMKgICogZGlmZmVyZW50IHNjaGVkdWxlcnMgZm9yIHNhbWUgZGV2aWNlIHdoaWxl IHRoaXMgdGRyIGlzDQo+Pj4+Pj4gcnVubmluZy4NCj4+Pj4+PiArwqDCoMKgwqAgKiBXZSBhbHdh eXMgcmVzZXQgYWxsIHNjaGVkdWxlcnMgZm9yIGRldmljZSBhbmQgYWxsIGRldmljZXMgDQo+Pj4+ Pj4gZm9yDQo+Pj4+Pj4gWEdNSQ0KPj4+Pj4+ICvCoMKgwqDCoCAqIGhpdmUgc28gdGhhdCBzaG91 bGQgdGFrZSBjYXJlIG9mIHRoZW0gdG9vLg0KPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4+ Pj4+PiAtwqDCoMKgIGhpdmUgPSBhbWRncHVfZ2V0X3hnbWlfaGl2ZShhZGV2LCAwKTsNCj4+Pj4+ PiAtwqDCoMKgIGlmIChoaXZlICYmIGFkZXYtPmdtYy54Z21pLm51bV9waHlzaWNhbF9ub2RlcyA+ IDEgJiYNCj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgIW11dGV4X3RyeWxvY2soJmhpdmUtPnJlc2V0 X2xvY2spKQ0KPj4+Pj4+ICsNCj4+Pj4+PiArwqDCoMKgIGlmICh4Z21pX3RvcG9sb2d5X3ByZXNl bnQgJiYgDQo+Pj4+Pj4gIW11dGV4X3RyeWxvY2soJmhpdmUtPnJlc2V0X2xvY2spKSB7DQo+Pj4+ Pj4gK8KgwqDCoMKgwqDCoMKgIERSTV9JTkZPKCJCYWlsaW5nIG9uIFREUiBmb3Igc19qb2I6JWxs eCwgaGl2ZTogJWxseCBhcw0KPj4+Pj4+IGFub3RoZXIgYWxyZWFkeSBpbiBwcm9ncmVzcyIsDQo+ Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBqb2ItPmJhc2UuaWQsIGhpdmUtPmhpdmVf aWQpOw0KPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7DQo+Pj4+Pj4gK8Kg wqDCoCB9DQo+Pj4+Pj4gwqDCoMKgIMKgwqDCoMKgwqAgLyogU3RhcnQgd2l0aCBhZGV2IHByZSBh c2ljIHJlc2V0IGZpcnN0IGZvciBzb2Z0IHJlc2V0DQo+Pj4+Pj4gY2hlY2suKi8NCj4+Pj4+PiAt wqDCoMKgIGFtZGdwdV9kZXZpY2VfbG9ja19hZGV2KGFkZXYpOw0KPj4+Pj4+ICvCoMKgwqAgaWYg KCFhbWRncHVfZGV2aWNlX2xvY2tfYWRldihhZGV2LCAheGdtaV90b3BvbG9neV9wcmVzZW50KSkg ew0KPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBEUk1fSU5GTygiQmFpbGluZyBvbiBURFIgZm9yIHNf am9iOiVsbHgsIGFzIGFub3RoZXIgYWxyZWFkeQ0KPj4+Pj4+IGluIHByb2dyZXNzIiwNCj4+Pj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBqb2ItPmJhc2UuaWQp Ow0KPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsNCj4+Pj4+PiArwqDCoMKgIH0NCj4+ Pj4+PiArDQo+Pj4+Pj4gK8KgwqDCoCAvKiBHdWlsdHkgam9iIHdpbGwgYmUgZnJlZWQgYWZ0ZXIg dGhpcyovDQo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqAgciA9IGFtZGdwdV9kZXZpY2VfcHJlX2FzaWNf cmVzZXQoYWRldiwNCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgam9iLA0KPj4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICZuZWVkX2Z1bGxfcmVzZXQpOw0KPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICZuZWVkX2Z1bGxfcmVzZXQsDQo+Pj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmpvYl9zaWduYWxlZCk7DQo+Pj4+Pj4g wqDCoMKgwqDCoMKgwqAgaWYgKHIpIHsNCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8q VE9ETyBTaG91bGQgd2Ugc3RvcCA/Ki8NCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERS TV9FUlJPUigiR1BVIHByZSBhc2ljIHJlc2V0IGZhaWxlZCB3aXRoIGVyciwgJWQgZm9yIA0KPj4+ Pj4+IGRybQ0KPj4+Pj4+IGRldiwgJXMgIiwNCj4+Pj4+PiBAQCAtMzYwOSwxMCArMzY0NiwxMSBA QCBpbnQgYW1kZ3B1X2RldmljZV9ncHVfcmVjb3ZlcihzdHJ1Y3QNCj4+Pj4+PiBhbWRncHVfZGV2 aWNlICphZGV2LA0KPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHRtcF9hZGV2ID09 IGFkZXYpDQo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOw0K Pj4+Pj4+IMKgwqDCoCAtwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2RldmljZV9sb2NrX2FkZXYodG1w X2FkZXYpOw0KPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBhbWRncHVfZGV2aWNlX2xvY2tfYWRldih0 bXBfYWRldiwgZmFsc2UpOw0KPj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgciA9IGFtZGdw dV9kZXZpY2VfcHJlX2FzaWNfcmVzZXQodG1wX2FkZXYsDQo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTlVMTCwNCj4+Pj4+PiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZuZWVkX2Z1 bGxfcmVzZXQpOw0KPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgJm5lZWRfZnVsbF9yZXNldCwNCj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZqb2Jfc2lnbmFsZWQpOw0KPj4+Pj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgLypUT0RPIFNob3VsZCB3ZSBzdG9wID8qLw0KPj4+Pj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHIpIHsNCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgRFJNX0VSUk9SKCJHUFUgcHJlIGFzaWMgcmVzZXQgZmFpbGVkIHdpdGggZXJy LCAlZCANCj4+Pj4+PiBmb3INCj4+Pj4+PiBkcm0gZGV2LCAlcyAiLA0KPj4+Pj4+IEBAIC0zNjIz LDE5ICszNjYxLDIxIEBAIGludCBhbWRncHVfZGV2aWNlX2dwdV9yZWNvdmVyKHN0cnVjdA0KPj4+ Pj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+Pj4+Pj4gwqDCoMKgIMKgwqDCoMKgwqAgLyogQWN0 dWFsIEFTSUMgcmVzZXRzIGlmIG5lZWRlZC4qLw0KPj4+Pj4+IMKgwqDCoMKgwqDCoMKgIC8qIFRP RE8gSW1wbGVtZW50IFhHTUkgaGl2ZSByZXNldCBsb2dpYyBmb3IgU1JJT1YgKi8NCj4+Pj4+PiAt wqDCoMKgIGlmIChhbWRncHVfc3Jpb3ZfdmYoYWRldikpIHsNCj4+Pj4+PiAtwqDCoMKgwqDCoMKg wqAgciA9IGFtZGdwdV9kZXZpY2VfcmVzZXRfc3Jpb3YoYWRldiwgam9iID8gZmFsc2UgOiB0cnVl KTsNCj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgaWYgKHIpDQo+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgYWRldi0+YXNpY19yZXNldF9yZXMgPSByOw0KPj4+Pj4+IC3CoMKgwqAgfSBlbHNl IHsNCj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgcsKgID0gYW1kZ3B1X2RvX2FzaWNfcmVzZXQoaGl2 ZSwgZGV2aWNlX2xpc3RfaGFuZGxlLA0KPj4+Pj4+ICZuZWVkX2Z1bGxfcmVzZXQpOw0KPj4+Pj4+ IC3CoMKgwqDCoMKgwqDCoCBpZiAociAmJiByID09IC1FQUdBSU4pDQo+Pj4+Pj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZ290byByZXRyeTsNCj4+Pj4+PiArwqDCoMKgIGlmICgham9iIHx8ICFq b2Jfc2lnbmFsZWQpIHsNCj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGFtZGdwdV9zcmlvdl92 ZihhZGV2KSkgew0KPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHIgPSBhbWRncHVfZGV2 aWNlX3Jlc2V0X3NyaW92KGFkZXYsIGpvYiA/IGZhbHNlIDogDQo+Pj4+Pj4gdHJ1ZSk7DQo+Pj4+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHIpDQo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBhZGV2LT5hc2ljX3Jlc2V0X3JlcyA9IHI7DQo+Pj4+Pj4gK8KgwqDC oMKgwqDCoMKgIH0gZWxzZSB7DQo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcsKgID0g YW1kZ3B1X2RvX2FzaWNfcmVzZXQoaGl2ZSwgZGV2aWNlX2xpc3RfaGFuZGxlLA0KPj4+Pj4+ICZu ZWVkX2Z1bGxfcmVzZXQpOw0KPj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyICYm IHIgPT0gLUVBR0FJTikNCj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdv dG8gcmV0cnk7DQo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIH0NCj4+Pj4+PiDCoMKgwqDCoMKgwqDC oCB9DQo+Pj4+Pj4gwqDCoMKgIMKgwqDCoMKgwqAgLyogUG9zdCBBU0lDIHJlc2V0IGZvciBhbGwg ZGV2cyAuKi8NCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCBsaXN0X2Zvcl9lYWNoX2VudHJ5KHRtcF9h ZGV2LCBkZXZpY2VfbGlzdF9oYW5kbGUsDQo+Pj4+Pj4gZ21jLnhnbWkuaGVhZCkgew0KPj4+Pj4+ IC3CoMKgwqDCoMKgwqDCoCBhbWRncHVfZGV2aWNlX3Bvc3RfYXNpY19yZXNldCh0bXBfYWRldik7 DQo+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGFtZGdwdV9kZXZpY2VfcG9zdF9hc2ljX3Jlc2V0KHRt cF9hZGV2LCBqb2Jfc2lnbmFsZWQpOw0KPj4+Pj4+IMKgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqAg aWYgKHIpIHsNCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogYmFkIG5l d3MsIGhvdyB0byB0ZWxsIGl0IHRvIHVzZXJzcGFjZSA/ICovDQo+Pj4+Pj4gQEAgLTM2NDgsNyAr MzY4OCw3IEBAIGludCBhbWRncHVfZGV2aWNlX2dwdV9yZWNvdmVyKHN0cnVjdA0KPj4+Pj4+IGFt ZGdwdV9kZXZpY2UgKmFkZXYsDQo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhbWRncHVf ZGV2aWNlX3VubG9ja19hZGV2KHRtcF9hZGV2KTsNCj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCB9DQo+ Pj4+Pj4gwqDCoMKgIC3CoMKgwqAgaWYgKGhpdmUgJiYgYWRldi0+Z21jLnhnbWkubnVtX3BoeXNp Y2FsX25vZGVzID4gMSkNCj4+Pj4+PiArwqDCoMKgIGlmICh4Z21pX3RvcG9sb2d5X3ByZXNlbnQp DQo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtdXRleF91bmxvY2soJmhpdmUtPnJlc2V0 X2xvY2spOw0KPj4+Pj4+IMKgwqDCoCDCoMKgwqDCoMKgIGlmIChyKQ0KPj4+PiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPj4+PiBhbWQtZ2Z4IG1haWxp bmcgbGlzdA0KPj4+PiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPj4+PiBodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngNCj4+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+PiBhbWQtZ2Z4IG1h aWxpbmcgbGlzdA0KPj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4+IGh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeA0KPg0KX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5n IGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4