From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 6/8] drm/amdgpu: allocate VM PDs/PTs on demand Date: Tue, 5 Feb 2019 12:40:37 +0100 Message-ID: <83295662-72e6-ec6c-9ac7-ce0b2137553e@gmail.com> References: <20190204124256.1765-1-christian.koenig@amd.com> <20190204124256.1765-6-christian.koenig@amd.com> <976d2bd1-34b9-405f-06a8-5dbc8c481699@amd.com> Reply-To: christian.koenig-5C7GfCeVMHo@public.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <976d2bd1-34b9-405f-06a8-5dbc8c481699-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US 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: "Kuehling, Felix" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" QW0gMDUuMDIuMTkgdW0gMDE6MzMgc2NocmllYiBLdWVobGluZywgRmVsaXg6Cj4gT24gMjAxOS0w Mi0wNCAzOjE3IHAubS4sIEt1ZWhsaW5nLCBGZWxpeCB3cm90ZToKPj4gVGhpcyBtYXkgY2F1c2Ug cmVncmVzc2lvbnMgaW4gS0ZEIGlmIFBUIEJPIGFsbG9jYXRpb24gY2FuIHRyaWdnZXIKPj4gZXZp Y3Rpb24gZmVuY2VzLiBUaGUgcHJldmlvdXMgY2FsbCB0byBhbWRncHVfdm1fYWxsb2NfcHRzIHdh cyBpbiBhCj4+IGNvbnRleHQgd2hlcmUgd2UgaGFkIHRlbXBvcmFyaWx5IHJlbW92ZWQgdGhlIGV2 aWN0aW9uIGZlbmNlLiBQVCBCTwo+PiBhbGxvY2F0aW9uIGluIGFtZGdwdV92bV9ib191cGRhdGUg aXMgbm90IHByb3RlY3RlZCBsaWtlIHRoYXQuCj4+Cj4+IEkgdmFndWVseSByZW1lbWJlciBsb29r aW5nIGludG8gdGhpcyBsYXN0IHRpbWUgeW91IHdlcmUgd29ya2luZyBvbiBvdXIKPj4gZXZpY3Rp b24gZmVuY2UgY29kZSBhbmQgdGhpbmtpbmcgdGhhdCBtb3N0IG9mIHRoZSBjYXNlcyB3aGVyZSB3 ZSByZW1vdmUKPj4gdGhlIGV2aWN0aW9uIGZlbmNlIHdlcmUgbm8gbG9uZ2VyIG5lZWRlZCBpZiBm ZW5jZSBzeW5jaHJvbml6YXRpb24KPj4gaGFwcGVucyB0aHJvdWdoIHRoZSBhbWRncHVfc3luYy1v YmplY3QgQVBJIChyYXRoZXIgdGhhbiB3YWl0aW5nIG9uIGEKPj4gcmVzZXJ2YXRpb24gb2JqZWN0 IGRpcmVjdGx5KS4gSSB0aGluayBpdCdzIHRpbWUgSSBnbyBhbmQgZmluYWxseSBjbGVhbgo+PiB0 aGF0IHVwLgo+IEknbSBsb29raW5nIGF0IHRoaXMgbm93LiBJdCdzIG5vdCB3b3JraW5nIGFzIEkg d2FzIGhvcGluZy4KPgo+Cj4+IERvIHlvdSBrbm93IHdoZXRoZXIgUFQgQk8gYWxsb2NhdGlvbiB3 b3VsZCB3YWl0IG9uIHRoZSBwYWdlLWRpcmVjdG9yeQo+PiByZXNlcnZhdGlvbiBvYmplY3Qgd2l0 aG91dCB0aGUgc3luYy1vYmplY3QgQVBJIGFueXdoZXJlPwo+IEl0IGRvZXNuJ3QgZXZlbiBtYXR0 ZXIuIEJ1ZmZlciBtb3ZlcyAoYW55dGhpbmcgY2FsbGluZyBhbWRncHVfc3luY19yZXN2Cj4gd2l0 aCBBTURHUFVfRkVOQ0VfT1dORVJfVU5ERUZJTkVEKSBhcmUgc3VwcG9zZWQgdG8gdHJpZ2dlciBl dmljdGlvbgo+IGZlbmNlcy4gU28gcGFnZSB0YWJsZSBCTyBhbGxvY2F0aW9uIHRyaWdnZXJzIGV2 aWN0aW9uIGZlbmNlcyBvbiB0aGUgUEQKPiByZXNlcnZhdGlvbi4gSSBkb24ndCBrbm93IGhvdyB0 byBhdm9pZCB0aGlzIG90aGVyIHRoYW4gYnkgcmVtb3ZpbmcgdGhlCj4gZXZpY3Rpb24gZmVuY2Ug d2hpbGUgYWxsb2NhdGluZyBQVCBCT3MuIFdpdGggeW91ciBjaGFuZ2VzIHRoaXMgd2lsbCBiZQo+ IHBvdGVudGlhbGx5IGV2ZXJ5IHRpbWUgd2UgbWFwIG9yIHVubWFwIG1lbW9yeS4KPgo+IEFueSBi ZXR0ZXIgaWRlYXM/CgpMZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIHdoYXQgZXhhY3RseSBpcyBo YXBwZW5pbmcgaGVyZS4KClJlZ2FyZHMsCkNocmlzdGlhbi4KCj4KPiBSZWdhcmRzLAo+ICAgwqAg RmVsaXgKPgo+Cj4+IFJlZ2FyZHMsCj4+ICAgIMKgIEZlbGl4Cj4+Cj4+IE9uIDIwMTktMDItMDQg Nzo0MiBhLm0uLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+Pj4gTGV0J3Mgc3RhcnQgdG8gYWxs b2NhdGUgVk0gUERzL1BUcyBvbiBkZW1hbmQgaW5zdGVhZCBvZiBwcmUtYWxsb2NhdGluZwo+Pj4g dGhlbSBkdXJpbmcgbWFwcGluZy4KPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gS8O2 bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Cj4+PiAtLS0KPj4+ICAgICAuLi4vZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYyAgfCAgIDYgLQo+Pj4gICAgIGRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jc2EuYyAgICAgICB8ICAgOSAtLQo+Pj4gICAg IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYyAgICAgICB8ICAxMCAtLQo+ Pj4gICAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jICAgICAgICB8IDEz NiArKysrKy0tLS0tLS0tLS0tLS0KPj4+ICAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfdm0uaCAgICAgICAgfCAgIDMgLQo+Pj4gICAgIDUgZmlsZXMgY2hhbmdlZCwgMzggaW5z ZXJ0aW9ucygrKSwgMTI2IGRlbGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMKPj4+IGluZGV4IGQ3YjEwZDc5ZjFk ZS4uMjE3NmM5MmY5Mzc3IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfYW1ka2ZkX2dwdXZtLmMKPj4+IEBAIC00OTIsMTIgKzQ5Miw2IEBAIHN0YXRp YyBpbnQgYWRkX2JvX3RvX3ZtKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3Qga2dk X21lbSAqbWVtLAo+Pj4gICAgIAkJCQkJdm0tPnByb2Nlc3NfaW5mby0+ZXZpY3Rpb25fZmVuY2Us Cj4+PiAgICAgCQkJCQlOVUxMLCBOVUxMKTsKPj4+ICAgICAKPj4+IC0JcmV0ID0gYW1kZ3B1X3Zt X2FsbG9jX3B0cyhhZGV2LCB2bSwgdmEsIGFtZGdwdV9ib19zaXplKGJvKSk7Cj4+PiAtCWlmIChy ZXQpIHsKPj4+IC0JCXByX2VycigiRmFpbGVkIHRvIGFsbG9jYXRlIHB0cywgZXJyPSVkXG4iLCBy ZXQpOwo+Pj4gLQkJZ290byBlcnJfYWxsb2NfcHRzOwo+Pj4gLQl9Cj4+PiAtCj4+PiAgICAgCXJl dCA9IHZtX3ZhbGlkYXRlX3B0X3BkX2Jvcyh2bSk7Cj4+PiAgICAgCWlmIChyZXQpIHsKPj4+ICAg ICAJCXByX2VycigidmFsaWRhdGVfcHRfcGRfYm9zKCkgZmFpbGVkXG4iKTsKPj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3NhLmMgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3NhLmMKPj4+IGluZGV4IDdlMjJiZTdjYTY4YS4uNTRk ZDAyYTg5OGI5IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2NzYS5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3Nh LmMKPj4+IEBAIC05MiwxNSArOTIsNiBAQCBpbnQgYW1kZ3B1X21hcF9zdGF0aWNfY3NhKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwKPj4+ICAgICAJCXJl dHVybiAtRU5PTUVNOwo+Pj4gICAgIAl9Cj4+PiAgICAgCj4+PiAtCXIgPSBhbWRncHVfdm1fYWxs b2NfcHRzKGFkZXYsICgqYm9fdmEpLT5iYXNlLnZtLCBjc2FfYWRkciwKPj4+IC0JCQkJc2l6ZSk7 Cj4+PiAtCWlmIChyKSB7Cj4+PiAtCQlEUk1fRVJST1IoImZhaWxlZCB0byBhbGxvY2F0ZSBwdHMg Zm9yIHN0YXRpYyBDU0EsIGVycj0lZFxuIiwgcik7Cj4+PiAtCQlhbWRncHVfdm1fYm9fcm12KGFk ZXYsICpib192YSk7Cj4+PiAtCQl0dG1fZXVfYmFja29mZl9yZXNlcnZhdGlvbigmdGlja2V0LCAm bGlzdCk7Cj4+PiAtCQlyZXR1cm4gcjsKPj4+IC0JfQo+Pj4gLQo+Pj4gICAgIAlyID0gYW1kZ3B1 X3ZtX2JvX21hcChhZGV2LCAqYm9fdmEsIGNzYV9hZGRyLCAwLCBzaXplLAo+Pj4gICAgIAkJCSAg ICAgQU1ER1BVX1BURV9SRUFEQUJMRSB8IEFNREdQVV9QVEVfV1JJVEVBQkxFIHwKPj4+ICAgICAJ CQkgICAgIEFNREdQVV9QVEVfRVhFQ1VUQUJMRSk7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2dlbS5jCj4+PiBpbmRleCBkMjFkZDJmMzY5ZGEuLmUxNDFlM2IxMzExMiAxMDA2 NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYwo+Pj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jCj4+PiBAQCAtNjI3 LDExICs2MjcsNiBAQCBpbnQgYW1kZ3B1X2dlbV92YV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLAo+Pj4gICAgIAo+Pj4gICAgIAlzd2l0Y2ggKGFyZ3MtPm9wZXJhdGlv bikgewo+Pj4gICAgIAljYXNlIEFNREdQVV9WQV9PUF9NQVA6Cj4+PiAtCQlyID0gYW1kZ3B1X3Zt X2FsbG9jX3B0cyhhZGV2LCBib192YS0+YmFzZS52bSwgYXJncy0+dmFfYWRkcmVzcywKPj4+IC0J CQkJCWFyZ3MtPm1hcF9zaXplKTsKPj4+IC0JCWlmIChyKQo+Pj4gLQkJCWdvdG8gZXJyb3JfYmFj a29mZjsKPj4+IC0KPj4+ICAgICAJCXZhX2ZsYWdzID0gYW1kZ3B1X2dtY19nZXRfcHRlX2ZsYWdz KGFkZXYsIGFyZ3MtPmZsYWdzKTsKPj4+ICAgICAJCXIgPSBhbWRncHVfdm1fYm9fbWFwKGFkZXYs IGJvX3ZhLCBhcmdzLT52YV9hZGRyZXNzLAo+Pj4gICAgIAkJCQkgICAgIGFyZ3MtPm9mZnNldF9p bl9ibywgYXJncy0+bWFwX3NpemUsCj4+PiBAQCAtNjQ3LDExICs2NDIsNiBAQCBpbnQgYW1kZ3B1 X2dlbV92YV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+Pj4gICAg IAkJCQkJCWFyZ3MtPm1hcF9zaXplKTsKPj4+ICAgICAJCWJyZWFrOwo+Pj4gICAgIAljYXNlIEFN REdQVV9WQV9PUF9SRVBMQUNFOgo+Pj4gLQkJciA9IGFtZGdwdV92bV9hbGxvY19wdHMoYWRldiwg Ym9fdmEtPmJhc2Uudm0sIGFyZ3MtPnZhX2FkZHJlc3MsCj4+PiAtCQkJCQlhcmdzLT5tYXBfc2l6 ZSk7Cj4+PiAtCQlpZiAocikKPj4+IC0JCQlnb3RvIGVycm9yX2JhY2tvZmY7Cj4+PiAtCj4+PiAg ICAgCQl2YV9mbGFncyA9IGFtZGdwdV9nbWNfZ2V0X3B0ZV9mbGFncyhhZGV2LCBhcmdzLT5mbGFn cyk7Cj4+PiAgICAgCQlyID0gYW1kZ3B1X3ZtX2JvX3JlcGxhY2VfbWFwKGFkZXYsIGJvX3ZhLCBh cmdzLT52YV9hZGRyZXNzLAo+Pj4gICAgIAkJCQkJICAgICBhcmdzLT5vZmZzZXRfaW5fYm8sIGFy Z3MtPm1hcF9zaXplLAo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV92bS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPj4+ IGluZGV4IGY3ZDQxMGE1ZDg0OC4uMGI4YTFhYTU2YzRhIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jCj4+PiBAQCAtNTA0LDQ3ICs1MDQsNiBAQCBzdGF0aWMg dm9pZCBhbWRncHVfdm1fcHRfbmV4dChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPj4+ICAg ICAJfQo+Pj4gICAgIH0KPj4+ICAgICAKPj4+IC0vKioKPj4+IC0gKiBhbWRncHVfdm1fcHRfZmly c3RfbGVhZiAtIGdldCBmaXJzdCBsZWFmIFBEL1BUCj4+PiAtICoKPj4+IC0gKiBAYWRldjogYW1k Z3B1X2RldmljZSBwb2ludGVyCj4+PiAtICogQHZtOiBhbWRncHVfdm0gc3RydWN0dXJlCj4+PiAt ICogQHN0YXJ0OiBzdGFydCBhZGRyIG9mIHRoZSB3YWxrCj4+PiAtICogQGN1cnNvcjogc3RhdGUg dG8gaW5pdGlhbGl6ZQo+Pj4gLSAqCj4+PiAtICogU3RhcnQgYSB3YWxrIGFuZCBnbyBkaXJlY3Rs eSB0byB0aGUgbGVhZiBub2RlLgo+Pj4gLSAqLwo+Pj4gLXN0YXRpYyB2b2lkIGFtZGdwdV92bV9w dF9maXJzdF9sZWFmKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+Pj4gLQkJCQkgICAgc3Ry dWN0IGFtZGdwdV92bSAqdm0sIHVpbnQ2NF90IHN0YXJ0LAo+Pj4gLQkJCQkgICAgc3RydWN0IGFt ZGdwdV92bV9wdF9jdXJzb3IgKmN1cnNvcikKPj4+IC17Cj4+PiAtCWFtZGdwdV92bV9wdF9zdGFy dChhZGV2LCB2bSwgc3RhcnQsIGN1cnNvcik7Cj4+PiAtCXdoaWxlIChhbWRncHVfdm1fcHRfZGVz Y2VuZGFudChhZGV2LCBjdXJzb3IpKTsKPj4+IC19Cj4+PiAtCj4+PiAtLyoqCj4+PiAtICogYW1k Z3B1X3ZtX3B0X25leHRfbGVhZiAtIGdldCBuZXh0IGxlYWYgUEQvUFQKPj4+IC0gKgo+Pj4gLSAq IEBhZGV2OiBhbWRncHVfZGV2aWNlIHBvaW50ZXIKPj4+IC0gKiBAY3Vyc29yOiBjdXJyZW50IHN0 YXRlCj4+PiAtICoKPj4+IC0gKiBXYWxrIHRoZSBQRC9QVCB0cmVlIHRvIHRoZSBuZXh0IGxlYWYg bm9kZS4KPj4+IC0gKi8KPj4+IC1zdGF0aWMgdm9pZCBhbWRncHVfdm1fcHRfbmV4dF9sZWFmKHN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+Pj4gLQkJCQkgICBzdHJ1Y3QgYW1kZ3B1X3ZtX3B0 X2N1cnNvciAqY3Vyc29yKQo+Pj4gLXsKPj4+IC0JYW1kZ3B1X3ZtX3B0X25leHQoYWRldiwgY3Vy c29yKTsKPj4+IC0JaWYgKGN1cnNvci0+cGZuICE9IH4wbGwpCj4+PiAtCQl3aGlsZSAoYW1kZ3B1 X3ZtX3B0X2Rlc2NlbmRhbnQoYWRldiwgY3Vyc29yKSk7Cj4+PiAtfQo+Pj4gLQo+Pj4gLS8qKgo+ Pj4gLSAqIGZvcl9lYWNoX2FtZGdwdV92bV9wdF9sZWFmIC0gd2FsayBvdmVyIGFsbCBsZWFmIFBE cy9QVHMgaW4gdGhlIGhpZXJhcmNoeQo+Pj4gLSAqLwo+Pj4gLSNkZWZpbmUgZm9yX2VhY2hfYW1k Z3B1X3ZtX3B0X2xlYWYoYWRldiwgdm0sIHN0YXJ0LCBlbmQsIGN1cnNvcikJCVwKPj4+IC0JZm9y IChhbWRncHVfdm1fcHRfZmlyc3RfbGVhZigoYWRldiksICh2bSksIChzdGFydCksICYoY3Vyc29y KSk7CQlcCj4+PiAtCSAgICAgKGN1cnNvcikucGZuIDw9IGVuZDsgYW1kZ3B1X3ZtX3B0X25leHRf bGVhZigoYWRldiksICYoY3Vyc29yKSkpCj4+PiAtCj4+PiAgICAgLyoqCj4+PiAgICAgICogYW1k Z3B1X3ZtX3B0X2ZpcnN0X2RmcyAtIHN0YXJ0IGEgZGVlcCBmaXJzdCBzZWFyY2gKPj4+ICAgICAg Kgo+Pj4gQEAgLTkxOSw3NCArODc4LDUxIEBAIHN0YXRpYyB2b2lkIGFtZGdwdV92bV9ib19wYXJh bShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgc3RydWN0IGFtZGdwdV92bSAqdm0sCj4+PiAg ICAgICogUmV0dXJuczoKPj4+ICAgICAgKiAwIG9uIHN1Y2Nlc3MsIGVycm5vIG90aGVyd2lzZS4K Pj4+ICAgICAgKi8KPj4+IC1pbnQgYW1kZ3B1X3ZtX2FsbG9jX3B0cyhzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwKPj4+IC0JCQlzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwKPj4+IC0JCQl1aW50NjRf dCBzYWRkciwgdWludDY0X3Qgc2l6ZSkKPj4+ICtzdGF0aWMgaW50IGFtZGdwdV92bV9hbGxvY19w dHMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+PiArCQkJICAgICAgIHN0cnVjdCBhbWRn cHVfdm0gKnZtLAo+Pj4gKwkJCSAgICAgICBzdHJ1Y3QgYW1kZ3B1X3ZtX3B0X2N1cnNvciAqY3Vy c29yKQo+Pj4gICAgIHsKPj4+IC0Jc3RydWN0IGFtZGdwdV92bV9wdF9jdXJzb3IgY3Vyc29yOwo+ Pj4gKwlzdHJ1Y3QgYW1kZ3B1X3ZtX3B0ICplbnRyeSA9IGN1cnNvci0+ZW50cnk7Cj4+PiArCXN0 cnVjdCBhbWRncHVfYm9fcGFyYW0gYnA7Cj4+PiAgICAgCXN0cnVjdCBhbWRncHVfYm8gKnB0Owo+ Pj4gLQl1aW50NjRfdCBlYWRkcjsKPj4+ICAgICAJaW50IHI7Cj4+PiAgICAgCj4+PiAtCS8qIHZh bGlkYXRlIHRoZSBwYXJhbWV0ZXJzICovCj4+PiAtCWlmIChzYWRkciAmIEFNREdQVV9HUFVfUEFH RV9NQVNLIHx8IHNpemUgJiBBTURHUFVfR1BVX1BBR0VfTUFTSykKPj4+IC0JCXJldHVybiAtRUlO VkFMOwo+Pj4gKwlpZiAoY3Vyc29yLT5sZXZlbCA8IEFNREdQVV9WTV9QVEIgJiYgIWVudHJ5LT5l bnRyaWVzKSB7Cj4+PiArCQl1bnNpZ25lZCBudW1fZW50cmllczsKPj4+ICAgICAKPj4+IC0JZWFk ZHIgPSBzYWRkciArIHNpemUgLSAxOwo+Pj4gLQo+Pj4gLQlzYWRkciAvPSBBTURHUFVfR1BVX1BB R0VfU0laRTsKPj4+IC0JZWFkZHIgLz0gQU1ER1BVX0dQVV9QQUdFX1NJWkU7Cj4+PiAtCj4+PiAt CWlmIChlYWRkciA+PSBhZGV2LT52bV9tYW5hZ2VyLm1heF9wZm4pIHsKPj4+IC0JCWRldl9lcnIo YWRldi0+ZGV2LCAidmEgYWJvdmUgbGltaXQgKDB4JTA4bGxYID49IDB4JTA4bGxYKVxuIiwKPj4+ IC0JCQllYWRkciwgYWRldi0+dm1fbWFuYWdlci5tYXhfcGZuKTsKPj4+IC0JCXJldHVybiAtRUlO VkFMOwo+Pj4gKwkJbnVtX2VudHJpZXMgPSBhbWRncHVfdm1fbnVtX2VudHJpZXMoYWRldiwgY3Vy c29yLT5sZXZlbCk7Cj4+PiArCQllbnRyeS0+ZW50cmllcyA9IGt2bWFsbG9jX2FycmF5KG51bV9l bnRyaWVzLAo+Pj4gKwkJCQkJCXNpemVvZigqZW50cnktPmVudHJpZXMpLAo+Pj4gKwkJCQkJCUdG UF9LRVJORUwgfCBfX0dGUF9aRVJPKTsKPj4+ICsJCWlmICghZW50cnktPmVudHJpZXMpCj4+PiAr CQkJcmV0dXJuIC1FTk9NRU07Cj4+PiAgICAgCX0KPj4+ICAgICAKPj4+IC0JZm9yX2VhY2hfYW1k Z3B1X3ZtX3B0X2xlYWYoYWRldiwgdm0sIHNhZGRyLCBlYWRkciwgY3Vyc29yKSB7Cj4+PiAtCQlz dHJ1Y3QgYW1kZ3B1X3ZtX3B0ICplbnRyeSA9IGN1cnNvci5lbnRyeTsKPj4+IC0JCXN0cnVjdCBh bWRncHVfYm9fcGFyYW0gYnA7Cj4+PiAtCj4+PiAtCQlpZiAoY3Vyc29yLmxldmVsIDwgQU1ER1BV X1ZNX1BUQikgewo+Pj4gLQkJCXVuc2lnbmVkIG51bV9lbnRyaWVzOwo+Pj4gLQo+Pj4gLQkJCW51 bV9lbnRyaWVzID0gYW1kZ3B1X3ZtX251bV9lbnRyaWVzKGFkZXYsIGN1cnNvci5sZXZlbCk7Cj4+ PiAtCQkJZW50cnktPmVudHJpZXMgPSBrdm1hbGxvY19hcnJheShudW1fZW50cmllcywKPj4+IC0J CQkJCQkJc2l6ZW9mKCplbnRyeS0+ZW50cmllcyksCj4+PiAtCQkJCQkJCUdGUF9LRVJORUwgfAo+ Pj4gLQkJCQkJCQlfX0dGUF9aRVJPKTsKPj4+IC0JCQlpZiAoIWVudHJ5LT5lbnRyaWVzKQo+Pj4g LQkJCQlyZXR1cm4gLUVOT01FTTsKPj4+IC0JCX0KPj4+IC0KPj4+IC0KPj4+IC0JCWlmIChlbnRy eS0+YmFzZS5ibykKPj4+IC0JCQljb250aW51ZTsKPj4+IC0KPj4+IC0JCWFtZGdwdV92bV9ib19w YXJhbShhZGV2LCB2bSwgY3Vyc29yLmxldmVsLCAmYnApOwo+Pj4gLQo+Pj4gLQkJciA9IGFtZGdw dV9ib19jcmVhdGUoYWRldiwgJmJwLCAmcHQpOwo+Pj4gLQkJaWYgKHIpCj4+PiAtCQkJcmV0dXJu IHI7Cj4+PiAtCj4+PiAtCQlpZiAodm0tPnVzZV9jcHVfZm9yX3VwZGF0ZSkgewo+Pj4gLQkJCXIg PSBhbWRncHVfYm9fa21hcChwdCwgTlVMTCk7Cj4+PiAtCQkJaWYgKHIpCj4+PiAtCQkJCWdvdG8g ZXJyb3JfZnJlZV9wdDsKPj4+IC0JCX0KPj4+ICsJaWYgKGVudHJ5LT5iYXNlLmJvKQo+Pj4gKwkJ cmV0dXJuIDA7Cj4+PiAgICAgCj4+PiAtCQkvKiBLZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSByb290 IGRpcmVjdG9yeSB0byBhdm9pZAo+Pj4gLQkJKiBmcmVlaW5nIHRoZW0gdXAgaW4gdGhlIHdyb25n IG9yZGVyLgo+Pj4gLQkJKi8KPj4+IC0JCXB0LT5wYXJlbnQgPSBhbWRncHVfYm9fcmVmKGN1cnNv ci5wYXJlbnQtPmJhc2UuYm8pOwo+Pj4gKwlhbWRncHVfdm1fYm9fcGFyYW0oYWRldiwgdm0sIGN1 cnNvci0+bGV2ZWwsICZicCk7Cj4+PiAgICAgCj4+PiAtCQlhbWRncHVfdm1fYm9fYmFzZV9pbml0 KCZlbnRyeS0+YmFzZSwgdm0sIHB0KTsKPj4+ICsJciA9IGFtZGdwdV9ib19jcmVhdGUoYWRldiwg JmJwLCAmcHQpOwo+Pj4gKwlpZiAocikKPj4+ICsJCXJldHVybiByOwo+Pj4gICAgIAo+Pj4gLQkJ ciA9IGFtZGdwdV92bV9jbGVhcl9ibyhhZGV2LCB2bSwgcHQpOwo+Pj4gKwlpZiAodm0tPnVzZV9j cHVfZm9yX3VwZGF0ZSkgewo+Pj4gKwkJciA9IGFtZGdwdV9ib19rbWFwKHB0LCBOVUxMKTsKPj4+ ICAgICAJCWlmIChyKQo+Pj4gICAgIAkJCWdvdG8gZXJyb3JfZnJlZV9wdDsKPj4+ICAgICAJfQo+ Pj4gICAgIAo+Pj4gKwkvKiBLZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSByb290IGRpcmVjdG9yeSB0 byBhdm9pZAo+Pj4gKwkgKiBmcmVlaW5nIHRoZW0gdXAgaW4gdGhlIHdyb25nIG9yZGVyLgo+Pj4g KwkgKi8KPj4+ICsJcHQtPnBhcmVudCA9IGFtZGdwdV9ib19yZWYoY3Vyc29yLT5wYXJlbnQtPmJh c2UuYm8pOwo+Pj4gKwlhbWRncHVfdm1fYm9fYmFzZV9pbml0KCZlbnRyeS0+YmFzZSwgdm0sIHB0 KTsKPj4+ICsKPj4+ICsJciA9IGFtZGdwdV92bV9jbGVhcl9ibyhhZGV2LCB2bSwgcHQpOwo+Pj4g KwlpZiAocikKPj4+ICsJCWdvdG8gZXJyb3JfZnJlZV9wdDsKPj4+ICsKPj4+ICAgICAJcmV0dXJu IDA7Cj4+PiAgICAgCj4+PiAgICAgZXJyb3JfZnJlZV9wdDoKPj4+IEBAIC0xNjU1LDYgKzE1OTEs NyBAQCBzdGF0aWMgaW50IGFtZGdwdV92bV91cGRhdGVfcHRlcyhzdHJ1Y3QgYW1kZ3B1X3B0ZV91 cGRhdGVfcGFyYW1zICpwYXJhbXMsCj4+PiAgICAgCXN0cnVjdCBhbWRncHVfdm1fcHRfY3Vyc29y IGN1cnNvcjsKPj4+ICAgICAJdWludDY0X3QgZnJhZ19zdGFydCA9IHN0YXJ0LCBmcmFnX2VuZDsK Pj4+ICAgICAJdW5zaWduZWQgaW50IGZyYWc7Cj4+PiArCWludCByOwo+Pj4gICAgIAo+Pj4gICAg IAkvKiBmaWd1cmUgb3V0IHRoZSBpbml0aWFsIGZyYWdtZW50ICovCj4+PiAgICAgCWFtZGdwdV92 bV9mcmFnbWVudChwYXJhbXMsIGZyYWdfc3RhcnQsIGVuZCwgZmxhZ3MsICZmcmFnLCAmZnJhZ19l bmQpOwo+Pj4gQEAgLTE2NjIsMTIgKzE1OTksMTUgQEAgc3RhdGljIGludCBhbWRncHVfdm1fdXBk YXRlX3B0ZXMoc3RydWN0IGFtZGdwdV9wdGVfdXBkYXRlX3BhcmFtcyAqcGFyYW1zLAo+Pj4gICAg IAkvKiB3YWxrIG92ZXIgdGhlIGFkZHJlc3Mgc3BhY2UgYW5kIHVwZGF0ZSB0aGUgUFRzICovCj4+ PiAgICAgCWFtZGdwdV92bV9wdF9zdGFydChhZGV2LCBwYXJhbXMtPnZtLCBzdGFydCwgJmN1cnNv cik7Cj4+PiAgICAgCXdoaWxlIChjdXJzb3IucGZuIDwgZW5kKSB7Cj4+PiAtCQlzdHJ1Y3QgYW1k Z3B1X2JvICpwdCA9IGN1cnNvci5lbnRyeS0+YmFzZS5ibzsKPj4+ICAgICAJCXVuc2lnbmVkIHNo aWZ0LCBwYXJlbnRfc2hpZnQsIG1hc2s7Cj4+PiAgICAgCQl1aW50NjRfdCBpbmNyLCBlbnRyeV9l bmQsIHBlX3N0YXJ0Owo+Pj4gKwkJc3RydWN0IGFtZGdwdV9ibyAqcHQ7Cj4+PiAgICAgCj4+PiAt CQlpZiAoIXB0KQo+Pj4gLQkJCXJldHVybiAtRU5PRU5UOwo+Pj4gKwkJciA9IGFtZGdwdV92bV9h bGxvY19wdHMocGFyYW1zLT5hZGV2LCBwYXJhbXMtPnZtLCAmY3Vyc29yKTsKPj4+ICsJCWlmIChy KQo+Pj4gKwkJCXJldHVybiByOwo+Pj4gKwo+Pj4gKwkJcHQgPSBjdXJzb3IuZW50cnktPmJhc2Uu Ym87Cj4+PiAgICAgCj4+PiAgICAgCQkvKiBUaGUgcm9vdCBsZXZlbCBjYW4ndCBiZSBhIGh1Z2Ug cGFnZSAqLwo+Pj4gICAgIAkJaWYgKGN1cnNvci5sZXZlbCA9PSBhZGV2LT52bV9tYW5hZ2VyLnJv b3RfbGV2ZWwpIHsKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfdm0uaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5oCj4+PiBp bmRleCA4MWZmODE3N2YwOTIuLjExNjYwNWMwMzhkMiAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5oCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfdm0uaAo+Pj4gQEAgLTMwMyw5ICszMDMsNiBAQCBib29sIGFtZGdw dV92bV9yZWFkeShzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSk7Cj4+PiAgICAgaW50IGFtZGdwdV92bV92 YWxpZGF0ZV9wdF9ib3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVf dm0gKnZtLAo+Pj4gICAgIAkJCSAgICAgIGludCAoKmNhbGxiYWNrKSh2b2lkICpwLCBzdHJ1Y3Qg YW1kZ3B1X2JvICpibyksCj4+PiAgICAgCQkJICAgICAgdm9pZCAqcGFyYW0pOwo+Pj4gLWludCBh bWRncHVfdm1fYWxsb2NfcHRzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+Pj4gLQkJCXN0 cnVjdCBhbWRncHVfdm0gKnZtLAo+Pj4gLQkJCXVpbnQ2NF90IHNhZGRyLCB1aW50NjRfdCBzaXpl KTsKPj4+ICAgICBpbnQgYW1kZ3B1X3ZtX2ZsdXNoKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywg c3RydWN0IGFtZGdwdV9qb2IgKmpvYiwgYm9vbCBuZWVkX3BpcGVfc3luYyk7Cj4+PiAgICAgaW50 IGFtZGdwdV92bV91cGRhdGVfZGlyZWN0b3JpZXMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs Cj4+PiAgICAgCQkJCSBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSk7Cj4+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+IGFtZC1nZnggbWFpbGluZyBsaXN0Cj4+ IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9hbWQtZ2Z4Cg==