From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Liu, Shaoyun" Subject: Re: [PATCH 5/5] drm/amdgpu: Refactor GPU reset for XGMI hive case. Date: Wed, 21 Nov 2018 20:49:01 +0000 Message-ID: References: <1542823821-15631-1-git-send-email-andrey.grodzovsky@amd.com> <1542823821-15631-6-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: <1542823821-15631-6-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: "Deucher, Alexander" , "Liu, Monk" SSBzYXcgeW91IHVzZSB0aGXCoCBnbG9iYWwgeGdtaV9tdXRleCB0byBwcmV2ZW50IGNvbmN1cnJl bnQgcmVzZXQgdG8gYmUgDQp0cmlnZ2VyZWQgYnkgZGlmZmVyZW50IG5vZGVzICzCoCBidXQgYWZ0 ZXIgdGhlwqAgbXV0ZXggYmVlbiByZWxlYXNlZCAswqAgDQpjdXJyZW50IG5vZGUgbWF5IGdyYXAg dGhlIG11dGV4IGFuZCBjb250aW51ZSB0byBkbyBhbm90aGVyIHJlc2V0IC7CoCANCk1heWJlwqAg d2Ugc2hvdWxkIGNoZWNrIHRoZSBHUFUgc3RhdHVzIGFuZMKgIHNraXAgdGhlwqAgcmVzZXQgaW4g dGhpcyBjYXNlIA0Kc2luY2UgdGhlwqAgR1BVIG1heSBhbHJlYWR5IGJlIGluIGdvb2Qgc3RhdGUg Lg0KDQpSZWdhcmRzDQoNCnNoYW95dW4ubGl1DQoNCk9uIDIwMTgtMTEtMjEgMToxMCBwLm0uLCBB bmRyZXkgR3JvZHpvdnNreSB3cm90ZToNCj4gRm9yIFhHTUkgaGl2ZSBjYXNlIGRvIHJlc2V0IGlu IHN0ZXBzIHdoZXJlIGVhY2ggc3RlcCBpdGVyYXRlcyBvdmVyDQo+IGFsbCBkZXZzIGluIGhpdmUu IFRoaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgZm9yIGFzaWMgcmVzZXQNCj4gc2luY2UgYWxsIFBT UCBGVyBpbiBoaXZlIG11c3QgY29tZSB1cCB3aXRoaW4gYSBsaW1pdGVkIHRpbWUNCj4gKGFyb3Vu ZCAxIHNlYykgdG8gcHJvcGVycGx5IG5lZ290aWF0ZSB0aGUgbGluay4NCj4gRG8gdGhpcyBieSAg cmVmYWN0b3JpbmcgIGFtZGdwdV9kZXZpY2VfZ3B1X3JlY292ZXIgYW5kIGFtZGdwdV9kZXZpY2Vf cmVzZXQNCj4gaW50byBwcmVfYXNpY19yZXNldCwgYXNpY19yZXNldCBhbmQgcG9zdF9hc2ljX3Jl c2V0IGZ1bmN0aW9ucyB3aGVyZSBpcyBwYXJ0DQo+IGlzIGV4ZWN0dWVkIGZvciBhbGwgdGhlIEdQ VXMgaW4gdGhlIGhpdmUgYmVmb3JlIGdvaW5nIHRvIHRoZSBuZXh0IHN0ZXAuDQo+DQo+IFNpZ25l ZC1vZmYtYnk6IEFuZHJleSBHcm9kem92c2t5IDxhbmRyZXkuZ3JvZHpvdnNreUBhbWQuY29tPg0K PiAtLS0NCj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaCAgICAgICAgfCAg IDUgKy0NCj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMgfCAz NzUgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0NCj4gICAyIGZpbGVzIGNoYW5nZWQsIDI2 NCBpbnNlcnRpb25zKCspLCAxMTYgZGVsZXRpb25zKC0pDQo+DQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdS5oDQo+IGluZGV4IDRlZjVmN2EuLmJkMDZkNDUgMTAwNjQ0DQo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdS5oDQo+IEBAIC0xMDI2LDYgKzEwMjYsOSBAQCBzdHJ1Y3QgYW1k Z3B1X2RldmljZSB7DQo+ICAgCXVuc2lnbmVkIGxvbmcgbGFzdF9tbV9pbmRleDsNCj4gICAJYm9v bCAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9ncHVfcmVzZXQ7DQo+ICAgCXN0cnVjdCBt dXRleCAgbG9ja19yZXNldDsNCj4gKw0KPiArCWludCBhc2ljX3Jlc2V0X3JlczsNCj4gKwlpbnQg cmVzY2hlZDsNCj4gICB9Ow0KPiAgIA0KPiAgIHN0YXRpYyBpbmxpbmUgc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFtZGdwdV90dG1fYWRldihzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldikNCj4gQEAg LTEyMzIsNyArMTIzNSw3IEBAIHN0cnVjdCBhbWRncHVfaGl2ZV9pbmZvOw0KPiAgIA0KPiAgIHN0 cnVjdCBsaXN0X2hlYWQgKmFtZGdwdV94Z21pX2dldF9hZGV2X2xpc3RfaGFuZGxlKHN0cnVjdCBh bWRncHVfaGl2ZV9pbmZvICpoaXZlKTsNCj4gICBzdHJ1Y3QgYW1kZ3B1X2hpdmVfaW5mbyAqYW1k Z3B1X2dldF94Z21pX2hpdmUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOw0KPiAtaW50IGFt ZGdwdV94Z21pX3VwZGF0ZV90b3BvbG9neShzdHJ1Y3QgYW1kZ3B1X2hpdmVfaW5mbyAqaGl2ZSk7 DQo+ICtpbnQgYW1kZ3B1X3hnbWlfdXBkYXRlX3RvcG9sb2d5KHN0cnVjdCBhbWRncHVfaGl2ZV9p bmZvICpoaXZlLCBzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7DQo+ICAgaW50IGFtZGdwdV94 Z21pX2FkZF9kZXZpY2Uoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOw0KPiAgIA0KPiAgIC8q DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNl LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMNCj4gaW5kZXgg Y2IwNmU2OC4uOGU5NGQ3ZiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2RldmljZS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9kZXZpY2UuYw0KPiBAQCAtMzE1Nyw4NiArMzE1Nyw2IEBAIHN0YXRpYyBpbnQgYW1kZ3B1 X2RldmljZV9yZWNvdmVyX3ZyYW0oc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+ICAgCXJl dHVybiAwOw0KPiAgIH0NCj4gICANCj4gLS8qKg0KPiAtICogYW1kZ3B1X2RldmljZV9yZXNldCAt IHJlc2V0IEFTSUMvR1BVIGZvciBiYXJlLW1ldGFsIG9yIHBhc3N0aHJvdWdoDQo+IC0gKg0KPiAt ICogQGFkZXY6IGFtZGdwdSBkZXZpY2UgcG9pbnRlcg0KPiAtICoNCj4gLSAqIGF0dGVtcHQgdG8g ZG8gc29mdC1yZXNldCBvciBmdWxsLXJlc2V0IGFuZCByZWluaXRpYWxpemUgQXNpYw0KPiAtICog cmV0dXJuIDAgbWVhbnMgc3VjY2VlZGVkIG90aGVyd2lzZSBmYWlsZWQNCj4gLSAqLw0KPiAtc3Rh dGljIGludCBhbWRncHVfZGV2aWNlX3Jlc2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQ0K PiAtew0KPiAtCWJvb2wgbmVlZF9mdWxsX3Jlc2V0LCB2cmFtX2xvc3QgPSAwOw0KPiAtCWludCBy Ow0KPiAtDQo+IC0JbmVlZF9mdWxsX3Jlc2V0ID0gYW1kZ3B1X2RldmljZV9pcF9uZWVkX2Z1bGxf cmVzZXQoYWRldik7DQo+IC0NCj4gLQlpZiAoIW5lZWRfZnVsbF9yZXNldCkgew0KPiAtCQlhbWRn cHVfZGV2aWNlX2lwX3ByZV9zb2Z0X3Jlc2V0KGFkZXYpOw0KPiAtCQlyID0gYW1kZ3B1X2Rldmlj ZV9pcF9zb2Z0X3Jlc2V0KGFkZXYpOw0KPiAtCQlhbWRncHVfZGV2aWNlX2lwX3Bvc3Rfc29mdF9y ZXNldChhZGV2KTsNCj4gLQkJaWYgKHIgfHwgYW1kZ3B1X2RldmljZV9pcF9jaGVja19zb2Z0X3Jl c2V0KGFkZXYpKSB7DQo+IC0JCQlEUk1fSU5GTygic29mdCByZXNldCBmYWlsZWQsIHdpbGwgZmFs bGJhY2sgdG8gZnVsbCByZXNldCFcbiIpOw0KPiAtCQkJbmVlZF9mdWxsX3Jlc2V0ID0gdHJ1ZTsN Cj4gLQkJfQ0KPiAtCX0NCj4gLQ0KPiAtCWlmIChuZWVkX2Z1bGxfcmVzZXQpIHsNCj4gLQkJciA9 IGFtZGdwdV9kZXZpY2VfaXBfc3VzcGVuZChhZGV2KTsNCj4gLQ0KPiAtcmV0cnk6DQo+IC0JCXIg PSBhbWRncHVfYXNpY19yZXNldChhZGV2KTsNCj4gLQkJLyogcG9zdCBjYXJkICovDQo+IC0JCWFt ZGdwdV9hdG9tX2FzaWNfaW5pdChhZGV2LT5tb2RlX2luZm8uYXRvbV9jb250ZXh0KTsNCj4gLQ0K PiAtCQlpZiAoIXIpIHsNCj4gLQkJCWRldl9pbmZvKGFkZXYtPmRldiwgIkdQVSByZXNldCBzdWNj ZWVkZWQsIHRyeWluZyB0byByZXN1bWVcbiIpOw0KPiAtCQkJciA9IGFtZGdwdV9kZXZpY2VfaXBf cmVzdW1lX3BoYXNlMShhZGV2KTsNCj4gLQkJCWlmIChyKQ0KPiAtCQkJCWdvdG8gb3V0Ow0KPiAt DQo+IC0JCQl2cmFtX2xvc3QgPSBhbWRncHVfZGV2aWNlX2NoZWNrX3ZyYW1fbG9zdChhZGV2KTsN Cj4gLQkJCWlmICh2cmFtX2xvc3QpIHsNCj4gLQkJCQlEUk1fRVJST1IoIlZSQU0gaXMgbG9zdCFc biIpOw0KPiAtCQkJCWF0b21pY19pbmMoJmFkZXYtPnZyYW1fbG9zdF9jb3VudGVyKTsNCj4gLQkJ CX0NCj4gLQ0KPiAtCQkJciA9IGFtZGdwdV9ndHRfbWdyX3JlY292ZXIoDQo+IC0JCQkJJmFkZXYt Pm1tYW4uYmRldi5tYW5bVFRNX1BMX1RUXSk7DQo+IC0JCQlpZiAocikNCj4gLQkJCQlnb3RvIG91 dDsNCj4gLQ0KPiAtCQkJciA9IGFtZGdwdV9kZXZpY2VfZndfbG9hZGluZyhhZGV2KTsNCj4gLQkJ CWlmIChyKQ0KPiAtCQkJCXJldHVybiByOw0KPiAtDQo+IC0JCQlyID0gYW1kZ3B1X2RldmljZV9p cF9yZXN1bWVfcGhhc2UyKGFkZXYpOw0KPiAtCQkJaWYgKHIpDQo+IC0JCQkJZ290byBvdXQ7DQo+ IC0NCj4gLQkJCWlmICh2cmFtX2xvc3QpDQo+IC0JCQkJYW1kZ3B1X2RldmljZV9maWxsX3Jlc2V0 X21hZ2ljKGFkZXYpOw0KPiAtCQl9DQo+IC0JfQ0KPiAtDQo+IC1vdXQ6DQo+IC0JaWYgKCFyKSB7 DQo+IC0JCWFtZGdwdV9pcnFfZ3B1X3Jlc2V0X3Jlc3VtZV9oZWxwZXIoYWRldik7DQo+IC0JCXIg PSBhbWRncHVfaWJfcmluZ190ZXN0cyhhZGV2KTsNCj4gLQkJaWYgKHIpIHsNCj4gLQkJCWRldl9l cnIoYWRldi0+ZGV2LCAiaWIgcmluZyB0ZXN0IGZhaWxlZCAoJWQpLlxuIiwgcik7DQo+IC0JCQly ID0gYW1kZ3B1X2RldmljZV9pcF9zdXNwZW5kKGFkZXYpOw0KPiAtCQkJbmVlZF9mdWxsX3Jlc2V0 ID0gdHJ1ZTsNCj4gLQkJCWdvdG8gcmV0cnk7DQo+IC0JCX0NCj4gLQl9DQo+IC0NCj4gLQlpZiAo IXIpDQo+IC0JCXIgPSBhbWRncHVfZGV2aWNlX3JlY292ZXJfdnJhbShhZGV2KTsNCj4gLQ0KPiAt CXJldHVybiByOw0KPiAtfQ0KPiAgIA0KPiAgIC8qKg0KPiAgICAqIGFtZGdwdV9kZXZpY2VfcmVz ZXRfc3Jpb3YgLSByZXNldCBBU0lDIGZvciBTUi1JT1YgdmYNCj4gQEAgLTMzMzUsMzEgKzMyNTUs MTYgQEAgYm9vbCBhbWRncHVfZGV2aWNlX3Nob3VsZF9yZWNvdmVyX2dwdShzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldikNCj4gICAJCXJldHVybiBmYWxzZTsNCj4gICB9DQo+ICAgDQo+IC0vKioN Cj4gLSAqIGFtZGdwdV9kZXZpY2VfZ3B1X3JlY292ZXIgLSByZXNldCB0aGUgYXNpYyBhbmQgcmVj b3ZlciBzY2hlZHVsZXINCj4gLSAqDQo+IC0gKiBAYWRldjogYW1kZ3B1IGRldmljZSBwb2ludGVy DQo+IC0gKiBAam9iOiB3aGljaCBqb2IgdHJpZ2dlciBoYW5nDQo+IC0gKg0KPiAtICogQXR0ZW1w dCB0byByZXNldCB0aGUgR1BVIGlmIGl0IGhhcyBodW5nIChhbGwgYXNpY3MpLg0KPiAtICogUmV0 dXJucyAwIGZvciBzdWNjZXNzIG9yIGFuIGVycm9yIG9uIGZhaWx1cmUuDQo+IC0gKi8NCj4gLWlu dCBhbWRncHVfZGV2aWNlX2dwdV9yZWNvdmVyKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0K PiAtCQkJICAgICAgc3RydWN0IGFtZGdwdV9qb2IgKmpvYikNCj4gLXsNCj4gLQlpbnQgaSwgciwg cmVzY2hlZDsNCj4gLQ0KPiAtCWRldl9pbmZvKGFkZXYtPmRldiwgIkdQVSByZXNldCBiZWdpbiFc biIpOw0KPiAtDQo+IC0JbXV0ZXhfbG9jaygmYWRldi0+bG9ja19yZXNldCk7DQo+IC0JYXRvbWlj X2luYygmYWRldi0+Z3B1X3Jlc2V0X2NvdW50ZXIpOw0KPiAtCWFkZXYtPmluX2dwdV9yZXNldCA9 IDE7DQo+ICAgDQo+IC0JLyogQmxvY2sga2ZkICovDQo+IC0JYW1kZ3B1X2FtZGtmZF9wcmVfcmVz ZXQoYWRldik7DQo+ICtzdGF0aWMgaW50IGFtZGdwdV9kZXZpY2VfcHJlX2FzaWNfcmVzZXQoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+ICsJCQkJCXN0cnVjdCBhbWRncHVfam9iICpqb2Is DQo+ICsJCQkJCWJvb2wgKm5lZWRfZnVsbF9yZXNldF9hcmcpDQo+ICt7DQo+ICsJaW50IGksIHIg PSAwOw0KPiArCWJvb2wgbmVlZF9mdWxsX3Jlc2V0ICA9ICpuZWVkX2Z1bGxfcmVzZXRfYXJnOw0K PiAgIA0KPiAgIAkvKiBibG9jayBUVE0gKi8NCj4gLQlyZXNjaGVkID0gdHRtX2JvX2xvY2tfZGVs YXllZF93b3JrcXVldWUoJmFkZXYtPm1tYW4uYmRldik7DQo+ICsJYWRldi0+cmVzY2hlZCA9IHR0 bV9ib19sb2NrX2RlbGF5ZWRfd29ya3F1ZXVlKCZhZGV2LT5tbWFuLmJkZXYpOw0KPiAgIA0KPiAg IAkvKiBibG9jayBhbGwgc2NoZWR1bGVycyBhbmQgcmVzZXQgZ2l2ZW4gam9iJ3MgcmluZyAqLw0K PiAgIAlmb3IgKGkgPSAwOyBpIDwgQU1ER1BVX01BWF9SSU5HUzsgKytpKSB7DQo+IEBAIC0zMzc5 LDEwICszMjg0LDEyMSBAQCBpbnQgYW1kZ3B1X2RldmljZV9ncHVfcmVjb3ZlcihzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwNCj4gICAJCWFtZGdwdV9mZW5jZV9kcml2ZXJfZm9yY2VfY29tcGxl dGlvbihyaW5nKTsNCj4gICAJfQ0KPiAgIA0KPiAtCWlmIChhbWRncHVfc3Jpb3ZfdmYoYWRldikp DQo+IC0JCXIgPSBhbWRncHVfZGV2aWNlX3Jlc2V0X3NyaW92KGFkZXYsIGpvYiA/IGZhbHNlIDog dHJ1ZSk7DQo+IC0JZWxzZQ0KPiAtCQlyID0gYW1kZ3B1X2RldmljZV9yZXNldChhZGV2KTsNCj4g KwlpZiAoIWFtZGdwdV9zcmlvdl92ZihhZGV2KSkgew0KPiArDQo+ICsJCWlmICghbmVlZF9mdWxs X3Jlc2V0KQ0KPiArCQkJbmVlZF9mdWxsX3Jlc2V0ID0gYW1kZ3B1X2RldmljZV9pcF9uZWVkX2Z1 bGxfcmVzZXQoYWRldik7DQo+ICsNCj4gKwkJaWYgKCFuZWVkX2Z1bGxfcmVzZXQpIHsNCj4gKwkJ CWFtZGdwdV9kZXZpY2VfaXBfcHJlX3NvZnRfcmVzZXQoYWRldik7DQo+ICsJCQlyID0gYW1kZ3B1 X2RldmljZV9pcF9zb2Z0X3Jlc2V0KGFkZXYpOw0KPiArCQkJYW1kZ3B1X2RldmljZV9pcF9wb3N0 X3NvZnRfcmVzZXQoYWRldik7DQo+ICsJCQlpZiAociB8fCBhbWRncHVfZGV2aWNlX2lwX2NoZWNr X3NvZnRfcmVzZXQoYWRldikpIHsNCj4gKwkJCQlEUk1fSU5GTygic29mdCByZXNldCBmYWlsZWQs IHdpbGwgZmFsbGJhY2sgdG8gZnVsbCByZXNldCFcbiIpOw0KPiArCQkJCW5lZWRfZnVsbF9yZXNl dCA9IHRydWU7DQo+ICsJCQl9DQo+ICsJCX0NCj4gKw0KPiArCQlpZiAobmVlZF9mdWxsX3Jlc2V0 KQ0KPiArCQkJciA9IGFtZGdwdV9kZXZpY2VfaXBfc3VzcGVuZChhZGV2KTsNCj4gKw0KPiArCQkq bmVlZF9mdWxsX3Jlc2V0X2FyZyA9IG5lZWRfZnVsbF9yZXNldDsNCj4gKwl9DQo+ICsNCj4gKwly ZXR1cm4gcjsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBhbWRncHVfZG9fYXNpY19yZXNldChz dHJ1Y3QgYW1kZ3B1X2hpdmVfaW5mbyAqaGl2ZSwNCj4gKwkJCSAgICAgICBzdHJ1Y3QgbGlzdF9o ZWFkICpkZXZpY2VfbGlzdF9oYW5kbGUsDQo+ICsJCQkgICAgICAgYm9vbCAqbmVlZF9mdWxsX3Jl c2V0X2FyZykNCj4gK3sNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqdG1wX2FkZXYgPSBOVUxM Ow0KPiArCWJvb2wgbmVlZF9mdWxsX3Jlc2V0ID0gKm5lZWRfZnVsbF9yZXNldF9hcmcsIHZyYW1f bG9zdCA9IGZhbHNlOw0KPiArCWludCByID0gMDsNCj4gKw0KPiArCS8qDQo+ICsJICogQVNJQyBy ZXNldCBoYXMgdG8gYmUgZG9uZSBvbiBhbGwgSEdNSSBoaXZlIG5vZGVzIEFTQVANCj4gKwkgKiB0 byBhbGxvdyBwcm9wZXIgbGlua3MgbmVnb3RpYXRpb24gaW4gRlcgKHdpdGhpbiAxIHNlYykNCj4g KwkgKi8NCj4gKwlpZiAobmVlZF9mdWxsX3Jlc2V0KSB7DQo+ICsJCWxpc3RfZm9yX2VhY2hfZW50 cnkodG1wX2FkZXYsIGRldmljZV9saXN0X2hhbmRsZSwgZ21jLnhnbWkuaGVhZCkgew0KPiArCQkJ ciA9IGFtZGdwdV9hc2ljX3Jlc2V0KHRtcF9hZGV2KTsNCj4gKwkJCWlmIChyKQ0KPiArCQkJCURS TV9XQVJOKCJBU0lDIHJlc2V0IGZhaWxlZCB3aXRoIGVyciByLCAlZCBmb3IgZHJtIGRldiwgJXMi LA0KPiArCQkJCQkgciwgdG1wX2FkZXYtPmRkZXYtPnVuaXF1ZSk7DQo+ICsJCX0NCj4gKwl9DQo+ ICsNCj4gKw0KPiArCWxpc3RfZm9yX2VhY2hfZW50cnkodG1wX2FkZXYsIGRldmljZV9saXN0X2hh bmRsZSwgZ21jLnhnbWkuaGVhZCkgew0KPiArCQlpZiAobmVlZF9mdWxsX3Jlc2V0KSB7DQo+ICsJ CQkvKiBwb3N0IGNhcmQgKi8NCj4gKwkJCWlmIChhbWRncHVfYXRvbV9hc2ljX2luaXQodG1wX2Fk ZXYtPm1vZGVfaW5mby5hdG9tX2NvbnRleHQpKQ0KPiArCQkJCURSTV9XQVJOKCJhc2ljIGF0b20g aW5pdCBmYWlsZWQhIik7DQo+ICsNCj4gKwkJCWlmICghcikgew0KPiArCQkJCWRldl9pbmZvKHRt cF9hZGV2LT5kZXYsICJHUFUgcmVzZXQgc3VjY2VlZGVkLCB0cnlpbmcgdG8gcmVzdW1lXG4iKTsN Cj4gKwkJCQlyID0gYW1kZ3B1X2RldmljZV9pcF9yZXN1bWVfcGhhc2UxKHRtcF9hZGV2KTsNCj4g KwkJCQlpZiAocikNCj4gKwkJCQkJZ290byBvdXQ7DQo+ICsNCj4gKwkJCQl2cmFtX2xvc3QgPSBh bWRncHVfZGV2aWNlX2NoZWNrX3ZyYW1fbG9zdCh0bXBfYWRldik7DQo+ICsJCQkJaWYgKHZyYW1f bG9zdCkgew0KPiArCQkJCQlEUk1fRVJST1IoIlZSQU0gaXMgbG9zdCFcbiIpOw0KPiArCQkJCQlh dG9taWNfaW5jKCZ0bXBfYWRldi0+dnJhbV9sb3N0X2NvdW50ZXIpOw0KPiArCQkJCX0NCj4gKw0K PiArCQkJCXIgPSBhbWRncHVfZ3R0X21ncl9yZWNvdmVyKA0KPiArCQkJCQkmdG1wX2FkZXYtPm1t YW4uYmRldi5tYW5bVFRNX1BMX1RUXSk7DQo+ICsJCQkJaWYgKHIpDQo+ICsJCQkJCWdvdG8gb3V0 Ow0KPiArDQo+ICsJCQkJciA9IGFtZGdwdV9kZXZpY2VfZndfbG9hZGluZyh0bXBfYWRldik7DQo+ ICsJCQkJaWYgKHIpDQo+ICsJCQkJCXJldHVybiByOw0KPiArDQo+ICsJCQkJciA9IGFtZGdwdV9k ZXZpY2VfaXBfcmVzdW1lX3BoYXNlMih0bXBfYWRldik7DQo+ICsJCQkJaWYgKHIpDQo+ICsJCQkJ CWdvdG8gb3V0Ow0KPiArDQo+ICsJCQkJaWYgKHZyYW1fbG9zdCkNCj4gKwkJCQkJYW1kZ3B1X2Rl dmljZV9maWxsX3Jlc2V0X21hZ2ljKHRtcF9hZGV2KTsNCj4gKw0KPiArCQkJCS8qIFVwZGF0ZSBQ U1AgRlcgdG9wb2xvZ3kgYWZ0ZXIgcmVzZXQgKi8NCj4gKwkJCQlpZiAodG1wX2FkZXYtPmdtYy54 Z21pLm51bV9waHlzaWNhbF9ub2RlcyA+IDEpDQo+ICsJCQkJCXIgPSBhbWRncHVfeGdtaV91cGRh dGVfdG9wb2xvZ3koaGl2ZSwgdG1wX2FkZXYpOw0KPiArCQkJfQ0KPiArCQl9DQo+ICsNCj4gKw0K PiArb3V0Og0KPiArCQlpZiAoIXIpIHsNCj4gKwkJCWFtZGdwdV9pcnFfZ3B1X3Jlc2V0X3Jlc3Vt ZV9oZWxwZXIodG1wX2FkZXYpOw0KPiArCQkJciA9IGFtZGdwdV9pYl9yaW5nX3Rlc3RzKHRtcF9h ZGV2KTsNCj4gKwkJCWlmIChyKSB7DQo+ICsJCQkJZGV2X2Vycih0bXBfYWRldi0+ZGV2LCAiaWIg cmluZyB0ZXN0IGZhaWxlZCAoJWQpLlxuIiwgcik7DQo+ICsJCQkJciA9IGFtZGdwdV9kZXZpY2Vf aXBfc3VzcGVuZCh0bXBfYWRldik7DQo+ICsJCQkJbmVlZF9mdWxsX3Jlc2V0ID0gdHJ1ZTsNCj4g KwkJCQlyID0gLUVBR0FJTjsNCj4gKwkJCQlnb3RvIGVuZDsNCj4gKwkJCX0NCj4gKwkJfQ0KPiAr DQo+ICsJCWlmICghcikNCj4gKwkJCXIgPSBhbWRncHVfZGV2aWNlX3JlY292ZXJfdnJhbSh0bXBf YWRldik7DQo+ICsJCWVsc2UNCj4gKwkJCXRtcF9hZGV2LT5hc2ljX3Jlc2V0X3JlcyA9IHI7DQo+ ICsJfQ0KPiArDQo+ICtlbmQ6DQo+ICsJKm5lZWRfZnVsbF9yZXNldF9hcmcgPSBuZWVkX2Z1bGxf cmVzZXQ7DQo+ICsJcmV0dXJuIHI7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGFtZGdwdV9k ZXZpY2VfcG9zdF9hc2ljX3Jlc2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPiArCQkJ CQkgIHN0cnVjdCBhbWRncHVfam9iICpqb2IpDQo+ICt7DQo+ICsJaW50IGk7DQo+ICAgDQo+ICAg CWZvciAoaSA9IDA7IGkgPCBBTURHUFVfTUFYX1JJTkdTOyArK2kpIHsNCj4gICAJCXN0cnVjdCBh bWRncHVfcmluZyAqcmluZyA9IGFkZXYtPnJpbmdzW2ldOw0KPiBAQCAtMzM5NCw3ICszNDEwLDcg QEAgaW50IGFtZGdwdV9kZXZpY2VfZ3B1X3JlY292ZXIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsDQo+ICAgCQkgKiBvciBhbGwgcmluZ3MgKGluIHRoZSBjYXNlIEBqb2IgaXMgTlVMTCkNCj4g ICAJCSAqIGFmdGVyIGFib3ZlIGFtZGdwdV9yZXNldCBhY2NvbXBsaXNoZWQNCj4gICAJCSAqLw0K PiAtCQlpZiAoKCFqb2IgfHwgam9iLT5iYXNlLnNjaGVkID09ICZyaW5nLT5zY2hlZCkgJiYgIXIp DQo+ICsJCWlmICgoIWpvYiB8fCBqb2ItPmJhc2Uuc2NoZWQgPT0gJnJpbmctPnNjaGVkKSAmJiAh YWRldi0+YXNpY19yZXNldF9yZXMpDQo+ICAgCQkJZHJtX3NjaGVkX2pvYl9yZWNvdmVyeSgmcmlu Zy0+c2NoZWQpOw0KPiAgIA0KPiAgIAkJa3RocmVhZF91bnBhcmsocmluZy0+c2NoZWQudGhyZWFk KTsNCj4gQEAgLTM0MDQsMjEgKzM0MjAsMTUwIEBAIGludCBhbWRncHVfZGV2aWNlX2dwdV9yZWNv dmVyKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPiAgIAkJZHJtX2hlbHBlcl9yZXN1bWVf Zm9yY2VfbW9kZShhZGV2LT5kZGV2KTsNCj4gICAJfQ0KPiAgIA0KPiAtCXR0bV9ib191bmxvY2tf ZGVsYXllZF93b3JrcXVldWUoJmFkZXYtPm1tYW4uYmRldiwgcmVzY2hlZCk7DQo+ICsJdHRtX2Jv X3VubG9ja19kZWxheWVkX3dvcmtxdWV1ZSgmYWRldi0+bW1hbi5iZGV2LCBhZGV2LT5yZXNjaGVk KTsNCj4gICANCj4gLQlpZiAocikgew0KPiAtCQkvKiBiYWQgbmV3cywgaG93IHRvIHRlbGwgaXQg dG8gdXNlcnNwYWNlID8gKi8NCj4gLQkJZGV2X2luZm8oYWRldi0+ZGV2LCAiR1BVIHJlc2V0KCVk KSBmYWlsZWRcbiIsIGF0b21pY19yZWFkKCZhZGV2LT5ncHVfcmVzZXRfY291bnRlcikpOw0KPiAt CQlhbWRncHVfdmZfZXJyb3JfcHV0KGFkZXYsIEFNREdJTV9FUlJPUl9WRl9HUFVfUkVTRVRfRkFJ TCwgMCwgcik7DQo+IC0JfSBlbHNlIHsNCj4gLQkJZGV2X2luZm8oYWRldi0+ZGV2LCAiR1BVIHJl c2V0KCVkKSBzdWNjZWVkZWQhXG4iLGF0b21pY19yZWFkKCZhZGV2LT5ncHVfcmVzZXRfY291bnRl cikpOw0KPiAtCX0NCj4gKwlhZGV2LT5hc2ljX3Jlc2V0X3JlcyA9IGFkZXYtPnJlc2NoZWQgPSAw Ow0KPiArDQo+ICt9DQo+ICAgDQo+ICtzdGF0aWMgdm9pZCBhbWRncHVfbG9ja19hZGV2KHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2KQ0KPiArew0KPiArCW11dGV4X2xvY2soJmFkZXYtPmxvY2tf cmVzZXQpOw0KPiArCWF0b21pY19pbmMoJmFkZXYtPmdwdV9yZXNldF9jb3VudGVyKTsNCj4gKwlh ZGV2LT5pbl9ncHVfcmVzZXQgPSAxOw0KPiArCS8qIEJsb2NrIGtmZCAqLw0KPiArCWFtZGdwdV9h bWRrZmRfcHJlX3Jlc2V0KGFkZXYpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBhbWRncHVf dW5sb2NrX2FkZXYoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+ICt7DQo+ICAgCS8qdW5s b2NrIGtmZCAqLw0KPiAgIAlhbWRncHVfYW1ka2ZkX3Bvc3RfcmVzZXQoYWRldik7DQo+ICAgCWFt ZGdwdV92Zl9lcnJvcl90cmFuc19hbGwoYWRldik7DQo+ICAgCWFkZXYtPmluX2dwdV9yZXNldCA9 IDA7DQo+ICAgCW11dGV4X3VubG9jaygmYWRldi0+bG9ja19yZXNldCk7DQo+ICt9DQo+ICsNCj4g Kw0KPiArLyoqDQo+ICsgKiBhbWRncHVfZGV2aWNlX2dwdV9yZWNvdmVyIC0gcmVzZXQgdGhlIGFz aWMgYW5kIHJlY292ZXIgc2NoZWR1bGVyDQo+ICsgKg0KPiArICogQGFkZXY6IGFtZGdwdSBkZXZp Y2UgcG9pbnRlcg0KPiArICogQGpvYjogd2hpY2ggam9iIHRyaWdnZXIgaGFuZw0KPiArICoNCj4g KyAqIEF0dGVtcHQgdG8gcmVzZXQgdGhlIEdQVSBpZiBpdCBoYXMgaHVuZyAoYWxsIGFzaWNzKS4N Cj4gKyAqIEF0dGVtcHQgdG8gZG8gc29mdC1yZXNldCBvciBmdWxsLXJlc2V0IGFuZCByZWluaXRp YWxpemUgQXNpYw0KPiArICogUmV0dXJucyAwIGZvciBzdWNjZXNzIG9yIGFuIGVycm9yIG9uIGZh aWx1cmUuDQo+ICsgKi8NCj4gKw0KPiAraW50IGFtZGdwdV9kZXZpY2VfZ3B1X3JlY292ZXIoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+ICsJCQkgICAgICBzdHJ1Y3QgYW1kZ3B1X2pvYiAq am9iKQ0KPiArew0KPiArCWludCByOw0KPiArCXN0cnVjdCBhbWRncHVfaGl2ZV9pbmZvICpoaXZl ID0gTlVMTDsNCj4gKwlib29sIG5lZWRfZnVsbF9yZXNldCA9IGZhbHNlOw0KPiArCXN0cnVjdCBh bWRncHVfZGV2aWNlICp0bXBfYWRldiA9IE5VTEw7DQo+ICsJc3RydWN0IGxpc3RfaGVhZCBkZXZp Y2VfbGlzdCwgKmRldmljZV9saXN0X2hhbmRsZSA9ICBOVUxMOw0KPiArDQo+ICsJSU5JVF9MSVNU X0hFQUQoJmRldmljZV9saXN0KTsNCj4gKw0KPiArCWRldl9pbmZvKGFkZXYtPmRldiwgIkdQVSBy ZXNldCBiZWdpbiFcbiIpOw0KPiArDQo+ICsJLyoNCj4gKwkgKiBJbiBjYXNlIG9mIFhHTUkgaGl2 ZSBkaXNhbGxvdyBjb25jdXJyZW50IHJlc2V0cyB0byBiZSB0cmlnZ2VyZWQNCj4gKwkgKiBieSBk aWZmZXJlbnQgbm9kZXMuDQo+ICsJICovDQo+ICsJaWYgKGFkZXYtPmdtYy54Z21pLm51bV9waHlz aWNhbF9ub2RlcyA+IDEpDQo+ICsJCW11dGV4X2xvY2soJnhnbWlfbXV0ZXgpOw0KPiArDQo+ICsJ LyogU3RhcnQgd2l0aCBhZGV2IHByZSBhc2ljIHJlc2V0IGZpcnN0IGZvciBzb2Z0IHJlc2V0IGNo ZWNrLiovDQo+ICsJYW1kZ3B1X2xvY2tfYWRldihhZGV2KTsNCj4gKwlyID0gYW1kZ3B1X2Rldmlj ZV9wcmVfYXNpY19yZXNldChhZGV2LA0KPiArCQkJCQkgam9iLA0KPiArCQkJCQkgJm5lZWRfZnVs bF9yZXNldCk7DQo+ICsJaWYgKHIpIHsNCj4gKwkJLypUT0RPIFNob3VsZCB3ZSBzdG9wID8qLw0K PiArCQlEUk1fRVJST1IoIkdQVSBwcmUgYXNpYyByZXNldCBmYWlsZWQgd2l0aCBlcnIsICVkIGZv ciBkcm0gZGV2LCAlcyAiLA0KPiArCQkJICByLCBhZGV2LT5kZGV2LT51bmlxdWUpOw0KPiArCQlh ZGV2LT5hc2ljX3Jlc2V0X3JlcyA9IHI7DQo+ICsJfQ0KPiArDQo+ICsJLyogQnVpbGQgbGlzdCBv ZiBkZXZpY2VzIHRvIHJlc2V0ICovDQo+ICsJaWYgIChuZWVkX2Z1bGxfcmVzZXQgJiYgYWRldi0+ Z21jLnhnbWkubnVtX3BoeXNpY2FsX25vZGVzID4gMSkgew0KPiArCQloaXZlID0gYW1kZ3B1X2dl dF94Z21pX2hpdmUoYWRldik7DQo+ICsJCWlmICghaGl2ZSkgew0KPiArCQkJciA9IC1FTk9ERVY7 DQo+ICsNCj4gKwkJCWFtZGdwdV91bmxvY2tfYWRldihhZGV2KTsNCj4gKw0KPiArCQkJaWYgKGFk ZXYtPmdtYy54Z21pLm51bV9waHlzaWNhbF9ub2RlcyA+IDEpDQo+ICsJCQkJbXV0ZXhfdW5sb2Nr KCZ4Z21pX211dGV4KTsNCj4gKwkJCXJldHVybiByOw0KPiArCQl9DQo+ICsNCj4gKwkJLyoNCj4g KwkJICogSW4gY2FzZSB3ZSBhcmUgaW4gWEdNSSBoaXZlIG1vZGUgZGV2aWNlIHJlc2V0IGlzIGRv bmUgZm9yIGFsbCB0aGUNCj4gKwkJICogbm9kZXMgaW4gdGhlIGhpdmUgdG8gcmV0cmFpbiBhbGwg WEdNSSBsaW5rcyBhbmQgaGVuY2UgdGhlIHJlc2V0DQo+ICsJCSAqIHNlcXVlbmNlIGlzIGV4ZWN1 dGVkIGluIGxvb3Agb24gYWxsIG5vZGVzLg0KPiArCQkgKi8NCj4gKwkJZGV2aWNlX2xpc3RfaGFu ZGxlID0gYW1kZ3B1X3hnbWlfZ2V0X2FkZXZfbGlzdF9oYW5kbGUoaGl2ZSk7DQo+ICsJfSBlbHNl IHsNCj4gKwkJbGlzdF9hZGRfdGFpbCgmYWRldi0+Z21jLnhnbWkuaGVhZCwgJmRldmljZV9saXN0 KTsNCj4gKwkJZGV2aWNlX2xpc3RfaGFuZGxlID0gJmRldmljZV9saXN0Ow0KPiArCX0NCj4gKw0K PiArcmV0cnk6CS8qIFJlc3Qgb2YgYWRldnMgcHJlIGFzaWMgcmVzZXQgZnJvbSBYR01JIGhpdmUu ICovDQo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeSh0bXBfYWRldiwgZGV2aWNlX2xpc3RfaGFuZGxl LCBnbWMueGdtaS5oZWFkKSB7DQo+ICsNCj4gKwkJaWYgKHRtcF9hZGV2ID09IGFkZXYpDQo+ICsJ CQljb250aW51ZTsNCj4gKw0KPiArCQlkZXZfaW5mbyh0bXBfYWRldi0+ZGV2LCAiR1BVIHJlc2V0 IGJlZ2luIGZvciBkcm0gZGV2ICVzIVxuIiwgYWRldi0+ZGRldi0+dW5pcXVlKTsNCj4gKw0KPiAr CQlhbWRncHVfbG9ja19hZGV2KHRtcF9hZGV2KTsNCj4gKwkJciA9IGFtZGdwdV9kZXZpY2VfcHJl X2FzaWNfcmVzZXQodG1wX2FkZXYsDQo+ICsJCQkJCQkgTlVMTCwNCj4gKwkJCQkJCSAmbmVlZF9m dWxsX3Jlc2V0KTsNCj4gKwkJLypUT0RPIFNob3VsZCB3ZSBzdG9wID8qLw0KPiArCQlpZiAocikg ew0KPiArCQkJRFJNX0VSUk9SKCJHUFUgcHJlIGFzaWMgcmVzZXQgZmFpbGVkIHdpdGggZXJyLCAl ZCBmb3IgZHJtIGRldiwgJXMgIiwNCj4gKwkJCQkgIHIsIHRtcF9hZGV2LT5kZGV2LT51bmlxdWUp Ow0KPiArCQkJdG1wX2FkZXYtPmFzaWNfcmVzZXRfcmVzID0gcjsNCj4gKwkJfQ0KPiArCX0NCj4g Kw0KPiArCS8qIEFjdHVhbCBBU0lDIHJlc2V0cyBpZiBuZWVkZWQuKi8NCj4gKwkvKiBUT0RPIElt cGxlbWVudCBYR01JIGhpdmUgcmVzZXQgbG9naWMgZm9yIFNSSU9WICovDQo+ICsJaWYgKGFtZGdw dV9zcmlvdl92ZihhZGV2KSkgew0KPiArCQlyID0gYW1kZ3B1X2RldmljZV9yZXNldF9zcmlvdihh ZGV2LCBqb2IgPyBmYWxzZSA6IHRydWUpOw0KPiArCQlpZiAocikNCj4gKwkJCWFkZXYtPmFzaWNf cmVzZXRfcmVzID0gcjsNCj4gKwl9IGVsc2Ugew0KPiArCQlyICA9IGFtZGdwdV9kb19hc2ljX3Jl c2V0KGhpdmUsIGRldmljZV9saXN0X2hhbmRsZSwgJm5lZWRfZnVsbF9yZXNldCk7DQo+ICsJCWlm IChyICYmIHIgPT0gLUVBR0FJTikNCj4gKwkJCWdvdG8gcmV0cnk7DQo+ICsJfQ0KPiArDQo+ICsJ LyogUG9zdCBBU0lDIHJlc2V0IGZvciBhbGwgZGV2cyAuKi8NCj4gKwlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KHRtcF9hZGV2LCBkZXZpY2VfbGlzdF9oYW5kbGUsIGdtYy54Z21pLmhlYWQpIHsNCj4gKwkJ YW1kZ3B1X2RldmljZV9wb3N0X2FzaWNfcmVzZXQodG1wX2FkZXYsIHRtcF9hZGV2ID09IGFkZXYg PyBqb2IgOiBOVUxMKTsNCj4gKw0KPiArCQlpZiAocikgew0KPiArCQkJLyogYmFkIG5ld3MsIGhv dyB0byB0ZWxsIGl0IHRvIHVzZXJzcGFjZSA/ICovDQo+ICsJCQlkZXZfaW5mbyh0bXBfYWRldi0+ ZGV2LCAiR1BVIHJlc2V0KCVkKSBmYWlsZWRcbiIsIGF0b21pY19yZWFkKCZhZGV2LT5ncHVfcmVz ZXRfY291bnRlcikpOw0KPiArCQkJYW1kZ3B1X3ZmX2Vycm9yX3B1dCh0bXBfYWRldiwgQU1ER0lN X0VSUk9SX1ZGX0dQVV9SRVNFVF9GQUlMLCAwLCByKTsNCj4gKwkJfSBlbHNlIHsNCj4gKwkJCWRl dl9pbmZvKHRtcF9hZGV2LT5kZXYsICJHUFUgcmVzZXQoJWQpIHN1Y2NlZWRlZCFcbiIsIGF0b21p Y19yZWFkKCZhZGV2LT5ncHVfcmVzZXRfY291bnRlcikpOw0KPiArCQl9DQo+ICsNCj4gKwkJYW1k Z3B1X3VubG9ja19hZGV2KHRtcF9hZGV2KTsNCj4gKwl9DQo+ICsNCj4gKwlpZiAoYWRldi0+Z21j LnhnbWkubnVtX3BoeXNpY2FsX25vZGVzID4gMSkNCj4gKwkJbXV0ZXhfdW5sb2NrKCZ4Z21pX211 dGV4KTsNCj4gKw0KPiArCWlmIChyKQ0KPiArCQlkZXZfaW5mbyhhZGV2LT5kZXYsICJHUFUgcmVz ZXQgZW5kIHdpdGggcmV0ID0gJWRcbiIsIHIpOw0KPiAgIAlyZXR1cm4gcjsNCj4gICB9DQo+ICAg DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4 IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK