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:37:15 +0100 Message-ID: References: <20190204124256.1765-1-christian.koenig@amd.com> <20190204124256.1765-6-christian.koenig@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: 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" PiBUaGlzIG1heSBjYXVzZSByZWdyZXNzaW9ucyBpbiBLRkQgaWYgUFQgQk8gYWxsb2NhdGlvbiBj YW4gdHJpZ2dlcgo+IGV2aWN0aW9uIGZlbmNlcy4KSSBkb24ndCB0aGluayB0aGF0IGNhbiBoYXBw ZW4sIGJ1dCBuZWVkIHRvIGRvdWJsZSBjaGVjayBhcyB3ZWxsLgoKT3RoZXJ3aXNlIGFsbG9jYXRp bmcgcGFnZSB0YWJsZXMgY291bGQgdHJ5IHRvIGV2aWN0IG90aGVyIHBhZ2UgdGFibGVzIApmcm9t IHRoZSBzYW1lIHByb2Nlc3MgYW5kIHRoYXQgc2VyaW91c2x5IGRvZXNuJ3QgbWFrZSBtdWNoIHNl bnNlLgoKPiBEbyB5b3Uga25vdyB3aGV0aGVyIFBUIEJPIGFsbG9jYXRpb24gd291bGQgd2FpdCBv biB0aGUgcGFnZS1kaXJlY3RvcnkKPiByZXNlcnZhdGlvbiBvYmplY3Qgd2l0aG91dCB0aGUgc3lu Yy1vYmplY3QgQVBJIGFueXdoZXJlPwpGb3IgaW5zaWRlIHRoZSBrZXJuZWwgSSBjYW4ndCB0aGlu ayBvZiBhbnkgcmVsZXZhbnQgdXNlIGNhc2UsIGV4Y2VwdCBmb3IgCnRoZSBldmljdGlvbiBjYWxs IHBhdGggYW5kIHRoZXJlIGl0IGlzIGludGVudGlvbmFsLgoKT25lIHRoaW5nIHdoaWNoIHdpbGwg YWx3YXlzIHdhaXQgZm9yIGFsbCBmZW5jZXMgaXMgdGhlIGRpc3BsYXkgY29kZSAKcGF0aCwgYnV0 IHRoYXQgaXMgbm90IHJlbGV2YW50IGhlcmUuIChJc24ndCBpdD8pLgoKV2hhdCBtaWdodCBiZSBx dWVzdGlvbmFibGUgaXMgYW1kZ3B1X2dlbV93YWl0X2lkbGVfaW9jdGwoKSwgYnV0IEkgdGhpbmsg CnRoaXMgaXMgYWxzbyBjb21wbGV0ZWx5IGludGVudGlvbmFsIHRoYXQgd2Ugd2FpdCBvbiBldmVy eXRoaW5nIGhlcmUuCgpSZWdhcmRzLApDaHJpc3RpYW4uCgpBbSAwNC4wMi4xOSB1bSAyMToxNyBz Y2hyaWViIEt1ZWhsaW5nLCBGZWxpeDoKPiBUaGlzIG1heSBjYXVzZSByZWdyZXNzaW9ucyBpbiBL RkQgaWYgUFQgQk8gYWxsb2NhdGlvbiBjYW4gdHJpZ2dlcgo+IGV2aWN0aW9uIGZlbmNlcy4gVGhl IHByZXZpb3VzIGNhbGwgdG8gYW1kZ3B1X3ZtX2FsbG9jX3B0cyB3YXMgaW4gYQo+IGNvbnRleHQg d2hlcmUgd2UgaGFkIHRlbXBvcmFyaWx5IHJlbW92ZWQgdGhlIGV2aWN0aW9uIGZlbmNlLiBQVCBC Two+IGFsbG9jYXRpb24gaW4gYW1kZ3B1X3ZtX2JvX3VwZGF0ZSBpcyBub3QgcHJvdGVjdGVkIGxp a2UgdGhhdC4KPgo+IEkgdmFndWVseSByZW1lbWJlciBsb29raW5nIGludG8gdGhpcyBsYXN0IHRp bWUgeW91IHdlcmUgd29ya2luZyBvbiBvdXIKPiBldmljdGlvbiBmZW5jZSBjb2RlIGFuZCB0aGlu a2luZyB0aGF0IG1vc3Qgb2YgdGhlIGNhc2VzIHdoZXJlIHdlIHJlbW92ZQo+IHRoZSBldmljdGlv biBmZW5jZSB3ZXJlIG5vIGxvbmdlciBuZWVkZWQgaWYgZmVuY2Ugc3luY2hyb25pemF0aW9uCj4g aGFwcGVucyB0aHJvdWdoIHRoZSBhbWRncHVfc3luYy1vYmplY3QgQVBJIChyYXRoZXIgdGhhbiB3 YWl0aW5nIG9uIGEKPiByZXNlcnZhdGlvbiBvYmplY3QgZGlyZWN0bHkpLiBJIHRoaW5rIGl0J3Mg dGltZSBJIGdvIGFuZCBmaW5hbGx5IGNsZWFuCj4gdGhhdCB1cC4KPgo+IERvIHlvdSBrbm93IHdo ZXRoZXIgUFQgQk8gYWxsb2NhdGlvbiB3b3VsZCB3YWl0IG9uIHRoZSBwYWdlLWRpcmVjdG9yeQo+ IHJlc2VydmF0aW9uIG9iamVjdCB3aXRob3V0IHRoZSBzeW5jLW9iamVjdCBBUEkgYW55d2hlcmU/ Cj4KPiBSZWdhcmRzLAo+ICAgwqAgRmVsaXgKPgo+IE9uIDIwMTktMDItMDQgNzo0MiBhLm0uLCBD aHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+PiBMZXQncyBzdGFydCB0byBhbGxvY2F0ZSBWTSBQRHMv UFRzIG9uIGRlbWFuZCBpbnN0ZWFkIG9mIHByZS1hbGxvY2F0aW5nCj4+IHRoZW0gZHVyaW5nIG1h cHBpbmcuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5r b2VuaWdAYW1kLmNvbT4KPj4gLS0tCj4+ICAgIC4uLi9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2FtZGtmZF9ncHV2bS5jICB8ICAgNiAtCj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9jc2EuYyAgICAgICB8ICAgOSAtLQo+PiAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfZ2VtLmMgICAgICAgfCAgMTAgLS0KPj4gICAgZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3ZtLmMgICAgICAgIHwgMTM2ICsrKysrLS0tLS0tLS0tLS0tLQo+PiAg ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uaCAgICAgICAgfCAgIDMgLQo+ PiAgICA1IGZpbGVzIGNoYW5nZWQsIDM4IGluc2VydGlvbnMoKyksIDEyNiBkZWxldGlvbnMoLSkK Pj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRr ZmRfZ3B1dm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1 dm0uYwo+PiBpbmRleCBkN2IxMGQ3OWYxZGUuLjIxNzZjOTJmOTM3NyAxMDA2NDQKPj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9ncHV2bS5jCj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ3B1dm0uYwo+PiBAQCAt NDkyLDEyICs0OTIsNiBAQCBzdGF0aWMgaW50IGFkZF9ib190b192bShzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwgc3RydWN0IGtnZF9tZW0gKm1lbSwKPj4gICAgCQkJCQl2bS0+cHJvY2Vzc19p bmZvLT5ldmljdGlvbl9mZW5jZSwKPj4gICAgCQkJCQlOVUxMLCBOVUxMKTsKPj4gICAgCj4+IC0J cmV0ID0gYW1kZ3B1X3ZtX2FsbG9jX3B0cyhhZGV2LCB2bSwgdmEsIGFtZGdwdV9ib19zaXplKGJv KSk7Cj4+IC0JaWYgKHJldCkgewo+PiAtCQlwcl9lcnIoIkZhaWxlZCB0byBhbGxvY2F0ZSBwdHMs IGVycj0lZFxuIiwgcmV0KTsKPj4gLQkJZ290byBlcnJfYWxsb2NfcHRzOwo+PiAtCX0KPj4gLQo+ PiAgICAJcmV0ID0gdm1fdmFsaWRhdGVfcHRfcGRfYm9zKHZtKTsKPj4gICAgCWlmIChyZXQpIHsK Pj4gICAgCQlwcl9lcnIoInZhbGlkYXRlX3B0X3BkX2JvcygpIGZhaWxlZFxuIik7Cj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3NhLmMgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3NhLmMKPj4gaW5kZXggN2UyMmJlN2NhNjhhLi41 NGRkMDJhODk4YjkgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9jc2EuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3Nh LmMKPj4gQEAgLTkyLDE1ICs5Miw2IEBAIGludCBhbWRncHVfbWFwX3N0YXRpY19jc2Eoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfdm0gKnZtLAo+PiAgICAJCXJldHVy biAtRU5PTUVNOwo+PiAgICAJfQo+PiAgICAKPj4gLQlyID0gYW1kZ3B1X3ZtX2FsbG9jX3B0cyhh ZGV2LCAoKmJvX3ZhKS0+YmFzZS52bSwgY3NhX2FkZHIsCj4+IC0JCQkJc2l6ZSk7Cj4+IC0JaWYg KHIpIHsKPj4gLQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gYWxsb2NhdGUgcHRzIGZvciBzdGF0aWMg Q1NBLCBlcnI9JWRcbiIsIHIpOwo+PiAtCQlhbWRncHVfdm1fYm9fcm12KGFkZXYsICpib192YSk7 Cj4+IC0JCXR0bV9ldV9iYWNrb2ZmX3Jlc2VydmF0aW9uKCZ0aWNrZXQsICZsaXN0KTsKPj4gLQkJ cmV0dXJuIHI7Cj4+IC0JfQo+PiAtCj4+ICAgIAlyID0gYW1kZ3B1X3ZtX2JvX21hcChhZGV2LCAq Ym9fdmEsIGNzYV9hZGRyLCAwLCBzaXplLAo+PiAgICAJCQkgICAgIEFNREdQVV9QVEVfUkVBREFC TEUgfCBBTURHUFVfUFRFX1dSSVRFQUJMRSB8Cj4+ICAgIAkJCSAgICAgQU1ER1BVX1BURV9FWEVD VVRBQkxFKTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYwo+PiBpbmRl eCBkMjFkZDJmMzY5ZGEuLmUxNDFlM2IxMzExMiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9nZW0uYwo+PiBAQCAtNjI3LDExICs2MjcsNiBAQCBpbnQgYW1kZ3B1X2dl bV92YV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+PiAgICAKPj4g ICAgCXN3aXRjaCAoYXJncy0+b3BlcmF0aW9uKSB7Cj4+ICAgIAljYXNlIEFNREdQVV9WQV9PUF9N QVA6Cj4+IC0JCXIgPSBhbWRncHVfdm1fYWxsb2NfcHRzKGFkZXYsIGJvX3ZhLT5iYXNlLnZtLCBh cmdzLT52YV9hZGRyZXNzLAo+PiAtCQkJCQlhcmdzLT5tYXBfc2l6ZSk7Cj4+IC0JCWlmIChyKQo+ PiAtCQkJZ290byBlcnJvcl9iYWNrb2ZmOwo+PiAtCj4+ICAgIAkJdmFfZmxhZ3MgPSBhbWRncHVf Z21jX2dldF9wdGVfZmxhZ3MoYWRldiwgYXJncy0+ZmxhZ3MpOwo+PiAgICAJCXIgPSBhbWRncHVf dm1fYm9fbWFwKGFkZXYsIGJvX3ZhLCBhcmdzLT52YV9hZGRyZXNzLAo+PiAgICAJCQkJICAgICBh cmdzLT5vZmZzZXRfaW5fYm8sIGFyZ3MtPm1hcF9zaXplLAo+PiBAQCAtNjQ3LDExICs2NDIsNiBA QCBpbnQgYW1kZ3B1X2dlbV92YV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpk YXRhLAo+PiAgICAJCQkJCQlhcmdzLT5tYXBfc2l6ZSk7Cj4+ICAgIAkJYnJlYWs7Cj4+ICAgIAlj YXNlIEFNREdQVV9WQV9PUF9SRVBMQUNFOgo+PiAtCQlyID0gYW1kZ3B1X3ZtX2FsbG9jX3B0cyhh ZGV2LCBib192YS0+YmFzZS52bSwgYXJncy0+dmFfYWRkcmVzcywKPj4gLQkJCQkJYXJncy0+bWFw X3NpemUpOwo+PiAtCQlpZiAocikKPj4gLQkJCWdvdG8gZXJyb3JfYmFja29mZjsKPj4gLQo+PiAg ICAJCXZhX2ZsYWdzID0gYW1kZ3B1X2dtY19nZXRfcHRlX2ZsYWdzKGFkZXYsIGFyZ3MtPmZsYWdz KTsKPj4gICAgCQlyID0gYW1kZ3B1X3ZtX2JvX3JlcGxhY2VfbWFwKGFkZXYsIGJvX3ZhLCBhcmdz LT52YV9hZGRyZXNzLAo+PiAgICAJCQkJCSAgICAgYXJncy0+b2Zmc2V0X2luX2JvLCBhcmdzLT5t YXBfc2l6ZSwKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV92bS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPj4gaW5kZXgg ZjdkNDEwYTVkODQ4Li4wYjhhMWFhNTZjNGEgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV92bS5jCj4+IEBAIC01MDQsNDcgKzUwNCw2IEBAIHN0YXRpYyB2b2lkIGFtZGdw dV92bV9wdF9uZXh0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+PiAgICAJfQo+PiAgICB9 Cj4+ICAgIAo+PiAtLyoqCj4+IC0gKiBhbWRncHVfdm1fcHRfZmlyc3RfbGVhZiAtIGdldCBmaXJz dCBsZWFmIFBEL1BUCj4+IC0gKgo+PiAtICogQGFkZXY6IGFtZGdwdV9kZXZpY2UgcG9pbnRlcgo+ PiAtICogQHZtOiBhbWRncHVfdm0gc3RydWN0dXJlCj4+IC0gKiBAc3RhcnQ6IHN0YXJ0IGFkZHIg b2YgdGhlIHdhbGsKPj4gLSAqIEBjdXJzb3I6IHN0YXRlIHRvIGluaXRpYWxpemUKPj4gLSAqCj4+ IC0gKiBTdGFydCBhIHdhbGsgYW5kIGdvIGRpcmVjdGx5IHRvIHRoZSBsZWFmIG5vZGUuCj4+IC0g Ki8KPj4gLXN0YXRpYyB2b2lkIGFtZGdwdV92bV9wdF9maXJzdF9sZWFmKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LAo+PiAtCQkJCSAgICBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwgdWludDY0X3Qg c3RhcnQsCj4+IC0JCQkJICAgIHN0cnVjdCBhbWRncHVfdm1fcHRfY3Vyc29yICpjdXJzb3IpCj4+ IC17Cj4+IC0JYW1kZ3B1X3ZtX3B0X3N0YXJ0KGFkZXYsIHZtLCBzdGFydCwgY3Vyc29yKTsKPj4g LQl3aGlsZSAoYW1kZ3B1X3ZtX3B0X2Rlc2NlbmRhbnQoYWRldiwgY3Vyc29yKSk7Cj4+IC19Cj4+ IC0KPj4gLS8qKgo+PiAtICogYW1kZ3B1X3ZtX3B0X25leHRfbGVhZiAtIGdldCBuZXh0IGxlYWYg UEQvUFQKPj4gLSAqCj4+IC0gKiBAYWRldjogYW1kZ3B1X2RldmljZSBwb2ludGVyCj4+IC0gKiBA Y3Vyc29yOiBjdXJyZW50IHN0YXRlCj4+IC0gKgo+PiAtICogV2FsayB0aGUgUEQvUFQgdHJlZSB0 byB0aGUgbmV4dCBsZWFmIG5vZGUuCj4+IC0gKi8KPj4gLXN0YXRpYyB2b2lkIGFtZGdwdV92bV9w dF9uZXh0X2xlYWYoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+IC0JCQkJICAgc3RydWN0 IGFtZGdwdV92bV9wdF9jdXJzb3IgKmN1cnNvcikKPj4gLXsKPj4gLQlhbWRncHVfdm1fcHRfbmV4 dChhZGV2LCBjdXJzb3IpOwo+PiAtCWlmIChjdXJzb3ItPnBmbiAhPSB+MGxsKQo+PiAtCQl3aGls ZSAoYW1kZ3B1X3ZtX3B0X2Rlc2NlbmRhbnQoYWRldiwgY3Vyc29yKSk7Cj4+IC19Cj4+IC0KPj4g LS8qKgo+PiAtICogZm9yX2VhY2hfYW1kZ3B1X3ZtX3B0X2xlYWYgLSB3YWxrIG92ZXIgYWxsIGxl YWYgUERzL1BUcyBpbiB0aGUgaGllcmFyY2h5Cj4+IC0gKi8KPj4gLSNkZWZpbmUgZm9yX2VhY2hf YW1kZ3B1X3ZtX3B0X2xlYWYoYWRldiwgdm0sIHN0YXJ0LCBlbmQsIGN1cnNvcikJCVwKPj4gLQlm b3IgKGFtZGdwdV92bV9wdF9maXJzdF9sZWFmKChhZGV2KSwgKHZtKSwgKHN0YXJ0KSwgJihjdXJz b3IpKTsJCVwKPj4gLQkgICAgIChjdXJzb3IpLnBmbiA8PSBlbmQ7IGFtZGdwdV92bV9wdF9uZXh0 X2xlYWYoKGFkZXYpLCAmKGN1cnNvcikpKQo+PiAtCj4+ICAgIC8qKgo+PiAgICAgKiBhbWRncHVf dm1fcHRfZmlyc3RfZGZzIC0gc3RhcnQgYSBkZWVwIGZpcnN0IHNlYXJjaAo+PiAgICAgKgo+PiBA QCAtOTE5LDc0ICs4NzgsNTEgQEAgc3RhdGljIHZvaWQgYW1kZ3B1X3ZtX2JvX3BhcmFtKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwKPj4gICAgICogUmV0 dXJuczoKPj4gICAgICogMCBvbiBzdWNjZXNzLCBlcnJubyBvdGhlcndpc2UuCj4+ICAgICAqLwo+ PiAtaW50IGFtZGdwdV92bV9hbGxvY19wdHMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+ IC0JCQlzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSwKPj4gLQkJCXVpbnQ2NF90IHNhZGRyLCB1aW50NjRf dCBzaXplKQo+PiArc3RhdGljIGludCBhbWRncHVfdm1fYWxsb2NfcHRzKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LAo+PiArCQkJICAgICAgIHN0cnVjdCBhbWRncHVfdm0gKnZtLAo+PiArCQkJ ICAgICAgIHN0cnVjdCBhbWRncHVfdm1fcHRfY3Vyc29yICpjdXJzb3IpCj4+ICAgIHsKPj4gLQlz dHJ1Y3QgYW1kZ3B1X3ZtX3B0X2N1cnNvciBjdXJzb3I7Cj4+ICsJc3RydWN0IGFtZGdwdV92bV9w dCAqZW50cnkgPSBjdXJzb3ItPmVudHJ5Owo+PiArCXN0cnVjdCBhbWRncHVfYm9fcGFyYW0gYnA7 Cj4+ICAgIAlzdHJ1Y3QgYW1kZ3B1X2JvICpwdDsKPj4gLQl1aW50NjRfdCBlYWRkcjsKPj4gICAg CWludCByOwo+PiAgICAKPj4gLQkvKiB2YWxpZGF0ZSB0aGUgcGFyYW1ldGVycyAqLwo+PiAtCWlm IChzYWRkciAmIEFNREdQVV9HUFVfUEFHRV9NQVNLIHx8IHNpemUgJiBBTURHUFVfR1BVX1BBR0Vf TUFTSykKPj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4+ICsJaWYgKGN1cnNvci0+bGV2ZWwgPCBBTURH UFVfVk1fUFRCICYmICFlbnRyeS0+ZW50cmllcykgewo+PiArCQl1bnNpZ25lZCBudW1fZW50cmll czsKPj4gICAgCj4+IC0JZWFkZHIgPSBzYWRkciArIHNpemUgLSAxOwo+PiAtCj4+IC0Jc2FkZHIg Lz0gQU1ER1BVX0dQVV9QQUdFX1NJWkU7Cj4+IC0JZWFkZHIgLz0gQU1ER1BVX0dQVV9QQUdFX1NJ WkU7Cj4+IC0KPj4gLQlpZiAoZWFkZHIgPj0gYWRldi0+dm1fbWFuYWdlci5tYXhfcGZuKSB7Cj4+ IC0JCWRldl9lcnIoYWRldi0+ZGV2LCAidmEgYWJvdmUgbGltaXQgKDB4JTA4bGxYID49IDB4JTA4 bGxYKVxuIiwKPj4gLQkJCWVhZGRyLCBhZGV2LT52bV9tYW5hZ2VyLm1heF9wZm4pOwo+PiAtCQly ZXR1cm4gLUVJTlZBTDsKPj4gKwkJbnVtX2VudHJpZXMgPSBhbWRncHVfdm1fbnVtX2VudHJpZXMo YWRldiwgY3Vyc29yLT5sZXZlbCk7Cj4+ICsJCWVudHJ5LT5lbnRyaWVzID0ga3ZtYWxsb2NfYXJy YXkobnVtX2VudHJpZXMsCj4+ICsJCQkJCQlzaXplb2YoKmVudHJ5LT5lbnRyaWVzKSwKPj4gKwkJ CQkJCUdGUF9LRVJORUwgfCBfX0dGUF9aRVJPKTsKPj4gKwkJaWYgKCFlbnRyeS0+ZW50cmllcykK Pj4gKwkJCXJldHVybiAtRU5PTUVNOwo+PiAgICAJfQo+PiAgICAKPj4gLQlmb3JfZWFjaF9hbWRn cHVfdm1fcHRfbGVhZihhZGV2LCB2bSwgc2FkZHIsIGVhZGRyLCBjdXJzb3IpIHsKPj4gLQkJc3Ry dWN0IGFtZGdwdV92bV9wdCAqZW50cnkgPSBjdXJzb3IuZW50cnk7Cj4+IC0JCXN0cnVjdCBhbWRn cHVfYm9fcGFyYW0gYnA7Cj4+IC0KPj4gLQkJaWYgKGN1cnNvci5sZXZlbCA8IEFNREdQVV9WTV9Q VEIpIHsKPj4gLQkJCXVuc2lnbmVkIG51bV9lbnRyaWVzOwo+PiAtCj4+IC0JCQludW1fZW50cmll cyA9IGFtZGdwdV92bV9udW1fZW50cmllcyhhZGV2LCBjdXJzb3IubGV2ZWwpOwo+PiAtCQkJZW50 cnktPmVudHJpZXMgPSBrdm1hbGxvY19hcnJheShudW1fZW50cmllcywKPj4gLQkJCQkJCQlzaXpl b2YoKmVudHJ5LT5lbnRyaWVzKSwKPj4gLQkJCQkJCQlHRlBfS0VSTkVMIHwKPj4gLQkJCQkJCQlf X0dGUF9aRVJPKTsKPj4gLQkJCWlmICghZW50cnktPmVudHJpZXMpCj4+IC0JCQkJcmV0dXJuIC1F Tk9NRU07Cj4+IC0JCX0KPj4gLQo+PiAtCj4+IC0JCWlmIChlbnRyeS0+YmFzZS5ibykKPj4gLQkJ CWNvbnRpbnVlOwo+PiAtCj4+IC0JCWFtZGdwdV92bV9ib19wYXJhbShhZGV2LCB2bSwgY3Vyc29y LmxldmVsLCAmYnApOwo+PiAtCj4+IC0JCXIgPSBhbWRncHVfYm9fY3JlYXRlKGFkZXYsICZicCwg JnB0KTsKPj4gLQkJaWYgKHIpCj4+IC0JCQlyZXR1cm4gcjsKPj4gLQo+PiAtCQlpZiAodm0tPnVz ZV9jcHVfZm9yX3VwZGF0ZSkgewo+PiAtCQkJciA9IGFtZGdwdV9ib19rbWFwKHB0LCBOVUxMKTsK Pj4gLQkJCWlmIChyKQo+PiAtCQkJCWdvdG8gZXJyb3JfZnJlZV9wdDsKPj4gLQkJfQo+PiArCWlm IChlbnRyeS0+YmFzZS5ibykKPj4gKwkJcmV0dXJuIDA7Cj4+ICAgIAo+PiAtCQkvKiBLZWVwIGEg cmVmZXJlbmNlIHRvIHRoZSByb290IGRpcmVjdG9yeSB0byBhdm9pZAo+PiAtCQkqIGZyZWVpbmcg dGhlbSB1cCBpbiB0aGUgd3Jvbmcgb3JkZXIuCj4+IC0JCSovCj4+IC0JCXB0LT5wYXJlbnQgPSBh bWRncHVfYm9fcmVmKGN1cnNvci5wYXJlbnQtPmJhc2UuYm8pOwo+PiArCWFtZGdwdV92bV9ib19w YXJhbShhZGV2LCB2bSwgY3Vyc29yLT5sZXZlbCwgJmJwKTsKPj4gICAgCj4+IC0JCWFtZGdwdV92 bV9ib19iYXNlX2luaXQoJmVudHJ5LT5iYXNlLCB2bSwgcHQpOwo+PiArCXIgPSBhbWRncHVfYm9f Y3JlYXRlKGFkZXYsICZicCwgJnB0KTsKPj4gKwlpZiAocikKPj4gKwkJcmV0dXJuIHI7Cj4+ICAg IAo+PiAtCQlyID0gYW1kZ3B1X3ZtX2NsZWFyX2JvKGFkZXYsIHZtLCBwdCk7Cj4+ICsJaWYgKHZt LT51c2VfY3B1X2Zvcl91cGRhdGUpIHsKPj4gKwkJciA9IGFtZGdwdV9ib19rbWFwKHB0LCBOVUxM KTsKPj4gICAgCQlpZiAocikKPj4gICAgCQkJZ290byBlcnJvcl9mcmVlX3B0Owo+PiAgICAJfQo+ PiAgICAKPj4gKwkvKiBLZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSByb290IGRpcmVjdG9yeSB0byBh dm9pZAo+PiArCSAqIGZyZWVpbmcgdGhlbSB1cCBpbiB0aGUgd3Jvbmcgb3JkZXIuCj4+ICsJICov Cj4+ICsJcHQtPnBhcmVudCA9IGFtZGdwdV9ib19yZWYoY3Vyc29yLT5wYXJlbnQtPmJhc2UuYm8p Owo+PiArCWFtZGdwdV92bV9ib19iYXNlX2luaXQoJmVudHJ5LT5iYXNlLCB2bSwgcHQpOwo+PiAr Cj4+ICsJciA9IGFtZGdwdV92bV9jbGVhcl9ibyhhZGV2LCB2bSwgcHQpOwo+PiArCWlmIChyKQo+ PiArCQlnb3RvIGVycm9yX2ZyZWVfcHQ7Cj4+ICsKPj4gICAgCXJldHVybiAwOwo+PiAgICAKPj4g ICAgZXJyb3JfZnJlZV9wdDoKPj4gQEAgLTE2NTUsNiArMTU5MSw3IEBAIHN0YXRpYyBpbnQgYW1k Z3B1X3ZtX3VwZGF0ZV9wdGVzKHN0cnVjdCBhbWRncHVfcHRlX3VwZGF0ZV9wYXJhbXMgKnBhcmFt cywKPj4gICAgCXN0cnVjdCBhbWRncHVfdm1fcHRfY3Vyc29yIGN1cnNvcjsKPj4gICAgCXVpbnQ2 NF90IGZyYWdfc3RhcnQgPSBzdGFydCwgZnJhZ19lbmQ7Cj4+ICAgIAl1bnNpZ25lZCBpbnQgZnJh ZzsKPj4gKwlpbnQgcjsKPj4gICAgCj4+ICAgIAkvKiBmaWd1cmUgb3V0IHRoZSBpbml0aWFsIGZy YWdtZW50ICovCj4+ICAgIAlhbWRncHVfdm1fZnJhZ21lbnQocGFyYW1zLCBmcmFnX3N0YXJ0LCBl bmQsIGZsYWdzLCAmZnJhZywgJmZyYWdfZW5kKTsKPj4gQEAgLTE2NjIsMTIgKzE1OTksMTUgQEAg c3RhdGljIGludCBhbWRncHVfdm1fdXBkYXRlX3B0ZXMoc3RydWN0IGFtZGdwdV9wdGVfdXBkYXRl X3BhcmFtcyAqcGFyYW1zLAo+PiAgICAJLyogd2FsayBvdmVyIHRoZSBhZGRyZXNzIHNwYWNlIGFu ZCB1cGRhdGUgdGhlIFBUcyAqLwo+PiAgICAJYW1kZ3B1X3ZtX3B0X3N0YXJ0KGFkZXYsIHBhcmFt cy0+dm0sIHN0YXJ0LCAmY3Vyc29yKTsKPj4gICAgCXdoaWxlIChjdXJzb3IucGZuIDwgZW5kKSB7 Cj4+IC0JCXN0cnVjdCBhbWRncHVfYm8gKnB0ID0gY3Vyc29yLmVudHJ5LT5iYXNlLmJvOwo+PiAg ICAJCXVuc2lnbmVkIHNoaWZ0LCBwYXJlbnRfc2hpZnQsIG1hc2s7Cj4+ICAgIAkJdWludDY0X3Qg aW5jciwgZW50cnlfZW5kLCBwZV9zdGFydDsKPj4gKwkJc3RydWN0IGFtZGdwdV9ibyAqcHQ7Cj4+ ICAgIAo+PiAtCQlpZiAoIXB0KQo+PiAtCQkJcmV0dXJuIC1FTk9FTlQ7Cj4+ICsJCXIgPSBhbWRn cHVfdm1fYWxsb2NfcHRzKHBhcmFtcy0+YWRldiwgcGFyYW1zLT52bSwgJmN1cnNvcik7Cj4+ICsJ CWlmIChyKQo+PiArCQkJcmV0dXJuIHI7Cj4+ICsKPj4gKwkJcHQgPSBjdXJzb3IuZW50cnktPmJh c2UuYm87Cj4+ICAgIAo+PiAgICAJCS8qIFRoZSByb290IGxldmVsIGNhbid0IGJlIGEgaHVnZSBw YWdlICovCj4+ICAgIAkJaWYgKGN1cnNvci5sZXZlbCA9PSBhZGV2LT52bV9tYW5hZ2VyLnJvb3Rf bGV2ZWwpIHsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV92bS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmgKPj4gaW5kZXgg ODFmZjgxNzdmMDkyLi4xMTY2MDVjMDM4ZDIgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV92bS5oCj4+IEBAIC0zMDMsOSArMzAzLDYgQEAgYm9vbCBhbWRncHVfdm1fcmVh ZHkoc3RydWN0IGFtZGdwdV92bSAqdm0pOwo+PiAgICBpbnQgYW1kZ3B1X3ZtX3ZhbGlkYXRlX3B0 X2JvcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgc3RydWN0IGFtZGdwdV92bSAqdm0sCj4+ ICAgIAkJCSAgICAgIGludCAoKmNhbGxiYWNrKSh2b2lkICpwLCBzdHJ1Y3QgYW1kZ3B1X2JvICpi byksCj4+ICAgIAkJCSAgICAgIHZvaWQgKnBhcmFtKTsKPj4gLWludCBhbWRncHVfdm1fYWxsb2Nf cHRzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+PiAtCQkJc3RydWN0IGFtZGdwdV92bSAq dm0sCj4+IC0JCQl1aW50NjRfdCBzYWRkciwgdWludDY0X3Qgc2l6ZSk7Cj4+ICAgIGludCBhbWRn cHVfdm1fZmx1c2goc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCBzdHJ1Y3QgYW1kZ3B1X2pvYiAq am9iLCBib29sIG5lZWRfcGlwZV9zeW5jKTsKPj4gICAgaW50IGFtZGdwdV92bV91cGRhdGVfZGly ZWN0b3JpZXMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+ICAgIAkJCQkgc3RydWN0IGFt ZGdwdV92bSAqdm0pOwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==