From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Koenig, Christian" Subject: Re: [PATCH 3/3] drm/amdgpu: Avoid HW reset if guilty job already signaled. Date: Wed, 10 Apr 2019 15:09:54 +0000 Message-ID: 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> <29ed8a29-4b82-a2f3-92aa-a6c660b19f09@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <29ed8a29-4b82-a2f3-92aa-a6c660b19f09-5C7GfCeVMHo@public.gmane.org> 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: "Grodzovsky, Andrey" , "dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "etnaviv-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "eric-WhKQ6XTQaPysTnJN9+BGXg@public.gmane.org" QW0gMTAuMDQuMTkgdW0gMTc6MDUgc2NocmllYiBHcm9kem92c2t5LCBBbmRyZXk6DQo+IE9uIDQv MTAvMTkgMTA6NDEgQU0sIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6DQo+PiBBbSAxMC4wNC4xOSB1 bSAxNjoyOCBzY2hyaWViIEdyb2R6b3Zza3ksIEFuZHJleToNCj4+PiBPbiA0LzEwLzE5IDEwOjA2 IEFNLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOg0KPj4+PiBBbSAwOS4wNC4xOSB1bSAxODo0MiBz Y2hyaWViIEdyb2R6b3Zza3ksIEFuZHJleToNCj4+Pj4+IE9uIDQvOS8xOSAxMDo1MCBBTSwgQ2hy aXN0aWFuIEvDtm5pZyB3cm90ZToNCj4+Pj4+PiBBbSAwOC4wNC4xOSB1bSAxODowOCBzY2hyaWVi IEFuZHJleSBHcm9kem92c2t5Og0KPj4+Pj4+PiBBbHNvIHJlamVjdCBURFJzIGlmIGFub3RoZXIg b25lIGFscmVhZHkgcnVubmluZy4NCj4+Pj4+Pj4NCj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogQW5k cmV5IEdyb2R6b3Zza3kgPGFuZHJleS5ncm9kem92c2t5QGFtZC5jb20+DQo+Pj4+Pj4+IC0tLQ0K Pj4+Pj4+PiAgwqDCoMKgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2Uu YyB8IDk0DQo+Pj4+Pj4+ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQ0KPj4+Pj4+PiAg wqDCoMKgIDEgZmlsZSBjaGFuZ2VkLCA2NyBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkN Cj4+Pj4+Pj4NCj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9kZXZpY2UuYw0KPj4+Pj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9kZXZpY2UuYw0KPj4+Pj4+PiBpbmRleCBhYWJkMDQzLi40NDQ2ODkyIDEwMDY0NA0KPj4+ Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMNCj4+ Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jDQo+ Pj4+Pj4+IEBAIC0zMzI3LDEwICszMzI3LDEyIEBAIGJvb2wgYW1kZ3B1X2RldmljZV9zaG91bGRf cmVjb3Zlcl9ncHUoc3RydWN0DQo+Pj4+Pj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+Pj4+Pj4+ ICDCoMKgwqAgwqAgc3RhdGljIGludCBhbWRncHVfZGV2aWNlX3ByZV9hc2ljX3Jlc2V0KHN0cnVj dCBhbWRncHVfZGV2aWNlDQo+Pj4+Pj4+ICphZGV2LA0KPj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2pvYiAqam9iLA0K Pj4+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYm9vbCAqbmVl ZF9mdWxsX3Jlc2V0X2FyZykNCj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGJvb2wgKm5lZWRfZnVsbF9yZXNldF9hcmcsDQo+Pj4+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBib29sICpqb2Jfc2lnbmFsZWQpDQo+Pj4+Pj4+ ICDCoMKgwqAgew0KPj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqAgaW50IGksIHIgPSAwOw0KPj4+Pj4+ PiAgwqDCoMKgwqDCoMKgwqAgYm9vbCBuZWVkX2Z1bGxfcmVzZXTCoCA9ICpuZWVkX2Z1bGxfcmVz ZXRfYXJnOw0KPj4+Pj4+PiArwqDCoMKgIHN0cnVjdCBhbWRncHVfcmluZyAqam9iX3JpbmcgPSBq b2IgPw0KPj4+Pj4+PiB0b19hbWRncHVfcmluZyhqb2ItPmJhc2Uuc2NoZWQpIDogTlVMTDsNCj4+ Pj4+Pj4gIMKgwqDCoCDCoMKgwqDCoMKgIC8qIGJsb2NrIGFsbCBzY2hlZHVsZXJzIGFuZCByZXNl dCBnaXZlbiBqb2IncyByaW5nICovDQo+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoCBmb3IgKGkgPSAw OyBpIDwgQU1ER1BVX01BWF9SSU5HUzsgKytpKSB7DQo+Pj4+Pj4+IEBAIC0zMzQxLDYgKzMzNDMs MTcgQEAgc3RhdGljIGludA0KPj4+Pj4+PiBhbWRncHVfZGV2aWNlX3ByZV9hc2ljX3Jlc2V0KHN0 cnVjdA0KPj4+Pj4+PiBhbWRncHVfZGV2aWNlICphZGV2LA0KPj4+Pj4+PiAgwqDCoMKgIMKgwqDC oMKgwqDCoMKgwqDCoCBkcm1fc2NoZWRfc3RvcCgmcmluZy0+c2NoZWQsICZqb2ItPmJhc2UpOw0K Pj4+Pj4+PiAgwqDCoMKgICvCoMKgwqDCoMKgwqDCoCAvKg0KPj4+Pj4+PiArwqDCoMKgwqDCoMKg wqDCoCAqIE11c3QgY2hlY2sgZ3VpbHR5IHNpZ25hbCBoZXJlIHNpbmNlIGFmdGVyIHRoaXMgcG9p bnQNCj4+Pj4+Pj4gYWxsIG9sZA0KPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoCAqIEhXIGZlbmNl cyBhcmUgZm9yY2Ugc2lnbmFsZWQuDQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgICoNCj4+Pj4+ Pj4gK8KgwqDCoMKgwqDCoMKgwqAgKiBqb2ItPmJhc2UgaG9sZHMgYSByZWZlcmVuY2UgdG8gcGFy ZW50IGZlbmNlDQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgICovDQo+Pj4+Pj4+ICvCoMKgwqDC oMKgwqDCoCBpZiAoam9iX3NpZ25hbGVkICYmIGpvYiAmJiByaW5nID09IGpvYl9yaW5nICYmDQo+ Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGpvYi0+YmFzZS5zX2ZlbmNlLT5wYXJlbnQg JiYNCj4+Pj4+Pj4gKyBkbWFfZmVuY2VfaXNfc2lnbmFsZWQoam9iLT5iYXNlLnNfZmVuY2UtPnBh cmVudCkpDQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICpqb2Jfc2lnbmFsZWQgPSB0 cnVlOw0KPj4+Pj4+PiArDQo+Pj4+Pj4gVGhhdCB3b24ndCB3b3JrIGNvcnJlY3RseS4gU2VlIHdo ZW4gdGhlIGd1aWx0eSBqb2IgaXMgbm90IG9uIHRoZQ0KPj4+Pj4+IGZpcnN0DQo+Pj4+Pj4gc2No ZWR1bGVyLCB5b3Ugd291bGQgYWxyZWFkeSBoYXZlIGZvcmNlIGNvbXBsZXRlZCBzb21lIGJlZm9y ZSBnZXR0aW5nDQo+Pj4+Pj4gaGVyZS4NCj4+Pj4+Pg0KPj4+Pj4+IEJldHRlciB0byBzdG9wIGFs bCBzY2hlZHVsZXJzIGZpcnN0IGFuZCB0aGVuIGRvIHRoZSBjaGVjay4NCj4+Pj4+Pg0KPj4+Pj4+ IENocmlzdGlhbi4NCj4+Pj4+IFdoYXQgZG8geW91IG1lYW4gYnkgZmlyc3Qgc2NoZWR1bGVyID8g VGhlcmUgaXMgb25lIHNjaGVkdWxlciBvYmplY3QNCj4+Pj4+IHBlcg0KPj4+Pj4gcmluZyBzbyBJ IGFtIG5vdCBjbGVhciB3aGF0ICdmaXJzdCcgbWVhbnMgaGVyZS4NCj4+Pj4gV2VsbCBmb3IgZXhh bXBsZSBpZiB0aGUgZ3VpbHR5IGpvYiBpcyBmcm9tIGEgY29tcHV0ZSByaW5nIHRoZSB3ZSBoYXZl DQo+Pj4+IGFscmVhZHkgZm9yY2Ugc2lnbmFsZWQgdGhlIGdmeCByaW5nIGhlcmUuDQo+Pj4+DQo+ Pj4+IFNhbWUgaXMgdHJ1ZSBmb3Igb3RoZXIgZGV2aWNlcyBpbiB0aGUgc2FtZSBoaXZlLCBzbyBp dCB3b3VsZCBwcm9iYWJseQ0KPj4+PiBiZSBhIGdvb2QgaWRlYSB0byBtb3ZlIHRoZSBmb3JjZSBz aWduYWxpbmcgYW5kIHRoZSBJUCByZXNldCBzb21ld2hlcmUNCj4+Pj4gZWxzZSBhbmQgdGhpcyBj aGVjayB1cCBhIGxheWVyLg0KPj4+Pg0KPj4+PiBDaHJpc3RpYW4uDQo+Pj4gTGV0IG1lIHNlZSBp ZiBJIHVuZGVyc3RhbmQgeW91IGNvcnJlY3RseSAtIHlvdSB3YW50IHRvIEFWT0lEIEFOWSBmb3Jj ZQ0KPj4+IHNpZ25hbGluZyBpbiBjYXNlIHdlIGFyZSBub3QgZ29pbmcgdG8gSFcgcmVzZXQgYW5k IHNvIHlvdSB3YW50IHRvIGhhdmUNCj4+PiB0aGUgY2hlY2sgaWYgZ3VpbHR5IGlzIHNpZ25hbGVk IEJFRk9SRSBhbnkgcmluZyBmZW5jZXMgYXJlIGZvcmNlDQo+Pj4gc2lnbmFsZWQuIENvcnJlY3Qg Pw0KPj4gQ29ycmVjdC4NCj4+DQo+PiBCYXNpY2FsbHkgd2Ugc2hvdWxkIGRvIHRoZSBmb2xsb3dp bmc6DQo+PiAxLiBTdG9wIGFsbCBzY2hlZHVsZXJzIHRvIG1ha2Ugc3VyZSB0aGF0IG5vdGhpbmcg aXMgZ29pbmcgb24uDQo+PiAyLiBDaGVjayB0aGUgZ3VpbHR5IGpvYiBvbmNlIG1vcmUgdG8gbWFr ZSBzdXJlIHRoYXQgaXQgaGFzbid0IHNpZ25hbGVkDQo+PiBpbiB0aGUgbWVhbnRpbWUuDQo+PiAz LiBTdGFydCBvdXIgcmVzZXQgcHJvY2VkdXJlLCB3aXRoIGZvcmNlIGNvbXBsZXRlLCBzb2Z0IHJl c2V0DQo+PiBldmVudHVhbGx5IGhhcmQgcmVzZXQgZXRjIGV0Yy4uDQo+PiA0LiBSZXN1Ym1pdCBh bGwgbm90IHlldCBjb21wbGV0ZWQgam9icy4NCj4+IDUuIFN0YXJ0IHRoZSBzY2hlZHVsZXJzIGFn YWluLg0KPj4NCj4+IENocmlzdGlhbi4NCj4NCj4gV2h5IG5vdCBqdXN0IGFsd2F5cyBlbnN1cmUg dGhlIGd1aWx0ecKgIGpvYidzIHJpbmcgaXMgYWx3YXlzIGNoZWNrZWQNCj4gZmlyc3TCoCBhbmQg dGhlbiBkbyB0aGUgcmVzdCBvZiB0aGUgcmluZ3MgLSBpbnNpZGUNCj4gYW1kZ3B1X2RldmljZV9w cmVfYXNpY19yZXNldC4gU2VlbXMgdG8gbWUgbGlrZSBhIG11Y2ggc21hbGxlciBjaGFuZ2UNCj4g d2l0aCBsZXNzIGltcGFjdCB0byBjdXJyZW50IGNvZGUgc3RydWN0dXJlLg0KDQpXZWxsIHdlIHdh bnQgdG8gbWFrZSBzdXJlIHRoYXQgbm90aGluZyBlbHNlIGlzIHRvdWNoaW5nIHRoZSBoYXJkd2Fy ZSBhbnkgDQptb3JlIGJlZm9yZSB3ZSBzdGFydCB3aXRoIHRoZSByZXNldCBwcm9jZWR1cmUuDQoN ClRvIGJlIG1vcmUgcHJlY2lzZSBmb3JjZSBjb21wbGV0aW5nIG9uZSByaW5nIGNvdWxkIG1ha2Ug c29tZSBvdGhlciANCnNjaGVkdWxlciB0aGluayB0aGF0IGl0IGNvdWxkIGdvIGFoZWFkIGFuZCBz Y2hlZHVsZXIgYW5vdGhlciBqb2IgDQooYmVjYXVzZSBmb3IgZXhhbXBsZSBzb21lIGh3IHJlc291 cmNlIChWTUlEPykgbm93IGJlY2FtZSBhdmFpbGFibGUpLg0KDQpOb3Qgc3VyZSBpZiB0aGF0IGlz IGN1cnJlbnRseSBhIHByb2JsZW0sIGJ1dCBJIHN0aWxsIHRoaW5rIHRoZSBHUFUgcmVzZXQgDQpj b2RlIGlzIHN0aWxsIHJhdGhlciBiYWRseSBkZXNpZ25lZCBhbmQgd2Ugc2hvdWxkIHJhdGhlciBt YWtlIGxhcmdlciANCmNvZGUgY2hhbmdlcyB0aGFuIHNtYWxsZXIuDQoNCkNocmlzdGlhbi4NCg0K Pg0KPiBBbmRyZXkNCj4NCj4NCj4+PiBBbmRyZXkNCj4+Pg0KPj4+Pj4gQW5kcmV5DQo+Pj4+Pg0K Pj4+Pj4NCj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogYWZ0ZXIgYWxsIGh3IGpv YnMgYXJlIHJlc2V0LCBodyBmZW5jZSBpcw0KPj4+Pj4+PiBtZWFuaW5nbGVzcywgc28NCj4+Pj4+ Pj4gZm9yY2VfY29tcGxldGlvbiAqLw0KPj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBh bWRncHVfZmVuY2VfZHJpdmVyX2ZvcmNlX2NvbXBsZXRpb24ocmluZyk7DQo+Pj4+Pj4+ICDCoMKg wqDCoMKgwqDCoCB9DQo+Pj4+Pj4+IEBAIC0zMzU4LDcgKzMzNzEsOCBAQCBzdGF0aWMgaW50IGFt ZGdwdV9kZXZpY2VfcHJlX2FzaWNfcmVzZXQoc3RydWN0DQo+Pj4+Pj4+IGFtZGdwdV9kZXZpY2Ug KmFkZXYsDQo+Pj4+Pj4+ICDCoMKgwqAgwqAgwqAgLcKgwqDCoCBpZiAoIWFtZGdwdV9zcmlvdl92 ZihhZGV2KSkgew0KPj4+Pj4+PiArwqDCoMKgIC8qIERvbid0IHN1c3BlbmQgb24gYmFyZSBtZXRh bCBpZiB3ZSBhcmUgbm90IGdvaW5nIHRvIEhXIHJlc2V0DQo+Pj4+Pj4+IHRoZSBBU0lDICovDQo+ Pj4+Pj4+ICvCoMKgwqAgaWYgKCFhbWRncHVfc3Jpb3ZfdmYoYWRldikgJiYgISgqam9iX3NpZ25h bGVkKSkgew0KPj4+Pj4+PiAgwqDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIW5lZWRfZnVs bF9yZXNldCkNCj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZWVkX2Z1 bGxfcmVzZXQgPQ0KPj4+Pj4+PiBhbWRncHVfZGV2aWNlX2lwX25lZWRfZnVsbF9yZXNldChhZGV2 KTsNCj4+Pj4+Pj4gQEAgLTM0OTUsNyArMzUwOSw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2RvX2Fz aWNfcmVzZXQoc3RydWN0DQo+Pj4+Pj4+IGFtZGdwdV9oaXZlX2luZm8gKmhpdmUsDQo+Pj4+Pj4+ ICDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcjsNCj4+Pj4+Pj4gIMKgwqDCoCB9DQo+Pj4+Pj4+ICDC oMKgwqAgLXN0YXRpYyB2b2lkIGFtZGdwdV9kZXZpY2VfcG9zdF9hc2ljX3Jlc2V0KHN0cnVjdCBh bWRncHVfZGV2aWNlDQo+Pj4+Pj4+ICphZGV2KQ0KPj4+Pj4+PiArc3RhdGljIHZvaWQgYW1kZ3B1 X2RldmljZV9wb3N0X2FzaWNfcmVzZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UNCj4+Pj4+Pj4gKmFk ZXYsIGJvb2wgam9iX3NpZ25hbGVkKQ0KPj4+Pj4+PiAgwqDCoMKgIHsNCj4+Pj4+Pj4gIMKgwqDC oMKgwqDCoMKgIGludCBpOw0KPj4+Pj4+PiAgwqDCoMKgIEBAIC0zNTA1LDcgKzM1MTksOCBAQCBz dGF0aWMgdm9pZA0KPj4+Pj4+PiBhbWRncHVfZGV2aWNlX3Bvc3RfYXNpY19yZXNldChzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldikNCj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYg KCFyaW5nIHx8ICFyaW5nLT5zY2hlZC50aHJlYWQpDQo+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgY29udGludWU7DQo+Pj4+Pj4+ICDCoMKgwqAgLcKgwqDCoMKgwqDCoMKg IGlmICghYWRldi0+YXNpY19yZXNldF9yZXMpDQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCAvKiBO byBwb2ludCB0byByZXN1Ym1pdCBqb2JzIGlmIHdlIGRpZG4ndCBIVyByZXNldCovDQo+Pj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoCBpZiAoIWFkZXYtPmFzaWNfcmVzZXRfcmVzICYmICFqb2Jfc2lnbmFs ZWQpDQo+Pj4+Pj4+IGRybV9zY2hlZF9yZXN1Ym1pdF9qb2JzKCZyaW5nLT5zY2hlZCk7DQo+Pj4+ Pj4+ICDCoMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgIGRybV9zY2hlZF9zdGFydCgmcmluZy0+c2No ZWQsICFhZGV2LT5hc2ljX3Jlc2V0X3Jlcyk7DQo+Pj4+Pj4+IEBAIC0zNTE4LDE0ICszNTMzLDIx IEBAIHN0YXRpYyB2b2lkDQo+Pj4+Pj4+IGFtZGdwdV9kZXZpY2VfcG9zdF9hc2ljX3Jlc2V0KHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQ0KPj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqAgYWRldi0+ YXNpY19yZXNldF9yZXMgPSAwOw0KPj4+Pj4+PiAgwqDCoMKgIH0NCj4+Pj4+Pj4gIMKgwqDCoCAt c3RhdGljIHZvaWQgYW1kZ3B1X2RldmljZV9sb2NrX2FkZXYoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpDQo+Pj4+Pj4+ICtzdGF0aWMgYm9vbCBhbWRncHVfZGV2aWNlX2xvY2tfYWRldihzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCj4+Pj4+Pj4gYm9vbA0KPj4+Pj4+PiB0cnlsb2NrKQ0K Pj4+Pj4+PiAgwqDCoMKgIHsNCj4+Pj4+Pj4gLcKgwqDCoCBtdXRleF9sb2NrKCZhZGV2LT5sb2Nr X3Jlc2V0KTsNCj4+Pj4+Pj4gK8KgwqDCoCBpZiAodHJ5bG9jaykgew0KPj4+Pj4+PiArwqDCoMKg wqDCoMKgwqAgaWYgKCFtdXRleF90cnlsb2NrKCZhZGV2LT5sb2NrX3Jlc2V0KSkNCj4+Pj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGZhbHNlOw0KPj4+Pj4+PiArwqDCoMKgIH0g ZWxzZQ0KPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgbXV0ZXhfbG9jaygmYWRldi0+bG9ja19yZXNl dCk7DQo+Pj4+Pj4+ICsNCj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgIGF0b21pY19pbmMoJmFkZXYt PmdwdV9yZXNldF9jb3VudGVyKTsNCj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgIGFkZXYtPmluX2dw dV9yZXNldCA9IDE7DQo+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoCAvKiBCbG9jayBrZmQ6IFNSSU9W IHdvdWxkIGRvIGl0IHNlcGFyYXRlbHkgKi8NCj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgIGlmICgh YW1kZ3B1X3NyaW92X3ZmKGFkZXYpKQ0KPj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2FtZGtmZF9wcmVfcmVzZXQoYWRldik7DQo+Pj4+Pj4+ICsN Cj4+Pj4+Pj4gK8KgwqDCoCByZXR1cm4gdHJ1ZTsNCj4+Pj4+Pj4gIMKgwqDCoCB9DQo+Pj4+Pj4+ ICDCoMKgwqAgwqAgc3RhdGljIHZvaWQgYW1kZ3B1X2RldmljZV91bmxvY2tfYWRldihzdHJ1Y3Qg YW1kZ3B1X2RldmljZQ0KPj4+Pj4+PiAqYWRldikNCj4+Pj4+Pj4gQEAgLTM1NTUsMjkgKzM1Nzcs NDQgQEAgaW50IGFtZGdwdV9kZXZpY2VfZ3B1X3JlY292ZXIoc3RydWN0DQo+Pj4+Pj4+IGFtZGdw dV9kZXZpY2UgKmFkZXYsDQo+Pj4+Pj4+ICDCoMKgwqAgew0KPj4+Pj4+PiAgwqDCoMKgwqDCoMKg wqAgaW50IHI7DQo+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2hpdmVfaW5m byAqaGl2ZSA9IE5VTEw7DQo+Pj4+Pj4+IC3CoMKgwqAgYm9vbCBuZWVkX2Z1bGxfcmVzZXQgPSBm YWxzZTsNCj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfZGV2aWNlICp0bXBf YWRldiA9IE5VTEw7DQo+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgbGlzdF9oZWFkIGRl dmljZV9saXN0LCAqZGV2aWNlX2xpc3RfaGFuZGxlID0gTlVMTDsNCj4+Pj4+Pj4gK8KgwqDCoCBi b29sIHhnbWlfdG9wb2xvZ3lfcHJlc2VudCwgbmVlZF9mdWxsX3Jlc2V0LCBqb2Jfc2lnbmFsZWQ7 DQo+Pj4+Pj4+ICDCoMKgwqAgK8KgwqDCoCBuZWVkX2Z1bGxfcmVzZXQgPSBqb2Jfc2lnbmFsZWQg PSBmYWxzZTsNCj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgIElOSVRfTElTVF9IRUFEKCZkZXZpY2Vf bGlzdCk7DQo+Pj4+Pj4+ICDCoMKgwqAgwqDCoMKgwqDCoCBkZXZfaW5mbyhhZGV2LT5kZXYsICJH UFUgcmVzZXQgYmVnaW4hXG4iKTsNCj4+Pj4+Pj4gIMKgwqDCoCArwqDCoMKgIGhpdmUgPSBhbWRn cHVfZ2V0X3hnbWlfaGl2ZShhZGV2LCAwKTsNCj4+Pj4+Pj4gK8KgwqDCoCB4Z21pX3RvcG9sb2d5 X3ByZXNlbnQgPSBoaXZlICYmDQo+Pj4+Pj4+IGFkZXYtPmdtYy54Z21pLm51bV9waHlzaWNhbF9u b2RlcyA+IDE7DQo+Pj4+Pj4+ICsNCj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgIC8qDQo+Pj4+Pj4+ IC3CoMKgwqDCoCAqIEluIGNhc2Ugb2YgWEdNSSBoaXZlIGRpc2FsbG93IGNvbmN1cnJlbnQgcmVz ZXRzIHRvIGJlDQo+Pj4+Pj4+IHRyaWdnZXJlZA0KPj4+Pj4+PiAtwqDCoMKgwqAgKiBieSBkaWZm ZXJlbnQgbm9kZXMuIE5vIHBvaW50IGFsc28gc2luY2UgdGhlIG9uZSBub2RlIGFscmVhZHkNCj4+ Pj4+Pj4gZXhlY3V0aW5nDQo+Pj4+Pj4+IC3CoMKgwqDCoCAqIHJlc2V0IHdpbGwgYWxzbyByZXNl dCBhbGwgdGhlIG90aGVyIG5vZGVzIGluIHRoZSBoaXZlLg0KPj4+Pj4+PiArwqDCoMKgwqAgKiBI ZXJlIHdlIHRyeWxvY2sgdG8gYXZvaWQgY2hhaW4gb2YgcmVzZXRzIGV4ZWN1dGluZyBmcm9tDQo+ Pj4+Pj4+ICvCoMKgwqDCoCAqIGVpdGhlciB0cmlnZ2VyIGJ5IGpvYnMgb24gZGlmZmVyZW50IGFk ZXZzIGluIFhHTUkgaGl2ZSBvcg0KPj4+Pj4+PiBqb2JzIG9uDQo+Pj4+Pj4+ICvCoMKgwqDCoCAq IGRpZmZlcmVudCBzY2hlZHVsZXJzIGZvciBzYW1lIGRldmljZSB3aGlsZSB0aGlzIHRkciBpcw0K Pj4+Pj4+PiBydW5uaW5nLg0KPj4+Pj4+PiArwqDCoMKgwqAgKiBXZSBhbHdheXMgcmVzZXQgYWxs IHNjaGVkdWxlcnMgZm9yIGRldmljZSBhbmQgYWxsIGRldmljZXMNCj4+Pj4+Pj4gZm9yDQo+Pj4+ Pj4+IFhHTUkNCj4+Pj4+Pj4gK8KgwqDCoMKgICogaGl2ZSBzbyB0aGF0IHNob3VsZCB0YWtlIGNh cmUgb2YgdGhlbSB0b28uDQo+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgICovDQo+Pj4+Pj4+IC3C oMKgwqAgaGl2ZSA9IGFtZGdwdV9nZXRfeGdtaV9oaXZlKGFkZXYsIDApOw0KPj4+Pj4+PiAtwqDC oMKgIGlmIChoaXZlICYmIGFkZXYtPmdtYy54Z21pLm51bV9waHlzaWNhbF9ub2RlcyA+IDEgJiYN Cj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgICFtdXRleF90cnlsb2NrKCZoaXZlLT5yZXNldF9sb2Nr KSkNCj4+Pj4+Pj4gKw0KPj4+Pj4+PiArwqDCoMKgIGlmICh4Z21pX3RvcG9sb2d5X3ByZXNlbnQg JiYNCj4+Pj4+Pj4gIW11dGV4X3RyeWxvY2soJmhpdmUtPnJlc2V0X2xvY2spKSB7DQo+Pj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoCBEUk1fSU5GTygiQmFpbGluZyBvbiBURFIgZm9yIHNfam9iOiVsbHgs IGhpdmU6ICVsbHggYXMNCj4+Pj4+Pj4gYW5vdGhlciBhbHJlYWR5IGluIHByb2dyZXNzIiwNCj4+ Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBqb2ItPmJhc2UuaWQsIGhpdmUtPmhpdmVf aWQpOw0KPj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsNCj4+Pj4+Pj4g K8KgwqDCoCB9DQo+Pj4+Pj4+ICDCoMKgwqAgwqDCoMKgwqDCoCAvKiBTdGFydCB3aXRoIGFkZXYg cHJlIGFzaWMgcmVzZXQgZmlyc3QgZm9yIHNvZnQgcmVzZXQNCj4+Pj4+Pj4gY2hlY2suKi8NCj4+ Pj4+Pj4gLcKgwqDCoCBhbWRncHVfZGV2aWNlX2xvY2tfYWRldihhZGV2KTsNCj4+Pj4+Pj4gK8Kg wqDCoCBpZiAoIWFtZGdwdV9kZXZpY2VfbG9ja19hZGV2KGFkZXYsICF4Z21pX3RvcG9sb2d5X3By ZXNlbnQpKSB7DQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBEUk1fSU5GTygiQmFpbGluZyBvbiBU RFIgZm9yIHNfam9iOiVsbHgsIGFzIGFub3RoZXIgYWxyZWFkeQ0KPj4+Pj4+PiBpbiBwcm9ncmVz cyIsDQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGpv Yi0+YmFzZS5pZCk7DQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsNCj4+Pj4+Pj4g K8KgwqDCoCB9DQo+Pj4+Pj4+ICsNCj4+Pj4+Pj4gK8KgwqDCoCAvKiBHdWlsdHkgam9iIHdpbGwg YmUgZnJlZWQgYWZ0ZXIgdGhpcyovDQo+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoCByID0gYW1kZ3B1 X2RldmljZV9wcmVfYXNpY19yZXNldChhZGV2LA0KPj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGpvYiwNCj4+Pj4+Pj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJm5lZWRfZnVsbF9yZXNldCk7DQo+Pj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZuZWVkX2Z1bGxfcmVz ZXQsDQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZq b2Jfc2lnbmFsZWQpOw0KPj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqAgaWYgKHIpIHsNCj4+Pj4+Pj4g IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLypUT0RPIFNob3VsZCB3ZSBzdG9wID8qLw0KPj4+Pj4+ PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fRVJST1IoIkdQVSBwcmUgYXNpYyByZXNldCBm YWlsZWQgd2l0aCBlcnIsICVkIGZvcg0KPj4+Pj4+PiBkcm0NCj4+Pj4+Pj4gZGV2LCAlcyAiLA0K Pj4+Pj4+PiBAQCAtMzYwOSwxMCArMzY0NiwxMSBAQCBpbnQgYW1kZ3B1X2RldmljZV9ncHVfcmVj b3ZlcihzdHJ1Y3QNCj4+Pj4+Pj4gYW1kZ3B1X2RldmljZSAqYWRldiwNCj4+Pj4+Pj4gIMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgaWYgKHRtcF9hZGV2ID09IGFkZXYpDQo+Pj4+Pj4+ICDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7DQo+Pj4+Pj4+ICDCoMKgwqAgLcKgwqDC oMKgwqDCoMKgIGFtZGdwdV9kZXZpY2VfbG9ja19hZGV2KHRtcF9hZGV2KTsNCj4+Pj4+Pj4gK8Kg wqDCoMKgwqDCoMKgIGFtZGdwdV9kZXZpY2VfbG9ja19hZGV2KHRtcF9hZGV2LCBmYWxzZSk7DQo+ Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHIgPSBhbWRncHVfZGV2aWNlX3ByZV9hc2lj X3Jlc2V0KHRtcF9hZGV2LA0KPj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTlVMTCwNCj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmbmVlZF9mdWxsX3Jlc2V0KTsNCj4+ Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAm bmVlZF9mdWxsX3Jlc2V0LA0KPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICZqb2Jfc2lnbmFsZWQpOw0KPj4+Pj4+PiAgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAvKlRPRE8gU2hvdWxkIHdlIHN0b3AgPyovDQo+Pj4+Pj4+ICDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGlmIChyKSB7DQo+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgRFJNX0VSUk9SKCJHUFUgcHJlIGFzaWMgcmVzZXQgZmFpbGVkIHdpdGggZXJyLCAlZA0K Pj4+Pj4+PiBmb3INCj4+Pj4+Pj4gZHJtIGRldiwgJXMgIiwNCj4+Pj4+Pj4gQEAgLTM2MjMsMTkg KzM2NjEsMjEgQEAgaW50IGFtZGdwdV9kZXZpY2VfZ3B1X3JlY292ZXIoc3RydWN0DQo+Pj4+Pj4+ IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+Pj4+Pj4+ICDCoMKgwqAgwqDCoMKgwqDCoCAvKiBBY3R1 YWwgQVNJQyByZXNldHMgaWYgbmVlZGVkLiovDQo+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoCAvKiBU T0RPIEltcGxlbWVudCBYR01JIGhpdmUgcmVzZXQgbG9naWMgZm9yIFNSSU9WICovDQo+Pj4+Pj4+ IC3CoMKgwqAgaWYgKGFtZGdwdV9zcmlvdl92ZihhZGV2KSkgew0KPj4+Pj4+PiAtwqDCoMKgwqDC oMKgwqAgciA9IGFtZGdwdV9kZXZpY2VfcmVzZXRfc3Jpb3YoYWRldiwgam9iID8gZmFsc2UgOiB0 cnVlKTsNCj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIGlmIChyKQ0KPj4+Pj4+PiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBhZGV2LT5hc2ljX3Jlc2V0X3JlcyA9IHI7DQo+Pj4+Pj4+IC3CoMKgwqAg fSBlbHNlIHsNCj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIHLCoCA9IGFtZGdwdV9kb19hc2ljX3Jl c2V0KGhpdmUsIGRldmljZV9saXN0X2hhbmRsZSwNCj4+Pj4+Pj4gJm5lZWRfZnVsbF9yZXNldCk7 DQo+Pj4+Pj4+IC3CoMKgwqDCoMKgwqDCoCBpZiAociAmJiByID09IC1FQUdBSU4pDQo+Pj4+Pj4+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gcmV0cnk7DQo+Pj4+Pj4+ICvCoMKgwqAgaWYg KCFqb2IgfHwgIWpvYl9zaWduYWxlZCkgew0KPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGFt ZGdwdV9zcmlvdl92ZihhZGV2KSkgew0KPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy ID0gYW1kZ3B1X2RldmljZV9yZXNldF9zcmlvdihhZGV2LCBqb2IgPyBmYWxzZSA6DQo+Pj4+Pj4+ IHRydWUpOw0KPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocikNCj4+Pj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhZGV2LT5hc2ljX3Jlc2V0X3JlcyA9IHI7 DQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCB9IGVsc2Ugew0KPj4+Pj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBywqAgPSBhbWRncHVfZG9fYXNpY19yZXNldChoaXZlLCBkZXZpY2VfbGlzdF9o YW5kbGUsDQo+Pj4+Pj4+ICZuZWVkX2Z1bGxfcmVzZXQpOw0KPj4+Pj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBpZiAociAmJiByID09IC1FQUdBSU4pDQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZ290byByZXRyeTsNCj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIH0N Cj4+Pj4+Pj4gIMKgwqDCoMKgwqDCoMKgIH0NCj4+Pj4+Pj4gIMKgwqDCoCDCoMKgwqDCoMKgIC8q IFBvc3QgQVNJQyByZXNldCBmb3IgYWxsIGRldnMgLiovDQo+Pj4+Pj4+ICDCoMKgwqDCoMKgwqDC oCBsaXN0X2Zvcl9lYWNoX2VudHJ5KHRtcF9hZGV2LCBkZXZpY2VfbGlzdF9oYW5kbGUsDQo+Pj4+ Pj4+IGdtYy54Z21pLmhlYWQpIHsNCj4+Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIGFtZGdwdV9kZXZp Y2VfcG9zdF9hc2ljX3Jlc2V0KHRtcF9hZGV2KTsNCj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGFt ZGdwdV9kZXZpY2VfcG9zdF9hc2ljX3Jlc2V0KHRtcF9hZGV2LCBqb2Jfc2lnbmFsZWQpOw0KPj4+ Pj4+PiAgwqDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocikgew0KPj4+Pj4+PiAgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIGJhZCBuZXdzLCBob3cgdG8gdGVsbCBpdCB0byB1 c2Vyc3BhY2UgPyAqLw0KPj4+Pj4+PiBAQCAtMzY0OCw3ICszNjg4LDcgQEAgaW50IGFtZGdwdV9k ZXZpY2VfZ3B1X3JlY292ZXIoc3RydWN0DQo+Pj4+Pj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+ Pj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFtZGdwdV9kZXZpY2VfdW5sb2NrX2FkZXYo dG1wX2FkZXYpOw0KPj4+Pj4+PiAgwqDCoMKgwqDCoMKgwqAgfQ0KPj4+Pj4+PiAgwqDCoMKgIC3C oMKgwqAgaWYgKGhpdmUgJiYgYWRldi0+Z21jLnhnbWkubnVtX3BoeXNpY2FsX25vZGVzID4gMSkN Cj4+Pj4+Pj4gK8KgwqDCoCBpZiAoeGdtaV90b3BvbG9neV9wcmVzZW50KQ0KPj4+Pj4+PiAgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBtdXRleF91bmxvY2soJmhpdmUtPnJlc2V0X2xvY2spOw0KPj4+ Pj4+PiAgwqDCoMKgIMKgwqDCoMKgwqAgaWYgKHIpDQo+Pj4+PiBfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPj4+Pj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QN Cj4+Pj4+IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+Pj4+PiBodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngNCj4+PiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPj4+IGFtZC1nZnggbWFpbGlu ZyBsaXN0DQo+Pj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4+PiBodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngNCg0KX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxp c3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4