From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kuehling, Felix" Subject: Re: [PATCH 6/8] drm/amdgpu: allocate VM PDs/PTs on demand Date: Tue, 5 Feb 2019 23:51:28 +0000 Message-ID: <1a54fcea-e90b-159d-23b8-239e0d66a45d@amd.com> References: <20190204124256.1765-1-christian.koenig@amd.com> <20190204124256.1765-6-christian.koenig@amd.com> <2feffc18-277e-b3b9-8991-2afae9558bdf@gmail.com> <7bf939a3-cfe6-9559-8479-4c69368d369a@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <7bf939a3-cfe6-9559-8479-4c69368d369a-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US Content-ID: <6D84DAC21308DD49BBD8BD1568267812-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: "Koenig, Christian" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" T24gMjAxOS0wMi0wNSAxMTowMCBhLm0uLCBLb2VuaWcsIENocmlzdGlhbiB3cm90ZToNCj4gQWgh IFRoZSBpbml0aWFsIGNsZWFyIG9mIHRoZSBQRHMgaXMgc3luY2luZyB0byBldmVyeXRoaW5nIQ0K DQpSaWdodC4gVXNpbmcgYW1kZ3B1X3N5bmNfcmVzdiguLi4gQU1ER1BVX0ZFTkNFX09XTkVSX1ZN IC4uLikgaW4gDQphbWRncHVfdm1fY2xlYXJfYm8gc2VlbXMgdG8gaGVscC4gQnV0IGlmIEkgYWxz byBjaGFuZ2UgdGhlIA0KYW1kZ3B1X2pvYl9zdWJtaXQgdG8gdXNlIEFNREdQVV9GRU5DRV9PV05F Ul9WTSwgSSBnZXQgYSBWTSBmYXVsdCBhbmQgQ1AgDQpoYW5nIHZlcnkgZWFybHkgaW4gbXkgdGVz dC4gTm90IHN1cmUgd2hhdCdzIGhhcHBlbmluZyB0aGVyZS4gVGhpcyBpcyANCndoYXQgSSBjaGFu Z2VkOg0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Zt LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYw0KaW5kZXggOGIyNDBm OS4uMDZjMjhhYyAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV92bS5jDQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYw0KQEAg LTgyNiwxNyArODI2LDE4IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3ZtX2NsZWFyX2JvKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LA0KICANCiAgICAgICAgIFdBUk5fT04oam9iLT5pYnNbMF0ubGVu Z3RoX2R3ID4gNjQpOw0KICAgICAgICAgciA9IGFtZGdwdV9zeW5jX3Jlc3YoYWRldiwgJmpvYi0+ c3luYywgYm8tPnRiby5yZXN2LA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTURHUFVf RkVOQ0VfT1dORVJfVU5ERUZJTkVELCBmYWxzZSk7DQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEFNREdQVV9GRU5DRV9PV05FUl9WTSwgZmFsc2UpOw0KICAgICAgICAgaWYgKHIpDQogICAg ICAgICAgICAgICAgIGdvdG8gZXJyb3JfZnJlZTsNCiAgDQotICAgICAgIHIgPSBhbWRncHVfam9i X3N1Ym1pdChqb2IsICZ2bS0+ZW50aXR5LCBBTURHUFVfRkVOQ0VfT1dORVJfVU5ERUZJTkVELA0K KyAgICAgICByID0gYW1kZ3B1X2pvYl9zdWJtaXQoam9iLCAmdm0tPmVudGl0eSwgQU1ER1BVX0ZF TkNFX09XTkVSX1ZNLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmZW5jZSk7DQog ICAgICAgICBpZiAocikNCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcl9mcmVlOw0KICANCiAg ICAgICAgIGFtZGdwdV9ib19mZW5jZShibywgZmVuY2UsIHRydWUpOw0KLSAgICAgICBkbWFfZmVu Y2VfcHV0KGZlbmNlKTsNCisgICAgICAgZG1hX2ZlbmNlX3B1dCh2bS0+bGFzdF91cGRhdGUpOw0K KyAgICAgICB2bS0+bGFzdF91cGRhdGUgPSBmZW5jZTsNCiAgDQogICAgICAgICBpZiAoYm8tPnNo YWRvdykNCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFtZGdwdV92bV9jbGVhcl9ibyhhZGV2LCB2 bSwgYm8tPnNoYWRvdywNCg0KQmFzaWNhbGx5IEkgdHJpZWQgdG8gZG8gdGhlIHN5bmNocm9uaXph dGlvbiBleGFjdGx5IGxpa2UgDQphbWRncHVfdm1fdXBkYXRlX2RpcmVjdG9yaWVzLg0KDQpUaGUg b25seSB3YXkgdGhpcyBjbGVhciBjb3VsZCBjYXVzZSBhIFZNIGZhdWx0IGlzLCBpZiBhIHN1YnNl cXVlbnQgDQpQVEUvUERTIHVwZGF0ZSBoYXBwZW5zIHRvbyBlYXJseSBhbmQgZ2V0cyBvdmVyd3Jp dHRlbiBieSB0aGUgcGVuZGluZyANCmNsZWFyLiBCdXQgZG9uJ3QgdGhlIGNsZWFyIGFuZCB0aGUg bmV4dCBQVEUvUERFIHVwZGF0ZSBnbyB0byB0aGUgc2FtZSANCnF1ZXVlICh2bS0+ZW50aXR5KSBh bmQgYXJlIGltcGxpY2l0bHkgc3luY2hyb25pemVkPw0KDQpBbnN3ZXIgYWZ0ZXIgYW5vdGhlciBo b3VyIG9mIHBvdXJpbmcgb3ZlciBjb2RlIGFuZCBoaXN0b3J5OiBObywgc2NoZWQgDQplbnRpdGll cyBhcmUgbm8gbG9uZ2VyIGVxdWl2YWxlbnQgdG8gcXVldWVzLiBUaGUgc2NoZWR1bGVyIGNhbiBp dHNlbGYgDQpsb2FkLWJhbGFuY2UgVk0gdXBkYXRlcyB1c2luZyBtdWx0aXBsZSBTRE1BIHF1ZXVl cy4gU2lnaC4NCg0KT0ssIHNvIHBhZ2UgdGFibGUgdXBkYXRlcyB0byBkaWZmZXJlbnQgUFRFcyBk b24ndCB1c3VhbGx5IG5lZWQgdG8gDQpzeW5jaHJvbml6ZSB3aXRoIGVhY2ggb3RoZXIuIEJ1dCBo b3cgZG8gcGFnZSB0YWJsZSB1cGRhdGVzIHRvIHRoZSBzYW1lIA0KYWRkcmVzcyBnZXQgc3luY2hy b25pemVkPyBIb3cgZG8geW91IGd1YXJhbnRlZSB0aGF0IHR3byB1cGRhdGVzIG9mIHRoZSANCnNh bWUgUFRFIGFyZSBwcm9jZXNzZWQgYnkgdGhlIGhhcmR3YXJlIGluIHRoZSBjb3JyZWN0IG9yZGVy LCBpZiANCkFNREdQVV9GRU5DRV9PV05FUl9WTSBmZW5jZXMgZG9uJ3Qgc3luY2hyb25pemUgd2l0 aCBlYWNoIG90aGVyPw0KDQoNCj4NCj4gT2ssIHRoYXQgaXMgZWFzeSB0byBmaXguDQoNCk5vdCB0 aGF0IGVhc3kuIFNlZSBhYm92ZS4gOykNCg0KUmVnYXJkcywNCiDCoCBGZWxpeA0KDQoNCg0KPg0K PiBDaHJpc3RpYW4uDQo+DQo+IEFtIDA1LjAyLjE5IHVtIDE2OjQ5IHNjaHJpZWIgS3VlaGxpbmcs IEZlbGl4Og0KPj4gSSBzYXcgYSBiYWNrdHJhY2UgZnJvbSB0aGUgR1BVIHNjaGVkdWxlciB3aGVu IEkgd2FzIGRlYnVnZ2luZyB0aGlzIHllc3RlcmRheSwgYnV0IHRob3NlIGJhY2t0cmFjZXMgbmV2 ZXIgdGVsbCB1cyB3aGVyZSB0aGUgY29tbWFuZCBzdWJtaXNzaW9uIGNhbWUgZnJvbS4gSXQgY291 bGQgYmUgbWVtb3J5IGluaXRpYWxpemF0aW9uLCBvciBzb21lIG1pZ3JhdGlvbiBhdCBidWZmZXIt dmFsaWRhdGlvbi4gQmFzaWNhbGx5LCBhbnkgY29tbWFuZCBzdWJtaXNzaW9uIHRyaWdnZXJlZCBi eSBwYWdlIHRhYmxlIGFsbG9jYXRpb24gdGhhdCBzeW5jaHJvbml6ZXMgd2l0aCB0aGUgUEQgcmVz ZXJ2YXRpb24gb2JqZWN0IGlzIGEgcHJvYmxlbS4NCj4+DQo+PiBSZWdhcmRzLA0KPj4gICAgIEZl bGl4DQo+Pg0KPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4+IEZyb206IENocmlzdGlh biBLw7ZuaWcgPGNrb2VuaWcubGVpY2h0enVtZXJrZW5AZ21haWwuY29tPg0KPj4gU2VudDogVHVl c2RheSwgRmVicnVhcnkgMDUsIDIwMTkgMTA6NDAgQU0NCj4+IFRvOiBLdWVobGluZywgRmVsaXgg PEZlbGl4Lkt1ZWhsaW5nQGFtZC5jb20+OyBLb2VuaWcsIENocmlzdGlhbiA8Q2hyaXN0aWFuLktv ZW5pZ0BhbWQuY29tPjsgYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4+IFN1YmplY3Q6 IFJlOiBbUEFUQ0ggNi84XSBkcm0vYW1kZ3B1OiBhbGxvY2F0ZSBWTSBQRHMvUFRzIG9uIGRlbWFu ZA0KPj4NCj4+IEFtIDA1LjAyLjE5IHVtIDE2OjIwIHNjaHJpZWIgS3VlaGxpbmcsIEZlbGl4Og0K Pj4+Pj4gVGhpcyBtYXkgY2F1c2UgcmVncmVzc2lvbnMgaW4gS0ZEIGlmIFBUIEJPIGFsbG9jYXRp b24gY2FuIHRyaWdnZXINCj4+Pj4+IGV2aWN0aW9uIGZlbmNlcy4NCj4+Pj4gSSBkb24ndCB0aGlu ayB0aGF0IGNhbiBoYXBwZW4sIGJ1dCBuZWVkIHRvIGRvdWJsZSBjaGVjayBhcyB3ZWxsLg0KPj4+ Pg0KPj4+PiBPdGhlcndpc2UgYWxsb2NhdGluZyBwYWdlIHRhYmxlcyBjb3VsZCB0cnkgdG8gZXZp Y3Qgb3RoZXIgcGFnZSB0YWJsZXMgZnJvbSB0aGUgc2FtZSBwcm9jZXNzIGFuZCB0aGF0IHNlcmlv dXNseSBkb2Vzbid0IG1ha2UgbXVjaCBzZW5zZS4NCj4+PiBFdmljdGlvbiBmZW5jZXMgZG9uJ3Qg Y2F1c2UgYWN0dWFsIG1lbW9yeSBldmljdGlvbnMuIFRoZXkgYXJlIHRoZSByZXN1bHQgb2YgbWVt b3J5IGV2aWN0aW9ucy4gVGhleSBjYXVzZSBLRkQgcHJvY2Vzc2VzIHRvIGJlIHByZWVtcHRlZCBp biBvcmRlciB0byBhbGxvdyB0aGUgZmVuY2UgdG8gc2lnbmFsIHNvIG1lbW9yeSBjYW4gYmUgZXZp Y3RlZC4gVGhlIHByb2JsZW0gaXMgdGhhdCBhIHBhZ2UgdGFibGUgYWxsb2NhdGlvbiB3YWl0cyBm b3IgdGhlIGZlbmNlcyBvbiB0aGUgUEQgcmVzZXJ2YXRpb24sIHdoaWNoIGxvb2tzIGxpa2UgYW4g ZXZpY3Rpb24gdG8gS0ZEIGFuZCB0cmlnZ2VycyBhbiB1bm5lY2Vzc2FyeSBwcmVlbXB0aW9uLiBU aGVyZSBpcyBubyBhY3R1YWwgbWVtb3J5IGV2aWN0aW9uIGhhcHBlbmluZyBoZXJlLg0KPj4gWWVh aCwgYnV0IHdoZXJlIGlzIHRoYXQgYWN0dWFsbHkgY29taW5nIGZyb20/DQo+Pg0KPj4gSXQgc291 bmRzIGxpa2Ugd2Ugc3RpbGwgdW5uZWNlc3Nhcnkgc3luY2hyb25pemUgcGFnZSB0YWJsZSB1cGRh dGVzIHNvbWV3aGVyZS4NCj4+DQo+PiBEbyB5b3UgaGF2ZSBhIGNhbGwgY2hhaW4/DQo+Pg0KPj4g UmVnYXJkcywNCj4+IENocmlzdGlhbi4NCj4+DQo+Pj4gUmVnYXJkcywNCj4+PiAgICAgIEZlbGl4 DQo+Pj4NCj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4+IEZyb206IENocmlzdGlh biBLw7ZuaWcgPGNrb2VuaWcubGVpY2h0enVtZXJrZW5AZ21haWwuY29tPg0KPj4+IFNlbnQ6IFR1 ZXNkYXksIEZlYnJ1YXJ5IDA1LCAyMDE5IDY6MzcgQU0NCj4+PiBUbzogS3VlaGxpbmcsIEZlbGl4 IDxGZWxpeC5LdWVobGluZ0BhbWQuY29tPjsNCj4+PiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZw0KPj4+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggNi84XSBkcm0vYW1kZ3B1OiBhbGxvY2F0ZSBW TSBQRHMvUFRzIG9uIGRlbWFuZA0KPj4+DQo+Pj4+IFRoaXMgbWF5IGNhdXNlIHJlZ3Jlc3Npb25z IGluIEtGRCBpZiBQVCBCTyBhbGxvY2F0aW9uIGNhbiB0cmlnZ2VyDQo+Pj4+IGV2aWN0aW9uIGZl bmNlcy4NCj4+PiBJIGRvbid0IHRoaW5rIHRoYXQgY2FuIGhhcHBlbiwgYnV0IG5lZWQgdG8gZG91 YmxlIGNoZWNrIGFzIHdlbGwuDQo+Pj4NCj4+PiBPdGhlcndpc2UgYWxsb2NhdGluZyBwYWdlIHRh YmxlcyBjb3VsZCB0cnkgdG8gZXZpY3Qgb3RoZXIgcGFnZSB0YWJsZXMgZnJvbSB0aGUgc2FtZSBw cm9jZXNzIGFuZCB0aGF0IHNlcmlvdXNseSBkb2Vzbid0IG1ha2UgbXVjaCBzZW5zZS4NCj4+Pg0K Pj4+PiBEbyB5b3Uga25vdyB3aGV0aGVyIFBUIEJPIGFsbG9jYXRpb24gd291bGQgd2FpdCBvbiB0 aGUgcGFnZS1kaXJlY3RvcnkNCj4+Pj4gcmVzZXJ2YXRpb24gb2JqZWN0IHdpdGhvdXQgdGhlIHN5 bmMtb2JqZWN0IEFQSSBhbnl3aGVyZT8NCj4+PiBGb3IgaW5zaWRlIHRoZSBrZXJuZWwgSSBjYW4n dCB0aGluayBvZiBhbnkgcmVsZXZhbnQgdXNlIGNhc2UsIGV4Y2VwdCBmb3IgdGhlIGV2aWN0aW9u IGNhbGwgcGF0aCBhbmQgdGhlcmUgaXQgaXMgaW50ZW50aW9uYWwuDQo+Pj4NCj4+PiBPbmUgdGhp bmcgd2hpY2ggd2lsbCBhbHdheXMgd2FpdCBmb3IgYWxsIGZlbmNlcyBpcyB0aGUgZGlzcGxheSBj b2RlIHBhdGgsIGJ1dCB0aGF0IGlzIG5vdCByZWxldmFudCBoZXJlLiAoSXNuJ3QgaXQ/KS4NCj4+ Pg0KPj4+IFdoYXQgbWlnaHQgYmUgcXVlc3Rpb25hYmxlIGlzIGFtZGdwdV9nZW1fd2FpdF9pZGxl X2lvY3RsKCksIGJ1dCBJIHRoaW5rIHRoaXMgaXMgYWxzbyBjb21wbGV0ZWx5IGludGVudGlvbmFs IHRoYXQgd2Ugd2FpdCBvbiBldmVyeXRoaW5nIGhlcmUuDQo+Pj4NCj4+PiBSZWdhcmRzLA0KPj4+ IENocmlzdGlhbi4NCj4+Pg0KPj4+IEFtIDA0LjAyLjE5IHVtIDIxOjE3IHNjaHJpZWIgS3VlaGxp bmcsIEZlbGl4Og0KPj4+PiBUaGlzIG1heSBjYXVzZSByZWdyZXNzaW9ucyBpbiBLRkQgaWYgUFQg Qk8gYWxsb2NhdGlvbiBjYW4gdHJpZ2dlcg0KPj4+PiBldmljdGlvbiBmZW5jZXMuIFRoZSBwcmV2 aW91cyBjYWxsIHRvIGFtZGdwdV92bV9hbGxvY19wdHMgd2FzIGluIGENCj4+Pj4gY29udGV4dCB3 aGVyZSB3ZSBoYWQgdGVtcG9yYXJpbHkgcmVtb3ZlZCB0aGUgZXZpY3Rpb24gZmVuY2UuIFBUIEJP DQo+Pj4+IGFsbG9jYXRpb24gaW4gYW1kZ3B1X3ZtX2JvX3VwZGF0ZSBpcyBub3QgcHJvdGVjdGVk IGxpa2UgdGhhdC4NCj4+Pj4NCj4+Pj4gSSB2YWd1ZWx5IHJlbWVtYmVyIGxvb2tpbmcgaW50byB0 aGlzIGxhc3QgdGltZSB5b3Ugd2VyZSB3b3JraW5nIG9uDQo+Pj4+IG91ciBldmljdGlvbiBmZW5j ZSBjb2RlIGFuZCB0aGlua2luZyB0aGF0IG1vc3Qgb2YgdGhlIGNhc2VzIHdoZXJlIHdlDQo+Pj4+ IHJlbW92ZSB0aGUgZXZpY3Rpb24gZmVuY2Ugd2VyZSBubyBsb25nZXIgbmVlZGVkIGlmIGZlbmNl DQo+Pj4+IHN5bmNocm9uaXphdGlvbiBoYXBwZW5zIHRocm91Z2ggdGhlIGFtZGdwdV9zeW5jLW9i amVjdCBBUEkgKHJhdGhlcg0KPj4+PiB0aGFuIHdhaXRpbmcgb24gYSByZXNlcnZhdGlvbiBvYmpl Y3QgZGlyZWN0bHkpLiBJIHRoaW5rIGl0J3MgdGltZSBJDQo+Pj4+IGdvIGFuZCBmaW5hbGx5IGNs ZWFuIHRoYXQgdXAuDQo+Pj4+DQo+Pj4+IERvIHlvdSBrbm93IHdoZXRoZXIgUFQgQk8gYWxsb2Nh dGlvbiB3b3VsZCB3YWl0IG9uIHRoZSBwYWdlLWRpcmVjdG9yeQ0KPj4+PiByZXNlcnZhdGlvbiBv YmplY3Qgd2l0aG91dCB0aGUgc3luYy1vYmplY3QgQVBJIGFueXdoZXJlPw0KPj4+Pg0KPj4+PiBS ZWdhcmRzLA0KPj4+PiAgICAgIMKgIEZlbGl4DQo+Pj4+DQo+Pj4+IE9uIDIwMTktMDItMDQgNzo0 MiBhLm0uLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOg0KPj4+Pj4gTGV0J3Mgc3RhcnQgdG8gYWxs b2NhdGUgVk0gUERzL1BUcyBvbiBkZW1hbmQgaW5zdGVhZCBvZg0KPj4+Pj4gcHJlLWFsbG9jYXRp bmcgdGhlbSBkdXJpbmcgbWFwcGluZy4NCj4+Pj4+DQo+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBDaHJp c3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+DQo+Pj4+PiAtLS0NCj4+Pj4+ ICAgICAgIC4uLi9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jICB8ICAg NiAtDQo+Pj4+PiAgICAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3NhLmMg ICAgICAgfCAgIDkgLS0NCj4+Pj4+ICAgICAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9nZW0uYyAgICAgICB8ICAxMCAtLQ0KPj4+Pj4gICAgICAgZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3ZtLmMgICAgICAgIHwgMTM2ICsrKysrLS0tLS0tLS0tLS0tLQ0KPj4+ Pj4gICAgICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmggICAgICAgIHwg ICAzIC0NCj4+Pj4+ICAgICAgIDUgZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwgMTI2 IGRlbGV0aW9ucygtKQ0KPj4+Pj4NCj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMNCj4+Pj4+IGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jDQo+Pj4+PiBpbmRleCBkN2IxMGQ3OWYx ZGUuLjIxNzZjOTJmOTM3NyAxMDA2NDQNCj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYw0KPj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jDQo+Pj4+PiBAQCAtNDkyLDEyICs0OTIs NiBAQCBzdGF0aWMgaW50IGFkZF9ib190b192bShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwg c3RydWN0IGtnZF9tZW0gKm1lbSwNCj4+Pj4+ICAgICAgIAkJCQkJdm0tPnByb2Nlc3NfaW5mby0+ ZXZpY3Rpb25fZmVuY2UsDQo+Pj4+PiAgICAgICAJCQkJCU5VTEwsIE5VTEwpOw0KPj4+Pj4gICAg ICAgDQo+Pj4+PiAtCXJldCA9IGFtZGdwdV92bV9hbGxvY19wdHMoYWRldiwgdm0sIHZhLCBhbWRn cHVfYm9fc2l6ZShibykpOw0KPj4+Pj4gLQlpZiAocmV0KSB7DQo+Pj4+PiAtCQlwcl9lcnIoIkZh aWxlZCB0byBhbGxvY2F0ZSBwdHMsIGVycj0lZFxuIiwgcmV0KTsNCj4+Pj4+IC0JCWdvdG8gZXJy X2FsbG9jX3B0czsNCj4+Pj4+IC0JfQ0KPj4+Pj4gLQ0KPj4+Pj4gICAgICAgCXJldCA9IHZtX3Zh bGlkYXRlX3B0X3BkX2Jvcyh2bSk7DQo+Pj4+PiAgICAgICAJaWYgKHJldCkgew0KPj4+Pj4gICAg ICAgCQlwcl9lcnIoInZhbGlkYXRlX3B0X3BkX2JvcygpIGZhaWxlZFxuIik7IGRpZmYgLS1naXQN Cj4+Pj4+IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzYS5jDQo+Pj4+PiBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jc2EuYw0KPj4+Pj4gaW5kZXggN2Uy MmJlN2NhNjhhLi41NGRkMDJhODk4YjkgMTAwNjQ0DQo+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfY3NhLmMNCj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9jc2EuYw0KPj4+Pj4gQEAgLTkyLDE1ICs5Miw2IEBAIGludCBhbWRn cHVfbWFwX3N0YXRpY19jc2Eoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRn cHVfdm0gKnZtLA0KPj4+Pj4gICAgICAgCQlyZXR1cm4gLUVOT01FTTsNCj4+Pj4+ICAgICAgIAl9 DQo+Pj4+PiAgICAgICANCj4+Pj4+IC0JciA9IGFtZGdwdV92bV9hbGxvY19wdHMoYWRldiwgKCpi b192YSktPmJhc2Uudm0sIGNzYV9hZGRyLA0KPj4+Pj4gLQkJCQlzaXplKTsNCj4+Pj4+IC0JaWYg KHIpIHsNCj4+Pj4+IC0JCURSTV9FUlJPUigiZmFpbGVkIHRvIGFsbG9jYXRlIHB0cyBmb3Igc3Rh dGljIENTQSwgZXJyPSVkXG4iLCByKTsNCj4+Pj4+IC0JCWFtZGdwdV92bV9ib19ybXYoYWRldiwg KmJvX3ZhKTsNCj4+Pj4+IC0JCXR0bV9ldV9iYWNrb2ZmX3Jlc2VydmF0aW9uKCZ0aWNrZXQsICZs aXN0KTsNCj4+Pj4+IC0JCXJldHVybiByOw0KPj4+Pj4gLQl9DQo+Pj4+PiAtDQo+Pj4+PiAgICAg ICAJciA9IGFtZGdwdV92bV9ib19tYXAoYWRldiwgKmJvX3ZhLCBjc2FfYWRkciwgMCwgc2l6ZSwN Cj4+Pj4+ICAgICAgIAkJCSAgICAgQU1ER1BVX1BURV9SRUFEQUJMRSB8IEFNREdQVV9QVEVfV1JJ VEVBQkxFIHwNCj4+Pj4+ICAgICAgIAkJCSAgICAgQU1ER1BVX1BURV9FWEVDVVRBQkxFKTsNCj4+ Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMN Cj4+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jDQo+Pj4+PiBp bmRleCBkMjFkZDJmMzY5ZGEuLmUxNDFlM2IxMzExMiAxMDA2NDQNCj4+Pj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYw0KPj4+Pj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jDQo+Pj4+PiBAQCAtNjI3LDExICs2MjcsNiBA QCBpbnQgYW1kZ3B1X2dlbV92YV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LA0KPj4+Pj4g dm9pZCAqZGF0YSwNCj4+Pj4+ICAgICAgIA0KPj4+Pj4gICAgICAgCXN3aXRjaCAoYXJncy0+b3Bl cmF0aW9uKSB7DQo+Pj4+PiAgICAgICAJY2FzZSBBTURHUFVfVkFfT1BfTUFQOg0KPj4+Pj4gLQkJ ciA9IGFtZGdwdV92bV9hbGxvY19wdHMoYWRldiwgYm9fdmEtPmJhc2Uudm0sIGFyZ3MtPnZhX2Fk ZHJlc3MsDQo+Pj4+PiAtCQkJCQlhcmdzLT5tYXBfc2l6ZSk7DQo+Pj4+PiAtCQlpZiAocikNCj4+ Pj4+IC0JCQlnb3RvIGVycm9yX2JhY2tvZmY7DQo+Pj4+PiAtDQo+Pj4+PiAgICAgICAJCXZhX2Zs YWdzID0gYW1kZ3B1X2dtY19nZXRfcHRlX2ZsYWdzKGFkZXYsIGFyZ3MtPmZsYWdzKTsNCj4+Pj4+ ICAgICAgIAkJciA9IGFtZGdwdV92bV9ib19tYXAoYWRldiwgYm9fdmEsIGFyZ3MtPnZhX2FkZHJl c3MsDQo+Pj4+PiAgICAgICAJCQkJICAgICBhcmdzLT5vZmZzZXRfaW5fYm8sIGFyZ3MtPm1hcF9z aXplLCBAQCAtNjQ3LDExICs2NDIsNg0KPj4+Pj4gQEAgaW50IGFtZGdwdV9nZW1fdmFfaW9jdGwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwNCj4+Pj4+ICAgICAgIAkJCQkJCWFy Z3MtPm1hcF9zaXplKTsNCj4+Pj4+ICAgICAgIAkJYnJlYWs7DQo+Pj4+PiAgICAgICAJY2FzZSBB TURHUFVfVkFfT1BfUkVQTEFDRToNCj4+Pj4+IC0JCXIgPSBhbWRncHVfdm1fYWxsb2NfcHRzKGFk ZXYsIGJvX3ZhLT5iYXNlLnZtLCBhcmdzLT52YV9hZGRyZXNzLA0KPj4+Pj4gLQkJCQkJYXJncy0+ bWFwX3NpemUpOw0KPj4+Pj4gLQkJaWYgKHIpDQo+Pj4+PiAtCQkJZ290byBlcnJvcl9iYWNrb2Zm Ow0KPj4+Pj4gLQ0KPj4+Pj4gICAgICAgCQl2YV9mbGFncyA9IGFtZGdwdV9nbWNfZ2V0X3B0ZV9m bGFncyhhZGV2LCBhcmdzLT5mbGFncyk7DQo+Pj4+PiAgICAgICAJCXIgPSBhbWRncHVfdm1fYm9f cmVwbGFjZV9tYXAoYWRldiwgYm9fdmEsIGFyZ3MtPnZhX2FkZHJlc3MsDQo+Pj4+PiAgICAgICAJ CQkJCSAgICAgYXJncy0+b2Zmc2V0X2luX2JvLCBhcmdzLT5tYXBfc2l6ZSwgZGlmZiAtLWdpdA0K Pj4+Pj4gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYw0KPj4+Pj4gYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYw0KPj4+Pj4gaW5kZXggZjdkNDEw YTVkODQ4Li4wYjhhMWFhNTZjNGEgMTAwNjQ0DQo+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfdm0uYw0KPj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X3ZtLmMNCj4+Pj4+IEBAIC01MDQsNDcgKzUwNCw2IEBAIHN0YXRpYyB2b2lk IGFtZGdwdV92bV9wdF9uZXh0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPj4+Pj4gICAg ICAgCX0NCj4+Pj4+ICAgICAgIH0NCj4+Pj4+ICAgICAgIA0KPj4+Pj4gLS8qKg0KPj4+Pj4gLSAq IGFtZGdwdV92bV9wdF9maXJzdF9sZWFmIC0gZ2V0IGZpcnN0IGxlYWYgUEQvUFQNCj4+Pj4+IC0g Kg0KPj4+Pj4gLSAqIEBhZGV2OiBhbWRncHVfZGV2aWNlIHBvaW50ZXINCj4+Pj4+IC0gKiBAdm06 IGFtZGdwdV92bSBzdHJ1Y3R1cmUNCj4+Pj4+IC0gKiBAc3RhcnQ6IHN0YXJ0IGFkZHIgb2YgdGhl IHdhbGsNCj4+Pj4+IC0gKiBAY3Vyc29yOiBzdGF0ZSB0byBpbml0aWFsaXplDQo+Pj4+PiAtICoN Cj4+Pj4+IC0gKiBTdGFydCBhIHdhbGsgYW5kIGdvIGRpcmVjdGx5IHRvIHRoZSBsZWFmIG5vZGUu DQo+Pj4+PiAtICovDQo+Pj4+PiAtc3RhdGljIHZvaWQgYW1kZ3B1X3ZtX3B0X2ZpcnN0X2xlYWYo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+Pj4+PiAtCQkJCSAgICBzdHJ1Y3QgYW1kZ3B1 X3ZtICp2bSwgdWludDY0X3Qgc3RhcnQsDQo+Pj4+PiAtCQkJCSAgICBzdHJ1Y3QgYW1kZ3B1X3Zt X3B0X2N1cnNvciAqY3Vyc29yKQ0KPj4+Pj4gLXsNCj4+Pj4+IC0JYW1kZ3B1X3ZtX3B0X3N0YXJ0 KGFkZXYsIHZtLCBzdGFydCwgY3Vyc29yKTsNCj4+Pj4+IC0Jd2hpbGUgKGFtZGdwdV92bV9wdF9k ZXNjZW5kYW50KGFkZXYsIGN1cnNvcikpOw0KPj4+Pj4gLX0NCj4+Pj4+IC0NCj4+Pj4+IC0vKioN Cj4+Pj4+IC0gKiBhbWRncHVfdm1fcHRfbmV4dF9sZWFmIC0gZ2V0IG5leHQgbGVhZiBQRC9QVA0K Pj4+Pj4gLSAqDQo+Pj4+PiAtICogQGFkZXY6IGFtZGdwdV9kZXZpY2UgcG9pbnRlcg0KPj4+Pj4g LSAqIEBjdXJzb3I6IGN1cnJlbnQgc3RhdGUNCj4+Pj4+IC0gKg0KPj4+Pj4gLSAqIFdhbGsgdGhl IFBEL1BUIHRyZWUgdG8gdGhlIG5leHQgbGVhZiBub2RlLg0KPj4+Pj4gLSAqLw0KPj4+Pj4gLXN0 YXRpYyB2b2lkIGFtZGdwdV92bV9wdF9uZXh0X2xlYWYoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsDQo+Pj4+PiAtCQkJCSAgIHN0cnVjdCBhbWRncHVfdm1fcHRfY3Vyc29yICpjdXJzb3IpDQo+ Pj4+PiAtew0KPj4+Pj4gLQlhbWRncHVfdm1fcHRfbmV4dChhZGV2LCBjdXJzb3IpOw0KPj4+Pj4g LQlpZiAoY3Vyc29yLT5wZm4gIT0gfjBsbCkNCj4+Pj4+IC0JCXdoaWxlIChhbWRncHVfdm1fcHRf ZGVzY2VuZGFudChhZGV2LCBjdXJzb3IpKTsNCj4+Pj4+IC19DQo+Pj4+PiAtDQo+Pj4+PiAtLyoq DQo+Pj4+PiAtICogZm9yX2VhY2hfYW1kZ3B1X3ZtX3B0X2xlYWYgLSB3YWxrIG92ZXIgYWxsIGxl YWYgUERzL1BUcyBpbiB0aGUNCj4+Pj4+IGhpZXJhcmNoeQ0KPj4+Pj4gLSAqLw0KPj4+Pj4gLSNk ZWZpbmUgZm9yX2VhY2hfYW1kZ3B1X3ZtX3B0X2xlYWYoYWRldiwgdm0sIHN0YXJ0LCBlbmQsIGN1 cnNvcikJCVwNCj4+Pj4+IC0JZm9yIChhbWRncHVfdm1fcHRfZmlyc3RfbGVhZigoYWRldiksICh2 bSksIChzdGFydCksICYoY3Vyc29yKSk7CQlcDQo+Pj4+PiAtCSAgICAgKGN1cnNvcikucGZuIDw9 IGVuZDsgYW1kZ3B1X3ZtX3B0X25leHRfbGVhZigoYWRldiksICYoY3Vyc29yKSkpDQo+Pj4+PiAt DQo+Pj4+PiAgICAgICAvKioNCj4+Pj4+ICAgICAgICAqIGFtZGdwdV92bV9wdF9maXJzdF9kZnMg LSBzdGFydCBhIGRlZXAgZmlyc3Qgc2VhcmNoDQo+Pj4+PiAgICAgICAgKg0KPj4+Pj4gQEAgLTkx OSw3NCArODc4LDUxIEBAIHN0YXRpYyB2b2lkIGFtZGdwdV92bV9ib19wYXJhbShzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwgc3RydWN0IGFtZGdwdV92bSAqdm0sDQo+Pj4+PiAgICAgICAgKiBS ZXR1cm5zOg0KPj4+Pj4gICAgICAgICogMCBvbiBzdWNjZXNzLCBlcnJubyBvdGhlcndpc2UuDQo+ Pj4+PiAgICAgICAgKi8NCj4+Pj4+IC1pbnQgYW1kZ3B1X3ZtX2FsbG9jX3B0cyhzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwNCj4+Pj4+IC0JCQlzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwNCj4+Pj4+ IC0JCQl1aW50NjRfdCBzYWRkciwgdWludDY0X3Qgc2l6ZSkNCj4+Pj4+ICtzdGF0aWMgaW50IGFt ZGdwdV92bV9hbGxvY19wdHMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+Pj4+PiArCQkJ ICAgICAgIHN0cnVjdCBhbWRncHVfdm0gKnZtLA0KPj4+Pj4gKwkJCSAgICAgICBzdHJ1Y3QgYW1k Z3B1X3ZtX3B0X2N1cnNvciAqY3Vyc29yKQ0KPj4+Pj4gICAgICAgew0KPj4+Pj4gLQlzdHJ1Y3Qg YW1kZ3B1X3ZtX3B0X2N1cnNvciBjdXJzb3I7DQo+Pj4+PiArCXN0cnVjdCBhbWRncHVfdm1fcHQg KmVudHJ5ID0gY3Vyc29yLT5lbnRyeTsNCj4+Pj4+ICsJc3RydWN0IGFtZGdwdV9ib19wYXJhbSBi cDsNCj4+Pj4+ICAgICAgIAlzdHJ1Y3QgYW1kZ3B1X2JvICpwdDsNCj4+Pj4+IC0JdWludDY0X3Qg ZWFkZHI7DQo+Pj4+PiAgICAgICAJaW50IHI7DQo+Pj4+PiAgICAgICANCj4+Pj4+IC0JLyogdmFs aWRhdGUgdGhlIHBhcmFtZXRlcnMgKi8NCj4+Pj4+IC0JaWYgKHNhZGRyICYgQU1ER1BVX0dQVV9Q QUdFX01BU0sgfHwgc2l6ZSAmIEFNREdQVV9HUFVfUEFHRV9NQVNLKQ0KPj4+Pj4gLQkJcmV0dXJu IC1FSU5WQUw7DQo+Pj4+PiArCWlmIChjdXJzb3ItPmxldmVsIDwgQU1ER1BVX1ZNX1BUQiAmJiAh ZW50cnktPmVudHJpZXMpIHsNCj4+Pj4+ICsJCXVuc2lnbmVkIG51bV9lbnRyaWVzOw0KPj4+Pj4g ICAgICAgDQo+Pj4+PiAtCWVhZGRyID0gc2FkZHIgKyBzaXplIC0gMTsNCj4+Pj4+IC0NCj4+Pj4+ IC0Jc2FkZHIgLz0gQU1ER1BVX0dQVV9QQUdFX1NJWkU7DQo+Pj4+PiAtCWVhZGRyIC89IEFNREdQ VV9HUFVfUEFHRV9TSVpFOw0KPj4+Pj4gLQ0KPj4+Pj4gLQlpZiAoZWFkZHIgPj0gYWRldi0+dm1f bWFuYWdlci5tYXhfcGZuKSB7DQo+Pj4+PiAtCQlkZXZfZXJyKGFkZXYtPmRldiwgInZhIGFib3Zl IGxpbWl0ICgweCUwOGxsWCA+PSAweCUwOGxsWClcbiIsDQo+Pj4+PiAtCQkJZWFkZHIsIGFkZXYt PnZtX21hbmFnZXIubWF4X3Bmbik7DQo+Pj4+PiAtCQlyZXR1cm4gLUVJTlZBTDsNCj4+Pj4+ICsJ CW51bV9lbnRyaWVzID0gYW1kZ3B1X3ZtX251bV9lbnRyaWVzKGFkZXYsIGN1cnNvci0+bGV2ZWwp Ow0KPj4+Pj4gKwkJZW50cnktPmVudHJpZXMgPSBrdm1hbGxvY19hcnJheShudW1fZW50cmllcywN Cj4+Pj4+ICsJCQkJCQlzaXplb2YoKmVudHJ5LT5lbnRyaWVzKSwNCj4+Pj4+ICsJCQkJCQlHRlBf S0VSTkVMIHwgX19HRlBfWkVSTyk7DQo+Pj4+PiArCQlpZiAoIWVudHJ5LT5lbnRyaWVzKQ0KPj4+ Pj4gKwkJCXJldHVybiAtRU5PTUVNOw0KPj4+Pj4gICAgICAgCX0NCj4+Pj4+ICAgICAgIA0KPj4+ Pj4gLQlmb3JfZWFjaF9hbWRncHVfdm1fcHRfbGVhZihhZGV2LCB2bSwgc2FkZHIsIGVhZGRyLCBj dXJzb3IpIHsNCj4+Pj4+IC0JCXN0cnVjdCBhbWRncHVfdm1fcHQgKmVudHJ5ID0gY3Vyc29yLmVu dHJ5Ow0KPj4+Pj4gLQkJc3RydWN0IGFtZGdwdV9ib19wYXJhbSBicDsNCj4+Pj4+IC0NCj4+Pj4+ IC0JCWlmIChjdXJzb3IubGV2ZWwgPCBBTURHUFVfVk1fUFRCKSB7DQo+Pj4+PiAtCQkJdW5zaWdu ZWQgbnVtX2VudHJpZXM7DQo+Pj4+PiAtDQo+Pj4+PiAtCQkJbnVtX2VudHJpZXMgPSBhbWRncHVf dm1fbnVtX2VudHJpZXMoYWRldiwgY3Vyc29yLmxldmVsKTsNCj4+Pj4+IC0JCQllbnRyeS0+ZW50 cmllcyA9IGt2bWFsbG9jX2FycmF5KG51bV9lbnRyaWVzLA0KPj4+Pj4gLQkJCQkJCQlzaXplb2Yo KmVudHJ5LT5lbnRyaWVzKSwNCj4+Pj4+IC0JCQkJCQkJR0ZQX0tFUk5FTCB8DQo+Pj4+PiAtCQkJ CQkJCV9fR0ZQX1pFUk8pOw0KPj4+Pj4gLQkJCWlmICghZW50cnktPmVudHJpZXMpDQo+Pj4+PiAt CQkJCXJldHVybiAtRU5PTUVNOw0KPj4+Pj4gLQkJfQ0KPj4+Pj4gLQ0KPj4+Pj4gLQ0KPj4+Pj4g LQkJaWYgKGVudHJ5LT5iYXNlLmJvKQ0KPj4+Pj4gLQkJCWNvbnRpbnVlOw0KPj4+Pj4gLQ0KPj4+ Pj4gLQkJYW1kZ3B1X3ZtX2JvX3BhcmFtKGFkZXYsIHZtLCBjdXJzb3IubGV2ZWwsICZicCk7DQo+ Pj4+PiAtDQo+Pj4+PiAtCQlyID0gYW1kZ3B1X2JvX2NyZWF0ZShhZGV2LCAmYnAsICZwdCk7DQo+ Pj4+PiAtCQlpZiAocikNCj4+Pj4+IC0JCQlyZXR1cm4gcjsNCj4+Pj4+IC0NCj4+Pj4+IC0JCWlm ICh2bS0+dXNlX2NwdV9mb3JfdXBkYXRlKSB7DQo+Pj4+PiAtCQkJciA9IGFtZGdwdV9ib19rbWFw KHB0LCBOVUxMKTsNCj4+Pj4+IC0JCQlpZiAocikNCj4+Pj4+IC0JCQkJZ290byBlcnJvcl9mcmVl X3B0Ow0KPj4+Pj4gLQkJfQ0KPj4+Pj4gKwlpZiAoZW50cnktPmJhc2UuYm8pDQo+Pj4+PiArCQly ZXR1cm4gMDsNCj4+Pj4+ICAgICAgIA0KPj4+Pj4gLQkJLyogS2VlcCBhIHJlZmVyZW5jZSB0byB0 aGUgcm9vdCBkaXJlY3RvcnkgdG8gYXZvaWQNCj4+Pj4+IC0JCSogZnJlZWluZyB0aGVtIHVwIGlu IHRoZSB3cm9uZyBvcmRlci4NCj4+Pj4+IC0JCSovDQo+Pj4+PiAtCQlwdC0+cGFyZW50ID0gYW1k Z3B1X2JvX3JlZihjdXJzb3IucGFyZW50LT5iYXNlLmJvKTsNCj4+Pj4+ICsJYW1kZ3B1X3ZtX2Jv X3BhcmFtKGFkZXYsIHZtLCBjdXJzb3ItPmxldmVsLCAmYnApOw0KPj4+Pj4gICAgICAgDQo+Pj4+ PiAtCQlhbWRncHVfdm1fYm9fYmFzZV9pbml0KCZlbnRyeS0+YmFzZSwgdm0sIHB0KTsNCj4+Pj4+ ICsJciA9IGFtZGdwdV9ib19jcmVhdGUoYWRldiwgJmJwLCAmcHQpOw0KPj4+Pj4gKwlpZiAocikN Cj4+Pj4+ICsJCXJldHVybiByOw0KPj4+Pj4gICAgICAgDQo+Pj4+PiAtCQlyID0gYW1kZ3B1X3Zt X2NsZWFyX2JvKGFkZXYsIHZtLCBwdCk7DQo+Pj4+PiArCWlmICh2bS0+dXNlX2NwdV9mb3JfdXBk YXRlKSB7DQo+Pj4+PiArCQlyID0gYW1kZ3B1X2JvX2ttYXAocHQsIE5VTEwpOw0KPj4+Pj4gICAg ICAgCQlpZiAocikNCj4+Pj4+ICAgICAgIAkJCWdvdG8gZXJyb3JfZnJlZV9wdDsNCj4+Pj4+ICAg ICAgIAl9DQo+Pj4+PiAgICAgICANCj4+Pj4+ICsJLyogS2VlcCBhIHJlZmVyZW5jZSB0byB0aGUg cm9vdCBkaXJlY3RvcnkgdG8gYXZvaWQNCj4+Pj4+ICsJICogZnJlZWluZyB0aGVtIHVwIGluIHRo ZSB3cm9uZyBvcmRlci4NCj4+Pj4+ICsJICovDQo+Pj4+PiArCXB0LT5wYXJlbnQgPSBhbWRncHVf Ym9fcmVmKGN1cnNvci0+cGFyZW50LT5iYXNlLmJvKTsNCj4+Pj4+ICsJYW1kZ3B1X3ZtX2JvX2Jh c2VfaW5pdCgmZW50cnktPmJhc2UsIHZtLCBwdCk7DQo+Pj4+PiArDQo+Pj4+PiArCXIgPSBhbWRn cHVfdm1fY2xlYXJfYm8oYWRldiwgdm0sIHB0KTsNCj4+Pj4+ICsJaWYgKHIpDQo+Pj4+PiArCQln b3RvIGVycm9yX2ZyZWVfcHQ7DQo+Pj4+PiArDQo+Pj4+PiAgICAgICAJcmV0dXJuIDA7DQo+Pj4+ PiAgICAgICANCj4+Pj4+ICAgICAgIGVycm9yX2ZyZWVfcHQ6DQo+Pj4+PiBAQCAtMTY1NSw2ICsx NTkxLDcgQEAgc3RhdGljIGludCBhbWRncHVfdm1fdXBkYXRlX3B0ZXMoc3RydWN0IGFtZGdwdV9w dGVfdXBkYXRlX3BhcmFtcyAqcGFyYW1zLA0KPj4+Pj4gICAgICAgCXN0cnVjdCBhbWRncHVfdm1f cHRfY3Vyc29yIGN1cnNvcjsNCj4+Pj4+ICAgICAgIAl1aW50NjRfdCBmcmFnX3N0YXJ0ID0gc3Rh cnQsIGZyYWdfZW5kOw0KPj4+Pj4gICAgICAgCXVuc2lnbmVkIGludCBmcmFnOw0KPj4+Pj4gKwlp bnQgcjsNCj4+Pj4+ICAgICAgIA0KPj4+Pj4gICAgICAgCS8qIGZpZ3VyZSBvdXQgdGhlIGluaXRp YWwgZnJhZ21lbnQgKi8NCj4+Pj4+ICAgICAgIAlhbWRncHVfdm1fZnJhZ21lbnQocGFyYW1zLCBm cmFnX3N0YXJ0LCBlbmQsIGZsYWdzLCAmZnJhZywNCj4+Pj4+ICZmcmFnX2VuZCk7IEBAIC0xNjYy LDEyICsxNTk5LDE1IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3ZtX3VwZGF0ZV9wdGVzKHN0cnVjdCBh bWRncHVfcHRlX3VwZGF0ZV9wYXJhbXMgKnBhcmFtcywNCj4+Pj4+ICAgICAgIAkvKiB3YWxrIG92 ZXIgdGhlIGFkZHJlc3Mgc3BhY2UgYW5kIHVwZGF0ZSB0aGUgUFRzICovDQo+Pj4+PiAgICAgICAJ YW1kZ3B1X3ZtX3B0X3N0YXJ0KGFkZXYsIHBhcmFtcy0+dm0sIHN0YXJ0LCAmY3Vyc29yKTsNCj4+ Pj4+ICAgICAgIAl3aGlsZSAoY3Vyc29yLnBmbiA8IGVuZCkgew0KPj4+Pj4gLQkJc3RydWN0IGFt ZGdwdV9ibyAqcHQgPSBjdXJzb3IuZW50cnktPmJhc2UuYm87DQo+Pj4+PiAgICAgICAJCXVuc2ln bmVkIHNoaWZ0LCBwYXJlbnRfc2hpZnQsIG1hc2s7DQo+Pj4+PiAgICAgICAJCXVpbnQ2NF90IGlu Y3IsIGVudHJ5X2VuZCwgcGVfc3RhcnQ7DQo+Pj4+PiArCQlzdHJ1Y3QgYW1kZ3B1X2JvICpwdDsN Cj4+Pj4+ICAgICAgIA0KPj4+Pj4gLQkJaWYgKCFwdCkNCj4+Pj4+IC0JCQlyZXR1cm4gLUVOT0VO VDsNCj4+Pj4+ICsJCXIgPSBhbWRncHVfdm1fYWxsb2NfcHRzKHBhcmFtcy0+YWRldiwgcGFyYW1z LT52bSwgJmN1cnNvcik7DQo+Pj4+PiArCQlpZiAocikNCj4+Pj4+ICsJCQlyZXR1cm4gcjsNCj4+ Pj4+ICsNCj4+Pj4+ICsJCXB0ID0gY3Vyc29yLmVudHJ5LT5iYXNlLmJvOw0KPj4+Pj4gICAgICAg DQo+Pj4+PiAgICAgICAJCS8qIFRoZSByb290IGxldmVsIGNhbid0IGJlIGEgaHVnZSBwYWdlICov DQo+Pj4+PiAgICAgICAJCWlmIChjdXJzb3IubGV2ZWwgPT0gYWRldi0+dm1fbWFuYWdlci5yb290 X2xldmVsKSB7IGRpZmYgLS1naXQNCj4+Pj4+IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X3ZtLmgNCj4+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Zt LmgNCj4+Pj4+IGluZGV4IDgxZmY4MTc3ZjA5Mi4uMTE2NjA1YzAzOGQyIDEwMDY0NA0KPj4+Pj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmgNCj4+Pj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5oDQo+Pj4+PiBAQCAtMzAzLDkg KzMwMyw2IEBAIGJvb2wgYW1kZ3B1X3ZtX3JlYWR5KHN0cnVjdCBhbWRncHVfdm0gKnZtKTsNCj4+ Pj4+ICAgICAgIGludCBhbWRncHVfdm1fdmFsaWRhdGVfcHRfYm9zKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwNCj4+Pj4+ICAgICAgIAkJCSAgICAgIGlu dCAoKmNhbGxiYWNrKSh2b2lkICpwLCBzdHJ1Y3QgYW1kZ3B1X2JvICpibyksDQo+Pj4+PiAgICAg ICAJCQkgICAgICB2b2lkICpwYXJhbSk7DQo+Pj4+PiAtaW50IGFtZGdwdV92bV9hbGxvY19wdHMo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+Pj4+PiAtCQkJc3RydWN0IGFtZGdwdV92bSAq dm0sDQo+Pj4+PiAtCQkJdWludDY0X3Qgc2FkZHIsIHVpbnQ2NF90IHNpemUpOw0KPj4+Pj4gICAg ICAgaW50IGFtZGdwdV92bV9mbHVzaChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHN0cnVjdCBh bWRncHVfam9iICpqb2IsIGJvb2wgbmVlZF9waXBlX3N5bmMpOw0KPj4+Pj4gICAgICAgaW50IGFt ZGdwdV92bV91cGRhdGVfZGlyZWN0b3JpZXMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+ Pj4+PiAgICAgICAJCQkJIHN0cnVjdCBhbWRncHVfdm0gKnZtKTsNCj4+PiBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPj4+IGFtZC1nZnggbWFpbGluZyBs aXN0DQo+Pj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4+PiBodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngNCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFt ZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=