From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Grodzovsky, Andrey" Subject: Re: [PATCH 1/2] dmr/amdgpu: Avoid HW GPU reset for RAS. Date: Wed, 28 Aug 2019 21:30:17 +0000 Message-ID: <80a7d72b-bb71-98fe-e277-4f71b93414c8@amd.com> References: <1567022426-6612-1-git-send-email-andrey.grodzovsky@amd.com> <5cf4dfa5-705c-9c10-8ca1-bf9cc21c1529@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <5cf4dfa5-705c-9c10-8ca1-bf9cc21c1529-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US Content-ID: <262B52606AE66B4EA7C971624D1485E6-asWib9pRmPqcE4WynfumptQqCkab/8FMAL8bYrjMMd8@public.gmane.org> 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: "Kuehling, Felix" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" Cc: "alexdeucher-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org" , "ckoenig.leichtzumerken-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org" , "Zhang, Hawking" DQpPbiA4LzI4LzE5IDU6MTggUE0sIEt1ZWhsaW5nLCBGZWxpeCB3cm90ZToNCj4gT24gMjAxOS0w OC0yOCA0OjAwIHAubS4sIEFuZHJleSBHcm9kem92c2t5IHdyb3RlOg0KPj4gUHJvYmxlbToNCj4+ IFVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucywgd2hlbiBzb21lIElQIGJvY2tzIHRha2UgYSBSQVMg ZXJyb3IsDQo+PiB3ZSBjYW4gZ2V0IGludG8gYSBzaXR1YXRpb24gd2hlcmUgYSBHUFUgcmVzZXQg aXMgbm90IHBvc3NpYmxlDQo+PiBkdWUgdG8gaXNzdWVzIGluIFJBUyBpbiBTTVUvUFNQLg0KPj4N Cj4+IFRlbXBvcmFyeSBmaXggdW50aWwgcHJvcGVyIHNvbHV0aW9uIGluIFBTUC9TTVUgaXMgcmVh ZHk6DQo+PiBXaGVuIHVuY29ycmVjdGFibGUgZXJyb3IgaGFwcGVucyB0aGUgREYgd2lsbCB1bmNv bmRpdGlvbmFsbHkNCj4+IGJyb2FkY2FzdCBlcnJvciBldmVudCBwYWNrZXRzIHRvIGFsbCBpdHMg Y2xpZW50cy9zbGF2ZSB1cG9uDQo+PiByZWNlaXZpbmcgZmF0YWwgZXJyb3IgZXZlbnQgYW5kIGZy ZWV6ZSBhbGwgaXRzIG91dGJvdW5kIHF1ZXVlcywNCj4+IGVycl9ldmVudF9hdGh1YiBpbnRlcnJ1 cHQgIHdpbGwgYmUgdHJpZ2dlcmVkLg0KPj4gSW4gc3VjaCBjYXNlIGFuZCB3ZSB1c2UgdGhpcyBp bnRlcnJ1cHQNCj4+IHRvIGlzc3VlIEdQVSByZXNldC4gVEhlIEdQVSByZXNldCBjb2RlIGlzIG1v ZGlmaWVkIGZvciBzdWNoIGNhc2UgdG8gYXZvaWQgSFcNCj4+IHJlc2V0LCBvbmx5IHN0b3BzIHNj aGVkdWxlcnMsIGRlYXRjaGVzIGFsbCBpbiBwcm9ncmVzcyBhbmQgbm90IHlldCBzY2hlZHVsZWQN Cj4+IGpvYidzIGZlbmNlcywgc2V0IGVycm9yIGNvZGUgb24gdGhlbSBhbmQgc2lnbmFscy4NCj4+ IEFsc28gcmVqZWN0IGFueSBuZXcgaW5jb21pbmcgam9iIHN1Ym1pc3Npb25zIGZyb20gdXNlciBz cGFjZS4NCj4+IEFsbCB0aGlzIGlzIGRvbmUgdG8gbm90aWZ5IHRoZSBhcHBsaWNhdGlvbnMgb2Yg dGhlIHByb2JsZW0uDQo+Pg0KPj4gU2lnbmVkLW9mZi1ieTogQW5kcmV5IEdyb2R6b3Zza3kgPGFu ZHJleS5ncm9kem92c2t5QGFtZC5jb20+DQo+PiAtLS0NCj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9jcy5jICAgICB8ICA0ICsrDQo+PiAgICBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMgfCA5OCArKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0NCj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYyAgICB8 ICA1ICsrDQo+PiAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfa21zLmMgICAg fCAgNiArKw0KPj4gICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5jICAg IHwgMzAgKysrKysrKy0tDQo+PiAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf cmFzLmggICAgfCAxMiArKystDQo+PiAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhf djlfMC5jICAgICAgfCAxMCArLS0NCj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dt Y192OV8wLmMgICAgICB8IDI0ICsrKystLS0tDQo+PiAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9uYmlvX3Y3XzQuYyAgICAgfCAgNSArKw0KPj4gICAgZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvc2RtYV92NF8wLmMgICAgIHwgMzIgKysrKystLS0tLQ0KPj4gICAgMTAgZmlsZXMgY2hh bmdlZCwgMTY0IGluc2VydGlvbnMoKyksIDYyIGRlbGV0aW9ucygtKQ0KPj4NCj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jDQo+PiBpbmRleCA5ZGE2ODFlLi4zMDBhZGI4IDEw MDY0NA0KPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMNCj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jDQo+PiBAQCAtMzgs NiArMzgsNyBAQA0KPj4gICAgI2luY2x1ZGUgImFtZGdwdV9nbWMuaCINCj4+ICAgICNpbmNsdWRl ICJhbWRncHVfZ2VtLmgiDQo+PiAgICAjaW5jbHVkZSAiYW1kZ3B1X2Rpc3BsYXkuaCINCj4+ICsj aW5jbHVkZSAiYW1kZ3B1X3Jhcy5oIg0KPj4gICAgDQo+PiAgICAjaWYgZGVmaW5lZChIQVZFX0RS TV9GUkVFX0xBUkdFKQ0KPj4gICAgI2RlZmluZSBrdmZyZWUgZHJtX2ZyZWVfbGFyZ2UNCj4+IEBA IC0xNDYxLDYgKzE0NjIsOSBAQCBpbnQgYW1kZ3B1X2NzX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlscCkNCj4+ICAgIAlib29sIHJl c2VydmVkX2J1ZmZlcnMgPSBmYWxzZTsNCj4+ICAgIAlpbnQgaSwgcjsNCj4+ICAgIA0KPj4gKwlp ZiAoYW1kZ3B1X3Jhc19pbnRyX3RyaWdnZXJlZCgpKQ0KPj4gKwkJcmV0dXJuIC1FSFdQT0lTT047 DQo+PiArDQo+PiAgICAJaWYgKCFhZGV2LT5hY2NlbF93b3JraW5nKQ0KPj4gICAgCQlyZXR1cm4g LUVCVVNZOw0KPj4gICAgDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2RldmljZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rl dmljZS5jDQo+PiBpbmRleCAwN2E0YmEwLi4zZWNlZTEwIDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jDQo+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMNCj4+IEBAIC0zNzM0LDEwICszNzM0LDEw IEBAIHN0YXRpYyBib29sIGFtZGdwdV9kZXZpY2VfbG9ja19hZGV2KHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LCBib29sIHRyeWxvY2spDQo+PiAgICAJcmV0dXJuIHRydWU7DQo+PiAgICB9DQo+ PiAgICANCj4+IC1zdGF0aWMgdm9pZCBhbWRncHVfZGV2aWNlX3VubG9ja19hZGV2KHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2KQ0KPj4gK3N0YXRpYyB2b2lkIGFtZGdwdV9kZXZpY2VfdW5sb2Nr X2FkZXYoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGJvb2wgc2tpcF9rZmQpDQo+PiAgICB7 DQo+PiAgICAJLyp1bmxvY2sga2ZkOiBTUklPViB3b3VsZCBkbyBpdCBzZXBhcmF0ZWx5ICovDQo+ PiAtCWlmICghYW1kZ3B1X3NyaW92X3ZmKGFkZXYpKQ0KPj4gKwlpZiAoIWFtZGdwdV9zcmlvdl92 ZihhZGV2KSAmJiAhc2tpcF9rZmQpDQo+PiAgICAgICAgICAgICAgICAgICAgYW1kZ3B1X2FtZGtm ZF9wb3N0X3Jlc2V0KGFkZXYpOw0KPj4gICAgCWFtZGdwdV92Zl9lcnJvcl90cmFuc19hbGwoYWRl dik7DQo+PiAgICAJYWRldi0+bXAxX3N0YXRlID0gUFBfTVAxX1NUQVRFX05PTkU7DQo+PiBAQCAt Mzc0Niw2ICszNzQ2LDQ0IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV9kZXZpY2VfdW5sb2NrX2FkZXYo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+PiAgICB9DQo+PiAgICANCj4+ICAgIA0KPj4g KyNkZWZpbmUgdG9fZHJtX3NjaGVkX2pvYihzY2hlZF9qb2IpCQlcDQo+PiArCQljb250YWluZXJf b2YoKHNjaGVkX2pvYiksIHN0cnVjdCBkcm1fc2NoZWRfam9iLCBxdWV1ZV9ub2RlKQ0KPj4gKw0K Pj4gK3N0YXRpYyB2b2lkIGFtZGdwdV9zdG9wX2FsbF9qb2JzX29uX3NjaGVkKHN0cnVjdCBkcm1f Z3B1X3NjaGVkdWxlciAqc2NoZWQpDQo+PiArew0KPj4gKwlzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAq c19qb2I7DQo+PiArCXN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICpzX2VudGl0eSA9IE5VTEw7DQo+ PiArCWludCBpOw0KPj4gKw0KPj4gKwkvKiBTaWduYWwgYWxsIGpvYnMgbm90IHlldCBzY2hlZHVs ZWQgKi8NCj4+ICsJZm9yIChpID0gRFJNX1NDSEVEX1BSSU9SSVRZX01BWCAtIDE7IGkgPj0gRFJN X1NDSEVEX1BSSU9SSVRZX01JTjsgaS0tKSB7DQo+PiArCQlzdHJ1Y3QgZHJtX3NjaGVkX3JxICpy cSA9ICZzY2hlZC0+c2NoZWRfcnFbaV07DQo+PiArDQo+PiArCQlpZiAoIXJxKQ0KPj4gKwkJCWNv bnRpbnVlOw0KPj4gKw0KPj4gKwkJc3Bpbl9sb2NrKCZycS0+bG9jayk7DQo+PiArCQlsaXN0X2Zv cl9lYWNoX2VudHJ5KHNfZW50aXR5LCAmcnEtPmVudGl0aWVzLCBsaXN0KSB7DQo+PiArCQkJd2hp bGUgKChzX2pvYiA9IHRvX2RybV9zY2hlZF9qb2Ioc3BzY19xdWV1ZV9wb3AoJnNfZW50aXR5LT5q b2JfcXVldWUpKSkpIHsNCj4+ICsJCQkJc3RydWN0IGRybV9zY2hlZF9mZW5jZSAqc19mZW5jZSA9 IHNfam9iLT5zX2ZlbmNlOw0KPj4gKw0KPj4gKwkJCQlkbWFfZmVuY2Vfc2lnbmFsKCZzX2ZlbmNl LT5zY2hlZHVsZWQpOw0KPj4gKwkJCQlkbWFfZmVuY2Vfc2V0X2Vycm9yKCZzX2ZlbmNlLT5maW5p c2hlZCwgLUVIV1BPSVNPTik7DQo+PiArCQkJCWRtYV9mZW5jZV9zaWduYWwoJnNfZmVuY2UtPmZp bmlzaGVkKTsNCj4+ICsJCQl9DQo+PiArCQl9DQo+PiArCQlzcGluX3VubG9jaygmcnEtPmxvY2sp Ow0KPj4gKwl9DQo+PiArDQo+PiArCS8qIFNpZ25hbCBhbGwgam9icyBhbHJlYWR5IHNjaGVkdWxl ZCB0byBIVyAqLw0KPj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHNfam9iLCAmc2NoZWQtPnJpbmdf bWlycm9yX2xpc3QsIG5vZGUpIHsNCj4+ICsJCXN0cnVjdCBkcm1fc2NoZWRfZmVuY2UgKnNfZmVu Y2UgPSBzX2pvYi0+c19mZW5jZTsNCj4+ICsNCj4+ICsJCWRtYV9mZW5jZV9zZXRfZXJyb3IoJnNf ZmVuY2UtPmZpbmlzaGVkLCAtRUhXUE9JU09OKTsNCj4+ICsJCWRtYV9mZW5jZV9zaWduYWwoJnNf ZmVuY2UtPmZpbmlzaGVkKTsNCj4+ICsJfQ0KPj4gK30NCj4+ICsNCj4+ICAgIC8qKg0KPj4gICAg ICogYW1kZ3B1X2RldmljZV9ncHVfcmVjb3ZlciAtIHJlc2V0IHRoZSBhc2ljIGFuZCByZWNvdmVy IHNjaGVkdWxlcg0KPj4gICAgICoNCj4+IEBAIC0zNzY1LDExICszODAzLDEyIEBAIGludCBhbWRn cHVfZGV2aWNlX2dwdV9yZWNvdmVyKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPj4gICAg CXN0cnVjdCBhbWRncHVfaGl2ZV9pbmZvICpoaXZlID0gTlVMTDsNCj4+ICAgIAlzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqdG1wX2FkZXYgPSBOVUxMOw0KPj4gICAgCWludCBpLCByID0gMDsNCj4+ICsJ Ym9vbCBpbl9yYXNfaW50ciA9IGFtZGdwdV9yYXNfaW50cl90cmlnZ2VyZWQoKTsNCj4+ICAgIA0K Pj4gICAgCW5lZWRfZnVsbF9yZXNldCA9IGpvYl9zaWduYWxlZCA9IGZhbHNlOw0KPj4gICAgCUlO SVRfTElTVF9IRUFEKCZkZXZpY2VfbGlzdCk7DQo+PiAgICANCj4+IC0JZGV2X2luZm8oYWRldi0+ ZGV2LCAiR1BVIHJlc2V0IGJlZ2luIVxuIik7DQo+PiArCWRldl9pbmZvKGFkZXYtPmRldiwgIkdQ VSAlcyBiZWdpbiFcbiIsIGluX3Jhc19pbnRyID8gImpvYnMgc3RvcCI6InJlc2V0Iik7DQo+PiAg ICANCj4+ICAgIAljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmFkZXYtPmRlbGF5ZWRfaW5pdF93 b3JrKTsNCj4+ICAgIA0KPj4gQEAgLTM3OTksNyArMzgzOCw3IEBAIGludCBhbWRncHVfZGV2aWNl X2dwdV9yZWNvdmVyKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPj4gICAgCS8qIEJ1aWxk IGxpc3Qgb2YgZGV2aWNlcyB0byByZXNldCAqLw0KPj4gICAgCWlmICAoYWRldi0+Z21jLnhnbWku bnVtX3BoeXNpY2FsX25vZGVzID4gMSkgew0KPj4gICAgCQlpZiAoIWhpdmUpIHsNCj4+IC0JCQlh bWRncHVfZGV2aWNlX3VubG9ja19hZGV2KGFkZXYpOw0KPj4gKwkJCWFtZGdwdV9kZXZpY2VfdW5s b2NrX2FkZXYoYWRldiwgZmFsc2UpOw0KPiBJcyB0aGVyZSBhIHJlYXNvbiB3aHkgeW91J3JlIG5v dCB1c2luZyBpbl9yYXNfaW50ciBoZXJlIHRvIGNvbnRyb2wgS0ZEDQo+IHBvc3QtcmVzZXQ/DQo+ DQo+IFJlZ2FyZHMsDQo+ICAgwqAgRmVsaXgNCg0KSXQncyBhIGZhaWx1cmUgY29kZSBwYXRoIHNv IEkgYW0gbm90IHN1cmUgd2hhdCB0byBwdXQgaGVyZS4NCg0KSSBjYW4gc2tpcCBLRkQgYWN0aXZh dGlvbiBoZXJlIHRvbyBJIGd1ZXNzLg0KDQpBbmRyZXkNCg0KDQo+DQo+DQo+PiAgICAJCQlyZXR1 cm4gLUVOT0RFVjsNCj4+ICAgIAkJfQ0KPj4gICAgDQo+PiBAQCAtMzgyNCw3ICszODYzLDcgQEAg aW50IGFtZGdwdV9kZXZpY2VfZ3B1X3JlY292ZXIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs DQo+PiAgICAJLyogYmxvY2sgYWxsIHNjaGVkdWxlcnMgYW5kIHJlc2V0IGdpdmVuIGpvYidzIHJp bmcgKi8NCj4+ICAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRtcF9hZGV2LCBkZXZpY2VfbGlzdF9o YW5kbGUsIGdtYy54Z21pLmhlYWQpIHsNCj4+ICAgIAkJLyogZGlzYWJsZSByYXMgb24gQUxMIElQ cyAqLw0KPj4gLQkJaWYgKGFtZGdwdV9kZXZpY2VfaXBfbmVlZF9mdWxsX3Jlc2V0KHRtcF9hZGV2 KSkNCj4+ICsJCWlmICghaW5fcmFzX2ludHIgJiYgYW1kZ3B1X2RldmljZV9pcF9uZWVkX2Z1bGxf cmVzZXQodG1wX2FkZXYpKQ0KPj4gICAgCQkJYW1kZ3B1X3Jhc19zdXNwZW5kKHRtcF9hZGV2KTsN Cj4+ICAgIA0KPj4gICAgCQlmb3IgKGkgPSAwOyBpIDwgQU1ER1BVX01BWF9SSU5HUzsgKytpKSB7 DQo+PiBAQCAtMzgzNCwxMCArMzg3MywxNiBAQCBpbnQgYW1kZ3B1X2RldmljZV9ncHVfcmVjb3Zl cihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCj4+ICAgIAkJCQljb250aW51ZTsNCj4+ICAg IA0KPj4gICAgCQkJZHJtX3NjaGVkX3N0b3AoJnJpbmctPnNjaGVkLCBqb2IgPyAmam9iLT5iYXNl IDogTlVMTCk7DQo+PiArDQo+PiArCQkJaWYgKGluX3Jhc19pbnRyKQ0KPj4gKwkJCQlhbWRncHVf c3RvcF9hbGxfam9ic19vbl9zY2hlZCgmcmluZy0+c2NoZWQpOw0KPj4gICAgCQl9DQo+PiAgICAJ fQ0KPj4gICAgDQo+PiAgICANCj4+ICsJaWYgKGluX3Jhc19pbnRyKQ0KPj4gKwkJZ290byBza2lw X2h3X3Jlc2V0Ow0KPj4gKw0KPj4gICAgCS8qDQo+PiAgICAJICogTXVzdCBjaGVjayBndWlsdHkg c2lnbmFsIGhlcmUgc2luY2UgYWZ0ZXIgdGhpcyBwb2ludCBhbGwgb2xkDQo+PiAgICAJICogSFcg ZmVuY2VzIGFyZSBmb3JjZSBzaWduYWxlZC4NCj4+IEBAIC0zOTAyLDM0ICszOTQ3LDM3IEBAIGlu dCBhbWRncHVfZGV2aWNlX2dwdV9yZWNvdmVyKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0K Pj4gICAgDQo+PiAgICAJLyogUG9zdCBBU0lDIHJlc2V0IGZvciBhbGwgZGV2cyAuKi8NCj4+ICAg IAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRtcF9hZGV2LCBkZXZpY2VfbGlzdF9oYW5kbGUsIGdtYy54 Z21pLmhlYWQpIHsNCj4+IC0JCWZvciAoaSA9IDA7IGkgPCBBTURHUFVfTUFYX1JJTkdTOyArK2kp IHsNCj4+IC0JCQlzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcgPSB0bXBfYWRldi0+cmluZ3NbaV07 DQo+PiAgICANCj4+IC0JCQlpZiAoIXJpbmcgfHwgIXJpbmctPnNjaGVkLnRocmVhZCkNCj4+IC0J CQkJY29udGludWU7DQo+PiArCQlpZiAoIWluX3Jhc19pbnRyKSB7DQo+PiArCQkJZm9yIChpID0g MDsgaSA8IEFNREdQVV9NQVhfUklOR1M7ICsraSkgew0KPj4gKwkJCQlzdHJ1Y3QgYW1kZ3B1X3Jp bmcgKnJpbmcgPSB0bXBfYWRldi0+cmluZ3NbaV07DQo+PiAgICANCj4+IC0JCQkvKiBObyBwb2lu dCB0byByZXN1Ym1pdCBqb2JzIGlmIHdlIGRpZG4ndCBIVyByZXNldCovDQo+PiAtCQkJaWYgKCF0 bXBfYWRldi0+YXNpY19yZXNldF9yZXMgJiYgIWpvYl9zaWduYWxlZCkNCj4+IC0JCQkJZHJtX3Nj aGVkX3Jlc3VibWl0X2pvYnMoJnJpbmctPnNjaGVkKTsNCj4+ICsJCQkJaWYgKCFyaW5nIHx8ICFy aW5nLT5zY2hlZC50aHJlYWQpDQo+PiArCQkJCQljb250aW51ZTsNCj4+ICAgIA0KPj4gLQkJCWRy bV9zY2hlZF9zdGFydCgmcmluZy0+c2NoZWQsICF0bXBfYWRldi0+YXNpY19yZXNldF9yZXMpOw0K Pj4gLQkJfQ0KPj4gKwkJCQkvKiBObyBwb2ludCB0byByZXN1Ym1pdCBqb2JzIGlmIHdlIGRpZG4n dCBIVyByZXNldCovDQo+PiArCQkJCWlmICghdG1wX2FkZXYtPmFzaWNfcmVzZXRfcmVzICYmICFq b2Jfc2lnbmFsZWQpDQo+PiArCQkJCQlkcm1fc2NoZWRfcmVzdWJtaXRfam9icygmcmluZy0+c2No ZWQpOw0KPj4gICAgDQo+PiAtCQlpZiAoIWFtZGdwdV9kZXZpY2VfaGFzX2RjX3N1cHBvcnQodG1w X2FkZXYpICYmICFqb2Jfc2lnbmFsZWQpIHsNCj4+IC0JCQlkcm1faGVscGVyX3Jlc3VtZV9mb3Jj ZV9tb2RlKHRtcF9hZGV2LT5kZGV2KTsNCj4+IC0JCX0NCj4+ICsJCQkJZHJtX3NjaGVkX3N0YXJ0 KCZyaW5nLT5zY2hlZCwgIXRtcF9hZGV2LT5hc2ljX3Jlc2V0X3Jlcyk7DQo+PiArCQkJfQ0KPj4g ICAgDQo+PiAtCQl0bXBfYWRldi0+YXNpY19yZXNldF9yZXMgPSAwOw0KPj4gKwkJCWlmICghYW1k Z3B1X2RldmljZV9oYXNfZGNfc3VwcG9ydCh0bXBfYWRldikgJiYgIWpvYl9zaWduYWxlZCkgew0K Pj4gKwkJCQlkcm1faGVscGVyX3Jlc3VtZV9mb3JjZV9tb2RlKHRtcF9hZGV2LT5kZGV2KTsNCj4+ ICsJCQl9DQo+PiAgICANCj4+IC0JCWlmIChyKSB7DQo+PiAtCQkJLyogYmFkIG5ld3MsIGhvdyB0 byB0ZWxsIGl0IHRvIHVzZXJzcGFjZSA/ICovDQo+PiAtCQkJZGV2X2luZm8odG1wX2FkZXYtPmRl diwgIkdQVSByZXNldCglZCkgZmFpbGVkXG4iLCBhdG9taWNfcmVhZCgmYWRldi0+Z3B1X3Jlc2V0 X2NvdW50ZXIpKTsNCj4+IC0JCQlhbWRncHVfdmZfZXJyb3JfcHV0KHRtcF9hZGV2LCBBTURHSU1f RVJST1JfVkZfR1BVX1JFU0VUX0ZBSUwsIDAsIHIpOw0KPj4gLQkJfSBlbHNlIHsNCj4+IC0JCQlk ZXZfaW5mbyh0bXBfYWRldi0+ZGV2LCAiR1BVIHJlc2V0KCVkKSBzdWNjZWVkZWQhXG4iLCBhdG9t aWNfcmVhZCgmYWRldi0+Z3B1X3Jlc2V0X2NvdW50ZXIpKTsNCj4+ICsJCQl0bXBfYWRldi0+YXNp Y19yZXNldF9yZXMgPSAwOw0KPj4gKw0KPj4gKwkJCWlmIChyKSB7DQo+PiArCQkJCS8qIGJhZCBu ZXdzLCBob3cgdG8gdGVsbCBpdCB0byB1c2Vyc3BhY2UgPyAqLw0KPj4gKwkJCQlkZXZfaW5mbyh0 bXBfYWRldi0+ZGV2LCAiR1BVIHJlc2V0KCVkKSBmYWlsZWRcbiIsIGF0b21pY19yZWFkKCZhZGV2 LT5ncHVfcmVzZXRfY291bnRlcikpOw0KPj4gKwkJCQlhbWRncHVfdmZfZXJyb3JfcHV0KHRtcF9h ZGV2LCBBTURHSU1fRVJST1JfVkZfR1BVX1JFU0VUX0ZBSUwsIDAsIHIpOw0KPj4gKwkJCX0gZWxz ZSB7DQo+PiArCQkJCWRldl9pbmZvKHRtcF9hZGV2LT5kZXYsICJHUFUgcmVzZXQoJWQpIHN1Y2Nl ZWRlZCFcbiIsIGF0b21pY19yZWFkKCZhZGV2LT5ncHVfcmVzZXRfY291bnRlcikpOw0KPj4gKwkJ CX0NCj4+ICAgIAkJfQ0KPj4gICAgDQo+PiAtCQlhbWRncHVfZGV2aWNlX3VubG9ja19hZGV2KHRt cF9hZGV2KTsNCj4+ICsJCWFtZGdwdV9kZXZpY2VfdW5sb2NrX2FkZXYodG1wX2FkZXYsIGluX3Jh c19pbnRyKTsNCj4+ICAgIAl9DQo+PiAgICANCj4+ICAgIAlpZiAoaGl2ZSkNCj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMNCj4+IGluZGV4IDE1MWQ3ZjIuLjc1N2ZkNmQg MTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMN Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYw0KPj4gQEAg LTQwLDYgKzQwLDggQEANCj4+ICAgIA0KPj4gICAgI2luY2x1ZGUgImFtZGdwdV9hbWRrZmQuaCIN Cj4+ICAgIA0KPj4gKyNpbmNsdWRlICJhbWRncHVfcmFzLmgiDQo+PiArDQo+PiAgICAvKg0KPj4g ICAgICogS01TIHdyYXBwZXIuDQo+PiAgICAgKiAtIDMuMC4wIC0gaW5pdGlhbCBkcml2ZXINCj4+ IEBAIC0xMTc5LDYgKzExODEsOSBAQCBhbWRncHVfcGNpX3NodXRkb3duKHN0cnVjdCBwY2lfZGV2 ICpwZGV2KQ0KPj4gICAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwY2lfZ2V0X2RydmRhdGEo cGRldik7DQo+PiAgICAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBkZXYtPmRldl9wcml2 YXRlOw0KPj4gICAgDQo+PiArCWlmIChhbWRncHVfcmFzX2ludHJfdHJpZ2dlcmVkKCkpDQo+PiAr CQlyZXR1cm47DQo+PiArDQo+PiAgICAJLyogaWYgd2UgYXJlIHJ1bm5pbmcgaW4gYSBWTSwgbWFr ZSBzdXJlIHRoZSBkZXZpY2UNCj4+ICAgIAkgKiB0b3JuIGRvd24gcHJvcGVybHkgb24gcmVib290 L3NodXRkb3duLg0KPj4gICAgCSAqIHVuZm9ydHVuYXRlbHkgd2UgY2FuJ3QgZGV0ZWN0IGNlcnRh aW4NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfa21z LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfa21zLmMNCj4+IGluZGV4IGRh MjE0M2QuLmNlZDc2NmMgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfa21zLmMNCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9rbXMuYw0KPj4gQEAgLTEwNDYsNiArMTA0NiwxMiBAQCBpbnQgYW1kZ3B1X2RyaXZlcl9vcGVu X2ttcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikN Cj4+ICAgIAkvKiBFbnN1cmUgSUIgdGVzdHMgYXJlIHJ1biBvbiByaW5nICovDQo+PiAgICAJZmx1 c2hfZGVsYXllZF93b3JrKCZhZGV2LT5kZWxheWVkX2luaXRfd29yayk7DQo+PiAgICANCj4+ICsN Cj4+ICsJaWYgKGFtZGdwdV9yYXNfaW50cl90cmlnZ2VyZWQoKSkgew0KPj4gKwkJRFJNX0VSUk9S KCJSQVMgSW50ciB0cmlnZ2VyZWQsIGRldmljZSBkaXNhYmxlZCEhIik7DQo+PiArCQlyZXR1cm4g LUVIV1BPSVNPTjsNCj4+ICsJfQ0KPj4gKw0KPj4gICAgCWZpbGVfcHJpdi0+ZHJpdmVyX3ByaXYg PSBOVUxMOw0KPj4gICAgDQo+PiAgICAJciA9IHBtX3J1bnRpbWVfZ2V0X3N5bmMoZGV2LT5kZXYp Ow0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yYXMu YyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yYXMuYw0KPj4gaW5kZXggMmQ1 ODk3YS4uMDg2ZTZkZiAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9yYXMuYw0KPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X3Jhcy5jDQo+PiBAQCAtMjQsNiArMjQsOCBAQA0KPj4gICAgI2luY2x1ZGUgPGxpbnV4L2RlYnVn ZnMuaD4NCj4+ICAgICNpbmNsdWRlIDxsaW51eC9saXN0Lmg+DQo+PiAgICAjaW5jbHVkZSA8bGlu dXgvbW9kdWxlLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L3JlYm9vdC5oPg0KPj4gKyNpbmNsdWRl IDxsaW51eC9zeXNjYWxscy5oPg0KPj4gICAgI2luY2x1ZGUgImFtZGdwdS5oIg0KPj4gICAgI2lu Y2x1ZGUgImFtZGdwdV9yYXMuaCINCj4+ICAgICNpbmNsdWRlICJhbWRncHVfYXRvbWZpcm13YXJl LmgiDQo+PiBAQCAtNjQsNiArNjYsOSBAQCBjb25zdCBjaGFyICpyYXNfYmxvY2tfc3RyaW5nW10g PSB7DQo+PiAgICAvKiBpbmplY3QgYWRkcmVzcyBpcyA1MiBiaXRzICovDQo+PiAgICAjZGVmaW5l CVJBU19VTUNfSU5KRUNUX0FERFJfTElNSVQJKDB4MVVMTCA8PCA1MikNCj4+ICAgIA0KPj4gKw0K Pj4gK2F0b21pY190IGFtZGdwdV9yYXNfaW5faW50ciA9IEFUT01JQ19JTklUKDApOw0KPj4gKw0K Pj4gICAgc3RhdGljIGludCBhbWRncHVfcmFzX3Jlc2VydmVfdnJhbShzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwNCj4+ICAgIAkJdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplLA0KPj4g ICAgCQlzdHJ1Y3QgYW1kZ3B1X2JvICoqYm9fcHRyKTsNCj4+IEBAIC04MCw3ICs4NSw3IEBAIHN0 YXRpYyBzc2l6ZV90IGFtZGdwdV9yYXNfZGVidWdmc19yZWFkKHN0cnVjdCBmaWxlICpmLCBjaGFy IF9fdXNlciAqYnVmLA0KPj4gICAgCXNzaXplX3QgczsNCj4+ICAgIAljaGFyIHZhbFsxMjhdOw0K Pj4gICAgDQo+PiAtCWlmIChhbWRncHVfcmFzX2Vycm9yX3F1ZXJ5KG9iai0+YWRldiwgJmluZm8p KQ0KPj4gKwlpZiAoYW1kZ3B1X3Jhc19lcnJvcl9xdWVyeShvYmotPmFkZXYsICZpbmZvLCBmYWxz ZSkpDQo+PiAgICAJCXJldHVybiAtRUlOVkFMOw0KPj4gICAgDQo+PiAgICAJcyA9IHNucHJpbnRm KHZhbCwgc2l6ZW9mKHZhbCksICIlczogJWx1XG4lczogJWx1XG4iLA0KPj4gQEAgLTE4OCw2ICsx OTMsMTAgQEAgc3RhdGljIGludCBhbWRncHVfcmFzX2RlYnVnZnNfY3RybF9wYXJzZV9kYXRhKHN0 cnVjdCBmaWxlICpmLA0KPj4gICAgDQo+PiAgICAJcmV0dXJuIDA7DQo+PiAgICB9DQo+PiArDQo+ PiArc3RhdGljIHN0cnVjdCByYXNfbWFuYWdlciAqYW1kZ3B1X3Jhc19maW5kX29iaihzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwNCj4+ICsJCXN0cnVjdCByYXNfY29tbW9uX2lmICpoZWFkKTsN Cj4+ICsNCj4+ICAgIC8qKg0KPj4gICAgICogRE9DOiBBTURHUFUgUkFTIGRlYnVnZnMgY29udHJv bCBpbnRlcmZhY2UNCj4+ICAgICAqDQo+PiBAQCAtMzA0LDcgKzMxMyw3IEBAIHN0YXRpYyBzc2l6 ZV90IGFtZGdwdV9yYXNfc3lzZnNfcmVhZChzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+PiAgICAJCS5o ZWFkID0gb2JqLT5oZWFkLA0KPj4gICAgCX07DQo+PiAgICANCj4+IC0JaWYgKGFtZGdwdV9yYXNf ZXJyb3JfcXVlcnkob2JqLT5hZGV2LCAmaW5mbykpDQo+PiArCWlmIChhbWRncHVfcmFzX2Vycm9y X3F1ZXJ5KG9iai0+YWRldiwgJmluZm8sIGZhbHNlKSkNCj4+ICAgIAkJcmV0dXJuIC1FSU5WQUw7 DQo+PiAgICANCj4+ICAgIAlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIlczogJWx1 XG4lczogJWx1XG4iLA0KPj4gQEAgLTU5MSw3ICs2MDAsNyBAQCBzdGF0aWMgaW50IGFtZGdwdV9y YXNfZW5hYmxlX2FsbF9mZWF0dXJlcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCj4+ICAg IA0KPj4gICAgLyogcXVlcnkvaW5qZWN0L2N1cmUgYmVnaW4gKi8NCj4+ICAgIGludCBhbWRncHVf cmFzX2Vycm9yX3F1ZXJ5KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPj4gLQkJc3RydWN0 IHJhc19xdWVyeV9pZiAqaW5mbykNCj4+ICsJCXN0cnVjdCByYXNfcXVlcnlfaWYgKmluZm8sIGJv b2wgcHJpbnQpDQo+PiAgICB7DQo+PiAgICAJc3RydWN0IHJhc19tYW5hZ2VyICpvYmogPSBhbWRn cHVfcmFzX2ZpbmRfb2JqKGFkZXYsICZpbmZvLT5oZWFkKTsNCj4+ICAgIAlzdHJ1Y3QgcmFzX2Vy cl9kYXRhIGVycl9kYXRhID0gezAsIDAsIDAsIE5VTEx9Ow0KPj4gQEAgLTYyNywxMiArNjM2LDE0 IEBAIGludCBhbWRncHVfcmFzX2Vycm9yX3F1ZXJ5KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 LA0KPj4gICAgCWluZm8tPnVlX2NvdW50ID0gb2JqLT5lcnJfZGF0YS51ZV9jb3VudDsNCj4+ICAg IAlpbmZvLT5jZV9jb3VudCA9IG9iai0+ZXJyX2RhdGEuY2VfY291bnQ7DQo+PiAgICANCj4+IC0J aWYgKGVycl9kYXRhLmNlX2NvdW50KQ0KPj4gKwlpZiAoZXJyX2RhdGEuY2VfY291bnQgfHwgcHJp bnQpIHsNCj4+ICAgIAkJZGV2X2luZm8oYWRldi0+ZGV2LCAiJWxkIGNvcnJlY3RhYmxlIGVycm9y cyBkZXRlY3RlZCBpbiAlcyBibG9ja1xuIiwNCj4+ICAgIAkJCSBvYmotPmVycl9kYXRhLmNlX2Nv dW50LCByYXNfYmxvY2tfc3RyKGluZm8tPmhlYWQuYmxvY2spKTsNCj4+IC0JaWYgKGVycl9kYXRh LnVlX2NvdW50KQ0KPj4gKwl9DQo+PiArCWlmIChlcnJfZGF0YS51ZV9jb3VudCB8fCBwcmludCkg ew0KPj4gICAgCQlkZXZfaW5mbyhhZGV2LT5kZXYsICIlbGQgdW5jb3JyZWN0YWJsZSBlcnJvcnMg ZGV0ZWN0ZWQgaW4gJXMgYmxvY2tcbiIsDQo+PiAgICAJCQkgb2JqLT5lcnJfZGF0YS51ZV9jb3Vu dCwgcmFzX2Jsb2NrX3N0cihpbmZvLT5oZWFkLmJsb2NrKSk7DQo+PiArCX0NCj4+ICAgIA0KPj4g ICAgCXJldHVybiAwOw0KPj4gICAgfQ0KPj4gQEAgLTcwMiw3ICs3MTMsNyBAQCBpbnQgYW1kZ3B1 X3Jhc19xdWVyeV9lcnJvcl9jb3VudChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCj4+ICAg IAkJCS5oZWFkID0gb2JqLT5oZWFkLA0KPj4gICAgCQl9Ow0KPj4gICAgDQo+PiAtCQlpZiAoYW1k Z3B1X3Jhc19lcnJvcl9xdWVyeShhZGV2LCAmaW5mbykpDQo+PiArCQlpZiAoYW1kZ3B1X3Jhc19l cnJvcl9xdWVyeShhZGV2LCAmaW5mbywgdHJ1ZSkpDQo+PiAgICAJCQlyZXR1cm4gLUVJTlZBTDsN Cj4+ICAgIA0KPj4gICAgCQlkYXRhLmNlX2NvdW50ICs9IGluZm8uY2VfY291bnQ7DQo+PiBAQCAt MTcxOCwzICsxNzI5LDEwIEBAIGludCBhbWRncHVfcmFzX2Zpbmkoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYpDQo+PiAgICANCj4+ICAgIAlyZXR1cm4gMDsNCj4+ICAgIH0NCj4+ICsNCj4+ICt2 b2lkIGFtZGdwdV9yYXNfZ2xvYmFsX3Jhc19pc3Ioc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYp DQo+PiArew0KPj4gKwlpZiAoYXRvbWljX2NtcHhjaGcoJmFtZGdwdV9yYXNfaW5faW50ciwgMCwg MSkgPT0gMCkgew0KPj4gKwkJRFJNX1dBUk4oIlJBUyBldmVudCBvZiB0eXBlIEVSUkVWRU5UX0FU SFVCX0lOVEVSUlVQVCBkZXRlY3RlZCEgU3RvcHBpbmcgYWxsIEdQVSBqb2JzLlxuIik7DQo+PiAr CX0NCj4+ICt9DQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X3Jhcy5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jhcy5oDQo+PiBp bmRleCA1YTBkZjczLi5jMGUyMmFmIDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3Jhcy5oDQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfcmFzLmgNCj4+IEBAIC01ODcsNyArNTg3LDcgQEAgdm9pZCBhbWRncHVfcmFzX2Rl YnVnZnNfcmVtb3ZlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPj4gICAgCQlzdHJ1Y3Qg cmFzX2NvbW1vbl9pZiAqaGVhZCk7DQo+PiAgICANCj4+ICAgIGludCBhbWRncHVfcmFzX2Vycm9y X3F1ZXJ5KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPj4gLQkJc3RydWN0IHJhc19xdWVy eV9pZiAqaW5mbyk7DQo+PiArCQlzdHJ1Y3QgcmFzX3F1ZXJ5X2lmICppbmZvLCBib29sIHByaW50 KTsNCj4+ICAgIA0KPj4gICAgaW50IGFtZGdwdV9yYXNfZXJyb3JfaW5qZWN0KHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LA0KPj4gICAgCQlzdHJ1Y3QgcmFzX2luamVjdF9pZiAqaW5mbyk7DQo+ PiBAQCAtNjAwLDQgKzYwMCwxNCBAQCBpbnQgYW1kZ3B1X3Jhc19pbnRlcnJ1cHRfcmVtb3ZlX2hh bmRsZXIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+PiAgICANCj4+ICAgIGludCBhbWRn cHVfcmFzX2ludGVycnVwdF9kaXNwYXRjaChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCj4+ ICAgIAkJc3RydWN0IHJhc19kaXNwYXRjaF9pZiAqaW5mbyk7DQo+PiArDQo+PiArZXh0ZXJuIGF0 b21pY190IGFtZGdwdV9yYXNfaW5faW50cjsNCj4+ICsNCj4+ICtzdGF0aWMgaW5saW5lIGJvb2wg YW1kZ3B1X3Jhc19pbnRyX3RyaWdnZXJlZCh2b2lkKQ0KPj4gK3sNCj4+ICsJcmV0dXJuICEhYXRv bWljX3JlYWQoJmFtZGdwdV9yYXNfaW5faW50cik7DQo+PiArfQ0KPj4gKw0KPj4gK3ZvaWQgYW1k Z3B1X3Jhc19nbG9iYWxfcmFzX2lzcihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7DQo+PiAr DQo+PiAgICAjZW5kaWYNCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9nZnhfdjlfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y5XzAuYw0KPj4g aW5kZXggYjJjODZhMC4uZTdhODNmNiAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2dmeF92OV8wLmMNCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2dmeF92OV8wLmMNCj4+IEBAIC01NjY5LDEwICs1NjY5LDEyIEBAIHN0YXRpYyBpbnQgZ2Z4X3Y5 XzBfcHJvY2Vzc19yYXNfZGF0YV9jYihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCj4+ICAg IAkJc3RydWN0IGFtZGdwdV9pdl9lbnRyeSAqZW50cnkpDQo+PiAgICB7DQo+PiAgICAJLyogVE9E TyB1ZSB3aWxsIHRyaWdnZXIgYW4gaW50ZXJydXB0LiAqLw0KPj4gLQlrZ2Qya2ZkX3NldF9zcmFt X2VjY19mbGFnKGFkZXYtPmtmZC5kZXYpOw0KPj4gLQlpZiAoYWRldi0+Z2Z4LmZ1bmNzLT5xdWVy eV9yYXNfZXJyb3JfY291bnQpDQo+PiAtCQlhZGV2LT5nZnguZnVuY3MtPnF1ZXJ5X3Jhc19lcnJv cl9jb3VudChhZGV2LCBlcnJfZGF0YSk7DQo+PiAtCWFtZGdwdV9yYXNfcmVzZXRfZ3B1KGFkZXYs IDApOw0KPj4gKwlpZiAoIWFtZGdwdV9yYXNfaXNfc3VwcG9ydGVkKGFkZXYsIEFNREdQVV9SQVNf QkxPQ0tfX0dGWCkpIHsNCj4+ICsJCWtnZDJrZmRfc2V0X3NyYW1fZWNjX2ZsYWcoYWRldi0+a2Zk LmRldik7DQo+PiArCQlpZiAoYWRldi0+Z2Z4LmZ1bmNzLT5xdWVyeV9yYXNfZXJyb3JfY291bnQp DQo+PiArCQkJYWRldi0+Z2Z4LmZ1bmNzLT5xdWVyeV9yYXNfZXJyb3JfY291bnQoYWRldiwgZXJy X2RhdGEpOw0KPj4gKwkJYW1kZ3B1X3Jhc19yZXNldF9ncHUoYWRldiwgMCk7DQo+PiArCX0NCj4+ ICAgIAlyZXR1cm4gQU1ER1BVX1JBU19TVUNDRVNTOw0KPj4gICAgfQ0KPj4gICAgDQo+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y5XzAuYyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2dtY192OV8wLmMNCj4+IGluZGV4IDQzYjRmYmMuLjg3YTY2YzIg MTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjlfMC5jDQo+ PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjlfMC5jDQo+PiBAQCAtMjQz LDE4ICsyNDMsMjAgQEAgc3RhdGljIGludCBnbWNfdjlfMF9wcm9jZXNzX3Jhc19kYXRhX2NiKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPj4gICAgCQlzdHJ1Y3QgcmFzX2Vycl9kYXRhICpl cnJfZGF0YSwNCj4+ICAgIAkJc3RydWN0IGFtZGdwdV9pdl9lbnRyeSAqZW50cnkpDQo+PiAgICB7 DQo+PiAtCWtnZDJrZmRfc2V0X3NyYW1fZWNjX2ZsYWcoYWRldi0+a2ZkLmRldik7DQo+PiAtCWlm IChhZGV2LT51bWMuZnVuY3MtPnF1ZXJ5X3Jhc19lcnJvcl9jb3VudCkNCj4+IC0JCWFkZXYtPnVt Yy5mdW5jcy0+cXVlcnlfcmFzX2Vycm9yX2NvdW50KGFkZXYsIGVycl9kYXRhKTsNCj4+IC0JLyog dW1jIHF1ZXJ5X3Jhc19lcnJvcl9hZGRyZXNzIGlzIGFsc28gcmVzcG9uc2libGUgZm9yIGNsZWFy aW5nDQo+PiAtCSAqIGVycm9yIHN0YXR1cw0KPj4gLQkgKi8NCj4+IC0JaWYgKGFkZXYtPnVtYy5m dW5jcy0+cXVlcnlfcmFzX2Vycm9yX2FkZHJlc3MpDQo+PiAtCQlhZGV2LT51bWMuZnVuY3MtPnF1 ZXJ5X3Jhc19lcnJvcl9hZGRyZXNzKGFkZXYsIGVycl9kYXRhKTsNCj4+ICsJaWYgKCFhbWRncHVf cmFzX2lzX3N1cHBvcnRlZChhZGV2LCBBTURHUFVfUkFTX0JMT0NLX19HRlgpKSB7DQo+PiArCQlr Z2Qya2ZkX3NldF9zcmFtX2VjY19mbGFnKGFkZXYtPmtmZC5kZXYpOw0KPj4gKwkJaWYgKGFkZXYt PnVtYy5mdW5jcy0+cXVlcnlfcmFzX2Vycm9yX2NvdW50KQ0KPj4gKwkJCWFkZXYtPnVtYy5mdW5j cy0+cXVlcnlfcmFzX2Vycm9yX2NvdW50KGFkZXYsIGVycl9kYXRhKTsNCj4+ICsJCS8qIHVtYyBx dWVyeV9yYXNfZXJyb3JfYWRkcmVzcyBpcyBhbHNvIHJlc3BvbnNpYmxlIGZvciBjbGVhcmluZw0K Pj4gKwkJICogZXJyb3Igc3RhdHVzDQo+PiArCQkgKi8NCj4+ICsJCWlmIChhZGV2LT51bWMuZnVu Y3MtPnF1ZXJ5X3Jhc19lcnJvcl9hZGRyZXNzKQ0KPj4gKwkJCWFkZXYtPnVtYy5mdW5jcy0+cXVl cnlfcmFzX2Vycm9yX2FkZHJlc3MoYWRldiwgZXJyX2RhdGEpOw0KPj4gICAgDQo+PiAtCS8qIG9u bHkgdW5jb3JyZWN0YWJsZSBlcnJvciBuZWVkcyBncHUgcmVzZXQgKi8NCj4+IC0JaWYgKGVycl9k YXRhLT51ZV9jb3VudCkNCj4+IC0JCWFtZGdwdV9yYXNfcmVzZXRfZ3B1KGFkZXYsIDApOw0KPj4g KwkJLyogb25seSB1bmNvcnJlY3RhYmxlIGVycm9yIG5lZWRzIGdwdSByZXNldCAqLw0KPj4gKwkJ aWYgKGVycl9kYXRhLT51ZV9jb3VudCkNCj4+ICsJCQlhbWRncHVfcmFzX3Jlc2V0X2dwdShhZGV2 LCAwKTsNCj4+ICsJfQ0KPj4gICAgDQo+PiAgICAJcmV0dXJuIEFNREdQVV9SQVNfU1VDQ0VTUzsN Cj4+ICAgIH0NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9uYmlv X3Y3XzQuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L25iaW9fdjdfNC5jDQo+PiBpbmRl eCAzNjdmOWQ2Li41NDU5OTBjIDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvbmJpb192N180LmMNCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L25i aW9fdjdfNC5jDQo+PiBAQCAtMzAsNiArMzAsNyBAQA0KPj4gICAgI2luY2x1ZGUgIm5iaW8vbmJp b183XzRfMF9zbW4uaCINCj4+ICAgICNpbmNsdWRlICJpdnNyY2lkL25iaW8vaXJxc3Jjc19uYmlm XzdfNC5oIg0KPj4gICAgI2luY2x1ZGUgPHVhcGkvbGludXgva2ZkX2lvY3RsLmg+DQo+PiArI2lu Y2x1ZGUgImFtZGdwdV9yYXMuaCINCj4+ICAgIA0KPj4gICAgI2RlZmluZSBzbW5OQklGX01HQ0df Q1RSTF9MQ0xLCTB4MTAxM2EyMWMNCj4+ICAgIA0KPj4gQEAgLTMyOSw2ICszMzAsOCBAQCBzdGF0 aWMgdm9pZCBuYmlvX3Y3XzRfaGFuZGxlX3Jhc19jb250cm9sbGVyX2ludHJfbm9fYmlmcmluZyhz dHJ1Y3QgYW1kZ3B1X2RldmljZQ0KPj4gICAgCQkJCQkJQklGX0RPT1JCRUxMX0lOVF9DTlRMLA0K Pj4gICAgCQkJCQkJUkFTX0NOVExSX0lOVEVSUlVQVF9DTEVBUiwgMSk7DQo+PiAgICAJCVdSRUcz Ml9TT0MxNShOQklPLCAwLCBtbUJJRl9ET09SQkVMTF9JTlRfQ05UTCwgYmlmX2Rvb3JiZWxsX2lu dHJfY250bCk7DQo+PiArDQo+PiArCQlhbWRncHVfcmFzX2dsb2JhbF9yYXNfaXNyKGFkZXYpOw0K Pj4gICAgCX0NCj4+ICAgIH0NCj4+ICAgIA0KPj4gQEAgLTM0NCw2ICszNDcsOCBAQCBzdGF0aWMg dm9pZCBuYmlvX3Y3XzRfaGFuZGxlX3Jhc19lcnJfZXZlbnRfYXRodWJfaW50cl9ub19iaWZyaW5n KHN0cnVjdCBhbWRncHVfZA0KPj4gICAgCQkJCQkJQklGX0RPT1JCRUxMX0lOVF9DTlRMLA0KPj4g ICAgCQkJCQkJUkFTX0FUSFVCX0VSUl9FVkVOVF9JTlRFUlJVUFRfQ0xFQVIsIDEpOw0KPj4gICAg CQlXUkVHMzJfU09DMTUoTkJJTywgMCwgbW1CSUZfRE9PUkJFTExfSU5UX0NOVEwsIGJpZl9kb29y YmVsbF9pbnRyX2NudGwpOw0KPj4gKw0KPj4gKwkJYW1kZ3B1X3Jhc19nbG9iYWxfcmFzX2lzcihh ZGV2KTsNCj4+ICAgIAl9DQo+PiAgICB9DQo+PiAgICANCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3Y0XzAuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L3NkbWFfdjRfMC5jDQo+PiBpbmRleCA5NTY0MzJmLi40MzhlNTA0IDEwMDY0NA0KPj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2RtYV92NF8wLmMNCj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjRfMC5jDQo+PiBAQCAtMTk3MiwyNCArMTk3Miwy NiBAQCBzdGF0aWMgaW50IHNkbWFfdjRfMF9wcm9jZXNzX3Jhc19kYXRhX2NiKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LA0KPj4gICAgCXVpbnQzMl90IGVycl9zb3VyY2U7DQo+PiAgICAJaW50 IGluc3RhbmNlOw0KPj4gICAgDQo+PiAtCWluc3RhbmNlID0gc2RtYV92NF8wX2lycV9pZF90b19z ZXEoZW50cnktPmNsaWVudF9pZCk7DQo+PiAtCWlmIChpbnN0YW5jZSA8IDApDQo+PiAtCQlyZXR1 cm4gMDsNCj4+ICsJaWYgKCFhbWRncHVfcmFzX2lzX3N1cHBvcnRlZChhZGV2LCBBTURHUFVfUkFT X0JMT0NLX19HRlgpKSB7DQo+PiArCQlpbnN0YW5jZSA9IHNkbWFfdjRfMF9pcnFfaWRfdG9fc2Vx KGVudHJ5LT5jbGllbnRfaWQpOw0KPj4gKwkJaWYgKGluc3RhbmNlIDwgMCkNCj4+ICsJCQlyZXR1 cm4gMDsNCj4+ICAgIA0KPj4gLQlzd2l0Y2ggKGVudHJ5LT5zcmNfaWQpIHsNCj4+IC0JY2FzZSBT RE1BMF80XzBfX1NSQ0lEX19TRE1BX1NSQU1fRUNDOg0KPj4gLQkJZXJyX3NvdXJjZSA9IDA7DQo+ PiAtCQlicmVhazsNCj4+IC0JY2FzZSBTRE1BMF80XzBfX1NSQ0lEX19TRE1BX0VDQzoNCj4+IC0J CWVycl9zb3VyY2UgPSAxOw0KPj4gLQkJYnJlYWs7DQo+PiAtCWRlZmF1bHQ6DQo+PiAtCQlyZXR1 cm4gMDsNCj4+IC0JfQ0KPj4gKwkJc3dpdGNoIChlbnRyeS0+c3JjX2lkKSB7DQo+PiArCQljYXNl IFNETUEwXzRfMF9fU1JDSURfX1NETUFfU1JBTV9FQ0M6DQo+PiArCQkJZXJyX3NvdXJjZSA9IDA7 DQo+PiArCQkJYnJlYWs7DQo+PiArCQljYXNlIFNETUEwXzRfMF9fU1JDSURfX1NETUFfRUNDOg0K Pj4gKwkJCWVycl9zb3VyY2UgPSAxOw0KPj4gKwkJCWJyZWFrOw0KPj4gKwkJZGVmYXVsdDoNCj4+ ICsJCQlyZXR1cm4gMDsNCj4+ICsJCX0NCj4+ICAgIA0KPj4gLQlrZ2Qya2ZkX3NldF9zcmFtX2Vj Y19mbGFnKGFkZXYtPmtmZC5kZXYpOw0KPj4gKwkJa2dkMmtmZF9zZXRfc3JhbV9lY2NfZmxhZyhh ZGV2LT5rZmQuZGV2KTsNCj4+ICAgIA0KPj4gLQlhbWRncHVfcmFzX3Jlc2V0X2dwdShhZGV2LCAw KTsNCj4+ICsJCWFtZGdwdV9yYXNfcmVzZXRfZ3B1KGFkZXYsIDApOw0KPj4gKwl9DQo+PiAgICAN Cj4+ICAgIAlyZXR1cm4gQU1ER1BVX1JBU19TVUNDRVNTOw0KPj4gICAgfQ0KX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QK YW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4