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 14:28:06 +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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <2e4a76c7-dcba-4c8f-359b-bd30c4cf048f@gmail.com> Content-Language: en-US Content-ID: <08BC7449A49AEC44B217A02882D306BF@namprd12.prod.outlook.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Koenig, Christian" , "dri-devel@lists.freedesktop.org" , "amd-gfx@lists.freedesktop.org" , "etnaviv@lists.freedesktop.org" , "eric@anholt.net" List-Id: amd-gfx.lists.freedesktop.org DQpPbiA0LzEwLzE5IDEwOjA2IEFNLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOg0KPiBBbSAwOS4w NC4xOSB1bSAxODo0MiBzY2hyaWViIEdyb2R6b3Zza3ksIEFuZHJleToNCj4+IE9uIDQvOS8xOSAx MDo1MCBBTSwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToNCj4+PiBBbSAwOC4wNC4xOSB1bSAxODow OCBzY2hyaWViIEFuZHJleSBHcm9kem92c2t5Og0KPj4+PiBBbHNvIHJlamVjdCBURFJzIGlmIGFu b3RoZXIgb25lIGFscmVhZHkgcnVubmluZy4NCj4+Pj4NCj4+Pj4gU2lnbmVkLW9mZi1ieTogQW5k cmV5IEdyb2R6b3Zza3kgPGFuZHJleS5ncm9kem92c2t5QGFtZC5jb20+DQo+Pj4+IC0tLQ0KPj4+ PiDCoMKgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYyB8IDk0DQo+ Pj4+ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQ0KPj4+PiDCoMKgIDEgZmlsZSBjaGFu Z2VkLCA2NyBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkNCj4+Pj4NCj4+Pj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYw0KPj4+PiBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYw0KPj4+PiBpbmRleCBh YWJkMDQzLi40NDQ2ODkyIDEwMDY0NA0KPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfZGV2aWNlLmMNCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2RldmljZS5jDQo+Pj4+IEBAIC0zMzI3LDEwICszMzI3LDEyIEBAIGJvb2wgYW1k Z3B1X2RldmljZV9zaG91bGRfcmVjb3Zlcl9ncHUoc3RydWN0DQo+Pj4+IGFtZGdwdV9kZXZpY2Ug KmFkZXYpDQo+Pj4+IMKgwqAgwqAgc3RhdGljIGludCBhbWRncHVfZGV2aWNlX3ByZV9hc2ljX3Jl c2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlIA0KPj4+PiAqYWRldiwNCj4+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9qb2IgKmpvYiwN Cj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJvb2wgKm5lZWRf ZnVsbF9yZXNldF9hcmcpDQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBib29sICpuZWVkX2Z1bGxfcmVzZXRfYXJnLA0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgYm9vbCAqam9iX3NpZ25hbGVkKQ0KPj4+PiDCoMKgIHsNCj4+ Pj4gwqDCoMKgwqDCoMKgIGludCBpLCByID0gMDsNCj4+Pj4gwqDCoMKgwqDCoMKgIGJvb2wgbmVl ZF9mdWxsX3Jlc2V0wqAgPSAqbmVlZF9mdWxsX3Jlc2V0X2FyZzsNCj4+Pj4gK8KgwqDCoCBzdHJ1 Y3QgYW1kZ3B1X3JpbmcgKmpvYl9yaW5nID0gam9iID8NCj4+Pj4gdG9fYW1kZ3B1X3Jpbmcoam9i LT5iYXNlLnNjaGVkKSA6IE5VTEw7DQo+Pj4+IMKgwqAgwqDCoMKgwqDCoCAvKiBibG9jayBhbGwg c2NoZWR1bGVycyBhbmQgcmVzZXQgZ2l2ZW4gam9iJ3MgcmluZyAqLw0KPj4+PiDCoMKgwqDCoMKg wqAgZm9yIChpID0gMDsgaSA8IEFNREdQVV9NQVhfUklOR1M7ICsraSkgew0KPj4+PiBAQCAtMzM0 MSw2ICszMzQzLDE3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2RldmljZV9wcmVfYXNpY19yZXNldChz dHJ1Y3QNCj4+Pj4gYW1kZ3B1X2RldmljZSAqYWRldiwNCj4+Pj4gwqDCoCDCoMKgwqDCoMKgwqDC oMKgwqAgZHJtX3NjaGVkX3N0b3AoJnJpbmctPnNjaGVkLCAmam9iLT5iYXNlKTsNCj4+Pj4gwqDC oCArwqDCoMKgwqDCoMKgwqAgLyoNCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqAgKiBNdXN0IGNoZWNr IGd1aWx0eSBzaWduYWwgaGVyZSBzaW5jZSBhZnRlciB0aGlzIHBvaW50IA0KPj4+PiBhbGwgb2xk DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgICogSFcgZmVuY2VzIGFyZSBmb3JjZSBzaWduYWxlZC4N Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqAgKg0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoCAqIGpvYi0+ YmFzZSBob2xkcyBhIHJlZmVyZW5jZSB0byBwYXJlbnQgZmVuY2UNCj4+Pj4gK8KgwqDCoMKgwqDC oMKgwqAgKi8NCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChqb2Jfc2lnbmFsZWQgJiYgam9iICYm IHJpbmcgPT0gam9iX3JpbmcgJiYNCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgam9iLT5i YXNlLnNfZmVuY2UtPnBhcmVudCAmJg0KPj4+PiArIGRtYV9mZW5jZV9pc19zaWduYWxlZChqb2It PmJhc2Uuc19mZW5jZS0+cGFyZW50KSkNCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKmpv Yl9zaWduYWxlZCA9IHRydWU7DQo+Pj4+ICsNCj4+PiBUaGF0IHdvbid0IHdvcmsgY29ycmVjdGx5 LiBTZWUgd2hlbiB0aGUgZ3VpbHR5IGpvYiBpcyBub3Qgb24gdGhlIGZpcnN0DQo+Pj4gc2NoZWR1 bGVyLCB5b3Ugd291bGQgYWxyZWFkeSBoYXZlIGZvcmNlIGNvbXBsZXRlZCBzb21lIGJlZm9yZSBn ZXR0aW5nDQo+Pj4gaGVyZS4NCj4+Pg0KPj4+IEJldHRlciB0byBzdG9wIGFsbCBzY2hlZHVsZXJz IGZpcnN0IGFuZCB0aGVuIGRvIHRoZSBjaGVjay4NCj4+Pg0KPj4+IENocmlzdGlhbi4NCj4+DQo+ PiBXaGF0IGRvIHlvdSBtZWFuIGJ5IGZpcnN0IHNjaGVkdWxlciA/IFRoZXJlIGlzIG9uZSBzY2hl ZHVsZXIgb2JqZWN0IHBlcg0KPj4gcmluZyBzbyBJIGFtIG5vdCBjbGVhciB3aGF0ICdmaXJzdCcg bWVhbnMgaGVyZS4NCj4NCj4gV2VsbCBmb3IgZXhhbXBsZSBpZiB0aGUgZ3VpbHR5IGpvYiBpcyBm cm9tIGEgY29tcHV0ZSByaW5nIHRoZSB3ZSBoYXZlIA0KPiBhbHJlYWR5IGZvcmNlIHNpZ25hbGVk IHRoZSBnZnggcmluZyBoZXJlLg0KPg0KPiBTYW1lIGlzIHRydWUgZm9yIG90aGVyIGRldmljZXMg aW4gdGhlIHNhbWUgaGl2ZSwgc28gaXQgd291bGQgcHJvYmFibHkgDQo+IGJlIGEgZ29vZCBpZGVh IHRvIG1vdmUgdGhlIGZvcmNlIHNpZ25hbGluZyBhbmQgdGhlIElQIHJlc2V0IHNvbWV3aGVyZSAN Cj4gZWxzZSBhbmQgdGhpcyBjaGVjayB1cCBhIGxheWVyLg0KPg0KPiBDaHJpc3RpYW4uDQoNCg0K TGV0IG1lIHNlZSBpZiBJIHVuZGVyc3RhbmQgeW91IGNvcnJlY3RseSAtIHlvdSB3YW50IHRvIEFW T0lEIEFOWSBmb3JjZSANCnNpZ25hbGluZyBpbiBjYXNlIHdlIGFyZSBub3QgZ29pbmcgdG8gSFcg cmVzZXQgYW5kIHNvIHlvdSB3YW50IHRvIGhhdmUgDQp0aGUgY2hlY2sgaWYgZ3VpbHR5IGlzIHNp Z25hbGVkIEJFRk9SRSBhbnkgcmluZyBmZW5jZXMgYXJlIGZvcmNlIA0Kc2lnbmFsZWQuIENvcnJl Y3QgPw0KDQpBbmRyZXkNCg0KPg0KPj4NCj4+IEFuZHJleQ0KPj4NCj4+DQo+Pj4+IMKgwqDCoMKg wqDCoMKgwqDCoMKgIC8qIGFmdGVyIGFsbCBodyBqb2JzIGFyZSByZXNldCwgaHcgZmVuY2UgaXMg bWVhbmluZ2xlc3MsIHNvDQo+Pj4+IGZvcmNlX2NvbXBsZXRpb24gKi8NCj4+Pj4gwqDCoMKgwqDC oMKgwqDCoMKgwqAgYW1kZ3B1X2ZlbmNlX2RyaXZlcl9mb3JjZV9jb21wbGV0aW9uKHJpbmcpOw0K Pj4+PiDCoMKgwqDCoMKgwqAgfQ0KPj4+PiBAQCAtMzM1OCw3ICszMzcxLDggQEAgc3RhdGljIGlu dCBhbWRncHVfZGV2aWNlX3ByZV9hc2ljX3Jlc2V0KHN0cnVjdA0KPj4+PiBhbWRncHVfZGV2aWNl ICphZGV2LA0KPj4+PiDCoMKgIMKgIMKgIC3CoMKgwqAgaWYgKCFhbWRncHVfc3Jpb3ZfdmYoYWRl dikpIHsNCj4+Pj4gK8KgwqDCoCAvKiBEb24ndCBzdXNwZW5kIG9uIGJhcmUgbWV0YWwgaWYgd2Ug YXJlIG5vdCBnb2luZyB0byBIVyByZXNldA0KPj4+PiB0aGUgQVNJQyAqLw0KPj4+PiArwqDCoMKg IGlmICghYW1kZ3B1X3NyaW92X3ZmKGFkZXYpICYmICEoKmpvYl9zaWduYWxlZCkpIHsNCj4+Pj4g wqDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFuZWVkX2Z1bGxfcmVzZXQpDQo+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmVlZF9mdWxsX3Jlc2V0ID0gDQo+Pj4+IGFtZGdwdV9k ZXZpY2VfaXBfbmVlZF9mdWxsX3Jlc2V0KGFkZXYpOw0KPj4+PiBAQCAtMzQ5NSw3ICszNTA5LDcg QEAgc3RhdGljIGludCBhbWRncHVfZG9fYXNpY19yZXNldChzdHJ1Y3QNCj4+Pj4gYW1kZ3B1X2hp dmVfaW5mbyAqaGl2ZSwNCj4+Pj4gwqDCoMKgwqDCoMKgIHJldHVybiByOw0KPj4+PiDCoMKgIH0N Cj4+Pj4gwqDCoCAtc3RhdGljIHZvaWQgYW1kZ3B1X2RldmljZV9wb3N0X2FzaWNfcmVzZXQoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgDQo+Pj4+ICphZGV2KQ0KPj4+PiArc3RhdGljIHZvaWQgYW1kZ3B1 X2RldmljZV9wb3N0X2FzaWNfcmVzZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UNCj4+Pj4gKmFkZXYs IGJvb2wgam9iX3NpZ25hbGVkKQ0KPj4+PiDCoMKgIHsNCj4+Pj4gwqDCoMKgwqDCoMKgIGludCBp Ow0KPj4+PiDCoMKgIEBAIC0zNTA1LDcgKzM1MTksOCBAQCBzdGF0aWMgdm9pZA0KPj4+PiBhbWRn cHVfZGV2aWNlX3Bvc3RfYXNpY19yZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikNCj4+ Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFyaW5nIHx8ICFyaW5nLT5zY2hlZC50aHJlYWQp DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7DQo+Pj4+IMKgwqAg LcKgwqDCoMKgwqDCoMKgIGlmICghYWRldi0+YXNpY19yZXNldF9yZXMpDQo+Pj4+ICvCoMKgwqDC oMKgwqDCoCAvKiBObyBwb2ludCB0byByZXN1Ym1pdCBqb2JzIGlmIHdlIGRpZG4ndCBIVyByZXNl dCovDQo+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoIWFkZXYtPmFzaWNfcmVzZXRfcmVzICYmICFq b2Jfc2lnbmFsZWQpDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZHJtX3NjaGVk X3Jlc3VibWl0X2pvYnMoJnJpbmctPnNjaGVkKTsNCj4+Pj4gwqDCoCDCoMKgwqDCoMKgwqDCoMKg wqAgZHJtX3NjaGVkX3N0YXJ0KCZyaW5nLT5zY2hlZCwgIWFkZXYtPmFzaWNfcmVzZXRfcmVzKTsN Cj4+Pj4gQEAgLTM1MTgsMTQgKzM1MzMsMjEgQEAgc3RhdGljIHZvaWQNCj4+Pj4gYW1kZ3B1X2Rl dmljZV9wb3N0X2FzaWNfcmVzZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+Pj4+IMKg wqDCoMKgwqDCoCBhZGV2LT5hc2ljX3Jlc2V0X3JlcyA9IDA7DQo+Pj4+IMKgwqAgfQ0KPj4+PiDC oMKgIC1zdGF0aWMgdm9pZCBhbWRncHVfZGV2aWNlX2xvY2tfYWRldihzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldikNCj4+Pj4gK3N0YXRpYyBib29sIGFtZGdwdV9kZXZpY2VfbG9ja19hZGV2KHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBib29sDQo+Pj4+IHRyeWxvY2spDQo+Pj4+IMKgwqAg ew0KPj4+PiAtwqDCoMKgIG11dGV4X2xvY2soJmFkZXYtPmxvY2tfcmVzZXQpOw0KPj4+PiArwqDC oMKgIGlmICh0cnlsb2NrKSB7DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoIW11dGV4X3RyeWxv Y2soJmFkZXYtPmxvY2tfcmVzZXQpKQ0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gZmFsc2U7DQo+Pj4+ICvCoMKgwqAgfSBlbHNlDQo+Pj4+ICvCoMKgwqDCoMKgwqDCoCBtdXRl eF9sb2NrKCZhZGV2LT5sb2NrX3Jlc2V0KTsNCj4+Pj4gKw0KPj4+PiDCoMKgwqDCoMKgwqAgYXRv bWljX2luYygmYWRldi0+Z3B1X3Jlc2V0X2NvdW50ZXIpOw0KPj4+PiDCoMKgwqDCoMKgwqAgYWRl di0+aW5fZ3B1X3Jlc2V0ID0gMTsNCj4+Pj4gwqDCoMKgwqDCoMKgIC8qIEJsb2NrIGtmZDogU1JJ T1Ygd291bGQgZG8gaXQgc2VwYXJhdGVseSAqLw0KPj4+PiDCoMKgwqDCoMKgwqAgaWYgKCFhbWRn cHVfc3Jpb3ZfdmYoYWRldikpDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBhbWRncHVfYW1ka2ZkX3ByZV9yZXNldChhZGV2KTsNCj4+Pj4gKw0KPj4+PiArwqDCoMKg IHJldHVybiB0cnVlOw0KPj4+PiDCoMKgIH0NCj4+Pj4gwqDCoCDCoCBzdGF0aWMgdm9pZCBhbWRn cHVfZGV2aWNlX3VubG9ja19hZGV2KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQ0KPj4+PiBA QCAtMzU1NSwyOSArMzU3Nyw0NCBAQCBpbnQgYW1kZ3B1X2RldmljZV9ncHVfcmVjb3ZlcihzdHJ1 Y3QNCj4+Pj4gYW1kZ3B1X2RldmljZSAqYWRldiwNCj4+Pj4gwqDCoCB7DQo+Pj4+IMKgwqDCoMKg wqDCoCBpbnQgcjsNCj4+Pj4gwqDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfaGl2ZV9pbmZvICpo aXZlID0gTlVMTDsNCj4+Pj4gLcKgwqDCoCBib29sIG5lZWRfZnVsbF9yZXNldCA9IGZhbHNlOw0K Pj4+PiDCoMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKnRtcF9hZGV2ID0gTlVMTDsN Cj4+Pj4gwqDCoMKgwqDCoMKgIHN0cnVjdCBsaXN0X2hlYWQgZGV2aWNlX2xpc3QsICpkZXZpY2Vf bGlzdF9oYW5kbGUgPSBOVUxMOw0KPj4+PiArwqDCoMKgIGJvb2wgeGdtaV90b3BvbG9neV9wcmVz ZW50LCBuZWVkX2Z1bGxfcmVzZXQsIGpvYl9zaWduYWxlZDsNCj4+Pj4gwqDCoCArwqDCoMKgIG5l ZWRfZnVsbF9yZXNldCA9IGpvYl9zaWduYWxlZCA9IGZhbHNlOw0KPj4+PiDCoMKgwqDCoMKgwqAg SU5JVF9MSVNUX0hFQUQoJmRldmljZV9saXN0KTsNCj4+Pj4gwqDCoCDCoMKgwqDCoMKgIGRldl9p bmZvKGFkZXYtPmRldiwgIkdQVSByZXNldCBiZWdpbiFcbiIpOw0KPj4+PiDCoMKgICvCoMKgwqAg aGl2ZSA9IGFtZGdwdV9nZXRfeGdtaV9oaXZlKGFkZXYsIDApOw0KPj4+PiArwqDCoMKgIHhnbWlf dG9wb2xvZ3lfcHJlc2VudCA9IGhpdmUgJiYNCj4+Pj4gYWRldi0+Z21jLnhnbWkubnVtX3BoeXNp Y2FsX25vZGVzID4gMTsNCj4+Pj4gKw0KPj4+PiDCoMKgwqDCoMKgwqAgLyoNCj4+Pj4gLcKgwqDC oMKgICogSW4gY2FzZSBvZiBYR01JIGhpdmUgZGlzYWxsb3cgY29uY3VycmVudCByZXNldHMgdG8g YmUgDQo+Pj4+IHRyaWdnZXJlZA0KPj4+PiAtwqDCoMKgwqAgKiBieSBkaWZmZXJlbnQgbm9kZXMu IE5vIHBvaW50IGFsc28gc2luY2UgdGhlIG9uZSBub2RlIGFscmVhZHkNCj4+Pj4gZXhlY3V0aW5n DQo+Pj4+IC3CoMKgwqDCoCAqIHJlc2V0IHdpbGwgYWxzbyByZXNldCBhbGwgdGhlIG90aGVyIG5v ZGVzIGluIHRoZSBoaXZlLg0KPj4+PiArwqDCoMKgwqAgKiBIZXJlIHdlIHRyeWxvY2sgdG8gYXZv aWQgY2hhaW4gb2YgcmVzZXRzIGV4ZWN1dGluZyBmcm9tDQo+Pj4+ICvCoMKgwqDCoCAqIGVpdGhl ciB0cmlnZ2VyIGJ5IGpvYnMgb24gZGlmZmVyZW50IGFkZXZzIGluIFhHTUkgaGl2ZSBvcg0KPj4+ PiBqb2JzIG9uDQo+Pj4+ICvCoMKgwqDCoCAqIGRpZmZlcmVudCBzY2hlZHVsZXJzIGZvciBzYW1l IGRldmljZSB3aGlsZSB0aGlzIHRkciBpcyANCj4+Pj4gcnVubmluZy4NCj4+Pj4gK8KgwqDCoMKg ICogV2UgYWx3YXlzIHJlc2V0IGFsbCBzY2hlZHVsZXJzIGZvciBkZXZpY2UgYW5kIGFsbCBkZXZp Y2VzIGZvcg0KPj4+PiBYR01JDQo+Pj4+ICvCoMKgwqDCoCAqIGhpdmUgc28gdGhhdCBzaG91bGQg dGFrZSBjYXJlIG9mIHRoZW0gdG9vLg0KPj4+PiDCoMKgwqDCoMKgwqDCoCAqLw0KPj4+PiAtwqDC oMKgIGhpdmUgPSBhbWRncHVfZ2V0X3hnbWlfaGl2ZShhZGV2LCAwKTsNCj4+Pj4gLcKgwqDCoCBp ZiAoaGl2ZSAmJiBhZGV2LT5nbWMueGdtaS5udW1fcGh5c2ljYWxfbm9kZXMgPiAxICYmDQo+Pj4+ IC3CoMKgwqDCoMKgwqDCoCAhbXV0ZXhfdHJ5bG9jaygmaGl2ZS0+cmVzZXRfbG9jaykpDQo+Pj4+ ICsNCj4+Pj4gK8KgwqDCoCBpZiAoeGdtaV90b3BvbG9neV9wcmVzZW50ICYmICFtdXRleF90cnls b2NrKCZoaXZlLT5yZXNldF9sb2NrKSkgew0KPj4+PiArwqDCoMKgwqDCoMKgwqAgRFJNX0lORk8o IkJhaWxpbmcgb24gVERSIGZvciBzX2pvYjolbGx4LCBoaXZlOiAlbGx4IGFzDQo+Pj4+IGFub3Ro ZXIgYWxyZWFkeSBpbiBwcm9ncmVzcyIsDQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg am9iLT5iYXNlLmlkLCBoaXZlLT5oaXZlX2lkKTsNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAg cmV0dXJuIDA7DQo+Pj4+ICvCoMKgwqAgfQ0KPj4+PiDCoMKgIMKgwqDCoMKgwqAgLyogU3RhcnQg d2l0aCBhZGV2IHByZSBhc2ljIHJlc2V0IGZpcnN0IGZvciBzb2Z0IHJlc2V0IA0KPj4+PiBjaGVj ay4qLw0KPj4+PiAtwqDCoMKgIGFtZGdwdV9kZXZpY2VfbG9ja19hZGV2KGFkZXYpOw0KPj4+PiAr wqDCoMKgIGlmICghYW1kZ3B1X2RldmljZV9sb2NrX2FkZXYoYWRldiwgIXhnbWlfdG9wb2xvZ3lf cHJlc2VudCkpIHsNCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIERSTV9JTkZPKCJCYWlsaW5nIG9uIFRE UiBmb3Igc19qb2I6JWxseCwgYXMgYW5vdGhlciBhbHJlYWR5DQo+Pj4+IGluIHByb2dyZXNzIiwN Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgam9iLT5iYXNl LmlkKTsNCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAwOw0KPj4+PiArwqDCoMKgIH0NCj4+ Pj4gKw0KPj4+PiArwqDCoMKgIC8qIEd1aWx0eSBqb2Igd2lsbCBiZSBmcmVlZCBhZnRlciB0aGlz Ki8NCj4+Pj4gwqDCoMKgwqDCoMKgIHIgPSBhbWRncHVfZGV2aWNlX3ByZV9hc2ljX3Jlc2V0KGFk ZXYsDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg am9iLA0KPj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmbmVl ZF9mdWxsX3Jlc2V0KTsNCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgJm5lZWRfZnVsbF9yZXNldCwNCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgJmpvYl9zaWduYWxlZCk7DQo+Pj4+IMKgwqDCoMKgwqDCoCBpZiAocikg ew0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKlRPRE8gU2hvdWxkIHdlIHN0b3AgPyovDQo+ Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgIERSTV9FUlJPUigiR1BVIHByZSBhc2ljIHJlc2V0IGZh aWxlZCB3aXRoIGVyciwgJWQgZm9yIGRybQ0KPj4+PiBkZXYsICVzICIsDQo+Pj4+IEBAIC0zNjA5 LDEwICszNjQ2LDExIEBAIGludCBhbWRncHVfZGV2aWNlX2dwdV9yZWNvdmVyKHN0cnVjdA0KPj4+ PiBhbWRncHVfZGV2aWNlICphZGV2LA0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAodG1w X2FkZXYgPT0gYWRldikNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51 ZTsNCj4+Pj4gwqDCoCAtwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2RldmljZV9sb2NrX2FkZXYodG1w X2FkZXYpOw0KPj4+PiArwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2RldmljZV9sb2NrX2FkZXYodG1w X2FkZXYsIGZhbHNlKTsNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgciA9IGFtZGdwdV9kZXZp Y2VfcHJlX2FzaWNfcmVzZXQodG1wX2FkZXYsDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBOVUxMLA0KPj4+PiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZuZWVkX2Z1bGxfcmVzZXQpOw0K Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZu ZWVkX2Z1bGxfcmVzZXQsDQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgJmpvYl9zaWduYWxlZCk7DQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKg IC8qVE9ETyBTaG91bGQgd2Ugc3RvcCA/Ki8NCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYg KHIpIHsNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fRVJST1IoIkdQVSBw cmUgYXNpYyByZXNldCBmYWlsZWQgd2l0aCBlcnIsICVkIGZvcg0KPj4+PiBkcm0gZGV2LCAlcyAi LA0KPj4+PiBAQCAtMzYyMywxOSArMzY2MSwyMSBAQCBpbnQgYW1kZ3B1X2RldmljZV9ncHVfcmVj b3ZlcihzdHJ1Y3QNCj4+Pj4gYW1kZ3B1X2RldmljZSAqYWRldiwNCj4+Pj4gwqDCoCDCoMKgwqDC oMKgIC8qIEFjdHVhbCBBU0lDIHJlc2V0cyBpZiBuZWVkZWQuKi8NCj4+Pj4gwqDCoMKgwqDCoMKg IC8qIFRPRE8gSW1wbGVtZW50IFhHTUkgaGl2ZSByZXNldCBsb2dpYyBmb3IgU1JJT1YgKi8NCj4+ Pj4gLcKgwqDCoCBpZiAoYW1kZ3B1X3NyaW92X3ZmKGFkZXYpKSB7DQo+Pj4+IC3CoMKgwqDCoMKg wqDCoCByID0gYW1kZ3B1X2RldmljZV9yZXNldF9zcmlvdihhZGV2LCBqb2IgPyBmYWxzZSA6IHRy dWUpOw0KPj4+PiAtwqDCoMKgwqDCoMKgwqAgaWYgKHIpDQo+Pj4+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGFkZXYtPmFzaWNfcmVzZXRfcmVzID0gcjsNCj4+Pj4gLcKgwqDCoCB9IGVsc2Ugew0K Pj4+PiAtwqDCoMKgwqDCoMKgwqAgcsKgID0gYW1kZ3B1X2RvX2FzaWNfcmVzZXQoaGl2ZSwgZGV2 aWNlX2xpc3RfaGFuZGxlLA0KPj4+PiAmbmVlZF9mdWxsX3Jlc2V0KTsNCj4+Pj4gLcKgwqDCoMKg wqDCoMKgIGlmIChyICYmIHIgPT0gLUVBR0FJTikNCj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZ290byByZXRyeTsNCj4+Pj4gK8KgwqDCoCBpZiAoIWpvYiB8fCAham9iX3NpZ25hbGVkKSB7 DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoYW1kZ3B1X3NyaW92X3ZmKGFkZXYpKSB7DQo+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHIgPSBhbWRncHVfZGV2aWNlX3Jlc2V0X3NyaW92KGFk ZXYsIGpvYiA/IGZhbHNlIDogdHJ1ZSk7DQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlm IChyKQ0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFkZXYtPmFzaWNfcmVz ZXRfcmVzID0gcjsNCj4+Pj4gK8KgwqDCoMKgwqDCoMKgIH0gZWxzZSB7DQo+Pj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHLCoCA9IGFtZGdwdV9kb19hc2ljX3Jlc2V0KGhpdmUsIGRldmljZV9s aXN0X2hhbmRsZSwNCj4+Pj4gJm5lZWRfZnVsbF9yZXNldCk7DQo+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGlmIChyICYmIHIgPT0gLUVBR0FJTikNCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBnb3RvIHJldHJ5Ow0KPj4+PiArwqDCoMKgwqDCoMKgwqAgfQ0KPj4+PiDC oMKgwqDCoMKgwqAgfQ0KPj4+PiDCoMKgIMKgwqDCoMKgwqAgLyogUG9zdCBBU0lDIHJlc2V0IGZv ciBhbGwgZGV2cyAuKi8NCj4+Pj4gwqDCoMKgwqDCoMKgIGxpc3RfZm9yX2VhY2hfZW50cnkodG1w X2FkZXYsIGRldmljZV9saXN0X2hhbmRsZSwgDQo+Pj4+IGdtYy54Z21pLmhlYWQpIHsNCj4+Pj4g LcKgwqDCoMKgwqDCoMKgIGFtZGdwdV9kZXZpY2VfcG9zdF9hc2ljX3Jlc2V0KHRtcF9hZGV2KTsN Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGFtZGdwdV9kZXZpY2VfcG9zdF9hc2ljX3Jlc2V0KHRtcF9h ZGV2LCBqb2Jfc2lnbmFsZWQpOw0KPj4+PiDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocikg ew0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIGJhZCBuZXdzLCBob3cgdG8g dGVsbCBpdCB0byB1c2Vyc3BhY2UgPyAqLw0KPj4+PiBAQCAtMzY0OCw3ICszNjg4LDcgQEAgaW50 IGFtZGdwdV9kZXZpY2VfZ3B1X3JlY292ZXIoc3RydWN0DQo+Pj4+IGFtZGdwdV9kZXZpY2UgKmFk ZXYsDQo+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFtZGdwdV9kZXZpY2VfdW5sb2NrX2FkZXYo dG1wX2FkZXYpOw0KPj4+PiDCoMKgwqDCoMKgwqAgfQ0KPj4+PiDCoMKgIC3CoMKgwqAgaWYgKGhp dmUgJiYgYWRldi0+Z21jLnhnbWkubnVtX3BoeXNpY2FsX25vZGVzID4gMSkNCj4+Pj4gK8KgwqDC oCBpZiAoeGdtaV90b3BvbG9neV9wcmVzZW50KQ0KPj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoCBt dXRleF91bmxvY2soJmhpdmUtPnJlc2V0X2xvY2spOw0KPj4+PiDCoMKgIMKgwqDCoMKgwqAgaWYg KHIpDQo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0K Pj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QNCj4+IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn DQo+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1n ZngNCj4NCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==