From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kuehling, Felix" Subject: Re: [PATCH 1/2] dmr/amdgpu: Avoid HW GPU reset for RAS. Date: Wed, 28 Aug 2019 21:18:43 +0000 Message-ID: <5cf4dfa5-705c-9c10-8ca1-bf9cc21c1529@amd.com> References: <1567022426-6612-1-git-send-email-andrey.grodzovsky@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1567022426-6612-1-git-send-email-andrey.grodzovsky-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" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" Cc: "alexdeucher-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org" , "ckoenig.leichtzumerken-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org" , "Zhang, Hawking" DQpPbiAyMDE5LTA4LTI4IDQ6MDAgcC5tLiwgQW5kcmV5IEdyb2R6b3Zza3kgd3JvdGU6DQo+IFBy b2JsZW06DQo+IFVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucywgd2hlbiBzb21lIElQIGJvY2tzIHRh a2UgYSBSQVMgZXJyb3IsDQo+IHdlIGNhbiBnZXQgaW50byBhIHNpdHVhdGlvbiB3aGVyZSBhIEdQ VSByZXNldCBpcyBub3QgcG9zc2libGUNCj4gZHVlIHRvIGlzc3VlcyBpbiBSQVMgaW4gU01VL1BT UC4NCj4NCj4gVGVtcG9yYXJ5IGZpeCB1bnRpbCBwcm9wZXIgc29sdXRpb24gaW4gUFNQL1NNVSBp cyByZWFkeToNCj4gV2hlbiB1bmNvcnJlY3RhYmxlIGVycm9yIGhhcHBlbnMgdGhlIERGIHdpbGwg dW5jb25kaXRpb25hbGx5DQo+IGJyb2FkY2FzdCBlcnJvciBldmVudCBwYWNrZXRzIHRvIGFsbCBp dHMgY2xpZW50cy9zbGF2ZSB1cG9uDQo+IHJlY2VpdmluZyBmYXRhbCBlcnJvciBldmVudCBhbmQg ZnJlZXplIGFsbCBpdHMgb3V0Ym91bmQgcXVldWVzLA0KPiBlcnJfZXZlbnRfYXRodWIgaW50ZXJy dXB0ICB3aWxsIGJlIHRyaWdnZXJlZC4NCj4gSW4gc3VjaCBjYXNlIGFuZCB3ZSB1c2UgdGhpcyBp bnRlcnJ1cHQNCj4gdG8gaXNzdWUgR1BVIHJlc2V0LiBUSGUgR1BVIHJlc2V0IGNvZGUgaXMgbW9k aWZpZWQgZm9yIHN1Y2ggY2FzZSB0byBhdm9pZCBIVw0KPiByZXNldCwgb25seSBzdG9wcyBzY2hl ZHVsZXJzLCBkZWF0Y2hlcyBhbGwgaW4gcHJvZ3Jlc3MgYW5kIG5vdCB5ZXQgc2NoZWR1bGVkDQo+ IGpvYidzIGZlbmNlcywgc2V0IGVycm9yIGNvZGUgb24gdGhlbSBhbmQgc2lnbmFscy4NCj4gQWxz byByZWplY3QgYW55IG5ldyBpbmNvbWluZyBqb2Igc3VibWlzc2lvbnMgZnJvbSB1c2VyIHNwYWNl Lg0KPiBBbGwgdGhpcyBpcyBkb25lIHRvIG5vdGlmeSB0aGUgYXBwbGljYXRpb25zIG9mIHRoZSBw cm9ibGVtLg0KPg0KPiBTaWduZWQtb2ZmLWJ5OiBBbmRyZXkgR3JvZHpvdnNreSA8YW5kcmV5Lmdy b2R6b3Zza3lAYW1kLmNvbT4NCj4gLS0tDQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2NzLmMgICAgIHwgIDQgKysNCj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfZGV2aWNlLmMgfCA5OCArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0NCj4gICBk cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMgICAgfCAgNSArKw0KPiAgIGRy aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9rbXMuYyAgICB8ICA2ICsrDQo+ICAgZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5jICAgIHwgMzAgKysrKysrKy0tDQo+ ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5oICAgIHwgMTIgKysrLQ0K PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OV8wLmMgICAgICB8IDEwICstLQ0K PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192OV8wLmMgICAgICB8IDI0ICsrKyst LS0tDQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvbmJpb192N180LmMgICAgIHwgIDUg KysNCj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3Y0XzAuYyAgICAgfCAzMiAr KysrKy0tLS0tDQo+ICAgMTAgZmlsZXMgY2hhbmdlZCwgMTY0IGluc2VydGlvbnMoKyksIDYyIGRl bGV0aW9ucygtKQ0KPg0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYw0KPiBp bmRleCA5ZGE2ODFlLi4zMDBhZGI4IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfY3MuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfY3MuYw0KPiBAQCAtMzgsNiArMzgsNyBAQA0KPiAgICNpbmNsdWRlICJhbWRncHVfZ21j LmgiDQo+ICAgI2luY2x1ZGUgImFtZGdwdV9nZW0uaCINCj4gICAjaW5jbHVkZSAiYW1kZ3B1X2Rp c3BsYXkuaCINCj4gKyNpbmNsdWRlICJhbWRncHVfcmFzLmgiDQo+ICAgDQo+ICAgI2lmIGRlZmlu ZWQoSEFWRV9EUk1fRlJFRV9MQVJHRSkNCj4gICAjZGVmaW5lIGt2ZnJlZSBkcm1fZnJlZV9sYXJn ZQ0KPiBAQCAtMTQ2MSw2ICsxNDYyLDkgQEAgaW50IGFtZGdwdV9jc19pb2N0bChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHApDQo+ICAgCWJv b2wgcmVzZXJ2ZWRfYnVmZmVycyA9IGZhbHNlOw0KPiAgIAlpbnQgaSwgcjsNCj4gICANCj4gKwlp ZiAoYW1kZ3B1X3Jhc19pbnRyX3RyaWdnZXJlZCgpKQ0KPiArCQlyZXR1cm4gLUVIV1BPSVNPTjsN Cj4gKw0KPiAgIAlpZiAoIWFkZXYtPmFjY2VsX3dvcmtpbmcpDQo+ICAgCQlyZXR1cm4gLUVCVVNZ Ow0KPiAgIA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2RldmljZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jDQo+ IGluZGV4IDA3YTRiYTAuLjNlY2VlMTAgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfZGV2aWNlLmMNCj4gQEAgLTM3MzQsMTAgKzM3MzQsMTAgQEAgc3RhdGljIGJv b2wgYW1kZ3B1X2RldmljZV9sb2NrX2FkZXYoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGJv b2wgdHJ5bG9jaykNCj4gICAJcmV0dXJuIHRydWU7DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGljIHZv aWQgYW1kZ3B1X2RldmljZV91bmxvY2tfYWRldihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikN Cj4gK3N0YXRpYyB2b2lkIGFtZGdwdV9kZXZpY2VfdW5sb2NrX2FkZXYoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsIGJvb2wgc2tpcF9rZmQpDQo+ICAgew0KPiAgIAkvKnVubG9jayBrZmQ6IFNS SU9WIHdvdWxkIGRvIGl0IHNlcGFyYXRlbHkgKi8NCj4gLQlpZiAoIWFtZGdwdV9zcmlvdl92Zihh ZGV2KSkNCj4gKwlpZiAoIWFtZGdwdV9zcmlvdl92ZihhZGV2KSAmJiAhc2tpcF9rZmQpDQo+ICAg ICAgICAgICAgICAgICAgIGFtZGdwdV9hbWRrZmRfcG9zdF9yZXNldChhZGV2KTsNCj4gICAJYW1k Z3B1X3ZmX2Vycm9yX3RyYW5zX2FsbChhZGV2KTsNCj4gICAJYWRldi0+bXAxX3N0YXRlID0gUFBf TVAxX1NUQVRFX05PTkU7DQo+IEBAIC0zNzQ2LDYgKzM3NDYsNDQgQEAgc3RhdGljIHZvaWQgYW1k Z3B1X2RldmljZV91bmxvY2tfYWRldihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikNCj4gICB9 DQo+ICAgDQo+ICAgDQo+ICsjZGVmaW5lIHRvX2RybV9zY2hlZF9qb2Ioc2NoZWRfam9iKQkJXA0K PiArCQljb250YWluZXJfb2YoKHNjaGVkX2pvYiksIHN0cnVjdCBkcm1fc2NoZWRfam9iLCBxdWV1 ZV9ub2RlKQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBhbWRncHVfc3RvcF9hbGxfam9ic19vbl9zY2hl ZChzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkKQ0KPiArew0KPiArCXN0cnVjdCBkcm1f c2NoZWRfam9iICpzX2pvYjsNCj4gKwlzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqc19lbnRpdHkg PSBOVUxMOw0KPiArCWludCBpOw0KPiArDQo+ICsJLyogU2lnbmFsIGFsbCBqb2JzIG5vdCB5ZXQg c2NoZWR1bGVkICovDQo+ICsJZm9yIChpID0gRFJNX1NDSEVEX1BSSU9SSVRZX01BWCAtIDE7IGkg Pj0gRFJNX1NDSEVEX1BSSU9SSVRZX01JTjsgaS0tKSB7DQo+ICsJCXN0cnVjdCBkcm1fc2NoZWRf cnEgKnJxID0gJnNjaGVkLT5zY2hlZF9ycVtpXTsNCj4gKw0KPiArCQlpZiAoIXJxKQ0KPiArCQkJ Y29udGludWU7DQo+ICsNCj4gKwkJc3Bpbl9sb2NrKCZycS0+bG9jayk7DQo+ICsJCWxpc3RfZm9y X2VhY2hfZW50cnkoc19lbnRpdHksICZycS0+ZW50aXRpZXMsIGxpc3QpIHsNCj4gKwkJCXdoaWxl ICgoc19qb2IgPSB0b19kcm1fc2NoZWRfam9iKHNwc2NfcXVldWVfcG9wKCZzX2VudGl0eS0+am9i X3F1ZXVlKSkpKSB7DQo+ICsJCQkJc3RydWN0IGRybV9zY2hlZF9mZW5jZSAqc19mZW5jZSA9IHNf am9iLT5zX2ZlbmNlOw0KPiArDQo+ICsJCQkJZG1hX2ZlbmNlX3NpZ25hbCgmc19mZW5jZS0+c2No ZWR1bGVkKTsNCj4gKwkJCQlkbWFfZmVuY2Vfc2V0X2Vycm9yKCZzX2ZlbmNlLT5maW5pc2hlZCwg LUVIV1BPSVNPTik7DQo+ICsJCQkJZG1hX2ZlbmNlX3NpZ25hbCgmc19mZW5jZS0+ZmluaXNoZWQp Ow0KPiArCQkJfQ0KPiArCQl9DQo+ICsJCXNwaW5fdW5sb2NrKCZycS0+bG9jayk7DQo+ICsJfQ0K PiArDQo+ICsJLyogU2lnbmFsIGFsbCBqb2JzIGFscmVhZHkgc2NoZWR1bGVkIHRvIEhXICovDQo+ ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShzX2pvYiwgJnNjaGVkLT5yaW5nX21pcnJvcl9saXN0LCBu b2RlKSB7DQo+ICsJCXN0cnVjdCBkcm1fc2NoZWRfZmVuY2UgKnNfZmVuY2UgPSBzX2pvYi0+c19m ZW5jZTsNCj4gKw0KPiArCQlkbWFfZmVuY2Vfc2V0X2Vycm9yKCZzX2ZlbmNlLT5maW5pc2hlZCwg LUVIV1BPSVNPTik7DQo+ICsJCWRtYV9mZW5jZV9zaWduYWwoJnNfZmVuY2UtPmZpbmlzaGVkKTsN Cj4gKwl9DQo+ICt9DQo+ICsNCj4gICAvKioNCj4gICAgKiBhbWRncHVfZGV2aWNlX2dwdV9yZWNv dmVyIC0gcmVzZXQgdGhlIGFzaWMgYW5kIHJlY292ZXIgc2NoZWR1bGVyDQo+ICAgICoNCj4gQEAg LTM3NjUsMTEgKzM4MDMsMTIgQEAgaW50IGFtZGdwdV9kZXZpY2VfZ3B1X3JlY292ZXIoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+ICAgCXN0cnVjdCBhbWRncHVfaGl2ZV9pbmZvICpoaXZl ID0gTlVMTDsNCj4gICAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKnRtcF9hZGV2ID0gTlVMTDsNCj4g ICAJaW50IGksIHIgPSAwOw0KPiArCWJvb2wgaW5fcmFzX2ludHIgPSBhbWRncHVfcmFzX2ludHJf dHJpZ2dlcmVkKCk7DQo+ICAgDQo+ICAgCW5lZWRfZnVsbF9yZXNldCA9IGpvYl9zaWduYWxlZCA9 IGZhbHNlOw0KPiAgIAlJTklUX0xJU1RfSEVBRCgmZGV2aWNlX2xpc3QpOw0KPiAgIA0KPiAtCWRl dl9pbmZvKGFkZXYtPmRldiwgIkdQVSByZXNldCBiZWdpbiFcbiIpOw0KPiArCWRldl9pbmZvKGFk ZXYtPmRldiwgIkdQVSAlcyBiZWdpbiFcbiIsIGluX3Jhc19pbnRyID8gImpvYnMgc3RvcCI6InJl c2V0Iik7DQo+ICAgDQo+ICAgCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYWRldi0+ZGVsYXll ZF9pbml0X3dvcmspOw0KPiAgIA0KPiBAQCAtMzc5OSw3ICszODM4LDcgQEAgaW50IGFtZGdwdV9k ZXZpY2VfZ3B1X3JlY292ZXIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+ICAgCS8qIEJ1 aWxkIGxpc3Qgb2YgZGV2aWNlcyB0byByZXNldCAqLw0KPiAgIAlpZiAgKGFkZXYtPmdtYy54Z21p Lm51bV9waHlzaWNhbF9ub2RlcyA+IDEpIHsNCj4gICAJCWlmICghaGl2ZSkgew0KPiAtCQkJYW1k Z3B1X2RldmljZV91bmxvY2tfYWRldihhZGV2KTsNCj4gKwkJCWFtZGdwdV9kZXZpY2VfdW5sb2Nr X2FkZXYoYWRldiwgZmFsc2UpOw0KDQpJcyB0aGVyZSBhIHJlYXNvbiB3aHkgeW91J3JlIG5vdCB1 c2luZyBpbl9yYXNfaW50ciBoZXJlIHRvIGNvbnRyb2wgS0ZEIA0KcG9zdC1yZXNldD8NCg0KUmVn YXJkcywNCiDCoCBGZWxpeA0KDQoNCj4gICAJCQlyZXR1cm4gLUVOT0RFVjsNCj4gICAJCX0NCj4g ICANCj4gQEAgLTM4MjQsNyArMzg2Myw3IEBAIGludCBhbWRncHVfZGV2aWNlX2dwdV9yZWNvdmVy KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPiAgIAkvKiBibG9jayBhbGwgc2NoZWR1bGVy cyBhbmQgcmVzZXQgZ2l2ZW4gam9iJ3MgcmluZyAqLw0KPiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5 KHRtcF9hZGV2LCBkZXZpY2VfbGlzdF9oYW5kbGUsIGdtYy54Z21pLmhlYWQpIHsNCj4gICAJCS8q IGRpc2FibGUgcmFzIG9uIEFMTCBJUHMgKi8NCj4gLQkJaWYgKGFtZGdwdV9kZXZpY2VfaXBfbmVl ZF9mdWxsX3Jlc2V0KHRtcF9hZGV2KSkNCj4gKwkJaWYgKCFpbl9yYXNfaW50ciAmJiBhbWRncHVf ZGV2aWNlX2lwX25lZWRfZnVsbF9yZXNldCh0bXBfYWRldikpDQo+ICAgCQkJYW1kZ3B1X3Jhc19z dXNwZW5kKHRtcF9hZGV2KTsNCj4gICANCj4gICAJCWZvciAoaSA9IDA7IGkgPCBBTURHUFVfTUFY X1JJTkdTOyArK2kpIHsNCj4gQEAgLTM4MzQsMTAgKzM4NzMsMTYgQEAgaW50IGFtZGdwdV9kZXZp Y2VfZ3B1X3JlY292ZXIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+ICAgCQkJCWNvbnRp bnVlOw0KPiAgIA0KPiAgIAkJCWRybV9zY2hlZF9zdG9wKCZyaW5nLT5zY2hlZCwgam9iID8gJmpv Yi0+YmFzZSA6IE5VTEwpOw0KPiArDQo+ICsJCQlpZiAoaW5fcmFzX2ludHIpDQo+ICsJCQkJYW1k Z3B1X3N0b3BfYWxsX2pvYnNfb25fc2NoZWQoJnJpbmctPnNjaGVkKTsNCj4gICAJCX0NCj4gICAJ fQ0KPiAgIA0KPiAgIA0KPiArCWlmIChpbl9yYXNfaW50cikNCj4gKwkJZ290byBza2lwX2h3X3Jl c2V0Ow0KPiArDQo+ICAgCS8qDQo+ICAgCSAqIE11c3QgY2hlY2sgZ3VpbHR5IHNpZ25hbCBoZXJl IHNpbmNlIGFmdGVyIHRoaXMgcG9pbnQgYWxsIG9sZA0KPiAgIAkgKiBIVyBmZW5jZXMgYXJlIGZv cmNlIHNpZ25hbGVkLg0KPiBAQCAtMzkwMiwzNCArMzk0NywzNyBAQCBpbnQgYW1kZ3B1X2Rldmlj ZV9ncHVfcmVjb3ZlcihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCj4gICANCj4gICAJLyog UG9zdCBBU0lDIHJlc2V0IGZvciBhbGwgZGV2cyAuKi8NCj4gICAJbGlzdF9mb3JfZWFjaF9lbnRy eSh0bXBfYWRldiwgZGV2aWNlX2xpc3RfaGFuZGxlLCBnbWMueGdtaS5oZWFkKSB7DQo+IC0JCWZv ciAoaSA9IDA7IGkgPCBBTURHUFVfTUFYX1JJTkdTOyArK2kpIHsNCj4gLQkJCXN0cnVjdCBhbWRn cHVfcmluZyAqcmluZyA9IHRtcF9hZGV2LT5yaW5nc1tpXTsNCj4gICANCj4gLQkJCWlmICghcmlu ZyB8fCAhcmluZy0+c2NoZWQudGhyZWFkKQ0KPiAtCQkJCWNvbnRpbnVlOw0KPiArCQlpZiAoIWlu X3Jhc19pbnRyKSB7DQo+ICsJCQlmb3IgKGkgPSAwOyBpIDwgQU1ER1BVX01BWF9SSU5HUzsgKytp KSB7DQo+ICsJCQkJc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nID0gdG1wX2FkZXYtPnJpbmdzW2ld Ow0KPiAgIA0KPiAtCQkJLyogTm8gcG9pbnQgdG8gcmVzdWJtaXQgam9icyBpZiB3ZSBkaWRuJ3Qg SFcgcmVzZXQqLw0KPiAtCQkJaWYgKCF0bXBfYWRldi0+YXNpY19yZXNldF9yZXMgJiYgIWpvYl9z aWduYWxlZCkNCj4gLQkJCQlkcm1fc2NoZWRfcmVzdWJtaXRfam9icygmcmluZy0+c2NoZWQpOw0K PiArCQkJCWlmICghcmluZyB8fCAhcmluZy0+c2NoZWQudGhyZWFkKQ0KPiArCQkJCQljb250aW51 ZTsNCj4gICANCj4gLQkJCWRybV9zY2hlZF9zdGFydCgmcmluZy0+c2NoZWQsICF0bXBfYWRldi0+ YXNpY19yZXNldF9yZXMpOw0KPiAtCQl9DQo+ICsJCQkJLyogTm8gcG9pbnQgdG8gcmVzdWJtaXQg am9icyBpZiB3ZSBkaWRuJ3QgSFcgcmVzZXQqLw0KPiArCQkJCWlmICghdG1wX2FkZXYtPmFzaWNf cmVzZXRfcmVzICYmICFqb2Jfc2lnbmFsZWQpDQo+ICsJCQkJCWRybV9zY2hlZF9yZXN1Ym1pdF9q b2JzKCZyaW5nLT5zY2hlZCk7DQo+ICAgDQo+IC0JCWlmICghYW1kZ3B1X2RldmljZV9oYXNfZGNf c3VwcG9ydCh0bXBfYWRldikgJiYgIWpvYl9zaWduYWxlZCkgew0KPiAtCQkJZHJtX2hlbHBlcl9y ZXN1bWVfZm9yY2VfbW9kZSh0bXBfYWRldi0+ZGRldik7DQo+IC0JCX0NCj4gKwkJCQlkcm1fc2No ZWRfc3RhcnQoJnJpbmctPnNjaGVkLCAhdG1wX2FkZXYtPmFzaWNfcmVzZXRfcmVzKTsNCj4gKwkJ CX0NCj4gICANCj4gLQkJdG1wX2FkZXYtPmFzaWNfcmVzZXRfcmVzID0gMDsNCj4gKwkJCWlmICgh YW1kZ3B1X2RldmljZV9oYXNfZGNfc3VwcG9ydCh0bXBfYWRldikgJiYgIWpvYl9zaWduYWxlZCkg ew0KPiArCQkJCWRybV9oZWxwZXJfcmVzdW1lX2ZvcmNlX21vZGUodG1wX2FkZXYtPmRkZXYpOw0K PiArCQkJfQ0KPiAgIA0KPiAtCQlpZiAocikgew0KPiAtCQkJLyogYmFkIG5ld3MsIGhvdyB0byB0 ZWxsIGl0IHRvIHVzZXJzcGFjZSA/ICovDQo+IC0JCQlkZXZfaW5mbyh0bXBfYWRldi0+ZGV2LCAi R1BVIHJlc2V0KCVkKSBmYWlsZWRcbiIsIGF0b21pY19yZWFkKCZhZGV2LT5ncHVfcmVzZXRfY291 bnRlcikpOw0KPiAtCQkJYW1kZ3B1X3ZmX2Vycm9yX3B1dCh0bXBfYWRldiwgQU1ER0lNX0VSUk9S X1ZGX0dQVV9SRVNFVF9GQUlMLCAwLCByKTsNCj4gLQkJfSBlbHNlIHsNCj4gLQkJCWRldl9pbmZv KHRtcF9hZGV2LT5kZXYsICJHUFUgcmVzZXQoJWQpIHN1Y2NlZWRlZCFcbiIsIGF0b21pY19yZWFk KCZhZGV2LT5ncHVfcmVzZXRfY291bnRlcikpOw0KPiArCQkJdG1wX2FkZXYtPmFzaWNfcmVzZXRf cmVzID0gMDsNCj4gKw0KPiArCQkJaWYgKHIpIHsNCj4gKwkJCQkvKiBiYWQgbmV3cywgaG93IHRv IHRlbGwgaXQgdG8gdXNlcnNwYWNlID8gKi8NCj4gKwkJCQlkZXZfaW5mbyh0bXBfYWRldi0+ZGV2 LCAiR1BVIHJlc2V0KCVkKSBmYWlsZWRcbiIsIGF0b21pY19yZWFkKCZhZGV2LT5ncHVfcmVzZXRf Y291bnRlcikpOw0KPiArCQkJCWFtZGdwdV92Zl9lcnJvcl9wdXQodG1wX2FkZXYsIEFNREdJTV9F UlJPUl9WRl9HUFVfUkVTRVRfRkFJTCwgMCwgcik7DQo+ICsJCQl9IGVsc2Ugew0KPiArCQkJCWRl dl9pbmZvKHRtcF9hZGV2LT5kZXYsICJHUFUgcmVzZXQoJWQpIHN1Y2NlZWRlZCFcbiIsIGF0b21p Y19yZWFkKCZhZGV2LT5ncHVfcmVzZXRfY291bnRlcikpOw0KPiArCQkJfQ0KPiAgIAkJfQ0KPiAg IA0KPiAtCQlhbWRncHVfZGV2aWNlX3VubG9ja19hZGV2KHRtcF9hZGV2KTsNCj4gKwkJYW1kZ3B1 X2RldmljZV91bmxvY2tfYWRldih0bXBfYWRldiwgaW5fcmFzX2ludHIpOw0KPiAgIAl9DQo+ICAg DQo+ICAgCWlmIChoaXZlKQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5j DQo+IGluZGV4IDE1MWQ3ZjIuLjc1N2ZkNmQgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfZHJ2LmMNCj4gQEAgLTQwLDYgKzQwLDggQEANCj4gICANCj4gICAjaW5jbHVk ZSAiYW1kZ3B1X2FtZGtmZC5oIg0KPiAgIA0KPiArI2luY2x1ZGUgImFtZGdwdV9yYXMuaCINCj4g Kw0KPiAgIC8qDQo+ICAgICogS01TIHdyYXBwZXIuDQo+ICAgICogLSAzLjAuMCAtIGluaXRpYWwg ZHJpdmVyDQo+IEBAIC0xMTc5LDYgKzExODEsOSBAQCBhbWRncHVfcGNpX3NodXRkb3duKHN0cnVj dCBwY2lfZGV2ICpwZGV2KQ0KPiAgIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcGNpX2dldF9k cnZkYXRhKHBkZXYpOw0KPiAgIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGRldi0+ZGV2 X3ByaXZhdGU7DQo+ICAgDQo+ICsJaWYgKGFtZGdwdV9yYXNfaW50cl90cmlnZ2VyZWQoKSkNCj4g KwkJcmV0dXJuOw0KPiArDQo+ICAgCS8qIGlmIHdlIGFyZSBydW5uaW5nIGluIGEgVk0sIG1ha2Ug c3VyZSB0aGUgZGV2aWNlDQo+ICAgCSAqIHRvcm4gZG93biBwcm9wZXJseSBvbiByZWJvb3Qvc2h1 dGRvd24uDQo+ICAgCSAqIHVuZm9ydHVuYXRlbHkgd2UgY2FuJ3QgZGV0ZWN0IGNlcnRhaW4NCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9rbXMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9rbXMuYw0KPiBpbmRleCBkYTIxNDNkLi5j ZWQ3NjZjIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf a21zLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ttcy5jDQo+ IEBAIC0xMDQ2LDYgKzEwNDYsMTIgQEAgaW50IGFtZGdwdV9kcml2ZXJfb3Blbl9rbXMoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpDQo+ICAgCS8qIEVu c3VyZSBJQiB0ZXN0cyBhcmUgcnVuIG9uIHJpbmcgKi8NCj4gICAJZmx1c2hfZGVsYXllZF93b3Jr KCZhZGV2LT5kZWxheWVkX2luaXRfd29yayk7DQo+ICAgDQo+ICsNCj4gKwlpZiAoYW1kZ3B1X3Jh c19pbnRyX3RyaWdnZXJlZCgpKSB7DQo+ICsJCURSTV9FUlJPUigiUkFTIEludHIgdHJpZ2dlcmVk LCBkZXZpY2UgZGlzYWJsZWQhISIpOw0KPiArCQlyZXR1cm4gLUVIV1BPSVNPTjsNCj4gKwl9DQo+ ICsNCj4gICAJZmlsZV9wcml2LT5kcml2ZXJfcHJpdiA9IE5VTEw7DQo+ICAgDQo+ICAgCXIgPSBw bV9ydW50aW1lX2dldF9zeW5jKGRldi0+ZGV2KTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yYXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9yYXMuYw0KPiBpbmRleCAyZDU4OTdhLi4wODZlNmRmIDEwMDY0NA0KPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmFzLmMNCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5jDQo+IEBAIC0yNCw2ICsyNCw4IEBADQo+ICAg I2luY2x1ZGUgPGxpbnV4L2RlYnVnZnMuaD4NCj4gICAjaW5jbHVkZSA8bGludXgvbGlzdC5oPg0K PiAgICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9yZWJvb3Qu aD4NCj4gKyNpbmNsdWRlIDxsaW51eC9zeXNjYWxscy5oPg0KPiAgICNpbmNsdWRlICJhbWRncHUu aCINCj4gICAjaW5jbHVkZSAiYW1kZ3B1X3Jhcy5oIg0KPiAgICNpbmNsdWRlICJhbWRncHVfYXRv bWZpcm13YXJlLmgiDQo+IEBAIC02NCw2ICs2Niw5IEBAIGNvbnN0IGNoYXIgKnJhc19ibG9ja19z dHJpbmdbXSA9IHsNCj4gICAvKiBpbmplY3QgYWRkcmVzcyBpcyA1MiBiaXRzICovDQo+ICAgI2Rl ZmluZQlSQVNfVU1DX0lOSkVDVF9BRERSX0xJTUlUCSgweDFVTEwgPDwgNTIpDQo+ICAgDQo+ICsN Cj4gK2F0b21pY190IGFtZGdwdV9yYXNfaW5faW50ciA9IEFUT01JQ19JTklUKDApOw0KPiArDQo+ ICAgc3RhdGljIGludCBhbWRncHVfcmFzX3Jlc2VydmVfdnJhbShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwNCj4gICAJCXVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSwNCj4gICAJCXN0 cnVjdCBhbWRncHVfYm8gKipib19wdHIpOw0KPiBAQCAtODAsNyArODUsNyBAQCBzdGF0aWMgc3Np emVfdCBhbWRncHVfcmFzX2RlYnVnZnNfcmVhZChzdHJ1Y3QgZmlsZSAqZiwgY2hhciBfX3VzZXIg KmJ1ZiwNCj4gICAJc3NpemVfdCBzOw0KPiAgIAljaGFyIHZhbFsxMjhdOw0KPiAgIA0KPiAtCWlm IChhbWRncHVfcmFzX2Vycm9yX3F1ZXJ5KG9iai0+YWRldiwgJmluZm8pKQ0KPiArCWlmIChhbWRn cHVfcmFzX2Vycm9yX3F1ZXJ5KG9iai0+YWRldiwgJmluZm8sIGZhbHNlKSkNCj4gICAJCXJldHVy biAtRUlOVkFMOw0KPiAgIA0KPiAgIAlzID0gc25wcmludGYodmFsLCBzaXplb2YodmFsKSwgIiVz OiAlbHVcbiVzOiAlbHVcbiIsDQo+IEBAIC0xODgsNiArMTkzLDEwIEBAIHN0YXRpYyBpbnQgYW1k Z3B1X3Jhc19kZWJ1Z2ZzX2N0cmxfcGFyc2VfZGF0YShzdHJ1Y3QgZmlsZSAqZiwNCj4gICANCj4g ICAJcmV0dXJuIDA7DQo+ICAgfQ0KPiArDQo+ICtzdGF0aWMgc3RydWN0IHJhc19tYW5hZ2VyICph bWRncHVfcmFzX2ZpbmRfb2JqKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPiArCQlzdHJ1 Y3QgcmFzX2NvbW1vbl9pZiAqaGVhZCk7DQo+ICsNCj4gICAvKioNCj4gICAgKiBET0M6IEFNREdQ VSBSQVMgZGVidWdmcyBjb250cm9sIGludGVyZmFjZQ0KPiAgICAqDQo+IEBAIC0zMDQsNyArMzEz LDcgQEAgc3RhdGljIHNzaXplX3QgYW1kZ3B1X3Jhc19zeXNmc19yZWFkKHN0cnVjdCBkZXZpY2Ug KmRldiwNCj4gICAJCS5oZWFkID0gb2JqLT5oZWFkLA0KPiAgIAl9Ow0KPiAgIA0KPiAtCWlmIChh bWRncHVfcmFzX2Vycm9yX3F1ZXJ5KG9iai0+YWRldiwgJmluZm8pKQ0KPiArCWlmIChhbWRncHVf cmFzX2Vycm9yX3F1ZXJ5KG9iai0+YWRldiwgJmluZm8sIGZhbHNlKSkNCj4gICAJCXJldHVybiAt RUlOVkFMOw0KPiAgIA0KPiAgIAlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIlczog JWx1XG4lczogJWx1XG4iLA0KPiBAQCAtNTkxLDcgKzYwMCw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1 X3Jhc19lbmFibGVfYWxsX2ZlYXR1cmVzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPiAg IA0KPiAgIC8qIHF1ZXJ5L2luamVjdC9jdXJlIGJlZ2luICovDQo+ICAgaW50IGFtZGdwdV9yYXNf ZXJyb3JfcXVlcnkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+IC0JCXN0cnVjdCByYXNf cXVlcnlfaWYgKmluZm8pDQo+ICsJCXN0cnVjdCByYXNfcXVlcnlfaWYgKmluZm8sIGJvb2wgcHJp bnQpDQo+ICAgew0KPiAgIAlzdHJ1Y3QgcmFzX21hbmFnZXIgKm9iaiA9IGFtZGdwdV9yYXNfZmlu ZF9vYmooYWRldiwgJmluZm8tPmhlYWQpOw0KPiAgIAlzdHJ1Y3QgcmFzX2Vycl9kYXRhIGVycl9k YXRhID0gezAsIDAsIDAsIE5VTEx9Ow0KPiBAQCAtNjI3LDEyICs2MzYsMTQgQEAgaW50IGFtZGdw dV9yYXNfZXJyb3JfcXVlcnkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+ICAgCWluZm8t PnVlX2NvdW50ID0gb2JqLT5lcnJfZGF0YS51ZV9jb3VudDsNCj4gICAJaW5mby0+Y2VfY291bnQg PSBvYmotPmVycl9kYXRhLmNlX2NvdW50Ow0KPiAgIA0KPiAtCWlmIChlcnJfZGF0YS5jZV9jb3Vu dCkNCj4gKwlpZiAoZXJyX2RhdGEuY2VfY291bnQgfHwgcHJpbnQpIHsNCj4gICAJCWRldl9pbmZv KGFkZXYtPmRldiwgIiVsZCBjb3JyZWN0YWJsZSBlcnJvcnMgZGV0ZWN0ZWQgaW4gJXMgYmxvY2tc biIsDQo+ICAgCQkJIG9iai0+ZXJyX2RhdGEuY2VfY291bnQsIHJhc19ibG9ja19zdHIoaW5mby0+ aGVhZC5ibG9jaykpOw0KPiAtCWlmIChlcnJfZGF0YS51ZV9jb3VudCkNCj4gKwl9DQo+ICsJaWYg KGVycl9kYXRhLnVlX2NvdW50IHx8IHByaW50KSB7DQo+ICAgCQlkZXZfaW5mbyhhZGV2LT5kZXYs ICIlbGQgdW5jb3JyZWN0YWJsZSBlcnJvcnMgZGV0ZWN0ZWQgaW4gJXMgYmxvY2tcbiIsDQo+ICAg CQkJIG9iai0+ZXJyX2RhdGEudWVfY291bnQsIHJhc19ibG9ja19zdHIoaW5mby0+aGVhZC5ibG9j aykpOw0KPiArCX0NCj4gICANCj4gICAJcmV0dXJuIDA7DQo+ICAgfQ0KPiBAQCAtNzAyLDcgKzcx Myw3IEBAIGludCBhbWRncHVfcmFzX3F1ZXJ5X2Vycm9yX2NvdW50KHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LA0KPiAgIAkJCS5oZWFkID0gb2JqLT5oZWFkLA0KPiAgIAkJfTsNCj4gICANCj4g LQkJaWYgKGFtZGdwdV9yYXNfZXJyb3JfcXVlcnkoYWRldiwgJmluZm8pKQ0KPiArCQlpZiAoYW1k Z3B1X3Jhc19lcnJvcl9xdWVyeShhZGV2LCAmaW5mbywgdHJ1ZSkpDQo+ICAgCQkJcmV0dXJuIC1F SU5WQUw7DQo+ICAgDQo+ICAgCQlkYXRhLmNlX2NvdW50ICs9IGluZm8uY2VfY291bnQ7DQo+IEBA IC0xNzE4LDMgKzE3MjksMTAgQEAgaW50IGFtZGdwdV9yYXNfZmluaShzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldikNCj4gICANCj4gICAJcmV0dXJuIDA7DQo+ICAgfQ0KPiArDQo+ICt2b2lkIGFt ZGdwdV9yYXNfZ2xvYmFsX3Jhc19pc3Ioc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+ICt7 DQo+ICsJaWYgKGF0b21pY19jbXB4Y2hnKCZhbWRncHVfcmFzX2luX2ludHIsIDAsIDEpID09IDAp IHsNCj4gKwkJRFJNX1dBUk4oIlJBUyBldmVudCBvZiB0eXBlIEVSUkVWRU5UX0FUSFVCX0lOVEVS UlVQVCBkZXRlY3RlZCEgU3RvcHBpbmcgYWxsIEdQVSBqb2JzLlxuIik7DQo+ICsJfQ0KPiArfQ0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5oIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5oDQo+IGluZGV4IDVhMGRmNzMu LmMwZTIyYWYgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9yYXMuaA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmFzLmgN Cj4gQEAgLTU4Nyw3ICs1ODcsNyBAQCB2b2lkIGFtZGdwdV9yYXNfZGVidWdmc19yZW1vdmUoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+ICAgCQlzdHJ1Y3QgcmFzX2NvbW1vbl9pZiAqaGVh ZCk7DQo+ICAgDQo+ICAgaW50IGFtZGdwdV9yYXNfZXJyb3JfcXVlcnkoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsDQo+IC0JCXN0cnVjdCByYXNfcXVlcnlfaWYgKmluZm8pOw0KPiArCQlzdHJ1 Y3QgcmFzX3F1ZXJ5X2lmICppbmZvLCBib29sIHByaW50KTsNCj4gICANCj4gICBpbnQgYW1kZ3B1 X3Jhc19lcnJvcl9pbmplY3Qoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+ICAgCQlzdHJ1 Y3QgcmFzX2luamVjdF9pZiAqaW5mbyk7DQo+IEBAIC02MDAsNCArNjAwLDE0IEBAIGludCBhbWRn cHVfcmFzX2ludGVycnVwdF9yZW1vdmVfaGFuZGxlcihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwNCj4gICANCj4gICBpbnQgYW1kZ3B1X3Jhc19pbnRlcnJ1cHRfZGlzcGF0Y2goc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsDQo+ICAgCQlzdHJ1Y3QgcmFzX2Rpc3BhdGNoX2lmICppbmZvKTsN Cj4gKw0KPiArZXh0ZXJuIGF0b21pY190IGFtZGdwdV9yYXNfaW5faW50cjsNCj4gKw0KPiArc3Rh dGljIGlubGluZSBib29sIGFtZGdwdV9yYXNfaW50cl90cmlnZ2VyZWQodm9pZCkNCj4gK3sNCj4g KwlyZXR1cm4gISFhdG9taWNfcmVhZCgmYW1kZ3B1X3Jhc19pbl9pbnRyKTsNCj4gK30NCj4gKw0K PiArdm9pZCBhbWRncHVfcmFzX2dsb2JhbF9yYXNfaXNyKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2KTsNCj4gKw0KPiAgICNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvZ2Z4X3Y5XzAuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OV8w LmMNCj4gaW5kZXggYjJjODZhMC4uZTdhODNmNiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvZ2Z4X3Y5XzAuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9nZnhfdjlfMC5jDQo+IEBAIC01NjY5LDEwICs1NjY5LDEyIEBAIHN0YXRpYyBpbnQgZ2Z4 X3Y5XzBfcHJvY2Vzc19yYXNfZGF0YV9jYihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCj4g ICAJCXN0cnVjdCBhbWRncHVfaXZfZW50cnkgKmVudHJ5KQ0KPiAgIHsNCj4gICAJLyogVE9ETyB1 ZSB3aWxsIHRyaWdnZXIgYW4gaW50ZXJydXB0LiAqLw0KPiAtCWtnZDJrZmRfc2V0X3NyYW1fZWNj X2ZsYWcoYWRldi0+a2ZkLmRldik7DQo+IC0JaWYgKGFkZXYtPmdmeC5mdW5jcy0+cXVlcnlfcmFz X2Vycm9yX2NvdW50KQ0KPiAtCQlhZGV2LT5nZnguZnVuY3MtPnF1ZXJ5X3Jhc19lcnJvcl9jb3Vu dChhZGV2LCBlcnJfZGF0YSk7DQo+IC0JYW1kZ3B1X3Jhc19yZXNldF9ncHUoYWRldiwgMCk7DQo+ ICsJaWYgKCFhbWRncHVfcmFzX2lzX3N1cHBvcnRlZChhZGV2LCBBTURHUFVfUkFTX0JMT0NLX19H RlgpKSB7DQo+ICsJCWtnZDJrZmRfc2V0X3NyYW1fZWNjX2ZsYWcoYWRldi0+a2ZkLmRldik7DQo+ ICsJCWlmIChhZGV2LT5nZnguZnVuY3MtPnF1ZXJ5X3Jhc19lcnJvcl9jb3VudCkNCj4gKwkJCWFk ZXYtPmdmeC5mdW5jcy0+cXVlcnlfcmFzX2Vycm9yX2NvdW50KGFkZXYsIGVycl9kYXRhKTsNCj4g KwkJYW1kZ3B1X3Jhc19yZXNldF9ncHUoYWRldiwgMCk7DQo+ICsJfQ0KPiAgIAlyZXR1cm4gQU1E R1BVX1JBU19TVUNDRVNTOw0KPiAgIH0NCj4gICANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2dtY192OV8wLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9n bWNfdjlfMC5jDQo+IGluZGV4IDQzYjRmYmMuLjg3YTY2YzIgMTAwNjQ0DQo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192OV8wLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvZ21jX3Y5XzAuYw0KPiBAQCAtMjQzLDE4ICsyNDMsMjAgQEAgc3RhdGljIGlu dCBnbWNfdjlfMF9wcm9jZXNzX3Jhc19kYXRhX2NiKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LA0KPiAgIAkJc3RydWN0IHJhc19lcnJfZGF0YSAqZXJyX2RhdGEsDQo+ICAgCQlzdHJ1Y3QgYW1k Z3B1X2l2X2VudHJ5ICplbnRyeSkNCj4gICB7DQo+IC0Ja2dkMmtmZF9zZXRfc3JhbV9lY2NfZmxh ZyhhZGV2LT5rZmQuZGV2KTsNCj4gLQlpZiAoYWRldi0+dW1jLmZ1bmNzLT5xdWVyeV9yYXNfZXJy b3JfY291bnQpDQo+IC0JCWFkZXYtPnVtYy5mdW5jcy0+cXVlcnlfcmFzX2Vycm9yX2NvdW50KGFk ZXYsIGVycl9kYXRhKTsNCj4gLQkvKiB1bWMgcXVlcnlfcmFzX2Vycm9yX2FkZHJlc3MgaXMgYWxz byByZXNwb25zaWJsZSBmb3IgY2xlYXJpbmcNCj4gLQkgKiBlcnJvciBzdGF0dXMNCj4gLQkgKi8N Cj4gLQlpZiAoYWRldi0+dW1jLmZ1bmNzLT5xdWVyeV9yYXNfZXJyb3JfYWRkcmVzcykNCj4gLQkJ YWRldi0+dW1jLmZ1bmNzLT5xdWVyeV9yYXNfZXJyb3JfYWRkcmVzcyhhZGV2LCBlcnJfZGF0YSk7 DQo+ICsJaWYgKCFhbWRncHVfcmFzX2lzX3N1cHBvcnRlZChhZGV2LCBBTURHUFVfUkFTX0JMT0NL X19HRlgpKSB7DQo+ICsJCWtnZDJrZmRfc2V0X3NyYW1fZWNjX2ZsYWcoYWRldi0+a2ZkLmRldik7 DQo+ICsJCWlmIChhZGV2LT51bWMuZnVuY3MtPnF1ZXJ5X3Jhc19lcnJvcl9jb3VudCkNCj4gKwkJ CWFkZXYtPnVtYy5mdW5jcy0+cXVlcnlfcmFzX2Vycm9yX2NvdW50KGFkZXYsIGVycl9kYXRhKTsN Cj4gKwkJLyogdW1jIHF1ZXJ5X3Jhc19lcnJvcl9hZGRyZXNzIGlzIGFsc28gcmVzcG9uc2libGUg Zm9yIGNsZWFyaW5nDQo+ICsJCSAqIGVycm9yIHN0YXR1cw0KPiArCQkgKi8NCj4gKwkJaWYgKGFk ZXYtPnVtYy5mdW5jcy0+cXVlcnlfcmFzX2Vycm9yX2FkZHJlc3MpDQo+ICsJCQlhZGV2LT51bWMu ZnVuY3MtPnF1ZXJ5X3Jhc19lcnJvcl9hZGRyZXNzKGFkZXYsIGVycl9kYXRhKTsNCj4gICANCj4g LQkvKiBvbmx5IHVuY29ycmVjdGFibGUgZXJyb3IgbmVlZHMgZ3B1IHJlc2V0ICovDQo+IC0JaWYg KGVycl9kYXRhLT51ZV9jb3VudCkNCj4gLQkJYW1kZ3B1X3Jhc19yZXNldF9ncHUoYWRldiwgMCk7 DQo+ICsJCS8qIG9ubHkgdW5jb3JyZWN0YWJsZSBlcnJvciBuZWVkcyBncHUgcmVzZXQgKi8NCj4g KwkJaWYgKGVycl9kYXRhLT51ZV9jb3VudCkNCj4gKwkJCWFtZGdwdV9yYXNfcmVzZXRfZ3B1KGFk ZXYsIDApOw0KPiArCX0NCj4gICANCj4gICAJcmV0dXJuIEFNREdQVV9SQVNfU1VDQ0VTUzsNCj4g ICB9DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9uYmlvX3Y3XzQu YyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L25iaW9fdjdfNC5jDQo+IGluZGV4IDM2N2Y5 ZDYuLjU0NTk5MGMgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L25i aW9fdjdfNC5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L25iaW9fdjdfNC5j DQo+IEBAIC0zMCw2ICszMCw3IEBADQo+ICAgI2luY2x1ZGUgIm5iaW8vbmJpb183XzRfMF9zbW4u aCINCj4gICAjaW5jbHVkZSAiaXZzcmNpZC9uYmlvL2lycXNyY3NfbmJpZl83XzQuaCINCj4gICAj aW5jbHVkZSA8dWFwaS9saW51eC9rZmRfaW9jdGwuaD4NCj4gKyNpbmNsdWRlICJhbWRncHVfcmFz LmgiDQo+ICAgDQo+ICAgI2RlZmluZSBzbW5OQklGX01HQ0dfQ1RSTF9MQ0xLCTB4MTAxM2EyMWMN Cj4gICANCj4gQEAgLTMyOSw2ICszMzAsOCBAQCBzdGF0aWMgdm9pZCBuYmlvX3Y3XzRfaGFuZGxl X3Jhc19jb250cm9sbGVyX2ludHJfbm9fYmlmcmluZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZQ0KPiAg IAkJCQkJCUJJRl9ET09SQkVMTF9JTlRfQ05UTCwNCj4gICAJCQkJCQlSQVNfQ05UTFJfSU5URVJS VVBUX0NMRUFSLCAxKTsNCj4gICAJCVdSRUczMl9TT0MxNShOQklPLCAwLCBtbUJJRl9ET09SQkVM TF9JTlRfQ05UTCwgYmlmX2Rvb3JiZWxsX2ludHJfY250bCk7DQo+ICsNCj4gKwkJYW1kZ3B1X3Jh c19nbG9iYWxfcmFzX2lzcihhZGV2KTsNCj4gICAJfQ0KPiAgIH0NCj4gICANCj4gQEAgLTM0NCw2 ICszNDcsOCBAQCBzdGF0aWMgdm9pZCBuYmlvX3Y3XzRfaGFuZGxlX3Jhc19lcnJfZXZlbnRfYXRo dWJfaW50cl9ub19iaWZyaW5nKHN0cnVjdCBhbWRncHVfZA0KPiAgIAkJCQkJCUJJRl9ET09SQkVM TF9JTlRfQ05UTCwNCj4gICAJCQkJCQlSQVNfQVRIVUJfRVJSX0VWRU5UX0lOVEVSUlVQVF9DTEVB UiwgMSk7DQo+ICAgCQlXUkVHMzJfU09DMTUoTkJJTywgMCwgbW1CSUZfRE9PUkJFTExfSU5UX0NO VEwsIGJpZl9kb29yYmVsbF9pbnRyX2NudGwpOw0KPiArDQo+ICsJCWFtZGdwdV9yYXNfZ2xvYmFs X3Jhc19pc3IoYWRldik7DQo+ICAgCX0NCj4gICB9DQo+ICAgDQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3Y0XzAuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L3NkbWFfdjRfMC5jDQo+IGluZGV4IDk1NjQzMmYuLjQzOGU1MDQgMTAwNjQ0DQo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjRfMC5jDQo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjRfMC5jDQo+IEBAIC0xOTcyLDI0ICsxOTcyLDI2 IEBAIHN0YXRpYyBpbnQgc2RtYV92NF8wX3Byb2Nlc3NfcmFzX2RhdGFfY2Ioc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsDQo+ICAgCXVpbnQzMl90IGVycl9zb3VyY2U7DQo+ICAgCWludCBpbnN0 YW5jZTsNCj4gICANCj4gLQlpbnN0YW5jZSA9IHNkbWFfdjRfMF9pcnFfaWRfdG9fc2VxKGVudHJ5 LT5jbGllbnRfaWQpOw0KPiAtCWlmIChpbnN0YW5jZSA8IDApDQo+IC0JCXJldHVybiAwOw0KPiAr CWlmICghYW1kZ3B1X3Jhc19pc19zdXBwb3J0ZWQoYWRldiwgQU1ER1BVX1JBU19CTE9DS19fR0ZY KSkgew0KPiArCQlpbnN0YW5jZSA9IHNkbWFfdjRfMF9pcnFfaWRfdG9fc2VxKGVudHJ5LT5jbGll bnRfaWQpOw0KPiArCQlpZiAoaW5zdGFuY2UgPCAwKQ0KPiArCQkJcmV0dXJuIDA7DQo+ICAgDQo+ IC0Jc3dpdGNoIChlbnRyeS0+c3JjX2lkKSB7DQo+IC0JY2FzZSBTRE1BMF80XzBfX1NSQ0lEX19T RE1BX1NSQU1fRUNDOg0KPiAtCQllcnJfc291cmNlID0gMDsNCj4gLQkJYnJlYWs7DQo+IC0JY2Fz ZSBTRE1BMF80XzBfX1NSQ0lEX19TRE1BX0VDQzoNCj4gLQkJZXJyX3NvdXJjZSA9IDE7DQo+IC0J CWJyZWFrOw0KPiAtCWRlZmF1bHQ6DQo+IC0JCXJldHVybiAwOw0KPiAtCX0NCj4gKwkJc3dpdGNo IChlbnRyeS0+c3JjX2lkKSB7DQo+ICsJCWNhc2UgU0RNQTBfNF8wX19TUkNJRF9fU0RNQV9TUkFN X0VDQzoNCj4gKwkJCWVycl9zb3VyY2UgPSAwOw0KPiArCQkJYnJlYWs7DQo+ICsJCWNhc2UgU0RN QTBfNF8wX19TUkNJRF9fU0RNQV9FQ0M6DQo+ICsJCQllcnJfc291cmNlID0gMTsNCj4gKwkJCWJy ZWFrOw0KPiArCQlkZWZhdWx0Og0KPiArCQkJcmV0dXJuIDA7DQo+ICsJCX0NCj4gICANCj4gLQlr Z2Qya2ZkX3NldF9zcmFtX2VjY19mbGFnKGFkZXYtPmtmZC5kZXYpOw0KPiArCQlrZ2Qya2ZkX3Nl dF9zcmFtX2VjY19mbGFnKGFkZXYtPmtmZC5kZXYpOw0KPiAgIA0KPiAtCWFtZGdwdV9yYXNfcmVz ZXRfZ3B1KGFkZXYsIDApOw0KPiArCQlhbWRncHVfcmFzX3Jlc2V0X2dwdShhZGV2LCAwKTsNCj4g Kwl9DQo+ICAgDQo+ICAgCXJldHVybiBBTURHUFVfUkFTX1NVQ0NFU1M7DQo+ICAgfQ0KX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5n IGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4