From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrey Grodzovsky Subject: Re: [PATCH v4 2/2] drm/amdgpu: Free VGA stolen memory as soon as possible. Date: Thu, 12 Apr 2018 07:17:59 -0400 Message-ID: <9abad4d7-8ca7-30fa-6bb7-cadb4ae01799@amd.com> References: <1523506110-14002-1-git-send-email-andrey.grodzovsky@amd.com> <1523506110-14002-2-git-send-email-andrey.grodzovsky@amd.com> 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: Alex Deucher Cc: Alex Deucher , "Ranjbar, Ramin" , Huang Rui , Christian Koenig , amd-gfx list CgpPbiAwNC8xMi8yMDE4IDEyOjMyIEFNLCBBbGV4IERldWNoZXIgd3JvdGU6Cj4gT24gVGh1LCBB cHIgMTIsIDIwMTggYXQgMTI6MDggQU0sIEFuZHJleSBHcm9kem92c2t5Cj4gPGFuZHJleS5ncm9k em92c2t5QGFtZC5jb20+IHdyb3RlOgo+PiBSZXNlcnZlZCBWUkFNIGlzIHVzZWQgdG8gYXZvaWQg b3ZlcnJpZGluZyBwcmUgT1MgRkIuCj4+IE9uY2Ugb3VyIGRpc3BsYXkgc3RhY2sgdGFrZXMgb3Zl ciB3ZSBkb24ndCBuZWVkIHRoZSByZXNlcnZlZAo+PiBWUkFNIGFueW1vcmUuCj4+Cj4+IHYyOgo+ PiBSZW1vdmUgY29tbWVudCwgd2Uga25vdyBhY3R1YWxseSB3aHkgd2UgbmVlZCB0byByZXNlcnZl IHRoZSBzdG9sZW4gVlJBTS4KPj4gRml4IHJldHVybiB0eXBlIGZvciBhbWRncHVfdHRtX2xhdGVf aW5pdC4KPj4gdjM6Cj4+IFJldHVybiAwIGluIGFtZGdwdV9ib19sYXRlX2luaXQsIHJlYmFzZSBv biBjaGFuZ2VzIHRvIHByZXZpb3VzIHBhdGNoCj4+IHY0Ogo+PiBEb24ndCByZWxlYXNlIHN0b2xl biBtZW1vcnkgZm9yIEdNQzkgQVNJQ3MgdW50aWxsIEdBUlQgY29ycnVwdGlvbgo+PiBvbiBTMyBy ZXN1bWUgaXMgcmVzb2x2ZWQuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IEFuZHJleSBHcm9kem92c2t5 IDxhbmRyZXkuZ3JvZHpvdnNreUBhbWQuY29tPgo+PiBTaWduZWQtb2ZmLWJ5OiBBbGV4IERldWNo ZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+Cj4gTG9va3MgbGlrZSB5b3UgdXNlZCB0aGUg b3JpZ2luYWwgdmVyc2lvbiBvZiB0aGlzIHBhdGNoIGFzIHdlbGwuCj4gVXBkYXRlZCB2ZXJzaW9u IGhlcmU6Cj4gaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoLzIxNTU2Ny8K PiBtb3JlIGNvbW1lbnRzIGJlbG93Lgo+Cj4+IC0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9vYmplY3QuYyB8ICA3ICsrKysrKysKPj4gICBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmggfCAgMSArCj4+ICAgZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3R0bS5jICAgIHwgIDggKysrKysrLS0KPj4gICBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmggICAgfCAgMSArCj4+ICAgZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvZ21jX3Y2XzAuYyAgICAgIHwgIDIgKysKPj4gICBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9nbWNfdjdfMC5jICAgICAgfCAgMiArKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2dtY192OF8wLmMgICAgICB8ICAyICsrCj4+ICAgZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvZ21jX3Y5XzAuYyAgICAgIHwgMTQgKysrKysrKysrKy0tLS0KPj4gICA4IGZpbGVz IGNoYW5nZWQsIDMxIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMKPj4gaW5kZXggOWUyM2Q2Zi4uYTE2 MGVmMCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29i amVjdC5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3Qu Ywo+PiBAQCAtODUyLDYgKzg1MiwxMyBAQCBpbnQgYW1kZ3B1X2JvX2luaXQoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYpCj4+ICAgICAgICAgIHJldHVybiBhbWRncHVfdHRtX2luaXQoYWRldik7 Cj4+ICAgfQo+Pgo+PiAraW50IGFtZGdwdV9ib19sYXRlX2luaXQoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYpCj4+ICt7Cj4+ICsgICAgICAgYW1kZ3B1X3R0bV9sYXRlX2luaXQoYWRldik7Cj4+ ICsKPj4gKyAgICAgICByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiAgIHZvaWQgYW1kZ3B1X2JvX2Zp bmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCj4+ICAgewo+PiAgICAgICAgICBhbWRncHVf dHRtX2ZpbmkoYWRldik7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfb2JqZWN0LmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2Jq ZWN0LmgKPj4gaW5kZXggM2JlZTEzMy4uMWU5ZmU4NSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuaAo+PiBAQCAtMjUxLDYgKzI1MSw3IEBAIGludCBh bWRncHVfYm9fcGluX3Jlc3RyaWN0ZWQoc3RydWN0IGFtZGdwdV9ibyAqYm8sIHUzMiBkb21haW4s Cj4+ICAgaW50IGFtZGdwdV9ib191bnBpbihzdHJ1Y3QgYW1kZ3B1X2JvICpibyk7Cj4+ICAgaW50 IGFtZGdwdV9ib19ldmljdF92cmFtKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsKPj4gICBp bnQgYW1kZ3B1X2JvX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwo+PiAraW50IGFt ZGdwdV9ib19sYXRlX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwo+PiAgIHZvaWQg YW1kZ3B1X2JvX2Zpbmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwo+PiAgIGludCBhbWRn cHVfYm9fZmJkZXZfbW1hcChzdHJ1Y3QgYW1kZ3B1X2JvICpibywKPj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOwo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5jIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5jCj4+IGluZGV4IDA1NTU4MjEuLjdhNjA4Y2Yg MTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV90dG0uYwo+ PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmMKPj4gQEAgLTE1 MTcsMTQgKzE1MTcsMTggQEAgaW50IGFtZGdwdV90dG1faW5pdChzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldikKPj4gICAgICAgICAgcmV0dXJuIDA7Cj4+ICAgfQo+Pgo+PiArdm9pZCBhbWRncHVf dHRtX2xhdGVfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKPj4gK3sKPj4gKyAgICAg ICBpZiAoYWRldi0+Z21jLnN0b2xlbl9zaXplKQo+IG5vIG5lZWQgdG8gY2hlY2sgZm9yIE5VTEwg aGVyZS4gIGFtZGdwdV9ib19mcmVlX2tlcm5lbCgpIHdpbGwgZG8gdGhlCj4gcmlnaHQgdGhpbmcg ZXZlbiBpZiBzdG9sZW5fdmdhX21lbW9yeSBpcyBOVUxMLgo+Cj4+ICsgICAgICAgICAgICAgICBh bWRncHVfYm9fZnJlZV9rZXJuZWwoJmFkZXYtPnN0b2xlbl92Z2FfbWVtb3J5LCBOVUxMLCBOVUxM KTsKPj4gK30KPj4gKwo+PiAgIHZvaWQgYW1kZ3B1X3R0bV9maW5pKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2KQo+PiAgIHsKPj4gICAgICAgICAgaWYgKCFhZGV2LT5tbWFuLmluaXRpYWxpemVk KQo+PiAgICAgICAgICAgICAgICAgIHJldHVybjsKPj4KPj4gICAgICAgICAgYW1kZ3B1X3R0bV9k ZWJ1Z2ZzX2ZpbmkoYWRldik7Cj4+IC0gICAgICAgaWYgKGFkZXYtPmdtYy5zdG9sZW5fc2l6ZSkK Pj4gLSAgICAgICAgICAgICAgIGFtZGdwdV9ib19mcmVlX2tlcm5lbCgmYWRldi0+c3RvbGVuX3Zn YV9tZW1vcnksIE5VTEwsIE5VTEwpOwo+PiAgICAgICAgICBhbWRncHVfdHRtX2Z3X3Jlc2VydmVf dnJhbV9maW5pKGFkZXYpOwo+PiAgICAgICAgICBpZiAoYWRldi0+bW1hbi5hcGVyX2Jhc2Vfa2Fk ZHIpCj4+ICAgICAgICAgICAgICAgICAgaW91bm1hcChhZGV2LT5tbWFuLmFwZXJfYmFzZV9rYWRk cik7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRt LmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmgKPj4gaW5kZXggNmVh N2RlOC4uZTk2OWM4NyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X3R0bS5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV90 dG0uaAo+PiBAQCAtNzcsNiArNzcsNyBAQCB1aW50NjRfdCBhbWRncHVfdnJhbV9tZ3JfdXNhZ2Uo c3RydWN0IHR0bV9tZW1fdHlwZV9tYW5hZ2VyICptYW4pOwo+PiAgIHVpbnQ2NF90IGFtZGdwdV92 cmFtX21ncl92aXNfdXNhZ2Uoc3RydWN0IHR0bV9tZW1fdHlwZV9tYW5hZ2VyICptYW4pOwo+Pgo+ PiAgIGludCBhbWRncHVfdHRtX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwo+PiAr dm9pZCBhbWRncHVfdHRtX2xhdGVfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7Cj4+ ICAgdm9pZCBhbWRncHVfdHRtX2Zpbmkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpOwo+PiAg IHZvaWQgYW1kZ3B1X3R0bV9zZXRfYnVmZmVyX2Z1bmNzX3N0YXR1cyhzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi b29sIGVuYWJsZSk7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9n bWNfdjZfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y2XzAuYwo+PiBpbmRl eCA2M2YwYjY1Li40YThmOWJkIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9nbWNfdjZfMC5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192 Nl8wLmMKPj4gQEAgLTgxOSw2ICs4MTksOCBAQCBzdGF0aWMgaW50IGdtY192Nl8wX2xhdGVfaW5p dCh2b2lkICpoYW5kbGUpCj4+ICAgewo+PiAgICAgICAgICBzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRsZTsKPj4KPj4gKyAgICAgICBhbWRn cHVfYm9fbGF0ZV9pbml0KGFkZXYpOwo+PiArCj4+ICAgICAgICAgIGlmIChhbWRncHVfdm1fZmF1 bHRfc3RvcCAhPSBBTURHUFVfVk1fRkFVTFRfU1RPUF9BTFdBWVMpCj4+ICAgICAgICAgICAgICAg ICAgcmV0dXJuIGFtZGdwdV9pcnFfZ2V0KGFkZXYsICZhZGV2LT5nbWMudm1fZmF1bHQsIDApOwo+ PiAgICAgICAgICBlbHNlCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9nbWNfdjdfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y3XzAuYwo+PiBp bmRleCAyZGViNWM5Li4xODlmZGY5IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9nbWNfdjdfMC5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dt Y192N18wLmMKPj4gQEAgLTk1OCw2ICs5NTgsOCBAQCBzdGF0aWMgaW50IGdtY192N18wX2xhdGVf aW5pdCh2b2lkICpoYW5kbGUpCj4+ICAgewo+PiAgICAgICAgICBzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRsZTsKPj4KPj4gKyAgICAgICBh bWRncHVfYm9fbGF0ZV9pbml0KGFkZXYpOwo+PiArCj4+ICAgICAgICAgIGlmIChhbWRncHVfdm1f ZmF1bHRfc3RvcCAhPSBBTURHUFVfVk1fRkFVTFRfU1RPUF9BTFdBWVMpCj4+ICAgICAgICAgICAg ICAgICAgcmV0dXJuIGFtZGdwdV9pcnFfZ2V0KGFkZXYsICZhZGV2LT5nbWMudm1fZmF1bHQsIDAp Owo+PiAgICAgICAgICBlbHNlCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9nbWNfdjhfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y4XzAuYwo+ PiBpbmRleCAwNGIwMGRmLi4xOWUxNTNmIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9nbWNfdjhfMC5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2dtY192OF8wLmMKPj4gQEAgLTEwNDksNiArMTA0OSw4IEBAIHN0YXRpYyBpbnQgZ21jX3Y4XzBf bGF0ZV9pbml0KHZvaWQgKmhhbmRsZSkKPj4gICB7Cj4+ICAgICAgICAgIHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOwo+Pgo+PiArICAg ICAgIGFtZGdwdV9ib19sYXRlX2luaXQoYWRldik7Cj4+ICsKPj4gICAgICAgICAgaWYgKGFtZGdw dV92bV9mYXVsdF9zdG9wICE9IEFNREdQVV9WTV9GQVVMVF9TVE9QX0FMV0FZUykKPj4gICAgICAg ICAgICAgICAgICByZXR1cm4gYW1kZ3B1X2lycV9nZXQoYWRldiwgJmFkZXYtPmdtYy52bV9mYXVs dCwgMCk7Cj4+ICAgICAgICAgIGVsc2UKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2dtY192OV8wLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjlf MC5jCj4+IGluZGV4IDI1MmE2YzY5Li4wOTllM2NlNSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y5XzAuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9nbWNfdjlfMC5jCj4+IEBAIC02NTksNiArNjU5LDE2IEBAIHN0YXRpYyBpbnQgZ21j X3Y5XzBfbGF0ZV9pbml0KHZvaWQgKmhhbmRsZSkKPj4gICAgICAgICAgdW5zaWduZWQgaTsKPj4g ICAgICAgICAgaW50IHI7Cj4+Cj4+ICsgICAgICAgLyoKPj4gKyAgICAgICAgKiBUT0RPOgo+PiAr ICAgICAgICAqIEN1cnJlbnRseSB0aGVyZSBpcyBhIGJ1ZyB3aGVyZSBzb21lIG1lbW9yeSBjbGll bnQgb3V0c2lkZQo+PiArICAgICAgICAqIG9mIHRoZSBkcml2ZXIgd3JpdGVzIHRvIGZpcnN0IDhN IG9mIFZSQU0gb24gUzMgcmVzdW1lLAo+PiArICAgICAgICAqIHRoaXMgb3ZlcnJpZGVzIEdBUlQg d2hpY2ggYnkgZGVmYXVsdCBnZXRzIHBsYWNlZCBpbiBmaXJzdCA4TSBhbmQKPj4gKyAgICAgICAg KiBjYXVzZXMgVk1fRkFVTFRTIG9uY2UgR1RUIGlzIGFjY2Vzc2VkLgo+PiArICAgICAgICAqIEtl ZXAgdGhlIHN0b2xlbiBtZW1vcnkgcmVzZXJ2YXRpb24gdW50aWwgdGhpcyBzb2x2ZWQuCj4+ICsg ICAgICAgICovCj4+ICsgICAgICAgLyogYW1kZ3B1X2JvX2xhdGVfaW5pdChhZGV2KTsgLwo+PiAr Cj4gV2Ugc3RpbGwgbmVlZCB0byBmcmVlIHRoaXMgc29tZXdoZXJlLiAgSSdkIHN1Z2dlc3QgY2Fs bGluZyBpdCBpbgo+IGdtY192OV8wX3N3X2ZpbmkoKSBhbmQgYWRkIGEgY29tbWVudCB0aGVyZSBh Ym91dCBtb3ZpbmcgaXQgd2hlbiB3ZSBmaXgKPiB0aGUgaXNzdWUuCj4KPj4gICAgICAgICAgZm9y KGkgPSAwOyBpIDwgYWRldi0+bnVtX3JpbmdzOyArK2kpIHsKPj4gICAgICAgICAgICAgICAgICBz dHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcgPSBhZGV2LT5yaW5nc1tpXTsKPj4gICAgICAgICAgICAg ICAgICB1bnNpZ25lZCB2bWh1YiA9IHJpbmctPmZ1bmNzLT52bWh1YjsKPj4gQEAgLTg4NCwxMCAr ODk0LDYgQEAgc3RhdGljIGludCBnbWNfdjlfMF9zd19pbml0KHZvaWQgKmhhbmRsZSkKPj4gICAg ICAgICAgICovCj4+ICAgICAgICAgIGFkZXYtPmdtYy5tY19tYXNrID0gMHhmZmZmZmZmZmZmZmZV TEw7IC8qIDQ4IGJpdCBNQyAqLwo+Pgo+PiAtICAgICAgIC8qCj4+IC0gICAgICAgICogSXQgbmVl ZHMgdG8gcmVzZXJ2ZSA4TSBzdG9sZW4gbWVtb3J5IGZvciB2ZWdhMTAKPj4gLSAgICAgICAgKiBU T0RPOiBGaWd1cmUgb3V0IGhvdyB0byBhdm9pZCB0aGF0Li4uCj4+IC0gICAgICAgICovCj4+ICAg ICAgICAgIGFkZXYtPmdtYy5zdG9sZW5fc2l6ZSA9IGdtY192OV8wX2dldF92Ymlvc19mYl9zaXpl KGFkZXYpOwo+IFdlIG1heSBhbHNvIGp1c3Qgd2FudCB0byByZXR1cm4gOE1CIG9yIDlNQiB0ZW1w b3JhcmlseSBpbgo+IGdtY192OV8wX2dldF92Ymlvc19mYl9zaXplIHVudGlsIHdlIHNvcnQgb3V0 IHRoZSByb290IGNhdXNlIG9mIHRoZSBTMwo+IGlzc3VlIG90aGVyd2lzZSB3ZSdyZSBwb3RlbnRp YWxseSB3YXN0aW5nIGEgbG90IG1vcmUgbWVtb3J5Lgo+Cj4gQWxleAoKQnV0IHdoYXQgaWYgd2Ug aGF2ZSA0ayBkaXNwbGF5ID8gSW4gdGhpcyBjYXNlIHJldHVybmluZyA5TSBwcm9iYWJseSB3aWxs IApub3QgaGlkZSB0aGUgY29ycnVwdGlvbsKgIHdlIHdlcmUgb3JpZ2luYWxseSBkZWFsaW5nIHdp dGguIEkgcmVtZW1iZXIgaW4gCnRoYXQgY2FzZSBwcmUgT1MgRkIgc2l6ZSB3b3VsZCBiZSAzMk0u CgpBbmRyZXkKCj4KPgo+PiAgICAgICAgICAvKiBzZXQgRE1BIG1hc2sgKyBuZWVkX2RtYTMyIGZs YWdzLgo+PiAtLQo+PiAyLjcuNAo+Pgo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo+PiBhbWQtZ2Z4IG1haWxpbmcgbGlzdAo+PiBhbWQtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwo+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2FtZC1nZngKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdm eAo=