From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Koenig, Christian" Subject: Re: [PATCH 1/2] drm/amdgpu: Export function to flush TLB of specific vm hub Date: Wed, 14 Aug 2019 08:10:44 +0000 Message-ID: References: <1565324504-4445-1-git-send-email-Oak.Zeng@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1565324504-4445-1-git-send-email-Oak.Zeng-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US Content-ID: <04BF91F20563CD4BB531A37B996756B4-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: "Zeng, Oak" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" Cc: "Kuehling, Felix" , "Zhou1, Tao" QW0gMDkuMDguMTkgdW0gMDY6MjEgc2NocmllYiBaZW5nLCBPYWs6DQo+IFRoaXMgaXMgZm9yIGtm ZCB0byByZXVzZSBhbWRncHUgVExCIGludmFsaWRhdGlvbiBmdW5jdGlvbi4NCj4gT24gZ2Z4MTAs IGtmZCBvbmx5IG5lZWRzIHRvIGZsdXNoIFRMQiBvbiBnZnggaHViIGJ1dCBub3QNCj4gb24gbW0g aHViLiBTbyBleHBvcnQgYSBmdW5jdGlvbiBmb3IgS0ZEIGZsdXNoIFRMQiBvbmx5IG9uDQo+IHNw ZWNpZmljIGh1Yi4NCj4NCj4gQ2hhbmdlLUlkOiBJNThmZjAwOTY5Zjg4NDM4Y2ZkM2RjN2U5ZGVi N2JmZjBjMWJiNDEzMw0KPiBTaWduZWQtb2ZmLWJ5OiBPYWsgWmVuZyA8T2FrLlplbmdAYW1kLmNv bT4NCg0KUmV2aWV3ZWQtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1k LmNvbT4NCg0KPiAtLS0NCj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1k a2ZkX2dmeF92OS5jIHwgMTIgKystLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9nYXJ0LmMgICAgICAgICAgfCAgOSArKy0NCj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfZ21jLmggICAgICAgICAgIHwgIDYgKy0NCj4gICBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9nZnhfdjEwXzAuYyAgICAgICAgICAgIHwgIDUgKy0NCj4gICBkcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9nbWNfdjEwXzAuYyAgICAgICAgICAgIHwgMTYgKysrKy0tDQo+ICAg ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y2XzAuYyAgICAgICAgICAgICB8ICA2ICst DQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y3XzAuYyAgICAgICAgICAgICB8 ICA2ICstDQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y4XzAuYyAgICAgICAg ICAgICB8ICA2ICstDQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y5XzAuYyAg ICAgICAgICAgICB8IDY5ICsrKysrKysrKysrKy0tLS0tLS0tLS0tDQo+ICAgOSBmaWxlcyBjaGFu Z2VkLCA3OCBpbnNlcnRpb25zKCspLCA1NyBkZWxldGlvbnMoLSkNCj4NCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y5LmMgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dmeF92OS5jDQo+IGluZGV4IDI2 OTU5MjUuLjc0MWEzYzUgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y5LmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2FtZGtmZF9nZnhfdjkuYw0KPiBAQCAtNjcwLDcgKzY3MCw3IEBAIHN0YXRpYyBp bnQgaW52YWxpZGF0ZV90bGJzX3dpdGhfa2lxKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1 aW50MTZfdCBwYXNpZCwNCj4gICBpbnQga2dkX2dmeF92OV9pbnZhbGlkYXRlX3RsYnMoc3RydWN0 IGtnZF9kZXYgKmtnZCwgdWludDE2X3QgcGFzaWQpDQo+ICAgew0KPiAgIAlzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKSBrZ2Q7DQo+IC0JaW50IHZt aWQ7DQo+ICsJaW50IHZtaWQsIGk7DQo+ICAgCXN0cnVjdCBhbWRncHVfcmluZyAqcmluZyA9ICZh ZGV2LT5nZngua2lxLnJpbmc7DQo+ICAgCXVpbnQzMl90IGZsdXNoX3R5cGUgPSAwOw0KPiAgIA0K PiBAQCAtNjg5LDggKzY4OSw5IEBAIGludCBrZ2RfZ2Z4X3Y5X2ludmFsaWRhdGVfdGxicyhzdHJ1 Y3Qga2dkX2RldiAqa2dkLCB1aW50MTZfdCBwYXNpZCkNCj4gICAJCWlmIChrZ2RfZ2Z4X3Y5X2dl dF9hdGNfdm1pZF9wYXNpZF9tYXBwaW5nX3ZhbGlkKGtnZCwgdm1pZCkpIHsNCj4gICAJCQlpZiAo a2dkX2dmeF92OV9nZXRfYXRjX3ZtaWRfcGFzaWRfbWFwcGluZ19wYXNpZChrZ2QsIHZtaWQpDQo+ ICAgCQkJCT09IHBhc2lkKSB7DQo+IC0JCQkJYW1kZ3B1X2dtY19mbHVzaF9ncHVfdGxiKGFkZXYs IHZtaWQsDQo+IC0JCQkJCQkJIGZsdXNoX3R5cGUpOw0KPiArCQkJCWZvciAoaSA9IDA7IGkgPCBh ZGV2LT5udW1fdm1odWJzOyBpKyspDQo+ICsJCQkJCWFtZGdwdV9nbWNfZmx1c2hfZ3B1X3RsYihh ZGV2LCB2bWlkLA0KPiArCQkJCQkJCQlpLCBmbHVzaF90eXBlKTsNCj4gICAJCQkJYnJlYWs7DQo+ ICAgCQkJfQ0KPiAgIAkJfQ0KPiBAQCAtNzAyLDYgKzcwMyw3IEBAIGludCBrZ2RfZ2Z4X3Y5X2lu dmFsaWRhdGVfdGxicyhzdHJ1Y3Qga2dkX2RldiAqa2dkLCB1aW50MTZfdCBwYXNpZCkNCj4gICBp bnQga2dkX2dmeF92OV9pbnZhbGlkYXRlX3RsYnNfdm1pZChzdHJ1Y3Qga2dkX2RldiAqa2dkLCB1 aW50MTZfdCB2bWlkKQ0KPiAgIHsNCj4gICAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAo c3RydWN0IGFtZGdwdV9kZXZpY2UgKikga2dkOw0KPiArCWludCBpOw0KPiAgIA0KPiAgIAlpZiAo IWFtZGdwdV9hbWRrZmRfaXNfa2ZkX3ZtaWQoYWRldiwgdm1pZCkpIHsNCj4gICAJCXByX2Vycigi bm9uIGtmZCB2bWlkICVkXG4iLCB2bWlkKTsNCj4gQEAgLTcyMyw3ICs3MjUsOSBAQCBpbnQga2dk X2dmeF92OV9pbnZhbGlkYXRlX3RsYnNfdm1pZChzdHJ1Y3Qga2dkX2RldiAqa2dkLCB1aW50MTZf dCB2bWlkKQ0KPiAgIAkgKiBUT0RPIDI6IHN1cHBvcnQgcmFuZ2UtYmFzZWQgaW52YWxpZGF0aW9u LCByZXF1aXJlcyBrZmcya2dkDQo+ICAgCSAqIGludGVyZmFjZSBjaGFuZ2UNCj4gICAJICovDQo+ IC0JYW1kZ3B1X2dtY19mbHVzaF9ncHVfdGxiKGFkZXYsIHZtaWQsIDApOw0KPiArCWZvciAoaSA9 IDA7IGkgPCBhZGV2LT5udW1fdm1odWJzOyBpKyspDQo+ICsJCWFtZGdwdV9nbWNfZmx1c2hfZ3B1 X3RsYihhZGV2LCB2bWlkLCBpLCAwKTsNCj4gKw0KPiAgIAlyZXR1cm4gMDsNCj4gICB9DQo+ICAg DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2FydC5j IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dhcnQuYw0KPiBpbmRleCA2ZDEx ZTE3Li5hNjdmZmZmIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfZ2FydC5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9n YXJ0LmMNCj4gQEAgLTI0OCw3ICsyNDgsOSBAQCBpbnQgYW1kZ3B1X2dhcnRfdW5iaW5kKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LCB1aW50NjRfdCBvZmZzZXQsDQo+ICAgCX0NCj4gICAJbWIo KTsNCj4gICAJYW1kZ3B1X2FzaWNfZmx1c2hfaGRwKGFkZXYsIE5VTEwpOw0KPiAtCWFtZGdwdV9n bWNfZmx1c2hfZ3B1X3RsYihhZGV2LCAwLCAwKTsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgYWRldi0+ bnVtX3ZtaHViczsgaSsrKQ0KPiArCQlhbWRncHVfZ21jX2ZsdXNoX2dwdV90bGIoYWRldiwgMCwg aSwgMCk7DQo+ICsNCj4gICAJcmV0dXJuIDA7DQo+ICAgfQ0KPiAgIA0KPiBAQCAtMzA5LDcgKzMx MSw3IEBAIGludCBhbWRncHVfZ2FydF9iaW5kKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1 aW50NjRfdCBvZmZzZXQsDQo+ICAgI2lmZGVmIENPTkZJR19EUk1fQU1ER1BVX0dBUlRfREVCVUdG Uw0KPiAgIAl1bnNpZ25lZCBpLHQscDsNCj4gICAjZW5kaWYNCj4gLQlpbnQgcjsNCj4gKwlpbnQg ciwgaTsNCj4gICANCj4gICAJaWYgKCFhZGV2LT5nYXJ0LnJlYWR5KSB7DQo+ICAgCQlXQVJOKDEs ICJ0cnlpbmcgdG8gYmluZCBtZW1vcnkgdG8gdW5pbml0aWFsaXplZCBHQVJUICFcbiIpOw0KPiBA QCAtMzMzLDcgKzMzNSw4IEBAIGludCBhbWRncHVfZ2FydF9iaW5kKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LCB1aW50NjRfdCBvZmZzZXQsDQo+ICAgDQo+ICAgCW1iKCk7DQo+ICAgCWFtZGdw dV9hc2ljX2ZsdXNoX2hkcChhZGV2LCBOVUxMKTsNCj4gLQlhbWRncHVfZ21jX2ZsdXNoX2dwdV90 bGIoYWRldiwgMCwgMCk7DQo+ICsJZm9yIChpID0gMDsgaSA8IGFkZXYtPm51bV92bWh1YnM7IGkr KykNCj4gKwkJYW1kZ3B1X2dtY19mbHVzaF9ncHVfdGxiKGFkZXYsIDAsIGksIDApOw0KPiAgIAly ZXR1cm4gMDsNCj4gICB9DQo+ICAgDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfZ21jLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf Z21jLmgNCj4gaW5kZXggMDcxMTQ1YS4uOGYyNjk5ZSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dtYy5oDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9nbWMuaA0KPiBAQCAtODksOCArODksOCBAQCBzdHJ1Y3QgYW1kZ3B1 X3ZtaHViIHsNCj4gICAgKi8NCj4gICBzdHJ1Y3QgYW1kZ3B1X2dtY19mdW5jcyB7DQo+ICAgCS8q IGZsdXNoIHRoZSB2bSB0bGIgdmlhIG1taW8gKi8NCj4gLQl2b2lkICgqZmx1c2hfZ3B1X3RsYiko c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+IC0JCQkgICAgICB1aW50MzJfdCB2bWlkLCB1 aW50MzJfdCBmbHVzaF90eXBlKTsNCj4gKwl2b2lkICgqZmx1c2hfZ3B1X3RsYikoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90IHZtaWQsDQo+ICsJCQkJdWludDMyX3Qgdm1odWIs IHVpbnQzMl90IGZsdXNoX3R5cGUpOw0KPiAgIAkvKiBmbHVzaCB0aGUgdm0gdGxiIHZpYSByaW5n ICovDQo+ICAgCXVpbnQ2NF90ICgqZW1pdF9mbHVzaF9ncHVfdGxiKShzdHJ1Y3QgYW1kZ3B1X3Jp bmcgKnJpbmcsIHVuc2lnbmVkIHZtaWQsDQo+ICAgCQkJCSAgICAgICB1aW50NjRfdCBwZF9hZGRy KTsNCj4gQEAgLTE4MCw3ICsxODAsNyBAQCBzdHJ1Y3QgYW1kZ3B1X2dtYyB7DQo+ICAgCXN0cnVj dCByYXNfY29tbW9uX2lmICAgICpyYXNfaWY7DQo+ICAgfTsNCj4gICANCj4gLSNkZWZpbmUgYW1k Z3B1X2dtY19mbHVzaF9ncHVfdGxiKGFkZXYsIHZtaWQsIHR5cGUpIChhZGV2KS0+Z21jLmdtY19m dW5jcy0+Zmx1c2hfZ3B1X3RsYigoYWRldiksICh2bWlkKSwgKHR5cGUpKQ0KPiArI2RlZmluZSBh bWRncHVfZ21jX2ZsdXNoX2dwdV90bGIoYWRldiwgdm1pZCwgdm1odWIsIHR5cGUpICgoYWRldikt PmdtYy5nbWNfZnVuY3MtPmZsdXNoX2dwdV90bGIoKGFkZXYpLCAodm1pZCksICh2bWh1YiksICh0 eXBlKSkpDQo+ICAgI2RlZmluZSBhbWRncHVfZ21jX2VtaXRfZmx1c2hfZ3B1X3RsYihyLCB2bWlk LCBhZGRyKSAociktPmFkZXYtPmdtYy5nbWNfZnVuY3MtPmVtaXRfZmx1c2hfZ3B1X3RsYigociks ICh2bWlkKSwgKGFkZHIpKQ0KPiAgICNkZWZpbmUgYW1kZ3B1X2dtY19lbWl0X3Bhc2lkX21hcHBp bmcociwgdm1pZCwgcGFzaWQpIChyKS0+YWRldi0+Z21jLmdtY19mdW5jcy0+ZW1pdF9wYXNpZF9t YXBwaW5nKChyKSwgKHZtaWQpLCAocGFzaWQpKQ0KPiAgICNkZWZpbmUgYW1kZ3B1X2dtY19nZXRf dm1fcGRlKGFkZXYsIGxldmVsLCBkc3QsIGZsYWdzKSAoYWRldiktPmdtYy5nbWNfZnVuY3MtPmdl dF92bV9wZGUoKGFkZXYpLCAobGV2ZWwpLCAoZHN0KSwgKGZsYWdzKSkNCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92MTBfMC5jIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvZ2Z4X3YxMF8wLmMNCj4gaW5kZXggOWRiNGM0Yi4uMWFkZGU4NSAxMDA2NDQN Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3YxMF8wLmMNCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3YxMF8wLmMNCj4gQEAgLTE3MzUsOSArMTcz NSwxMiBAQCBzdGF0aWMgdm9pZCBnZnhfdjEwXzBfaW5pdF9jc2Ioc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYpDQo+ICAgDQo+ICAgc3RhdGljIHZvaWQgZ2Z4X3YxMF8wX2luaXRfcGcoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+ICAgew0KPiArCWludCBpOw0KPiArDQo+ICAgCWdmeF92 MTBfMF9pbml0X2NzYihhZGV2KTsNCj4gICANCj4gLQlhbWRncHVfZ21jX2ZsdXNoX2dwdV90bGIo YWRldiwgMCwgMCk7DQo+ICsJZm9yIChpID0gMDsgaSA8IGFkZXYtPm51bV92bWh1YnM7IGkrKykN Cj4gKwkJYW1kZ3B1X2dtY19mbHVzaF9ncHVfdGxiKGFkZXYsIDAsIGksIDApOw0KPiAgIA0KPiAg IAkvKiBUT0RPOiBpbml0IHBvd2VyIGdhdGluZyAqLw0KPiAgIAlyZXR1cm47DQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjEwXzAuYyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2dtY192MTBfMC5jDQo+IGluZGV4IDRlM2FjMTAuLmI4YWZiMTIgMTAw NjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192MTBfMC5jDQo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192MTBfMC5jDQo+IEBAIC0yMjksOCAr MjI5LDggQEAgc3RhdGljIHZvaWQgZ21jX3YxMF8wX2ZsdXNoX3ZtX2h1YihzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwgdWludDMyX3Qgdm1pZCwNCj4gICAgKg0KPiAgICAqIEZsdXNoIHRoZSBU TEIgZm9yIHRoZSByZXF1ZXN0ZWQgcGFnZSB0YWJsZS4NCj4gICAgKi8NCj4gLXN0YXRpYyB2b2lk IGdtY192MTBfMF9mbHVzaF9ncHVfdGxiKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPiAt CQkJCSAgICB1aW50MzJfdCB2bWlkLCB1aW50MzJfdCBmbHVzaF90eXBlKQ0KPiArc3RhdGljIHZv aWQgZ21jX3YxMF8wX2ZsdXNoX2dwdV90bGIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVp bnQzMl90IHZtaWQsDQo+ICsJCQkJCXVpbnQzMl90IHZtaHViLCB1aW50MzJfdCBmbHVzaF90eXBl KQ0KPiAgIHsNCj4gICAJc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nID0gYWRldi0+bW1hbi5idWZm ZXJfZnVuY3NfcmluZzsNCj4gICAJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7DQo+IEBAIC0yNDMs NyArMjQzLDE0IEBAIHN0YXRpYyB2b2lkIGdtY192MTBfMF9mbHVzaF9ncHVfdGxiKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LA0KPiAgIA0KPiAgIAltdXRleF9sb2NrKCZhZGV2LT5tbWFuLmd0 dF93aW5kb3dfbG9jayk7DQo+ICAgDQo+IC0JZ21jX3YxMF8wX2ZsdXNoX3ZtX2h1YihhZGV2LCB2 bWlkLCBBTURHUFVfTU1IVUJfMCwgMCk7DQo+ICsJaWYgKHZtaHViID09IEFNREdQVV9NTUhVQl8w KSB7DQo+ICsJCWdtY192MTBfMF9mbHVzaF92bV9odWIoYWRldiwgdm1pZCwgQU1ER1BVX01NSFVC XzAsIDApOw0KPiArCQltdXRleF91bmxvY2soJmFkZXYtPm1tYW4uZ3R0X3dpbmRvd19sb2NrKTsN Cj4gKwkJcmV0dXJuOw0KPiArCX0NCj4gKw0KPiArCUJVR19PTih2bWh1YiAhPSBBTURHUFVfR0ZY SFVCXzApOw0KPiArDQo+ICAgCWlmICghYWRldi0+bW1hbi5idWZmZXJfZnVuY3NfZW5hYmxlZCB8 fA0KPiAgIAkgICAgIWFkZXYtPmliX3Bvb2xfcmVhZHkgfHwNCj4gICAJICAgIGFkZXYtPmFzaWNf dHlwZSA+IENISVBfTkFWSTE0IHx8DQo+IEBAIC03NzMsNyArNzgwLDggQEAgc3RhdGljIGludCBn bWNfdjEwXzBfZ2FydF9lbmFibGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+ICAgDQo+ ICAgCWdmeGh1Yl92Ml8wX3NldF9mYXVsdF9lbmFibGVfZGVmYXVsdChhZGV2LCB2YWx1ZSk7DQo+ ICAgCW1taHViX3YyXzBfc2V0X2ZhdWx0X2VuYWJsZV9kZWZhdWx0KGFkZXYsIHZhbHVlKTsNCj4g LQlnbWNfdjEwXzBfZmx1c2hfZ3B1X3RsYihhZGV2LCAwLCAwKTsNCj4gKwlnbWNfdjEwXzBfZmx1 c2hfZ3B1X3RsYihhZGV2LCAwLCBBTURHUFVfTU1IVUJfMCwgMCk7DQo+ICsJZ21jX3YxMF8wX2Zs dXNoX2dwdV90bGIoYWRldiwgMCwgQU1ER1BVX0dGWEhVQl8wLCAwKTsNCj4gICANCj4gICAJRFJN X0lORk8oIlBDSUUgR0FSVCBvZiAldU0gZW5hYmxlZCAodGFibGUgYXQgMHglMDE2bGxYKS5cbiIs DQo+ICAgCQkgKHVuc2lnbmVkKShhZGV2LT5nbWMuZ2FydF9zaXplID4+IDIwKSwNCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192Nl8wLmMgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9nbWNfdjZfMC5jDQo+IGluZGV4IGIwNmQ4NzYuLjU2NGZiMWMgMTAw NjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192Nl8wLmMNCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y2XzAuYw0KPiBAQCAtMzU5LDggKzM1 OSw4IEBAIHN0YXRpYyBpbnQgZ21jX3Y2XzBfbWNfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldikNCj4gICAJcmV0dXJuIDA7DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGljIHZvaWQgZ21jX3Y2 XzBfZmx1c2hfZ3B1X3RsYihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCj4gLQkJCQl1aW50 MzJfdCB2bWlkLCB1aW50MzJfdCBmbHVzaF90eXBlKQ0KPiArc3RhdGljIHZvaWQgZ21jX3Y2XzBf Zmx1c2hfZ3B1X3RsYihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3Qgdm1pZCwN Cj4gKwkJCQkJdWludDMyX3Qgdm1odWIsIHVpbnQzMl90IGZsdXNoX3R5cGUpDQo+ICAgew0KPiAg IAlXUkVHMzIobW1WTV9JTlZBTElEQVRFX1JFUVVFU1QsIDEgPDwgdm1pZCk7DQo+ICAgfQ0KPiBA QCAtNTY4LDcgKzU2OCw3IEBAIHN0YXRpYyBpbnQgZ21jX3Y2XzBfZ2FydF9lbmFibGUoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+ICAgCWVsc2UNCj4gICAJCWdtY192Nl8wX3NldF9mYXVs dF9lbmFibGVfZGVmYXVsdChhZGV2LCB0cnVlKTsNCj4gICANCj4gLQlnbWNfdjZfMF9mbHVzaF9n cHVfdGxiKGFkZXYsIDAsIDApOw0KPiArCWdtY192Nl8wX2ZsdXNoX2dwdV90bGIoYWRldiwgMCwg MCwgMCk7DQo+ICAgCWRldl9pbmZvKGFkZXYtPmRldiwgIlBDSUUgR0FSVCBvZiAldU0gZW5hYmxl ZCAodGFibGUgYXQgMHglMDE2bGxYKS5cbiIsDQo+ICAgCQkgKHVuc2lnbmVkKShhZGV2LT5nbWMu Z2FydF9zaXplID4+IDIwKSwNCj4gICAJCSAodW5zaWduZWQgbG9uZyBsb25nKXRhYmxlX2FkZHIp Ow0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y3XzAuYyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192N18wLmMNCj4gaW5kZXggNzVhYTMzMy4u OWU2YTIzMyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y3 XzAuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjdfMC5jDQo+IEBA IC00MzAsOCArNDMwLDggQEAgc3RhdGljIGludCBnbWNfdjdfMF9tY19pbml0KHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2KQ0KPiAgICAqDQo+ICAgICogRmx1c2ggdGhlIFRMQiBmb3IgdGhlIHJl cXVlc3RlZCBwYWdlIHRhYmxlIChDSUspLg0KPiAgICAqLw0KPiAtc3RhdGljIHZvaWQgZ21jX3Y3 XzBfZmx1c2hfZ3B1X3RsYihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCj4gLQkJCQl1aW50 MzJfdCB2bWlkLCB1aW50MzJfdCBmbHVzaF90eXBlKQ0KPiArc3RhdGljIHZvaWQgZ21jX3Y3XzBf Zmx1c2hfZ3B1X3RsYihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3Qgdm1pZCwN Cj4gKwkJCQkJdWludDMyX3Qgdm1odWIsIHVpbnQzMl90IGZsdXNoX3R5cGUpDQo+ICAgew0KPiAg IAkvKiBiaXRzIDAtMTUgYXJlIHRoZSBWTSBjb250ZXh0czAtMTUgKi8NCj4gICAJV1JFRzMyKG1t Vk1fSU5WQUxJREFURV9SRVFVRVNULCAxIDw8IHZtaWQpOw0KPiBAQCAtNjc0LDcgKzY3NCw3IEBA IHN0YXRpYyBpbnQgZ21jX3Y3XzBfZ2FydF9lbmFibGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYpDQo+ICAgCQlXUkVHMzIobW1DSFVCX0NPTlRST0wsIHRtcCk7DQo+ICAgCX0NCj4gICANCj4g LQlnbWNfdjdfMF9mbHVzaF9ncHVfdGxiKGFkZXYsIDAsIDApOw0KPiArCWdtY192N18wX2ZsdXNo X2dwdV90bGIoYWRldiwgMCwgMCwgMCk7DQo+ICAgCURSTV9JTkZPKCJQQ0lFIEdBUlQgb2YgJXVN IGVuYWJsZWQgKHRhYmxlIGF0IDB4JTAxNmxsWCkuXG4iLA0KPiAgIAkJICh1bnNpZ25lZCkoYWRl di0+Z21jLmdhcnRfc2l6ZSA+PiAyMCksDQo+ICAgCQkgKHVuc2lnbmVkIGxvbmcgbG9uZyl0YWJs ZV9hZGRyKTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192 OF8wLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjhfMC5jDQo+IGluZGV4IDhi ZjJiYTMuLmY3ZDZhMDcgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2dtY192OF8wLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y4XzAu Yw0KPiBAQCAtNjMyLDggKzYzMiw4IEBAIHN0YXRpYyBpbnQgZ21jX3Y4XzBfbWNfaW5pdChzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldikNCj4gICAgKg0KPiAgICAqIEZsdXNoIHRoZSBUTEIgZm9y IHRoZSByZXF1ZXN0ZWQgcGFnZSB0YWJsZSAoVkkpLg0KPiAgICAqLw0KPiAtc3RhdGljIHZvaWQg Z21jX3Y4XzBfZmx1c2hfZ3B1X3RsYihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCj4gLQkJ CQl1aW50MzJfdCB2bWlkLCB1aW50MzJfdCBmbHVzaF90eXBlKQ0KPiArc3RhdGljIHZvaWQgZ21j X3Y4XzBfZmx1c2hfZ3B1X3RsYihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3Qg dm1pZCwNCj4gKwkJCQkJdWludDMyX3Qgdm1odWIsIHVpbnQzMl90IGZsdXNoX3R5cGUpDQo+ICAg ew0KPiAgIAkvKiBiaXRzIDAtMTUgYXJlIHRoZSBWTSBjb250ZXh0czAtMTUgKi8NCj4gICAJV1JF RzMyKG1tVk1fSU5WQUxJREFURV9SRVFVRVNULCAxIDw8IHZtaWQpOw0KPiBAQCAtOTE4LDcgKzkx OCw3IEBAIHN0YXRpYyBpbnQgZ21jX3Y4XzBfZ2FydF9lbmFibGUoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYpDQo+ICAgCWVsc2UNCj4gICAJCWdtY192OF8wX3NldF9mYXVsdF9lbmFibGVfZGVm YXVsdChhZGV2LCB0cnVlKTsNCj4gICANCj4gLQlnbWNfdjhfMF9mbHVzaF9ncHVfdGxiKGFkZXYs IDAsIDApOw0KPiArCWdtY192OF8wX2ZsdXNoX2dwdV90bGIoYWRldiwgMCwgMCwgMCk7DQo+ICAg CURSTV9JTkZPKCJQQ0lFIEdBUlQgb2YgJXVNIGVuYWJsZWQgKHRhYmxlIGF0IDB4JTAxNmxsWCku XG4iLA0KPiAgIAkJICh1bnNpZ25lZCkoYWRldi0+Z21jLmdhcnRfc2l6ZSA+PiAyMCksDQo+ICAg CQkgKHVuc2lnbmVkIGxvbmcgbG9uZyl0YWJsZV9hZGRyKTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192OV8wLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9nbWNfdjlfMC5jDQo+IGluZGV4IGEyYWEzNWUuLmY4NjIzNjYgMTAwNjQ0DQo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192OV8wLmMNCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y5XzAuYw0KPiBAQCAtNDQ4LDQ0ICs0NDgsNDUgQEAgc3Rh dGljIHVpbnQzMl90IGdtY192OV8wX2dldF9pbnZhbGlkYXRlX3JlcSh1bnNpZ25lZCBpbnQgdm1p ZCwNCj4gICAgKg0KPiAgICAqIEZsdXNoIHRoZSBUTEIgZm9yIHRoZSByZXF1ZXN0ZWQgcGFnZSB0 YWJsZSB1c2luZyBjZXJ0YWluIHR5cGUuDQo+ICAgICovDQo+IC1zdGF0aWMgdm9pZCBnbWNfdjlf MF9mbHVzaF9ncHVfdGxiKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPiAtCQkJCXVpbnQz Ml90IHZtaWQsIHVpbnQzMl90IGZsdXNoX3R5cGUpDQo+ICtzdGF0aWMgdm9pZCBnbWNfdjlfMF9m bHVzaF9ncHVfdGxiKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCB2bWlkLA0K PiArCQkJCQl1aW50MzJfdCB2bWh1YiwgdWludDMyX3QgZmx1c2hfdHlwZSkNCj4gICB7DQo+ICAg CWNvbnN0IHVuc2lnbmVkIGVuZyA9IDE3Ow0KPiAtCXVuc2lnbmVkIGksIGo7DQo+ICsJdTMyIGos IHRtcDsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X3ZtaHViICpodWI7DQo+ICAgDQo+IC0JZm9yIChpID0g MDsgaSA8IGFkZXYtPm51bV92bWh1YnM7ICsraSkgew0KPiAtCQlzdHJ1Y3QgYW1kZ3B1X3ZtaHVi ICpodWIgPSAmYWRldi0+dm1odWJbaV07DQo+IC0JCXUzMiB0bXAgPSBnbWNfdjlfMF9nZXRfaW52 YWxpZGF0ZV9yZXEodm1pZCwgZmx1c2hfdHlwZSk7DQo+ICsJQlVHX09OKHZtaHViID49IGFkZXYt Pm51bV92bWh1YnMpOw0KPiAgIA0KPiAtCQkvKiBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgYSBIVyB3 b3JrYXJvdW5kIHVuZGVyIFNSSU9WIGFzIHdlbGwNCj4gLQkJICogYXMgR0ZYT0ZGIHVuZGVyIGJh cmUgbWV0YWwNCj4gLQkJICovDQo+IC0JCWlmIChhZGV2LT5nZngua2lxLnJpbmcuc2NoZWQucmVh ZHkgJiYNCj4gLQkJICAgIChhbWRncHVfc3Jpb3ZfcnVudGltZShhZGV2KSB8fCAhYW1kZ3B1X3Ny aW92X3ZmKGFkZXYpKSAmJg0KPiAtCQkgICAgIWFkZXYtPmluX2dwdV9yZXNldCkgew0KPiAtCQkJ dWludDMyX3QgcmVxID0gaHViLT52bV9pbnZfZW5nMF9yZXEgKyBlbmc7DQo+IC0JCQl1aW50MzJf dCBhY2sgPSBodWItPnZtX2ludl9lbmcwX2FjayArIGVuZzsNCj4gLQ0KPiAtCQkJYW1kZ3B1X3Zp cnRfa2lxX3JlZ193cml0ZV9yZWdfd2FpdChhZGV2LCByZXEsIGFjaywgdG1wLA0KPiAtCQkJCQkJ CSAgIDEgPDwgdm1pZCk7DQo+IC0JCQljb250aW51ZTsNCj4gLQkJfQ0KPiArCWh1YiA9ICZhZGV2 LT52bWh1Ylt2bWh1Yl07DQo+ICsJdG1wID0gZ21jX3Y5XzBfZ2V0X2ludmFsaWRhdGVfcmVxKHZt aWQsIGZsdXNoX3R5cGUpOw0KPiAgIA0KPiAtCQlzcGluX2xvY2soJmFkZXYtPmdtYy5pbnZhbGlk YXRlX2xvY2spOw0KPiAtCQlXUkVHMzJfTk9fS0lRKGh1Yi0+dm1faW52X2VuZzBfcmVxICsgZW5n LCB0bXApOw0KPiAtCQlmb3IgKGogPSAwOyBqIDwgYWRldi0+dXNlY190aW1lb3V0OyBqKyspIHsN Cj4gLQkJCXRtcCA9IFJSRUczMl9OT19LSVEoaHViLT52bV9pbnZfZW5nMF9hY2sgKyBlbmcpOw0K PiAtCQkJaWYgKHRtcCAmICgxIDw8IHZtaWQpKQ0KPiAtCQkJCWJyZWFrOw0KPiAtCQkJdWRlbGF5 KDEpOw0KPiAtCQl9DQo+IC0JCXNwaW5fdW5sb2NrKCZhZGV2LT5nbWMuaW52YWxpZGF0ZV9sb2Nr KTsNCj4gLQkJaWYgKGogPCBhZGV2LT51c2VjX3RpbWVvdXQpDQo+IC0JCQljb250aW51ZTsNCj4g KwkvKiBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgYSBIVyB3b3JrYXJvdW5kIHVuZGVyIFNSSU9WIGFz IHdlbGwNCj4gKwkgKiBhcyBHRlhPRkYgdW5kZXIgYmFyZSBtZXRhbA0KPiArCSAqLw0KPiArCWlm IChhZGV2LT5nZngua2lxLnJpbmcuc2NoZWQucmVhZHkgJiYNCj4gKwkJCShhbWRncHVfc3Jpb3Zf cnVudGltZShhZGV2KSB8fCAhYW1kZ3B1X3NyaW92X3ZmKGFkZXYpKSAmJg0KPiArCQkJIWFkZXYt PmluX2dwdV9yZXNldCkgew0KPiArCQl1aW50MzJfdCByZXEgPSBodWItPnZtX2ludl9lbmcwX3Jl cSArIGVuZzsNCj4gKwkJdWludDMyX3QgYWNrID0gaHViLT52bV9pbnZfZW5nMF9hY2sgKyBlbmc7 DQo+ICsNCj4gKwkJYW1kZ3B1X3ZpcnRfa2lxX3JlZ193cml0ZV9yZWdfd2FpdChhZGV2LCByZXEs IGFjaywgdG1wLA0KPiArCQkJCTEgPDwgdm1pZCk7DQo+ICsJCXJldHVybjsNCj4gKwl9DQo+ICAg DQo+IC0JCURSTV9FUlJPUigiVGltZW91dCB3YWl0aW5nIGZvciBWTSBmbHVzaCBBQ0shXG4iKTsN Cj4gKwlzcGluX2xvY2soJmFkZXYtPmdtYy5pbnZhbGlkYXRlX2xvY2spOw0KPiArCVdSRUczMl9O T19LSVEoaHViLT52bV9pbnZfZW5nMF9yZXEgKyBlbmcsIHRtcCk7DQo+ICsJZm9yIChqID0gMDsg aiA8IGFkZXYtPnVzZWNfdGltZW91dDsgaisrKSB7DQo+ICsJCXRtcCA9IFJSRUczMl9OT19LSVEo aHViLT52bV9pbnZfZW5nMF9hY2sgKyBlbmcpOw0KPiArCQlpZiAodG1wICYgKDEgPDwgdm1pZCkp DQo+ICsJCQlicmVhazsNCj4gKwkJdWRlbGF5KDEpOw0KPiAgIAl9DQo+ICsJc3Bpbl91bmxvY2so JmFkZXYtPmdtYy5pbnZhbGlkYXRlX2xvY2spOw0KPiArCWlmIChqIDwgYWRldi0+dXNlY190aW1l b3V0KQ0KPiArCQlyZXR1cm47DQo+ICsNCj4gKwlEUk1fRVJST1IoIlRpbWVvdXQgd2FpdGluZyBm b3IgVk0gZmx1c2ggQUNLIVxuIik7DQo+ICAgfQ0KPiAgIA0KPiAgIHN0YXRpYyB1aW50NjRfdCBn bWNfdjlfMF9lbWl0X2ZsdXNoX2dwdV90bGIoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLA0KPiBA QCAtMTIzOSw3ICsxMjQwLDcgQEAgc3RhdGljIHZvaWQgZ21jX3Y5XzBfaW5pdF9nb2xkZW5fcmVn aXN0ZXJzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQ0KPiAgICAqLw0KPiAgIHN0YXRpYyBp bnQgZ21jX3Y5XzBfZ2FydF9lbmFibGUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+ICAg ew0KPiAtCWludCByOw0KPiArCWludCByLCBpOw0KPiAgIAlib29sIHZhbHVlOw0KPiAgIAl1MzIg dG1wOw0KPiAgIA0KPiBAQCAtMTI5NSw3ICsxMjk2LDkgQEAgc3RhdGljIGludCBnbWNfdjlfMF9n YXJ0X2VuYWJsZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikNCj4gICAJCW1taHViX3Y5XzRf c2V0X2ZhdWx0X2VuYWJsZV9kZWZhdWx0KGFkZXYsIHZhbHVlKTsNCj4gICAJZWxzZQ0KPiAgIAkJ bW1odWJfdjFfMF9zZXRfZmF1bHRfZW5hYmxlX2RlZmF1bHQoYWRldiwgdmFsdWUpOw0KPiAtCWdt Y192OV8wX2ZsdXNoX2dwdV90bGIoYWRldiwgMCwgMCk7DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBp IDwgYWRldi0+bnVtX3ZtaHViczsgKytpKQ0KPiArCQlnbWNfdjlfMF9mbHVzaF9ncHVfdGxiKGFk ZXYsIDAsIGksIDApOw0KPiAgIA0KPiAgIAlEUk1fSU5GTygiUENJRSBHQVJUIG9mICV1TSBlbmFi bGVkICh0YWJsZSBhdCAweCUwMTZsbFgpLlxuIiwNCj4gICAJCSAodW5zaWduZWQpKGFkZXYtPmdt Yy5nYXJ0X3NpemUgPj4gMjApLA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ft ZC1nZng=