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 00:33:45 +0000 Message-ID: <976d2bd1-34b9-405f-06a8-5dbc8c481699@amd.com> References: <20190204124256.1765-1-christian.koenig@amd.com> <20190204124256.1765-6-christian.koenig@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US Content-ID: <2E643D945F8F2D4C8425821329C00206-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: =?utf-8?B?Q2hyaXN0aWFuIEvDtm5pZw==?= , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" T24gMjAxOS0wMi0wNCAzOjE3IHAubS4sIEt1ZWhsaW5nLCBGZWxpeCB3cm90ZToNCj4gVGhpcyBt YXkgY2F1c2UgcmVncmVzc2lvbnMgaW4gS0ZEIGlmIFBUIEJPIGFsbG9jYXRpb24gY2FuIHRyaWdn ZXINCj4gZXZpY3Rpb24gZmVuY2VzLiBUaGUgcHJldmlvdXMgY2FsbCB0byBhbWRncHVfdm1fYWxs b2NfcHRzIHdhcyBpbiBhDQo+IGNvbnRleHQgd2hlcmUgd2UgaGFkIHRlbXBvcmFyaWx5IHJlbW92 ZWQgdGhlIGV2aWN0aW9uIGZlbmNlLiBQVCBCTw0KPiBhbGxvY2F0aW9uIGluIGFtZGdwdV92bV9i b191cGRhdGUgaXMgbm90IHByb3RlY3RlZCBsaWtlIHRoYXQuDQo+DQo+IEkgdmFndWVseSByZW1l bWJlciBsb29raW5nIGludG8gdGhpcyBsYXN0IHRpbWUgeW91IHdlcmUgd29ya2luZyBvbiBvdXIN Cj4gZXZpY3Rpb24gZmVuY2UgY29kZSBhbmQgdGhpbmtpbmcgdGhhdCBtb3N0IG9mIHRoZSBjYXNl cyB3aGVyZSB3ZSByZW1vdmUNCj4gdGhlIGV2aWN0aW9uIGZlbmNlIHdlcmUgbm8gbG9uZ2VyIG5l ZWRlZCBpZiBmZW5jZSBzeW5jaHJvbml6YXRpb24NCj4gaGFwcGVucyB0aHJvdWdoIHRoZSBhbWRn cHVfc3luYy1vYmplY3QgQVBJIChyYXRoZXIgdGhhbiB3YWl0aW5nIG9uIGENCj4gcmVzZXJ2YXRp b24gb2JqZWN0IGRpcmVjdGx5KS4gSSB0aGluayBpdCdzIHRpbWUgSSBnbyBhbmQgZmluYWxseSBj bGVhbg0KPiB0aGF0IHVwLg0KDQpJJ20gbG9va2luZyBhdCB0aGlzIG5vdy4gSXQncyBub3Qgd29y a2luZyBhcyBJIHdhcyBob3BpbmcuDQoNCg0KPg0KPiBEbyB5b3Uga25vdyB3aGV0aGVyIFBUIEJP IGFsbG9jYXRpb24gd291bGQgd2FpdCBvbiB0aGUgcGFnZS1kaXJlY3RvcnkNCj4gcmVzZXJ2YXRp b24gb2JqZWN0IHdpdGhvdXQgdGhlIHN5bmMtb2JqZWN0IEFQSSBhbnl3aGVyZT8NCg0KSXQgZG9l c24ndCBldmVuIG1hdHRlci4gQnVmZmVyIG1vdmVzIChhbnl0aGluZyBjYWxsaW5nIGFtZGdwdV9z eW5jX3Jlc3YgDQp3aXRoIEFNREdQVV9GRU5DRV9PV05FUl9VTkRFRklORUQpIGFyZSBzdXBwb3Nl ZCB0byB0cmlnZ2VyIGV2aWN0aW9uIA0KZmVuY2VzLiBTbyBwYWdlIHRhYmxlIEJPIGFsbG9jYXRp b24gdHJpZ2dlcnMgZXZpY3Rpb24gZmVuY2VzIG9uIHRoZSBQRCANCnJlc2VydmF0aW9uLiBJIGRv bid0IGtub3cgaG93IHRvIGF2b2lkIHRoaXMgb3RoZXIgdGhhbiBieSByZW1vdmluZyB0aGUgDQpl dmljdGlvbiBmZW5jZSB3aGlsZSBhbGxvY2F0aW5nIFBUIEJPcy4gV2l0aCB5b3VyIGNoYW5nZXMg dGhpcyB3aWxsIGJlIA0KcG90ZW50aWFsbHkgZXZlcnkgdGltZSB3ZSBtYXAgb3IgdW5tYXAgbWVt b3J5Lg0KDQpBbnkgYmV0dGVyIGlkZWFzPw0KDQpSZWdhcmRzLA0KIMKgIEZlbGl4DQoNCg0KPg0K PiBSZWdhcmRzLA0KPiAgIMKgIEZlbGl4DQo+DQo+IE9uIDIwMTktMDItMDQgNzo0MiBhLm0uLCBD aHJpc3RpYW4gS8O2bmlnIHdyb3RlOg0KPj4gTGV0J3Mgc3RhcnQgdG8gYWxsb2NhdGUgVk0gUERz L1BUcyBvbiBkZW1hbmQgaW5zdGVhZCBvZiBwcmUtYWxsb2NhdGluZw0KPj4gdGhlbSBkdXJpbmcg bWFwcGluZy4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3Rp YW4ua29lbmlnQGFtZC5jb20+DQo+PiAtLS0NCj4+ICAgIC4uLi9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2FtZGtmZF9ncHV2bS5jICB8ICAgNiAtDQo+PiAgICBkcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfY3NhLmMgICAgICAgfCAgIDkgLS0NCj4+ICAgIGRyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYyAgICAgICB8ICAxMCAtLQ0KPj4gICAgZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMgICAgICAgIHwgMTM2ICsrKysrLS0tLS0tLS0t LS0tLQ0KPj4gICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmggICAgICAg IHwgICAzIC0NCj4+ICAgIDUgZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwgMTI2IGRl bGV0aW9ucygtKQ0KPj4NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfYW1ka2ZkX2dwdXZtLmMNCj4+IGluZGV4IGQ3YjEwZDc5ZjFkZS4uMjE3NmM5MmY5Mzc3IDEw MDY0NA0KPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9n cHV2bS5jDQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2Zk X2dwdXZtLmMNCj4+IEBAIC00OTIsMTIgKzQ5Miw2IEBAIHN0YXRpYyBpbnQgYWRkX2JvX3RvX3Zt KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3Qga2dkX21lbSAqbWVtLA0KPj4gICAg CQkJCQl2bS0+cHJvY2Vzc19pbmZvLT5ldmljdGlvbl9mZW5jZSwNCj4+ICAgIAkJCQkJTlVMTCwg TlVMTCk7DQo+PiAgICANCj4+IC0JcmV0ID0gYW1kZ3B1X3ZtX2FsbG9jX3B0cyhhZGV2LCB2bSwg dmEsIGFtZGdwdV9ib19zaXplKGJvKSk7DQo+PiAtCWlmIChyZXQpIHsNCj4+IC0JCXByX2Vycigi RmFpbGVkIHRvIGFsbG9jYXRlIHB0cywgZXJyPSVkXG4iLCByZXQpOw0KPj4gLQkJZ290byBlcnJf YWxsb2NfcHRzOw0KPj4gLQl9DQo+PiAtDQo+PiAgICAJcmV0ID0gdm1fdmFsaWRhdGVfcHRfcGRf Ym9zKHZtKTsNCj4+ICAgIAlpZiAocmV0KSB7DQo+PiAgICAJCXByX2VycigidmFsaWRhdGVfcHRf cGRfYm9zKCkgZmFpbGVkXG4iKTsNCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfY3NhLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf Y3NhLmMNCj4+IGluZGV4IDdlMjJiZTdjYTY4YS4uNTRkZDAyYTg5OGI5IDEwMDY0NA0KPj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzYS5jDQo+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3NhLmMNCj4+IEBAIC05MiwxNSArOTIsNiBA QCBpbnQgYW1kZ3B1X21hcF9zdGF0aWNfY3NhKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBz dHJ1Y3QgYW1kZ3B1X3ZtICp2bSwNCj4+ICAgIAkJcmV0dXJuIC1FTk9NRU07DQo+PiAgICAJfQ0K Pj4gICAgDQo+PiAtCXIgPSBhbWRncHVfdm1fYWxsb2NfcHRzKGFkZXYsICgqYm9fdmEpLT5iYXNl LnZtLCBjc2FfYWRkciwNCj4+IC0JCQkJc2l6ZSk7DQo+PiAtCWlmIChyKSB7DQo+PiAtCQlEUk1f RVJST1IoImZhaWxlZCB0byBhbGxvY2F0ZSBwdHMgZm9yIHN0YXRpYyBDU0EsIGVycj0lZFxuIiwg cik7DQo+PiAtCQlhbWRncHVfdm1fYm9fcm12KGFkZXYsICpib192YSk7DQo+PiAtCQl0dG1fZXVf YmFja29mZl9yZXNlcnZhdGlvbigmdGlja2V0LCAmbGlzdCk7DQo+PiAtCQlyZXR1cm4gcjsNCj4+ IC0JfQ0KPj4gLQ0KPj4gICAgCXIgPSBhbWRncHVfdm1fYm9fbWFwKGFkZXYsICpib192YSwgY3Nh X2FkZHIsIDAsIHNpemUsDQo+PiAgICAJCQkgICAgIEFNREdQVV9QVEVfUkVBREFCTEUgfCBBTURH UFVfUFRFX1dSSVRFQUJMRSB8DQo+PiAgICAJCQkgICAgIEFNREdQVV9QVEVfRVhFQ1VUQUJMRSk7 DQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5j IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jDQo+PiBpbmRleCBkMjFk ZDJmMzY5ZGEuLmUxNDFlM2IxMzExMiAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9nZW0uYw0KPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2dlbS5jDQo+PiBAQCAtNjI3LDExICs2MjcsNiBAQCBpbnQgYW1kZ3B1X2dlbV92 YV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLA0KPj4gICAgDQo+PiAg ICAJc3dpdGNoIChhcmdzLT5vcGVyYXRpb24pIHsNCj4+ICAgIAljYXNlIEFNREdQVV9WQV9PUF9N QVA6DQo+PiAtCQlyID0gYW1kZ3B1X3ZtX2FsbG9jX3B0cyhhZGV2LCBib192YS0+YmFzZS52bSwg YXJncy0+dmFfYWRkcmVzcywNCj4+IC0JCQkJCWFyZ3MtPm1hcF9zaXplKTsNCj4+IC0JCWlmIChy KQ0KPj4gLQkJCWdvdG8gZXJyb3JfYmFja29mZjsNCj4+IC0NCj4+ICAgIAkJdmFfZmxhZ3MgPSBh bWRncHVfZ21jX2dldF9wdGVfZmxhZ3MoYWRldiwgYXJncy0+ZmxhZ3MpOw0KPj4gICAgCQlyID0g YW1kZ3B1X3ZtX2JvX21hcChhZGV2LCBib192YSwgYXJncy0+dmFfYWRkcmVzcywNCj4+ICAgIAkJ CQkgICAgIGFyZ3MtPm9mZnNldF9pbl9ibywgYXJncy0+bWFwX3NpemUsDQo+PiBAQCAtNjQ3LDEx ICs2NDIsNiBAQCBpbnQgYW1kZ3B1X2dlbV92YV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB2b2lkICpkYXRhLA0KPj4gICAgCQkJCQkJYXJncy0+bWFwX3NpemUpOw0KPj4gICAgCQlicmVh azsNCj4+ICAgIAljYXNlIEFNREdQVV9WQV9PUF9SRVBMQUNFOg0KPj4gLQkJciA9IGFtZGdwdV92 bV9hbGxvY19wdHMoYWRldiwgYm9fdmEtPmJhc2Uudm0sIGFyZ3MtPnZhX2FkZHJlc3MsDQo+PiAt CQkJCQlhcmdzLT5tYXBfc2l6ZSk7DQo+PiAtCQlpZiAocikNCj4+IC0JCQlnb3RvIGVycm9yX2Jh Y2tvZmY7DQo+PiAtDQo+PiAgICAJCXZhX2ZsYWdzID0gYW1kZ3B1X2dtY19nZXRfcHRlX2ZsYWdz KGFkZXYsIGFyZ3MtPmZsYWdzKTsNCj4+ICAgIAkJciA9IGFtZGdwdV92bV9ib19yZXBsYWNlX21h cChhZGV2LCBib192YSwgYXJncy0+dmFfYWRkcmVzcywNCj4+ICAgIAkJCQkJICAgICBhcmdzLT5v ZmZzZXRfaW5fYm8sIGFyZ3MtPm1hcF9zaXplLA0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X3ZtLmMNCj4+IGluZGV4IGY3ZDQxMGE1ZDg0OC4uMGI4YTFhYTU2YzRhIDEwMDY0NA0K Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMNCj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jDQo+PiBAQCAtNTA0LDQ3ICs1 MDQsNiBAQCBzdGF0aWMgdm9pZCBhbWRncHVfdm1fcHRfbmV4dChzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwNCj4+ICAgIAl9DQo+PiAgICB9DQo+PiAgICANCj4+IC0vKioNCj4+IC0gKiBhbWRn cHVfdm1fcHRfZmlyc3RfbGVhZiAtIGdldCBmaXJzdCBsZWFmIFBEL1BUDQo+PiAtICoNCj4+IC0g KiBAYWRldjogYW1kZ3B1X2RldmljZSBwb2ludGVyDQo+PiAtICogQHZtOiBhbWRncHVfdm0gc3Ry dWN0dXJlDQo+PiAtICogQHN0YXJ0OiBzdGFydCBhZGRyIG9mIHRoZSB3YWxrDQo+PiAtICogQGN1 cnNvcjogc3RhdGUgdG8gaW5pdGlhbGl6ZQ0KPj4gLSAqDQo+PiAtICogU3RhcnQgYSB3YWxrIGFu ZCBnbyBkaXJlY3RseSB0byB0aGUgbGVhZiBub2RlLg0KPj4gLSAqLw0KPj4gLXN0YXRpYyB2b2lk IGFtZGdwdV92bV9wdF9maXJzdF9sZWFmKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPj4g LQkJCQkgICAgc3RydWN0IGFtZGdwdV92bSAqdm0sIHVpbnQ2NF90IHN0YXJ0LA0KPj4gLQkJCQkg ICAgc3RydWN0IGFtZGdwdV92bV9wdF9jdXJzb3IgKmN1cnNvcikNCj4+IC17DQo+PiAtCWFtZGdw dV92bV9wdF9zdGFydChhZGV2LCB2bSwgc3RhcnQsIGN1cnNvcik7DQo+PiAtCXdoaWxlIChhbWRn cHVfdm1fcHRfZGVzY2VuZGFudChhZGV2LCBjdXJzb3IpKTsNCj4+IC19DQo+PiAtDQo+PiAtLyoq DQo+PiAtICogYW1kZ3B1X3ZtX3B0X25leHRfbGVhZiAtIGdldCBuZXh0IGxlYWYgUEQvUFQNCj4+ IC0gKg0KPj4gLSAqIEBhZGV2OiBhbWRncHVfZGV2aWNlIHBvaW50ZXINCj4+IC0gKiBAY3Vyc29y OiBjdXJyZW50IHN0YXRlDQo+PiAtICoNCj4+IC0gKiBXYWxrIHRoZSBQRC9QVCB0cmVlIHRvIHRo ZSBuZXh0IGxlYWYgbm9kZS4NCj4+IC0gKi8NCj4+IC1zdGF0aWMgdm9pZCBhbWRncHVfdm1fcHRf bmV4dF9sZWFmKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPj4gLQkJCQkgICBzdHJ1Y3Qg YW1kZ3B1X3ZtX3B0X2N1cnNvciAqY3Vyc29yKQ0KPj4gLXsNCj4+IC0JYW1kZ3B1X3ZtX3B0X25l eHQoYWRldiwgY3Vyc29yKTsNCj4+IC0JaWYgKGN1cnNvci0+cGZuICE9IH4wbGwpDQo+PiAtCQl3 aGlsZSAoYW1kZ3B1X3ZtX3B0X2Rlc2NlbmRhbnQoYWRldiwgY3Vyc29yKSk7DQo+PiAtfQ0KPj4g LQ0KPj4gLS8qKg0KPj4gLSAqIGZvcl9lYWNoX2FtZGdwdV92bV9wdF9sZWFmIC0gd2FsayBvdmVy IGFsbCBsZWFmIFBEcy9QVHMgaW4gdGhlIGhpZXJhcmNoeQ0KPj4gLSAqLw0KPj4gLSNkZWZpbmUg Zm9yX2VhY2hfYW1kZ3B1X3ZtX3B0X2xlYWYoYWRldiwgdm0sIHN0YXJ0LCBlbmQsIGN1cnNvcikJ CVwNCj4+IC0JZm9yIChhbWRncHVfdm1fcHRfZmlyc3RfbGVhZigoYWRldiksICh2bSksIChzdGFy dCksICYoY3Vyc29yKSk7CQlcDQo+PiAtCSAgICAgKGN1cnNvcikucGZuIDw9IGVuZDsgYW1kZ3B1 X3ZtX3B0X25leHRfbGVhZigoYWRldiksICYoY3Vyc29yKSkpDQo+PiAtDQo+PiAgICAvKioNCj4+ ICAgICAqIGFtZGdwdV92bV9wdF9maXJzdF9kZnMgLSBzdGFydCBhIGRlZXAgZmlyc3Qgc2VhcmNo DQo+PiAgICAgKg0KPj4gQEAgLTkxOSw3NCArODc4LDUxIEBAIHN0YXRpYyB2b2lkIGFtZGdwdV92 bV9ib19wYXJhbShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgc3RydWN0IGFtZGdwdV92bSAq dm0sDQo+PiAgICAgKiBSZXR1cm5zOg0KPj4gICAgICogMCBvbiBzdWNjZXNzLCBlcnJubyBvdGhl cndpc2UuDQo+PiAgICAgKi8NCj4+IC1pbnQgYW1kZ3B1X3ZtX2FsbG9jX3B0cyhzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwNCj4+IC0JCQlzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwNCj4+IC0JCQl1 aW50NjRfdCBzYWRkciwgdWludDY0X3Qgc2l6ZSkNCj4+ICtzdGF0aWMgaW50IGFtZGdwdV92bV9h bGxvY19wdHMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+PiArCQkJICAgICAgIHN0cnVj dCBhbWRncHVfdm0gKnZtLA0KPj4gKwkJCSAgICAgICBzdHJ1Y3QgYW1kZ3B1X3ZtX3B0X2N1cnNv ciAqY3Vyc29yKQ0KPj4gICAgew0KPj4gLQlzdHJ1Y3QgYW1kZ3B1X3ZtX3B0X2N1cnNvciBjdXJz b3I7DQo+PiArCXN0cnVjdCBhbWRncHVfdm1fcHQgKmVudHJ5ID0gY3Vyc29yLT5lbnRyeTsNCj4+ ICsJc3RydWN0IGFtZGdwdV9ib19wYXJhbSBicDsNCj4+ICAgIAlzdHJ1Y3QgYW1kZ3B1X2JvICpw dDsNCj4+IC0JdWludDY0X3QgZWFkZHI7DQo+PiAgICAJaW50IHI7DQo+PiAgICANCj4+IC0JLyog dmFsaWRhdGUgdGhlIHBhcmFtZXRlcnMgKi8NCj4+IC0JaWYgKHNhZGRyICYgQU1ER1BVX0dQVV9Q QUdFX01BU0sgfHwgc2l6ZSAmIEFNREdQVV9HUFVfUEFHRV9NQVNLKQ0KPj4gLQkJcmV0dXJuIC1F SU5WQUw7DQo+PiArCWlmIChjdXJzb3ItPmxldmVsIDwgQU1ER1BVX1ZNX1BUQiAmJiAhZW50cnkt PmVudHJpZXMpIHsNCj4+ICsJCXVuc2lnbmVkIG51bV9lbnRyaWVzOw0KPj4gICAgDQo+PiAtCWVh ZGRyID0gc2FkZHIgKyBzaXplIC0gMTsNCj4+IC0NCj4+IC0Jc2FkZHIgLz0gQU1ER1BVX0dQVV9Q QUdFX1NJWkU7DQo+PiAtCWVhZGRyIC89IEFNREdQVV9HUFVfUEFHRV9TSVpFOw0KPj4gLQ0KPj4g LQlpZiAoZWFkZHIgPj0gYWRldi0+dm1fbWFuYWdlci5tYXhfcGZuKSB7DQo+PiAtCQlkZXZfZXJy KGFkZXYtPmRldiwgInZhIGFib3ZlIGxpbWl0ICgweCUwOGxsWCA+PSAweCUwOGxsWClcbiIsDQo+ PiAtCQkJZWFkZHIsIGFkZXYtPnZtX21hbmFnZXIubWF4X3Bmbik7DQo+PiAtCQlyZXR1cm4gLUVJ TlZBTDsNCj4+ICsJCW51bV9lbnRyaWVzID0gYW1kZ3B1X3ZtX251bV9lbnRyaWVzKGFkZXYsIGN1 cnNvci0+bGV2ZWwpOw0KPj4gKwkJZW50cnktPmVudHJpZXMgPSBrdm1hbGxvY19hcnJheShudW1f ZW50cmllcywNCj4+ICsJCQkJCQlzaXplb2YoKmVudHJ5LT5lbnRyaWVzKSwNCj4+ICsJCQkJCQlH RlBfS0VSTkVMIHwgX19HRlBfWkVSTyk7DQo+PiArCQlpZiAoIWVudHJ5LT5lbnRyaWVzKQ0KPj4g KwkJCXJldHVybiAtRU5PTUVNOw0KPj4gICAgCX0NCj4+ICAgIA0KPj4gLQlmb3JfZWFjaF9hbWRn cHVfdm1fcHRfbGVhZihhZGV2LCB2bSwgc2FkZHIsIGVhZGRyLCBjdXJzb3IpIHsNCj4+IC0JCXN0 cnVjdCBhbWRncHVfdm1fcHQgKmVudHJ5ID0gY3Vyc29yLmVudHJ5Ow0KPj4gLQkJc3RydWN0IGFt ZGdwdV9ib19wYXJhbSBicDsNCj4+IC0NCj4+IC0JCWlmIChjdXJzb3IubGV2ZWwgPCBBTURHUFVf Vk1fUFRCKSB7DQo+PiAtCQkJdW5zaWduZWQgbnVtX2VudHJpZXM7DQo+PiAtDQo+PiAtCQkJbnVt X2VudHJpZXMgPSBhbWRncHVfdm1fbnVtX2VudHJpZXMoYWRldiwgY3Vyc29yLmxldmVsKTsNCj4+ IC0JCQllbnRyeS0+ZW50cmllcyA9IGt2bWFsbG9jX2FycmF5KG51bV9lbnRyaWVzLA0KPj4gLQkJ CQkJCQlzaXplb2YoKmVudHJ5LT5lbnRyaWVzKSwNCj4+IC0JCQkJCQkJR0ZQX0tFUk5FTCB8DQo+ PiAtCQkJCQkJCV9fR0ZQX1pFUk8pOw0KPj4gLQkJCWlmICghZW50cnktPmVudHJpZXMpDQo+PiAt CQkJCXJldHVybiAtRU5PTUVNOw0KPj4gLQkJfQ0KPj4gLQ0KPj4gLQ0KPj4gLQkJaWYgKGVudHJ5 LT5iYXNlLmJvKQ0KPj4gLQkJCWNvbnRpbnVlOw0KPj4gLQ0KPj4gLQkJYW1kZ3B1X3ZtX2JvX3Bh cmFtKGFkZXYsIHZtLCBjdXJzb3IubGV2ZWwsICZicCk7DQo+PiAtDQo+PiAtCQlyID0gYW1kZ3B1 X2JvX2NyZWF0ZShhZGV2LCAmYnAsICZwdCk7DQo+PiAtCQlpZiAocikNCj4+IC0JCQlyZXR1cm4g cjsNCj4+IC0NCj4+IC0JCWlmICh2bS0+dXNlX2NwdV9mb3JfdXBkYXRlKSB7DQo+PiAtCQkJciA9 IGFtZGdwdV9ib19rbWFwKHB0LCBOVUxMKTsNCj4+IC0JCQlpZiAocikNCj4+IC0JCQkJZ290byBl cnJvcl9mcmVlX3B0Ow0KPj4gLQkJfQ0KPj4gKwlpZiAoZW50cnktPmJhc2UuYm8pDQo+PiArCQly ZXR1cm4gMDsNCj4+ICAgIA0KPj4gLQkJLyogS2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgcm9vdCBk aXJlY3RvcnkgdG8gYXZvaWQNCj4+IC0JCSogZnJlZWluZyB0aGVtIHVwIGluIHRoZSB3cm9uZyBv cmRlci4NCj4+IC0JCSovDQo+PiAtCQlwdC0+cGFyZW50ID0gYW1kZ3B1X2JvX3JlZihjdXJzb3Iu cGFyZW50LT5iYXNlLmJvKTsNCj4+ICsJYW1kZ3B1X3ZtX2JvX3BhcmFtKGFkZXYsIHZtLCBjdXJz b3ItPmxldmVsLCAmYnApOw0KPj4gICAgDQo+PiAtCQlhbWRncHVfdm1fYm9fYmFzZV9pbml0KCZl bnRyeS0+YmFzZSwgdm0sIHB0KTsNCj4+ICsJciA9IGFtZGdwdV9ib19jcmVhdGUoYWRldiwgJmJw LCAmcHQpOw0KPj4gKwlpZiAocikNCj4+ICsJCXJldHVybiByOw0KPj4gICAgDQo+PiAtCQlyID0g YW1kZ3B1X3ZtX2NsZWFyX2JvKGFkZXYsIHZtLCBwdCk7DQo+PiArCWlmICh2bS0+dXNlX2NwdV9m b3JfdXBkYXRlKSB7DQo+PiArCQlyID0gYW1kZ3B1X2JvX2ttYXAocHQsIE5VTEwpOw0KPj4gICAg CQlpZiAocikNCj4+ICAgIAkJCWdvdG8gZXJyb3JfZnJlZV9wdDsNCj4+ICAgIAl9DQo+PiAgICAN Cj4+ICsJLyogS2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgcm9vdCBkaXJlY3RvcnkgdG8gYXZvaWQN Cj4+ICsJICogZnJlZWluZyB0aGVtIHVwIGluIHRoZSB3cm9uZyBvcmRlci4NCj4+ICsJICovDQo+ PiArCXB0LT5wYXJlbnQgPSBhbWRncHVfYm9fcmVmKGN1cnNvci0+cGFyZW50LT5iYXNlLmJvKTsN Cj4+ICsJYW1kZ3B1X3ZtX2JvX2Jhc2VfaW5pdCgmZW50cnktPmJhc2UsIHZtLCBwdCk7DQo+PiAr DQo+PiArCXIgPSBhbWRncHVfdm1fY2xlYXJfYm8oYWRldiwgdm0sIHB0KTsNCj4+ICsJaWYgKHIp DQo+PiArCQlnb3RvIGVycm9yX2ZyZWVfcHQ7DQo+PiArDQo+PiAgICAJcmV0dXJuIDA7DQo+PiAg ICANCj4+ICAgIGVycm9yX2ZyZWVfcHQ6DQo+PiBAQCAtMTY1NSw2ICsxNTkxLDcgQEAgc3RhdGlj IGludCBhbWRncHVfdm1fdXBkYXRlX3B0ZXMoc3RydWN0IGFtZGdwdV9wdGVfdXBkYXRlX3BhcmFt cyAqcGFyYW1zLA0KPj4gICAgCXN0cnVjdCBhbWRncHVfdm1fcHRfY3Vyc29yIGN1cnNvcjsNCj4+ ICAgIAl1aW50NjRfdCBmcmFnX3N0YXJ0ID0gc3RhcnQsIGZyYWdfZW5kOw0KPj4gICAgCXVuc2ln bmVkIGludCBmcmFnOw0KPj4gKwlpbnQgcjsNCj4+ICAgIA0KPj4gICAgCS8qIGZpZ3VyZSBvdXQg dGhlIGluaXRpYWwgZnJhZ21lbnQgKi8NCj4+ICAgIAlhbWRncHVfdm1fZnJhZ21lbnQocGFyYW1z LCBmcmFnX3N0YXJ0LCBlbmQsIGZsYWdzLCAmZnJhZywgJmZyYWdfZW5kKTsNCj4+IEBAIC0xNjYy LDEyICsxNTk5LDE1IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3ZtX3VwZGF0ZV9wdGVzKHN0cnVjdCBh bWRncHVfcHRlX3VwZGF0ZV9wYXJhbXMgKnBhcmFtcywNCj4+ICAgIAkvKiB3YWxrIG92ZXIgdGhl IGFkZHJlc3Mgc3BhY2UgYW5kIHVwZGF0ZSB0aGUgUFRzICovDQo+PiAgICAJYW1kZ3B1X3ZtX3B0 X3N0YXJ0KGFkZXYsIHBhcmFtcy0+dm0sIHN0YXJ0LCAmY3Vyc29yKTsNCj4+ICAgIAl3aGlsZSAo Y3Vyc29yLnBmbiA8IGVuZCkgew0KPj4gLQkJc3RydWN0IGFtZGdwdV9ibyAqcHQgPSBjdXJzb3Iu ZW50cnktPmJhc2UuYm87DQo+PiAgICAJCXVuc2lnbmVkIHNoaWZ0LCBwYXJlbnRfc2hpZnQsIG1h c2s7DQo+PiAgICAJCXVpbnQ2NF90IGluY3IsIGVudHJ5X2VuZCwgcGVfc3RhcnQ7DQo+PiArCQlz dHJ1Y3QgYW1kZ3B1X2JvICpwdDsNCj4+ICAgIA0KPj4gLQkJaWYgKCFwdCkNCj4+IC0JCQlyZXR1 cm4gLUVOT0VOVDsNCj4+ICsJCXIgPSBhbWRncHVfdm1fYWxsb2NfcHRzKHBhcmFtcy0+YWRldiwg cGFyYW1zLT52bSwgJmN1cnNvcik7DQo+PiArCQlpZiAocikNCj4+ICsJCQlyZXR1cm4gcjsNCj4+ ICsNCj4+ICsJCXB0ID0gY3Vyc29yLmVudHJ5LT5iYXNlLmJvOw0KPj4gICAgDQo+PiAgICAJCS8q IFRoZSByb290IGxldmVsIGNhbid0IGJlIGEgaHVnZSBwYWdlICovDQo+PiAgICAJCWlmIChjdXJz b3IubGV2ZWwgPT0gYWRldi0+dm1fbWFuYWdlci5yb290X2xldmVsKSB7DQo+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmggYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uaA0KPj4gaW5kZXggODFmZjgxNzdmMDkyLi4xMTY2MDVj MDM4ZDIgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf dm0uaA0KPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmgNCj4+ IEBAIC0zMDMsOSArMzAzLDYgQEAgYm9vbCBhbWRncHVfdm1fcmVhZHkoc3RydWN0IGFtZGdwdV92 bSAqdm0pOw0KPj4gICAgaW50IGFtZGdwdV92bV92YWxpZGF0ZV9wdF9ib3Moc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfdm0gKnZtLA0KPj4gICAgCQkJICAgICAgaW50 ICgqY2FsbGJhY2spKHZvaWQgKnAsIHN0cnVjdCBhbWRncHVfYm8gKmJvKSwNCj4+ICAgIAkJCSAg ICAgIHZvaWQgKnBhcmFtKTsNCj4+IC1pbnQgYW1kZ3B1X3ZtX2FsbG9jX3B0cyhzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwNCj4+IC0JCQlzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwNCj4+IC0JCQl1 aW50NjRfdCBzYWRkciwgdWludDY0X3Qgc2l6ZSk7DQo+PiAgICBpbnQgYW1kZ3B1X3ZtX2ZsdXNo KHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgc3RydWN0IGFtZGdwdV9qb2IgKmpvYiwgYm9vbCBu ZWVkX3BpcGVfc3luYyk7DQo+PiAgICBpbnQgYW1kZ3B1X3ZtX3VwZGF0ZV9kaXJlY3Rvcmllcyhz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCj4+ICAgIAkJCQkgc3RydWN0IGFtZGdwdV92bSAq dm0pOw0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0K PiBhbWQtZ2Z4IG1haWxpbmcgbGlzdA0KPiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0K PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngN Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZngg bWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=