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: Mon, 4 Feb 2019 20:17:07 +0000 Message-ID: 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: <20190204124256.1765-6-christian.koenig-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: =?utf-8?B?Q2hyaXN0aWFuIEvDtm5pZw==?= , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" VGhpcyBtYXkgY2F1c2UgcmVncmVzc2lvbnMgaW4gS0ZEIGlmIFBUIEJPIGFsbG9jYXRpb24gY2Fu IHRyaWdnZXIgDQpldmljdGlvbiBmZW5jZXMuIFRoZSBwcmV2aW91cyBjYWxsIHRvIGFtZGdwdV92 bV9hbGxvY19wdHMgd2FzIGluIGEgDQpjb250ZXh0IHdoZXJlIHdlIGhhZCB0ZW1wb3JhcmlseSBy ZW1vdmVkIHRoZSBldmljdGlvbiBmZW5jZS4gUFQgQk8gDQphbGxvY2F0aW9uIGluIGFtZGdwdV92 bV9ib191cGRhdGUgaXMgbm90IHByb3RlY3RlZCBsaWtlIHRoYXQuDQoNCkkgdmFndWVseSByZW1l bWJlciBsb29raW5nIGludG8gdGhpcyBsYXN0IHRpbWUgeW91IHdlcmUgd29ya2luZyBvbiBvdXIg DQpldmljdGlvbiBmZW5jZSBjb2RlIGFuZCB0aGlua2luZyB0aGF0IG1vc3Qgb2YgdGhlIGNhc2Vz IHdoZXJlIHdlIHJlbW92ZSANCnRoZSBldmljdGlvbiBmZW5jZSB3ZXJlIG5vIGxvbmdlciBuZWVk ZWQgaWYgZmVuY2Ugc3luY2hyb25pemF0aW9uIA0KaGFwcGVucyB0aHJvdWdoIHRoZSBhbWRncHVf c3luYy1vYmplY3QgQVBJIChyYXRoZXIgdGhhbiB3YWl0aW5nIG9uIGEgDQpyZXNlcnZhdGlvbiBv YmplY3QgZGlyZWN0bHkpLiBJIHRoaW5rIGl0J3MgdGltZSBJIGdvIGFuZCBmaW5hbGx5IGNsZWFu IA0KdGhhdCB1cC4NCg0KRG8geW91IGtub3cgd2hldGhlciBQVCBCTyBhbGxvY2F0aW9uIHdvdWxk IHdhaXQgb24gdGhlIHBhZ2UtZGlyZWN0b3J5IA0KcmVzZXJ2YXRpb24gb2JqZWN0IHdpdGhvdXQg dGhlIHN5bmMtb2JqZWN0IEFQSSBhbnl3aGVyZT8NCg0KUmVnYXJkcywNCiDCoCBGZWxpeA0KDQpP biAyMDE5LTAyLTA0IDc6NDIgYS5tLiwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToNCj4gTGV0J3Mg c3RhcnQgdG8gYWxsb2NhdGUgVk0gUERzL1BUcyBvbiBkZW1hbmQgaW5zdGVhZCBvZiBwcmUtYWxs b2NhdGluZw0KPiB0aGVtIGR1cmluZyBtYXBwaW5nLg0KPg0KPiBTaWduZWQtb2ZmLWJ5OiBDaHJp c3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+DQo+IC0tLQ0KPiAgIC4uLi9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jICB8ICAgNiAtDQo+ICAgZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzYS5jICAgICAgIHwgICA5IC0tDQo+ICAg ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jICAgICAgIHwgIDEwIC0tDQo+ ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMgICAgICAgIHwgMTM2ICsr KysrLS0tLS0tLS0tLS0tLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92 bS5oICAgICAgICB8ICAgMyAtDQo+ICAgNSBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCsp LCAxMjYgZGVsZXRpb25zKC0pDQo+DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMNCj4gaW5kZXggZDdiMTBkNzlmMWRlLi4yMTc2YzkyZjkz NzcgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRr ZmRfZ3B1dm0uYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1k a2ZkX2dwdXZtLmMNCj4gQEAgLTQ5MiwxMiArNDkyLDYgQEAgc3RhdGljIGludCBhZGRfYm9fdG9f dm0oc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBrZ2RfbWVtICptZW0sDQo+ICAg CQkJCQl2bS0+cHJvY2Vzc19pbmZvLT5ldmljdGlvbl9mZW5jZSwNCj4gICAJCQkJCU5VTEwsIE5V TEwpOw0KPiAgIA0KPiAtCXJldCA9IGFtZGdwdV92bV9hbGxvY19wdHMoYWRldiwgdm0sIHZhLCBh bWRncHVfYm9fc2l6ZShibykpOw0KPiAtCWlmIChyZXQpIHsNCj4gLQkJcHJfZXJyKCJGYWlsZWQg dG8gYWxsb2NhdGUgcHRzLCBlcnI9JWRcbiIsIHJldCk7DQo+IC0JCWdvdG8gZXJyX2FsbG9jX3B0 czsNCj4gLQl9DQo+IC0NCj4gICAJcmV0ID0gdm1fdmFsaWRhdGVfcHRfcGRfYm9zKHZtKTsNCj4g ICAJaWYgKHJldCkgew0KPiAgIAkJcHJfZXJyKCJ2YWxpZGF0ZV9wdF9wZF9ib3MoKSBmYWlsZWRc biIpOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Nz YS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzYS5jDQo+IGluZGV4IDdl MjJiZTdjYTY4YS4uNTRkZDAyYTg5OGI5IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfY3NhLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2NzYS5jDQo+IEBAIC05MiwxNSArOTIsNiBAQCBpbnQgYW1kZ3B1X21hcF9zdGF0 aWNfY3NhKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwN Cj4gICAJCXJldHVybiAtRU5PTUVNOw0KPiAgIAl9DQo+ICAgDQo+IC0JciA9IGFtZGdwdV92bV9h bGxvY19wdHMoYWRldiwgKCpib192YSktPmJhc2Uudm0sIGNzYV9hZGRyLA0KPiAtCQkJCXNpemUp Ow0KPiAtCWlmIChyKSB7DQo+IC0JCURSTV9FUlJPUigiZmFpbGVkIHRvIGFsbG9jYXRlIHB0cyBm b3Igc3RhdGljIENTQSwgZXJyPSVkXG4iLCByKTsNCj4gLQkJYW1kZ3B1X3ZtX2JvX3JtdihhZGV2 LCAqYm9fdmEpOw0KPiAtCQl0dG1fZXVfYmFja29mZl9yZXNlcnZhdGlvbigmdGlja2V0LCAmbGlz dCk7DQo+IC0JCXJldHVybiByOw0KPiAtCX0NCj4gLQ0KPiAgIAlyID0gYW1kZ3B1X3ZtX2JvX21h cChhZGV2LCAqYm9fdmEsIGNzYV9hZGRyLCAwLCBzaXplLA0KPiAgIAkJCSAgICAgQU1ER1BVX1BU RV9SRUFEQUJMRSB8IEFNREdQVV9QVEVfV1JJVEVBQkxFIHwNCj4gICAJCQkgICAgIEFNREdQVV9Q VEVfRVhFQ1VUQUJMRSk7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMN Cj4gaW5kZXggZDIxZGQyZjM2OWRhLi5lMTQxZTNiMTMxMTIgMTAwNjQ0DQo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYw0KPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMNCj4gQEAgLTYyNywxMSArNjI3LDYgQEAgaW50IGFt ZGdwdV9nZW1fdmFfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwNCj4g ICANCj4gICAJc3dpdGNoIChhcmdzLT5vcGVyYXRpb24pIHsNCj4gICAJY2FzZSBBTURHUFVfVkFf T1BfTUFQOg0KPiAtCQlyID0gYW1kZ3B1X3ZtX2FsbG9jX3B0cyhhZGV2LCBib192YS0+YmFzZS52 bSwgYXJncy0+dmFfYWRkcmVzcywNCj4gLQkJCQkJYXJncy0+bWFwX3NpemUpOw0KPiAtCQlpZiAo cikNCj4gLQkJCWdvdG8gZXJyb3JfYmFja29mZjsNCj4gLQ0KPiAgIAkJdmFfZmxhZ3MgPSBhbWRn cHVfZ21jX2dldF9wdGVfZmxhZ3MoYWRldiwgYXJncy0+ZmxhZ3MpOw0KPiAgIAkJciA9IGFtZGdw dV92bV9ib19tYXAoYWRldiwgYm9fdmEsIGFyZ3MtPnZhX2FkZHJlc3MsDQo+ICAgCQkJCSAgICAg YXJncy0+b2Zmc2V0X2luX2JvLCBhcmdzLT5tYXBfc2l6ZSwNCj4gQEAgLTY0NywxMSArNjQyLDYg QEAgaW50IGFtZGdwdV9nZW1fdmFfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwNCj4gICAJCQkJCQlhcmdzLT5tYXBfc2l6ZSk7DQo+ICAgCQlicmVhazsNCj4gICAJY2Fz ZSBBTURHUFVfVkFfT1BfUkVQTEFDRToNCj4gLQkJciA9IGFtZGdwdV92bV9hbGxvY19wdHMoYWRl diwgYm9fdmEtPmJhc2Uudm0sIGFyZ3MtPnZhX2FkZHJlc3MsDQo+IC0JCQkJCWFyZ3MtPm1hcF9z aXplKTsNCj4gLQkJaWYgKHIpDQo+IC0JCQlnb3RvIGVycm9yX2JhY2tvZmY7DQo+IC0NCj4gICAJ CXZhX2ZsYWdzID0gYW1kZ3B1X2dtY19nZXRfcHRlX2ZsYWdzKGFkZXYsIGFyZ3MtPmZsYWdzKTsN Cj4gICAJCXIgPSBhbWRncHVfdm1fYm9fcmVwbGFjZV9tYXAoYWRldiwgYm9fdmEsIGFyZ3MtPnZh X2FkZHJlc3MsDQo+ICAgCQkJCQkgICAgIGFyZ3MtPm9mZnNldF9pbl9ibywgYXJncy0+bWFwX3Np emUsDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0u YyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jDQo+IGluZGV4IGY3ZDQx MGE1ZDg0OC4uMGI4YTFhYTU2YzRhIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfdm0uYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfdm0uYw0KPiBAQCAtNTA0LDQ3ICs1MDQsNiBAQCBzdGF0aWMgdm9pZCBhbWRncHVfdm1f cHRfbmV4dChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCj4gICAJfQ0KPiAgIH0NCj4gICAN Cj4gLS8qKg0KPiAtICogYW1kZ3B1X3ZtX3B0X2ZpcnN0X2xlYWYgLSBnZXQgZmlyc3QgbGVhZiBQ RC9QVA0KPiAtICoNCj4gLSAqIEBhZGV2OiBhbWRncHVfZGV2aWNlIHBvaW50ZXINCj4gLSAqIEB2 bTogYW1kZ3B1X3ZtIHN0cnVjdHVyZQ0KPiAtICogQHN0YXJ0OiBzdGFydCBhZGRyIG9mIHRoZSB3 YWxrDQo+IC0gKiBAY3Vyc29yOiBzdGF0ZSB0byBpbml0aWFsaXplDQo+IC0gKg0KPiAtICogU3Rh cnQgYSB3YWxrIGFuZCBnbyBkaXJlY3RseSB0byB0aGUgbGVhZiBub2RlLg0KPiAtICovDQo+IC1z dGF0aWMgdm9pZCBhbWRncHVfdm1fcHRfZmlyc3RfbGVhZihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiwNCj4gLQkJCQkgICAgc3RydWN0IGFtZGdwdV92bSAqdm0sIHVpbnQ2NF90IHN0YXJ0LA0K PiAtCQkJCSAgICBzdHJ1Y3QgYW1kZ3B1X3ZtX3B0X2N1cnNvciAqY3Vyc29yKQ0KPiAtew0KPiAt CWFtZGdwdV92bV9wdF9zdGFydChhZGV2LCB2bSwgc3RhcnQsIGN1cnNvcik7DQo+IC0Jd2hpbGUg KGFtZGdwdV92bV9wdF9kZXNjZW5kYW50KGFkZXYsIGN1cnNvcikpOw0KPiAtfQ0KPiAtDQo+IC0v KioNCj4gLSAqIGFtZGdwdV92bV9wdF9uZXh0X2xlYWYgLSBnZXQgbmV4dCBsZWFmIFBEL1BUDQo+ IC0gKg0KPiAtICogQGFkZXY6IGFtZGdwdV9kZXZpY2UgcG9pbnRlcg0KPiAtICogQGN1cnNvcjog Y3VycmVudCBzdGF0ZQ0KPiAtICoNCj4gLSAqIFdhbGsgdGhlIFBEL1BUIHRyZWUgdG8gdGhlIG5l eHQgbGVhZiBub2RlLg0KPiAtICovDQo+IC1zdGF0aWMgdm9pZCBhbWRncHVfdm1fcHRfbmV4dF9s ZWFmKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPiAtCQkJCSAgIHN0cnVjdCBhbWRncHVf dm1fcHRfY3Vyc29yICpjdXJzb3IpDQo+IC17DQo+IC0JYW1kZ3B1X3ZtX3B0X25leHQoYWRldiwg Y3Vyc29yKTsNCj4gLQlpZiAoY3Vyc29yLT5wZm4gIT0gfjBsbCkNCj4gLQkJd2hpbGUgKGFtZGdw dV92bV9wdF9kZXNjZW5kYW50KGFkZXYsIGN1cnNvcikpOw0KPiAtfQ0KPiAtDQo+IC0vKioNCj4g LSAqIGZvcl9lYWNoX2FtZGdwdV92bV9wdF9sZWFmIC0gd2FsayBvdmVyIGFsbCBsZWFmIFBEcy9Q VHMgaW4gdGhlIGhpZXJhcmNoeQ0KPiAtICovDQo+IC0jZGVmaW5lIGZvcl9lYWNoX2FtZGdwdV92 bV9wdF9sZWFmKGFkZXYsIHZtLCBzdGFydCwgZW5kLCBjdXJzb3IpCQlcDQo+IC0JZm9yIChhbWRn cHVfdm1fcHRfZmlyc3RfbGVhZigoYWRldiksICh2bSksIChzdGFydCksICYoY3Vyc29yKSk7CQlc DQo+IC0JICAgICAoY3Vyc29yKS5wZm4gPD0gZW5kOyBhbWRncHVfdm1fcHRfbmV4dF9sZWFmKChh ZGV2KSwgJihjdXJzb3IpKSkNCj4gLQ0KPiAgIC8qKg0KPiAgICAqIGFtZGdwdV92bV9wdF9maXJz dF9kZnMgLSBzdGFydCBhIGRlZXAgZmlyc3Qgc2VhcmNoDQo+ICAgICoNCj4gQEAgLTkxOSw3NCAr ODc4LDUxIEBAIHN0YXRpYyB2b2lkIGFtZGdwdV92bV9ib19wYXJhbShzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwgc3RydWN0IGFtZGdwdV92bSAqdm0sDQo+ICAgICogUmV0dXJuczoNCj4gICAg KiAwIG9uIHN1Y2Nlc3MsIGVycm5vIG90aGVyd2lzZS4NCj4gICAgKi8NCj4gLWludCBhbWRncHVf dm1fYWxsb2NfcHRzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPiAtCQkJc3RydWN0IGFt ZGdwdV92bSAqdm0sDQo+IC0JCQl1aW50NjRfdCBzYWRkciwgdWludDY0X3Qgc2l6ZSkNCj4gK3N0 YXRpYyBpbnQgYW1kZ3B1X3ZtX2FsbG9jX3B0cyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwN Cj4gKwkJCSAgICAgICBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwNCj4gKwkJCSAgICAgICBzdHJ1Y3Qg YW1kZ3B1X3ZtX3B0X2N1cnNvciAqY3Vyc29yKQ0KPiAgIHsNCj4gLQlzdHJ1Y3QgYW1kZ3B1X3Zt X3B0X2N1cnNvciBjdXJzb3I7DQo+ICsJc3RydWN0IGFtZGdwdV92bV9wdCAqZW50cnkgPSBjdXJz b3ItPmVudHJ5Ow0KPiArCXN0cnVjdCBhbWRncHVfYm9fcGFyYW0gYnA7DQo+ICAgCXN0cnVjdCBh bWRncHVfYm8gKnB0Ow0KPiAtCXVpbnQ2NF90IGVhZGRyOw0KPiAgIAlpbnQgcjsNCj4gICANCj4g LQkvKiB2YWxpZGF0ZSB0aGUgcGFyYW1ldGVycyAqLw0KPiAtCWlmIChzYWRkciAmIEFNREdQVV9H UFVfUEFHRV9NQVNLIHx8IHNpemUgJiBBTURHUFVfR1BVX1BBR0VfTUFTSykNCj4gLQkJcmV0dXJu IC1FSU5WQUw7DQo+ICsJaWYgKGN1cnNvci0+bGV2ZWwgPCBBTURHUFVfVk1fUFRCICYmICFlbnRy eS0+ZW50cmllcykgew0KPiArCQl1bnNpZ25lZCBudW1fZW50cmllczsNCj4gICANCj4gLQllYWRk ciA9IHNhZGRyICsgc2l6ZSAtIDE7DQo+IC0NCj4gLQlzYWRkciAvPSBBTURHUFVfR1BVX1BBR0Vf U0laRTsNCj4gLQllYWRkciAvPSBBTURHUFVfR1BVX1BBR0VfU0laRTsNCj4gLQ0KPiAtCWlmIChl YWRkciA+PSBhZGV2LT52bV9tYW5hZ2VyLm1heF9wZm4pIHsNCj4gLQkJZGV2X2VycihhZGV2LT5k ZXYsICJ2YSBhYm92ZSBsaW1pdCAoMHglMDhsbFggPj0gMHglMDhsbFgpXG4iLA0KPiAtCQkJZWFk ZHIsIGFkZXYtPnZtX21hbmFnZXIubWF4X3Bmbik7DQo+IC0JCXJldHVybiAtRUlOVkFMOw0KPiAr CQludW1fZW50cmllcyA9IGFtZGdwdV92bV9udW1fZW50cmllcyhhZGV2LCBjdXJzb3ItPmxldmVs KTsNCj4gKwkJZW50cnktPmVudHJpZXMgPSBrdm1hbGxvY19hcnJheShudW1fZW50cmllcywNCj4g KwkJCQkJCXNpemVvZigqZW50cnktPmVudHJpZXMpLA0KPiArCQkJCQkJR0ZQX0tFUk5FTCB8IF9f R0ZQX1pFUk8pOw0KPiArCQlpZiAoIWVudHJ5LT5lbnRyaWVzKQ0KPiArCQkJcmV0dXJuIC1FTk9N RU07DQo+ICAgCX0NCj4gICANCj4gLQlmb3JfZWFjaF9hbWRncHVfdm1fcHRfbGVhZihhZGV2LCB2 bSwgc2FkZHIsIGVhZGRyLCBjdXJzb3IpIHsNCj4gLQkJc3RydWN0IGFtZGdwdV92bV9wdCAqZW50 cnkgPSBjdXJzb3IuZW50cnk7DQo+IC0JCXN0cnVjdCBhbWRncHVfYm9fcGFyYW0gYnA7DQo+IC0N Cj4gLQkJaWYgKGN1cnNvci5sZXZlbCA8IEFNREdQVV9WTV9QVEIpIHsNCj4gLQkJCXVuc2lnbmVk IG51bV9lbnRyaWVzOw0KPiAtDQo+IC0JCQludW1fZW50cmllcyA9IGFtZGdwdV92bV9udW1fZW50 cmllcyhhZGV2LCBjdXJzb3IubGV2ZWwpOw0KPiAtCQkJZW50cnktPmVudHJpZXMgPSBrdm1hbGxv Y19hcnJheShudW1fZW50cmllcywNCj4gLQkJCQkJCQlzaXplb2YoKmVudHJ5LT5lbnRyaWVzKSwN Cj4gLQkJCQkJCQlHRlBfS0VSTkVMIHwNCj4gLQkJCQkJCQlfX0dGUF9aRVJPKTsNCj4gLQkJCWlm ICghZW50cnktPmVudHJpZXMpDQo+IC0JCQkJcmV0dXJuIC1FTk9NRU07DQo+IC0JCX0NCj4gLQ0K PiAtDQo+IC0JCWlmIChlbnRyeS0+YmFzZS5ibykNCj4gLQkJCWNvbnRpbnVlOw0KPiAtDQo+IC0J CWFtZGdwdV92bV9ib19wYXJhbShhZGV2LCB2bSwgY3Vyc29yLmxldmVsLCAmYnApOw0KPiAtDQo+ IC0JCXIgPSBhbWRncHVfYm9fY3JlYXRlKGFkZXYsICZicCwgJnB0KTsNCj4gLQkJaWYgKHIpDQo+ IC0JCQlyZXR1cm4gcjsNCj4gLQ0KPiAtCQlpZiAodm0tPnVzZV9jcHVfZm9yX3VwZGF0ZSkgew0K PiAtCQkJciA9IGFtZGdwdV9ib19rbWFwKHB0LCBOVUxMKTsNCj4gLQkJCWlmIChyKQ0KPiAtCQkJ CWdvdG8gZXJyb3JfZnJlZV9wdDsNCj4gLQkJfQ0KPiArCWlmIChlbnRyeS0+YmFzZS5ibykNCj4g KwkJcmV0dXJuIDA7DQo+ICAgDQo+IC0JCS8qIEtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHJvb3Qg ZGlyZWN0b3J5IHRvIGF2b2lkDQo+IC0JCSogZnJlZWluZyB0aGVtIHVwIGluIHRoZSB3cm9uZyBv cmRlci4NCj4gLQkJKi8NCj4gLQkJcHQtPnBhcmVudCA9IGFtZGdwdV9ib19yZWYoY3Vyc29yLnBh cmVudC0+YmFzZS5ibyk7DQo+ICsJYW1kZ3B1X3ZtX2JvX3BhcmFtKGFkZXYsIHZtLCBjdXJzb3It PmxldmVsLCAmYnApOw0KPiAgIA0KPiAtCQlhbWRncHVfdm1fYm9fYmFzZV9pbml0KCZlbnRyeS0+ YmFzZSwgdm0sIHB0KTsNCj4gKwlyID0gYW1kZ3B1X2JvX2NyZWF0ZShhZGV2LCAmYnAsICZwdCk7 DQo+ICsJaWYgKHIpDQo+ICsJCXJldHVybiByOw0KPiAgIA0KPiAtCQlyID0gYW1kZ3B1X3ZtX2Ns ZWFyX2JvKGFkZXYsIHZtLCBwdCk7DQo+ICsJaWYgKHZtLT51c2VfY3B1X2Zvcl91cGRhdGUpIHsN Cj4gKwkJciA9IGFtZGdwdV9ib19rbWFwKHB0LCBOVUxMKTsNCj4gICAJCWlmIChyKQ0KPiAgIAkJ CWdvdG8gZXJyb3JfZnJlZV9wdDsNCj4gICAJfQ0KPiAgIA0KPiArCS8qIEtlZXAgYSByZWZlcmVu Y2UgdG8gdGhlIHJvb3QgZGlyZWN0b3J5IHRvIGF2b2lkDQo+ICsJICogZnJlZWluZyB0aGVtIHVw IGluIHRoZSB3cm9uZyBvcmRlci4NCj4gKwkgKi8NCj4gKwlwdC0+cGFyZW50ID0gYW1kZ3B1X2Jv X3JlZihjdXJzb3ItPnBhcmVudC0+YmFzZS5ibyk7DQo+ICsJYW1kZ3B1X3ZtX2JvX2Jhc2VfaW5p dCgmZW50cnktPmJhc2UsIHZtLCBwdCk7DQo+ICsNCj4gKwlyID0gYW1kZ3B1X3ZtX2NsZWFyX2Jv KGFkZXYsIHZtLCBwdCk7DQo+ICsJaWYgKHIpDQo+ICsJCWdvdG8gZXJyb3JfZnJlZV9wdDsNCj4g Kw0KPiAgIAlyZXR1cm4gMDsNCj4gICANCj4gICBlcnJvcl9mcmVlX3B0Og0KPiBAQCAtMTY1NSw2 ICsxNTkxLDcgQEAgc3RhdGljIGludCBhbWRncHVfdm1fdXBkYXRlX3B0ZXMoc3RydWN0IGFtZGdw dV9wdGVfdXBkYXRlX3BhcmFtcyAqcGFyYW1zLA0KPiAgIAlzdHJ1Y3QgYW1kZ3B1X3ZtX3B0X2N1 cnNvciBjdXJzb3I7DQo+ICAgCXVpbnQ2NF90IGZyYWdfc3RhcnQgPSBzdGFydCwgZnJhZ19lbmQ7 DQo+ICAgCXVuc2lnbmVkIGludCBmcmFnOw0KPiArCWludCByOw0KPiAgIA0KPiAgIAkvKiBmaWd1 cmUgb3V0IHRoZSBpbml0aWFsIGZyYWdtZW50ICovDQo+ICAgCWFtZGdwdV92bV9mcmFnbWVudChw YXJhbXMsIGZyYWdfc3RhcnQsIGVuZCwgZmxhZ3MsICZmcmFnLCAmZnJhZ19lbmQpOw0KPiBAQCAt MTY2MiwxMiArMTU5OSwxNSBAQCBzdGF0aWMgaW50IGFtZGdwdV92bV91cGRhdGVfcHRlcyhzdHJ1 Y3QgYW1kZ3B1X3B0ZV91cGRhdGVfcGFyYW1zICpwYXJhbXMsDQo+ICAgCS8qIHdhbGsgb3ZlciB0 aGUgYWRkcmVzcyBzcGFjZSBhbmQgdXBkYXRlIHRoZSBQVHMgKi8NCj4gICAJYW1kZ3B1X3ZtX3B0 X3N0YXJ0KGFkZXYsIHBhcmFtcy0+dm0sIHN0YXJ0LCAmY3Vyc29yKTsNCj4gICAJd2hpbGUgKGN1 cnNvci5wZm4gPCBlbmQpIHsNCj4gLQkJc3RydWN0IGFtZGdwdV9ibyAqcHQgPSBjdXJzb3IuZW50 cnktPmJhc2UuYm87DQo+ICAgCQl1bnNpZ25lZCBzaGlmdCwgcGFyZW50X3NoaWZ0LCBtYXNrOw0K PiAgIAkJdWludDY0X3QgaW5jciwgZW50cnlfZW5kLCBwZV9zdGFydDsNCj4gKwkJc3RydWN0IGFt ZGdwdV9ibyAqcHQ7DQo+ICAgDQo+IC0JCWlmICghcHQpDQo+IC0JCQlyZXR1cm4gLUVOT0VOVDsN Cj4gKwkJciA9IGFtZGdwdV92bV9hbGxvY19wdHMocGFyYW1zLT5hZGV2LCBwYXJhbXMtPnZtLCAm Y3Vyc29yKTsNCj4gKwkJaWYgKHIpDQo+ICsJCQlyZXR1cm4gcjsNCj4gKw0KPiArCQlwdCA9IGN1 cnNvci5lbnRyeS0+YmFzZS5ibzsNCj4gICANCj4gICAJCS8qIFRoZSByb290IGxldmVsIGNhbid0 IGJlIGEgaHVnZSBwYWdlICovDQo+ICAgCQlpZiAoY3Vyc29yLmxldmVsID09IGFkZXYtPnZtX21h bmFnZXIucm9vdF9sZXZlbCkgew0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X3ZtLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0u aA0KPiBpbmRleCA4MWZmODE3N2YwOTIuLjExNjYwNWMwMzhkMiAxMDA2NDQNCj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmgNCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmgNCj4gQEAgLTMwMyw5ICszMDMsNiBAQCBib29sIGFt ZGdwdV92bV9yZWFkeShzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSk7DQo+ICAgaW50IGFtZGdwdV92bV92 YWxpZGF0ZV9wdF9ib3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVf dm0gKnZtLA0KPiAgIAkJCSAgICAgIGludCAoKmNhbGxiYWNrKSh2b2lkICpwLCBzdHJ1Y3QgYW1k Z3B1X2JvICpibyksDQo+ICAgCQkJICAgICAgdm9pZCAqcGFyYW0pOw0KPiAtaW50IGFtZGdwdV92 bV9hbGxvY19wdHMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+IC0JCQlzdHJ1Y3QgYW1k Z3B1X3ZtICp2bSwNCj4gLQkJCXVpbnQ2NF90IHNhZGRyLCB1aW50NjRfdCBzaXplKTsNCj4gICBp bnQgYW1kZ3B1X3ZtX2ZsdXNoKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgc3RydWN0IGFtZGdw dV9qb2IgKmpvYiwgYm9vbCBuZWVkX3BpcGVfc3luYyk7DQo+ICAgaW50IGFtZGdwdV92bV91cGRh dGVfZGlyZWN0b3JpZXMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+ICAgCQkJCSBzdHJ1 Y3QgYW1kZ3B1X3ZtICp2bSk7DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1n ZngK