From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 3/3] drm/amdgpu: Avoid HW reset if guilty job already signaled. Date: Wed, 10 Apr 2019 16:41:14 +0200 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> Reply-To: christian.koenig-5C7GfCeVMHo@public.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" 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: "Grodzovsky, Andrey" , "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" QW0gMTAuMDQuMTkgdW0gMTY6Mjggc2NocmllYiBHcm9kem92c2t5LCBBbmRyZXk6Cj4gT24gNC8x MC8xOSAxMDowNiBBTSwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPj4gQW0gMDkuMDQuMTkgdW0g MTg6NDIgc2NocmllYiBHcm9kem92c2t5LCBBbmRyZXk6Cj4+PiBPbiA0LzkvMTkgMTA6NTAgQU0s IENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4+Pj4gQW0gMDguMDQuMTkgdW0gMTg6MDggc2Nocmll YiBBbmRyZXkgR3JvZHpvdnNreToKPj4+Pj4gQWxzbyByZWplY3QgVERScyBpZiBhbm90aGVyIG9u ZSBhbHJlYWR5IHJ1bm5pbmcuCj4+Pj4+Cj4+Pj4+IFNpZ25lZC1vZmYtYnk6IEFuZHJleSBHcm9k em92c2t5IDxhbmRyZXkuZ3JvZHpvdnNreUBhbWQuY29tPgo+Pj4+PiAtLS0KPj4+Pj4gIMKgwqAg ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jIHwgOTQKPj4+Pj4gKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCj4+Pj4+ICDCoMKgIDEgZmlsZSBjaGFuZ2VkLCA2 NyBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKPj4+Pj4KPj4+Pj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYwo+Pj4+PiBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYwo+Pj4+PiBpbmRleCBhYWJkMDQz Li40NDQ2ODkyIDEwMDY0NAo+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfZGV2aWNlLmMKPj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2RldmljZS5jCj4+Pj4+IEBAIC0zMzI3LDEwICszMzI3LDEyIEBAIGJvb2wgYW1kZ3B1X2Rl dmljZV9zaG91bGRfcmVjb3Zlcl9ncHUoc3RydWN0Cj4+Pj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYp Cj4+Pj4+ICDCoMKgIMKgIHN0YXRpYyBpbnQgYW1kZ3B1X2RldmljZV9wcmVfYXNpY19yZXNldChz dHJ1Y3QgYW1kZ3B1X2RldmljZQo+Pj4+PiAqYWRldiwKPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfam9iICpqb2IsCj4+Pj4+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBib29sICpuZWVkX2Z1bGxf cmVzZXRfYXJnKQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Ym9vbCAqbmVlZF9mdWxsX3Jlc2V0X2FyZywKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGJvb2wgKmpvYl9zaWduYWxlZCkKPj4+Pj4gIMKgwqAgewo+Pj4+PiAg wqDCoMKgwqDCoMKgIGludCBpLCByID0gMDsKPj4+Pj4gIMKgwqDCoMKgwqDCoCBib29sIG5lZWRf ZnVsbF9yZXNldMKgID0gKm5lZWRfZnVsbF9yZXNldF9hcmc7Cj4+Pj4+ICvCoMKgwqAgc3RydWN0 IGFtZGdwdV9yaW5nICpqb2JfcmluZyA9IGpvYiA/Cj4+Pj4+IHRvX2FtZGdwdV9yaW5nKGpvYi0+ YmFzZS5zY2hlZCkgOiBOVUxMOwo+Pj4+PiAgwqDCoCDCoMKgwqDCoMKgIC8qIGJsb2NrIGFsbCBz Y2hlZHVsZXJzIGFuZCByZXNldCBnaXZlbiBqb2IncyByaW5nICovCj4+Pj4+ICDCoMKgwqDCoMKg wqAgZm9yIChpID0gMDsgaSA8IEFNREdQVV9NQVhfUklOR1M7ICsraSkgewo+Pj4+PiBAQCAtMzM0 MSw2ICszMzQzLDE3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2RldmljZV9wcmVfYXNpY19yZXNldChz dHJ1Y3QKPj4+Pj4gYW1kZ3B1X2RldmljZSAqYWRldiwKPj4+Pj4gIMKgwqAgwqDCoMKgwqDCoMKg wqDCoMKgIGRybV9zY2hlZF9zdG9wKCZyaW5nLT5zY2hlZCwgJmpvYi0+YmFzZSk7Cj4+Pj4+ICDC oMKgICvCoMKgwqDCoMKgwqDCoCAvKgo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoCAqIE11c3QgY2hl Y2sgZ3VpbHR5IHNpZ25hbCBoZXJlIHNpbmNlIGFmdGVyIHRoaXMgcG9pbnQKPj4+Pj4gYWxsIG9s ZAo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoCAqIEhXIGZlbmNlcyBhcmUgZm9yY2Ugc2lnbmFsZWQu Cj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgICoKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqAgKiBqb2It PmJhc2UgaG9sZHMgYSByZWZlcmVuY2UgdG8gcGFyZW50IGZlbmNlCj4+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgICovCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoam9iX3NpZ25hbGVkICYmIGpvYiAm JiByaW5nID09IGpvYl9yaW5nICYmCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGpvYi0+ YmFzZS5zX2ZlbmNlLT5wYXJlbnQgJiYKPj4+Pj4gKyBkbWFfZmVuY2VfaXNfc2lnbmFsZWQoam9i LT5iYXNlLnNfZmVuY2UtPnBhcmVudCkpCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICpq b2Jfc2lnbmFsZWQgPSB0cnVlOwo+Pj4+PiArCj4+Pj4gVGhhdCB3b24ndCB3b3JrIGNvcnJlY3Rs eS4gU2VlIHdoZW4gdGhlIGd1aWx0eSBqb2IgaXMgbm90IG9uIHRoZSBmaXJzdAo+Pj4+IHNjaGVk dWxlciwgeW91IHdvdWxkIGFscmVhZHkgaGF2ZSBmb3JjZSBjb21wbGV0ZWQgc29tZSBiZWZvcmUg Z2V0dGluZwo+Pj4+IGhlcmUuCj4+Pj4KPj4+PiBCZXR0ZXIgdG8gc3RvcCBhbGwgc2NoZWR1bGVy cyBmaXJzdCBhbmQgdGhlbiBkbyB0aGUgY2hlY2suCj4+Pj4KPj4+PiBDaHJpc3RpYW4uCj4+PiBX aGF0IGRvIHlvdSBtZWFuIGJ5IGZpcnN0IHNjaGVkdWxlciA/IFRoZXJlIGlzIG9uZSBzY2hlZHVs ZXIgb2JqZWN0IHBlcgo+Pj4gcmluZyBzbyBJIGFtIG5vdCBjbGVhciB3aGF0ICdmaXJzdCcgbWVh bnMgaGVyZS4KPj4gV2VsbCBmb3IgZXhhbXBsZSBpZiB0aGUgZ3VpbHR5IGpvYiBpcyBmcm9tIGEg Y29tcHV0ZSByaW5nIHRoZSB3ZSBoYXZlCj4+IGFscmVhZHkgZm9yY2Ugc2lnbmFsZWQgdGhlIGdm eCByaW5nIGhlcmUuCj4+Cj4+IFNhbWUgaXMgdHJ1ZSBmb3Igb3RoZXIgZGV2aWNlcyBpbiB0aGUg c2FtZSBoaXZlLCBzbyBpdCB3b3VsZCBwcm9iYWJseQo+PiBiZSBhIGdvb2QgaWRlYSB0byBtb3Zl IHRoZSBmb3JjZSBzaWduYWxpbmcgYW5kIHRoZSBJUCByZXNldCBzb21ld2hlcmUKPj4gZWxzZSBh bmQgdGhpcyBjaGVjayB1cCBhIGxheWVyLgo+Pgo+PiBDaHJpc3RpYW4uCj4KPiBMZXQgbWUgc2Vl IGlmIEkgdW5kZXJzdGFuZCB5b3UgY29ycmVjdGx5IC0geW91IHdhbnQgdG8gQVZPSUQgQU5ZIGZv cmNlCj4gc2lnbmFsaW5nIGluIGNhc2Ugd2UgYXJlIG5vdCBnb2luZyB0byBIVyByZXNldCBhbmQg c28geW91IHdhbnQgdG8gaGF2ZQo+IHRoZSBjaGVjayBpZiBndWlsdHkgaXMgc2lnbmFsZWQgQkVG T1JFIGFueSByaW5nIGZlbmNlcyBhcmUgZm9yY2UKPiBzaWduYWxlZC4gQ29ycmVjdCA/CgpDb3Jy ZWN0LgoKQmFzaWNhbGx5IHdlIHNob3VsZCBkbyB0aGUgZm9sbG93aW5nOgoxLiBTdG9wIGFsbCBz Y2hlZHVsZXJzIHRvIG1ha2Ugc3VyZSB0aGF0IG5vdGhpbmcgaXMgZ29pbmcgb24uCjIuIENoZWNr IHRoZSBndWlsdHkgam9iIG9uY2UgbW9yZSB0byBtYWtlIHN1cmUgdGhhdCBpdCBoYXNuJ3Qgc2ln bmFsZWQgCmluIHRoZSBtZWFudGltZS4KMy4gU3RhcnQgb3VyIHJlc2V0IHByb2NlZHVyZSwgd2l0 aCBmb3JjZSBjb21wbGV0ZSwgc29mdCByZXNldCBldmVudHVhbGx5IApoYXJkIHJlc2V0IGV0YyBl dGMuLgo0LiBSZXN1Ym1pdCBhbGwgbm90IHlldCBjb21wbGV0ZWQgam9icy4KNS4gU3RhcnQgdGhl IHNjaGVkdWxlcnMgYWdhaW4uCgpDaHJpc3RpYW4uCgo+Cj4gQW5kcmV5Cj4KPj4+IEFuZHJleQo+ Pj4KPj4+Cj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBhZnRlciBhbGwgaHcgam9icyBh cmUgcmVzZXQsIGh3IGZlbmNlIGlzIG1lYW5pbmdsZXNzLCBzbwo+Pj4+PiBmb3JjZV9jb21wbGV0 aW9uICovCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhbWRncHVfZmVuY2VfZHJpdmVyX2Zv cmNlX2NvbXBsZXRpb24ocmluZyk7Cj4+Pj4+ICDCoMKgwqDCoMKgwqAgfQo+Pj4+PiBAQCAtMzM1 OCw3ICszMzcxLDggQEAgc3RhdGljIGludCBhbWRncHVfZGV2aWNlX3ByZV9hc2ljX3Jlc2V0KHN0 cnVjdAo+Pj4+PiBhbWRncHVfZGV2aWNlICphZGV2LAo+Pj4+PiAgwqDCoCDCoCDCoCAtwqDCoMKg IGlmICghYW1kZ3B1X3NyaW92X3ZmKGFkZXYpKSB7Cj4+Pj4+ICvCoMKgwqAgLyogRG9uJ3Qgc3Vz cGVuZCBvbiBiYXJlIG1ldGFsIGlmIHdlIGFyZSBub3QgZ29pbmcgdG8gSFcgcmVzZXQKPj4+Pj4g dGhlIEFTSUMgKi8KPj4+Pj4gK8KgwqDCoCBpZiAoIWFtZGdwdV9zcmlvdl92ZihhZGV2KSAmJiAh KCpqb2Jfc2lnbmFsZWQpKSB7Cj4+Pj4+ICDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIW5l ZWRfZnVsbF9yZXNldCkKPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmVlZF9m dWxsX3Jlc2V0ID0KPj4+Pj4gYW1kZ3B1X2RldmljZV9pcF9uZWVkX2Z1bGxfcmVzZXQoYWRldik7 Cj4+Pj4+IEBAIC0zNDk1LDcgKzM1MDksNyBAQCBzdGF0aWMgaW50IGFtZGdwdV9kb19hc2ljX3Jl c2V0KHN0cnVjdAo+Pj4+PiBhbWRncHVfaGl2ZV9pbmZvICpoaXZlLAo+Pj4+PiAgwqDCoMKgwqDC oMKgIHJldHVybiByOwo+Pj4+PiAgwqDCoCB9Cj4+Pj4+ICDCoMKgIC1zdGF0aWMgdm9pZCBhbWRn cHVfZGV2aWNlX3Bvc3RfYXNpY19yZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZQo+Pj4+PiAqYWRl dikKPj4+Pj4gK3N0YXRpYyB2b2lkIGFtZGdwdV9kZXZpY2VfcG9zdF9hc2ljX3Jlc2V0KHN0cnVj dCBhbWRncHVfZGV2aWNlCj4+Pj4+ICphZGV2LCBib29sIGpvYl9zaWduYWxlZCkKPj4+Pj4gIMKg wqAgewo+Pj4+PiAgwqDCoMKgwqDCoMKgIGludCBpOwo+Pj4+PiAgwqDCoCBAQCAtMzUwNSw3ICsz NTE5LDggQEAgc3RhdGljIHZvaWQKPj4+Pj4gYW1kZ3B1X2RldmljZV9wb3N0X2FzaWNfcmVzZXQo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCBp ZiAoIXJpbmcgfHwgIXJpbmctPnNjaGVkLnRocmVhZCkKPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgY29udGludWU7Cj4+Pj4+ICDCoMKgIC3CoMKgwqDCoMKgwqDCoCBpZiAoIWFk ZXYtPmFzaWNfcmVzZXRfcmVzKQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgLyogTm8gcG9pbnQgdG8g cmVzdWJtaXQgam9icyBpZiB3ZSBkaWRuJ3QgSFcgcmVzZXQqLwo+Pj4+PiArwqDCoMKgwqDCoMKg wqAgaWYgKCFhZGV2LT5hc2ljX3Jlc2V0X3JlcyAmJiAham9iX3NpZ25hbGVkKQo+Pj4+PiAgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkcm1fc2NoZWRfcmVzdWJtaXRfam9icygmcmluZy0+ c2NoZWQpOwo+Pj4+PiAgwqDCoCDCoMKgwqDCoMKgwqDCoMKgwqAgZHJtX3NjaGVkX3N0YXJ0KCZy aW5nLT5zY2hlZCwgIWFkZXYtPmFzaWNfcmVzZXRfcmVzKTsKPj4+Pj4gQEAgLTM1MTgsMTQgKzM1 MzMsMjEgQEAgc3RhdGljIHZvaWQKPj4+Pj4gYW1kZ3B1X2RldmljZV9wb3N0X2FzaWNfcmVzZXQo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4+Pj4+ICDCoMKgwqDCoMKgwqAgYWRldi0+YXNp Y19yZXNldF9yZXMgPSAwOwo+Pj4+PiAgwqDCoCB9Cj4+Pj4+ICDCoMKgIC1zdGF0aWMgdm9pZCBh bWRncHVfZGV2aWNlX2xvY2tfYWRldihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPj4+Pj4g K3N0YXRpYyBib29sIGFtZGdwdV9kZXZpY2VfbG9ja19hZGV2KHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LCBib29sCj4+Pj4+IHRyeWxvY2spCj4+Pj4+ICDCoMKgIHsKPj4+Pj4gLcKgwqDCoCBt dXRleF9sb2NrKCZhZGV2LT5sb2NrX3Jlc2V0KTsKPj4+Pj4gK8KgwqDCoCBpZiAodHJ5bG9jaykg ewo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCFtdXRleF90cnlsb2NrKCZhZGV2LT5sb2NrX3Jl c2V0KSkKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGZhbHNlOwo+Pj4+PiAr wqDCoMKgIH0gZWxzZQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgbXV0ZXhfbG9jaygmYWRldi0+bG9j a19yZXNldCk7Cj4+Pj4+ICsKPj4+Pj4gIMKgwqDCoMKgwqDCoCBhdG9taWNfaW5jKCZhZGV2LT5n cHVfcmVzZXRfY291bnRlcik7Cj4+Pj4+ICDCoMKgwqDCoMKgwqAgYWRldi0+aW5fZ3B1X3Jlc2V0 ID0gMTsKPj4+Pj4gIMKgwqDCoMKgwqDCoCAvKiBCbG9jayBrZmQ6IFNSSU9WIHdvdWxkIGRvIGl0 IHNlcGFyYXRlbHkgKi8KPj4+Pj4gIMKgwqDCoMKgwqDCoCBpZiAoIWFtZGdwdV9zcmlvdl92Zihh ZGV2KSkKPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhbWRncHVf YW1ka2ZkX3ByZV9yZXNldChhZGV2KTsKPj4+Pj4gKwo+Pj4+PiArwqDCoMKgIHJldHVybiB0cnVl Owo+Pj4+PiAgwqDCoCB9Cj4+Pj4+ICDCoMKgIMKgIHN0YXRpYyB2b2lkIGFtZGdwdV9kZXZpY2Vf dW5sb2NrX2FkZXYoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4+Pj4+IEBAIC0zNTU1LDI5 ICszNTc3LDQ0IEBAIGludCBhbWRncHVfZGV2aWNlX2dwdV9yZWNvdmVyKHN0cnVjdAo+Pj4+PiBh bWRncHVfZGV2aWNlICphZGV2LAo+Pj4+PiAgwqDCoCB7Cj4+Pj4+ICDCoMKgwqDCoMKgwqAgaW50 IHI7Cj4+Pj4+ICDCoMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9oaXZlX2luZm8gKmhpdmUgPSBO VUxMOwo+Pj4+PiAtwqDCoMKgIGJvb2wgbmVlZF9mdWxsX3Jlc2V0ID0gZmFsc2U7Cj4+Pj4+ICDC oMKgwqDCoMKgwqAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKnRtcF9hZGV2ID0gTlVMTDsKPj4+Pj4g IMKgwqDCoMKgwqDCoCBzdHJ1Y3QgbGlzdF9oZWFkIGRldmljZV9saXN0LCAqZGV2aWNlX2xpc3Rf aGFuZGxlID0gTlVMTDsKPj4+Pj4gK8KgwqDCoCBib29sIHhnbWlfdG9wb2xvZ3lfcHJlc2VudCwg bmVlZF9mdWxsX3Jlc2V0LCBqb2Jfc2lnbmFsZWQ7Cj4+Pj4+ICDCoMKgICvCoMKgwqAgbmVlZF9m dWxsX3Jlc2V0ID0gam9iX3NpZ25hbGVkID0gZmFsc2U7Cj4+Pj4+ICDCoMKgwqDCoMKgwqAgSU5J VF9MSVNUX0hFQUQoJmRldmljZV9saXN0KTsKPj4+Pj4gIMKgwqAgwqDCoMKgwqDCoCBkZXZfaW5m byhhZGV2LT5kZXYsICJHUFUgcmVzZXQgYmVnaW4hXG4iKTsKPj4+Pj4gIMKgwqAgK8KgwqDCoCBo aXZlID0gYW1kZ3B1X2dldF94Z21pX2hpdmUoYWRldiwgMCk7Cj4+Pj4+ICvCoMKgwqAgeGdtaV90 b3BvbG9neV9wcmVzZW50ID0gaGl2ZSAmJgo+Pj4+PiBhZGV2LT5nbWMueGdtaS5udW1fcGh5c2lj YWxfbm9kZXMgPiAxOwo+Pj4+PiArCj4+Pj4+ICDCoMKgwqDCoMKgwqAgLyoKPj4+Pj4gLcKgwqDC oMKgICogSW4gY2FzZSBvZiBYR01JIGhpdmUgZGlzYWxsb3cgY29uY3VycmVudCByZXNldHMgdG8g YmUKPj4+Pj4gdHJpZ2dlcmVkCj4+Pj4+IC3CoMKgwqDCoCAqIGJ5IGRpZmZlcmVudCBub2Rlcy4g Tm8gcG9pbnQgYWxzbyBzaW5jZSB0aGUgb25lIG5vZGUgYWxyZWFkeQo+Pj4+PiBleGVjdXRpbmcK Pj4+Pj4gLcKgwqDCoMKgICogcmVzZXQgd2lsbCBhbHNvIHJlc2V0IGFsbCB0aGUgb3RoZXIgbm9k ZXMgaW4gdGhlIGhpdmUuCj4+Pj4+ICvCoMKgwqDCoCAqIEhlcmUgd2UgdHJ5bG9jayB0byBhdm9p ZCBjaGFpbiBvZiByZXNldHMgZXhlY3V0aW5nIGZyb20KPj4+Pj4gK8KgwqDCoMKgICogZWl0aGVy IHRyaWdnZXIgYnkgam9icyBvbiBkaWZmZXJlbnQgYWRldnMgaW4gWEdNSSBoaXZlIG9yCj4+Pj4+ IGpvYnMgb24KPj4+Pj4gK8KgwqDCoMKgICogZGlmZmVyZW50IHNjaGVkdWxlcnMgZm9yIHNhbWUg ZGV2aWNlIHdoaWxlIHRoaXMgdGRyIGlzCj4+Pj4+IHJ1bm5pbmcuCj4+Pj4+ICvCoMKgwqDCoCAq IFdlIGFsd2F5cyByZXNldCBhbGwgc2NoZWR1bGVycyBmb3IgZGV2aWNlIGFuZCBhbGwgZGV2aWNl cyBmb3IKPj4+Pj4gWEdNSQo+Pj4+PiArwqDCoMKgwqAgKiBoaXZlIHNvIHRoYXQgc2hvdWxkIHRh a2UgY2FyZSBvZiB0aGVtIHRvby4KPj4+Pj4gIMKgwqDCoMKgwqDCoMKgICovCj4+Pj4+IC3CoMKg wqAgaGl2ZSA9IGFtZGdwdV9nZXRfeGdtaV9oaXZlKGFkZXYsIDApOwo+Pj4+PiAtwqDCoMKgIGlm IChoaXZlICYmIGFkZXYtPmdtYy54Z21pLm51bV9waHlzaWNhbF9ub2RlcyA+IDEgJiYKPj4+Pj4g LcKgwqDCoMKgwqDCoMKgICFtdXRleF90cnlsb2NrKCZoaXZlLT5yZXNldF9sb2NrKSkKPj4+Pj4g Kwo+Pj4+PiArwqDCoMKgIGlmICh4Z21pX3RvcG9sb2d5X3ByZXNlbnQgJiYgIW11dGV4X3RyeWxv Y2soJmhpdmUtPnJlc2V0X2xvY2spKSB7Cj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBEUk1fSU5GTygi QmFpbGluZyBvbiBURFIgZm9yIHNfam9iOiVsbHgsIGhpdmU6ICVsbHggYXMKPj4+Pj4gYW5vdGhl ciBhbHJlYWR5IGluIHByb2dyZXNzIiwKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBq b2ItPmJhc2UuaWQsIGhpdmUtPmhpdmVfaWQpOwo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAg cmV0dXJuIDA7Cj4+Pj4+ICvCoMKgwqAgfQo+Pj4+PiAgwqDCoCDCoMKgwqDCoMKgIC8qIFN0YXJ0 IHdpdGggYWRldiBwcmUgYXNpYyByZXNldCBmaXJzdCBmb3Igc29mdCByZXNldAo+Pj4+PiBjaGVj ay4qLwo+Pj4+PiAtwqDCoMKgIGFtZGdwdV9kZXZpY2VfbG9ja19hZGV2KGFkZXYpOwo+Pj4+PiAr wqDCoMKgIGlmICghYW1kZ3B1X2RldmljZV9sb2NrX2FkZXYoYWRldiwgIXhnbWlfdG9wb2xvZ3lf cHJlc2VudCkpIHsKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIERSTV9JTkZPKCJCYWlsaW5nIG9uIFRE UiBmb3Igc19qb2I6JWxseCwgYXMgYW5vdGhlciBhbHJlYWR5Cj4+Pj4+IGluIHByb2dyZXNzIiwK Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgam9iLT5iYXNl LmlkKTsKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAwOwo+Pj4+PiArwqDCoMKgIH0KPj4+ Pj4gKwo+Pj4+PiArwqDCoMKgIC8qIEd1aWx0eSBqb2Igd2lsbCBiZSBmcmVlZCBhZnRlciB0aGlz Ki8KPj4+Pj4gIMKgwqDCoMKgwqDCoCByID0gYW1kZ3B1X2RldmljZV9wcmVfYXNpY19yZXNldChh ZGV2LAo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBqb2IsCj4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZu ZWVkX2Z1bGxfcmVzZXQpOwo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAmbmVlZF9mdWxsX3Jlc2V0LAo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAmam9iX3NpZ25hbGVkKTsKPj4+Pj4gIMKgwqDCoMKgwqDCoCBpZiAo cikgewo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLypUT0RPIFNob3VsZCB3ZSBzdG9wID8q Lwo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX0VSUk9SKCJHUFUgcHJlIGFzaWMgcmVz ZXQgZmFpbGVkIHdpdGggZXJyLCAlZCBmb3IgZHJtCj4+Pj4+IGRldiwgJXMgIiwKPj4+Pj4gQEAg LTM2MDksMTAgKzM2NDYsMTEgQEAgaW50IGFtZGdwdV9kZXZpY2VfZ3B1X3JlY292ZXIoc3RydWN0 Cj4+Pj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoCBp ZiAodG1wX2FkZXYgPT0gYWRldikKPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Y29udGludWU7Cj4+Pj4+ICDCoMKgIC3CoMKgwqDCoMKgwqDCoCBhbWRncHVfZGV2aWNlX2xvY2tf YWRldih0bXBfYWRldik7Cj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBhbWRncHVfZGV2aWNlX2xvY2tf YWRldih0bXBfYWRldiwgZmFsc2UpOwo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgciA9IGFt ZGdwdV9kZXZpY2VfcHJlX2FzaWNfcmVzZXQodG1wX2FkZXYsCj4+Pj4+ICDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTlVMTCwKPj4+Pj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmbmVlZF9mdWxs X3Jlc2V0KTsKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAmbmVlZF9mdWxsX3Jlc2V0LAo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZqb2Jfc2lnbmFsZWQpOwo+Pj4+PiAgwqDCoMKgwqDC oMKgwqDCoMKgwqAgLypUT0RPIFNob3VsZCB3ZSBzdG9wID8qLwo+Pj4+PiAgwqDCoMKgwqDCoMKg wqDCoMKgwqAgaWYgKHIpIHsKPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRFJN X0VSUk9SKCJHUFUgcHJlIGFzaWMgcmVzZXQgZmFpbGVkIHdpdGggZXJyLCAlZCBmb3IKPj4+Pj4g ZHJtIGRldiwgJXMgIiwKPj4+Pj4gQEAgLTM2MjMsMTkgKzM2NjEsMjEgQEAgaW50IGFtZGdwdV9k ZXZpY2VfZ3B1X3JlY292ZXIoc3RydWN0Cj4+Pj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+Pj4+ ICDCoMKgIMKgwqDCoMKgwqAgLyogQWN0dWFsIEFTSUMgcmVzZXRzIGlmIG5lZWRlZC4qLwo+Pj4+ PiAgwqDCoMKgwqDCoMKgIC8qIFRPRE8gSW1wbGVtZW50IFhHTUkgaGl2ZSByZXNldCBsb2dpYyBm b3IgU1JJT1YgKi8KPj4+Pj4gLcKgwqDCoCBpZiAoYW1kZ3B1X3NyaW92X3ZmKGFkZXYpKSB7Cj4+ Pj4+IC3CoMKgwqDCoMKgwqDCoCByID0gYW1kZ3B1X2RldmljZV9yZXNldF9zcmlvdihhZGV2LCBq b2IgPyBmYWxzZSA6IHRydWUpOwo+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgaWYgKHIpCj4+Pj4+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFkZXYtPmFzaWNfcmVzZXRfcmVzID0gcjsKPj4+Pj4gLcKg wqDCoCB9IGVsc2Ugewo+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgcsKgID0gYW1kZ3B1X2RvX2FzaWNf cmVzZXQoaGl2ZSwgZGV2aWNlX2xpc3RfaGFuZGxlLAo+Pj4+PiAmbmVlZF9mdWxsX3Jlc2V0KTsK Pj4+Pj4gLcKgwqDCoMKgwqDCoMKgIGlmIChyICYmIHIgPT0gLUVBR0FJTikKPj4+Pj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZ290byByZXRyeTsKPj4+Pj4gK8KgwqDCoCBpZiAoIWpvYiB8fCAh am9iX3NpZ25hbGVkKSB7Cj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoYW1kZ3B1X3NyaW92X3Zm KGFkZXYpKSB7Cj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHIgPSBhbWRncHVfZGV2aWNl X3Jlc2V0X3NyaW92KGFkZXYsIGpvYiA/IGZhbHNlIDogdHJ1ZSk7Cj4+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGlmIChyKQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGFkZXYtPmFzaWNfcmVzZXRfcmVzID0gcjsKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIH0gZWxzZSB7 Cj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHLCoCA9IGFtZGdwdV9kb19hc2ljX3Jlc2V0 KGhpdmUsIGRldmljZV9saXN0X2hhbmRsZSwKPj4+Pj4gJm5lZWRfZnVsbF9yZXNldCk7Cj4+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyICYmIHIgPT0gLUVBR0FJTikKPj4+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIHJldHJ5Owo+Pj4+PiArwqDCoMKgwqDC oMKgwqAgfQo+Pj4+PiAgwqDCoMKgwqDCoMKgIH0KPj4+Pj4gIMKgwqAgwqDCoMKgwqDCoCAvKiBQ b3N0IEFTSUMgcmVzZXQgZm9yIGFsbCBkZXZzIC4qLwo+Pj4+PiAgwqDCoMKgwqDCoMKgIGxpc3Rf Zm9yX2VhY2hfZW50cnkodG1wX2FkZXYsIGRldmljZV9saXN0X2hhbmRsZSwKPj4+Pj4gZ21jLnhn bWkuaGVhZCkgewo+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2RldmljZV9wb3N0X2FzaWNf cmVzZXQodG1wX2FkZXYpOwo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgYW1kZ3B1X2RldmljZV9wb3N0 X2FzaWNfcmVzZXQodG1wX2FkZXYsIGpvYl9zaWduYWxlZCk7Cj4+Pj4+ICDCoMKgIMKgwqDCoMKg wqDCoMKgwqDCoCBpZiAocikgewo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAv KiBiYWQgbmV3cywgaG93IHRvIHRlbGwgaXQgdG8gdXNlcnNwYWNlID8gKi8KPj4+Pj4gQEAgLTM2 NDgsNyArMzY4OCw3IEBAIGludCBhbWRncHVfZGV2aWNlX2dwdV9yZWNvdmVyKHN0cnVjdAo+Pj4+ PiBhbWRncHVfZGV2aWNlICphZGV2LAo+Pj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYW1kZ3B1 X2RldmljZV91bmxvY2tfYWRldih0bXBfYWRldik7Cj4+Pj4+ICDCoMKgwqDCoMKgwqAgfQo+Pj4+ PiAgwqDCoCAtwqDCoMKgIGlmIChoaXZlICYmIGFkZXYtPmdtYy54Z21pLm51bV9waHlzaWNhbF9u b2RlcyA+IDEpCj4+Pj4+ICvCoMKgwqAgaWYgKHhnbWlfdG9wb2xvZ3lfcHJlc2VudCkKPj4+Pj4g IMKgwqDCoMKgwqDCoMKgwqDCoMKgIG11dGV4X3VubG9jaygmaGl2ZS0+cmVzZXRfbG9jayk7Cj4+ Pj4+ICDCoMKgIMKgwqDCoMKgwqAgaWYgKHIpCj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+Pj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QKPj4+IGFtZC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwo+IGFtZC1nZnggbWFpbGluZyBsaXN0Cj4gYW1kLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2FtZC1nZngKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdm eA==