From mboxrd@z Thu Jan 1 00:00:00 1970 From: Felix Kuehling Subject: Re: [PATCH 2/2] drm/amdgpu: bind GTT on demand Date: Wed, 7 Sep 2016 12:07:34 -0400 Message-ID: <2a4f24fa-6873-7c7f-486f-ef4f29efa63a@amd.com> References: <1473154866-2448-1-git-send-email-deathsimple@vodafone.de> <1473154866-2448-2-git-send-email-deathsimple@vodafone.de> <57CE9220.8060403@amd.com> <57CFBF51.3000506@amd.com> <24352e53-0c1c-8b55-0b39-35b3e5d350ff@vodafone.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <24352e53-0c1c-8b55-0b39-35b3e5d350ff-ANTagKRnAhcb1SvskN2V4Q@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: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org WWVhaCwgeW91IHNhdmUgeW91cnNlbGYgdGhlIEdUVCB1cGRhdGUsIHdoaWNoIGFsd2F5cyB1c2Vz IHRoZSBDUFUuCkluc3RlYWQgeW91IHdyaXRlIHRoZSBwYWdlIHRhYmxlIGVudHJpZXMgdG8gSUJz IHVzaW5nIHRoZSBDUFUuIFdpbGwgYmUKaW50ZXJlc3RpbmcgdG8gc2VlIGlmIHRoYXQncyBhIG5l dCBzcGVlZC11cCBvciBzbG93LWRvd24sIGlmIHRoZQpkaWZmZXJlbmNlIGlzIHNpZ25pZmljYW50 IGF0IGFsbC4KClRoZSBwYXRjaCBsb29rcyBnb29kIHRvIG1lLiBUaGFua3MgZm9yIHRhY2tsaW5n IHRoaXMuIEkgZGlkbid0IHJldmlldyBpdAp0b28gdGhvcm91Z2hseSwgYW5kIGlmIHlvdSBmb3Jn b3QgdG8gbWFwIHRvIEdBUlQgc29tZXdoZXJlIGltcG9ydGFudCwgSQp3b3VsZCBwcm9iYWJseSBo YXZlIG1pc3NlZCBpdC4KCkFja2VkLWJ5OiBGZWxpeCBLdWVobGluZyA8RmVsaXguS3VlaGxpbmdA YW1kLmNvbT4KCk9uY2Ugd2UgcHVsbCB0aGlzIGNoYW5nZSBpbnRvIHRoZSBLRkQgYnJhbmNoLCB3 ZSBjYW4gcHJvYmFibHkgcmV2ZXJ0IG91cgpyaWRpY3Vsb3VzIEdBUlQgc2l6ZSB3aXRob3V0IGxv c2luZyB0aGUgYWJpbGl0eSB0byBtYXAgbG90cyBvZiBzeXN0ZW0KbWVtb3J5IHRvIEdQVVZNLiA6 KQoKUmVnYXJkcywKICBGZWxpeAoKT24gMTYtMDktMDcgMDQ6MTggQU0sIENocmlzdGlhbiBLw7Zu aWcgd3JvdGU6Cj4gQW0gMDcuMDkuMjAxNiB1bSAwOToxOCBzY2hyaWViIHpob3VjbTE6Cj4+Cj4+ Cj4+IE9uIDIwMTblubQwOeaciDA25pelIDE4OjQ4LCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+ Pj4gQW0gMDYuMDkuMjAxNiB1bSAxMTo1MyBzY2hyaWViIHpob3VjbTE6Cj4+Pj4KPj4+Pgo+Pj4+ IE9uIDIwMTblubQwOeaciDA25pelIDE3OjQxLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3RlOgo+Pj4+ PiBGcm9tOiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Cj4+Pj4+ Cj4+Pj4+IFdlIGRvbid0IHJlYWxseSBuZWVkIHRoZSBHVFQgdGFibGUgYW55IG1vcmUgbW9zdCBv ZiB0aGUgdGltZS4KPj4+PiBXaHk/IEkgdGhvdWdodCBHVFQgYm8gaXMgYWx3YXlzIG5lZWRlZCB0 byBiZSBib3VuZCB3aGVuIEdQVSBpcwo+Pj4+IHRyeWluZyB0byBhY2Nlc3MgaXQsIGRvZXNuJ3Qg aXQ/Cj4+Pgo+Pj4gV2Ugb25seSBuZWVkIGl0IHRvIGJlIGJvdW5kIHdoZW4gd2UgdHJ5IHRvIGFj Y2VzcyBpdCBmcm9tIHRoZSBzeXN0ZW0KPj4+IFZNIChVVkQvVkNFLCByaW5nIGJ1ZmZlcnMsIGZl bmNlcyBldGMuLi4pLgo+Pj4KPj4+IFRoZSBWTXMgZm9yIGVhY2ggcHJvY2VzcyBjYW4gd29yayB3 aXRob3V0IGl0IGFuZCBpdCBpcyBqdXN0IG92ZXJoZWFkCj4+PiB0byBiaW5kIGl0IGFsbCB0aGUg dGltZS4KPj4gWWVzLCBJIGdvdCB5b3VyIG1lYW4sIGNvcHlpbmcgcHRlIGZyb20gR0FSVCB0byBW TSBjb25mdXNlZCBtZSwgSQo+PiB0aG91Z2h0IGJpbmRpbmcgR1RUIHRhYmxlIGlzIGEgbXVzdCwg dGhhdCdzIHdyb25nLgo+PiBHbyB0aG91Z2ggdm0gY29kZSBhZ2FpbiwgcHRlIGNhbiBiZSBjcmVh dGVkIGJ5IGFtZGdwdV92bV9tYXBfZ2FydCBpZgo+PiBubyBHVFQgcHRlIHNvdXJjZSB3aGVuIHdl IGRvbid0IGJpbmQgaXQgYXQgYWxsIHVuZGVyIFZNIHByb2Nlc3MsIGFtIEkKPj4gcmlnaHQgbm93 Pwo+Cj4gWWVzIGV4YWN0bHkuIEkgc3RpbGwgbmVlZCB0byBtZWFzdXJlIHRoZSBwZXJmb3JtYW5j ZSBpbXBhY3Qgb2YgdGhhdCwKPiBhZGRpbmcgdGhlIGNvcHkgZnJvbSB0aGUgR1RUIG1hZGUgcXVp dGUgYSBkaWZmZXJlbmNlIHdoZW4gSSBpbnRyb2R1Y2VkCj4gdGhhdC4KPgo+IEkgaG9wZSB0aGF0 IGRvaW5nIHRoZSB3cml0ZSB3aGVuIHRoZSB1cGRhdGUgdGhlIFZNIGlzIHN0aWxsIGZhc3Rlcgo+ IHRoYW4gZG9pbmcgdGhlIEdUVCB3cml0ZS4KPgo+IFJlZ2FyZHMsCj4gQ2hyaXN0aWFuLgo+Cj4+ Cj4+IFJlZ2FyZHMsCj4+IERhdmlkIFpob3UKPj4KPj4+Cj4+PiBSZWdhcmRzLAo+Pj4gQ2hyaXN0 aWFuLgo+Pj4KPj4+Cj4+Pj4KPj4+PiBSZWdhcmRzLAo+Pj4+IERhdmlkIFpob3UKPj4+Pj4gICBT byBiaW5kIGl0Cj4+Pj4+IG9ubHkgb24gZGVtYW5kLgo+Pj4+Pgo+Pj4+PiBTaWduZWQtb2ZmLWJ5 OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Cj4+Pj4+IC0tLQo+ Pj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oICAgICAgICB8ICAxICsK Pj4+Pj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYyAgICAgfCAzNAo+ Pj4+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KPj4+Pj4gICBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMgfCAgNyArKysrKysKPj4+Pj4gICBkcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdHRtLmMgICAgfCAzMwo+Pj4+PiArKysrKysrKysr KysrKysrKysrKysrKysrKy0tLQo+Pj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV90dG0uaCAgICB8ICAzICsrKwo+Pj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV91dmQuYyAgICB8ICA0ICsrKysKPj4+Pj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfdmNlLmMgICAgfCAgNiArKysrKy0KPj4+Pj4gICBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfdm0uYyAgICAgfCAgMyArKy0KPj4+Pj4gICA4IGZpbGVzIGNoYW5n ZWQsIDg0IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCj4+Pj4+Cj4+Pj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAo+Pj4+PiBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCj4+Pj4+IGluZGV4IDlkMzlmYTguLjI4ZDRhNjcg MTAwNjQ0Cj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCj4+ Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCj4+Pj4+IEBAIC0y NTIxLDYgKzI1MjEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYW1kZ3B1X2FjcGlfZmluaShzdHJ1 Y3QKPj4+Pj4gYW1kZ3B1X2RldmljZSAqYWRldikgeyB9Cj4+Pj4+ICAgc3RydWN0IGFtZGdwdV9i b192YV9tYXBwaW5nICoKPj4+Pj4gICBhbWRncHVfY3NfZmluZF9tYXBwaW5nKHN0cnVjdCBhbWRn cHVfY3NfcGFyc2VyICpwYXJzZXIsCj4+Pj4+ICAgICAgICAgICAgICAgICAgdWludDY0X3QgYWRk ciwgc3RydWN0IGFtZGdwdV9ibyAqKmJvKTsKPj4+Pj4gK2ludCBhbWRncHVfY3Nfc3lzdm1fYWNj ZXNzX3JlcXVpcmVkKHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyCj4+Pj4+ICpwYXJzZXIpOwo+Pj4+ PiAgICAgI2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfREFMKQo+Pj4+PiAgIGludCBhbWRncHVf ZG1fZGlzcGxheV9yZXN1bWUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgKTsKPj4+Pj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCj4+Pj4+IGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMKPj4+Pj4gaW5kZXggMjBhMTk2 Mi4uZTA2OTk3OCAxMDA2NDQKPj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2NzLmMKPj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2NzLmMKPj4+Pj4gQEAgLTY0MCw4ICs2NDAsMTIgQEAgc3RhdGljIGludCBhbWRncHVfY3NfcGFy c2VyX2JvcyhzdHJ1Y3QKPj4+Pj4gYW1kZ3B1X2NzX3BhcnNlciAqcCwKPj4+Pj4gICAgICAgICAg IH0KPj4+Pj4gICAgICAgfQo+Pj4+PiAgIC0gICAgaWYgKHAtPnVmX2VudHJ5LnJvYmopCj4+Pj4+ IC0gICAgICAgIHAtPmpvYi0+dWZfYWRkciArPSBhbWRncHVfYm9fZ3B1X29mZnNldChwLT51Zl9l bnRyeS5yb2JqKTsKPj4+Pj4gKyAgICBpZiAoIXIgJiYgcC0+dWZfZW50cnkucm9iaikgewo+Pj4+ PiArICAgICAgICBzdHJ1Y3QgYW1kZ3B1X2JvICp1ZiA9IHAtPnVmX2VudHJ5LnJvYmo7Cj4+Pj4+ ICsKPj4+Pj4gKyAgICAgICAgciA9IGFtZGdwdV90dG1fYmluZCh1Zi0+dGJvLnR0bSwgJnVmLT50 Ym8ubWVtKTsKPj4+Pj4gKyAgICAgICAgcC0+am9iLT51Zl9hZGRyICs9IGFtZGdwdV9ib19ncHVf b2Zmc2V0KHVmKTsKPj4+Pj4gKyAgICB9Cj4+Pj4+ICAgICBlcnJvcl92YWxpZGF0ZToKPj4+Pj4g ICAgICAgaWYgKHIpIHsKPj4+Pj4gQEAgLTExNTYsMyArMTE2MCwyOSBAQCBhbWRncHVfY3NfZmlu ZF9tYXBwaW5nKHN0cnVjdAo+Pj4+PiBhbWRncHVfY3NfcGFyc2VyICpwYXJzZXIsCj4+Pj4+ICAg ICAgICAgcmV0dXJuIE5VTEw7Cj4+Pj4+ICAgfQo+Pj4+PiArCj4+Pj4+ICsvKioKPj4+Pj4gKyAq IGFtZGdwdV9jc19zeXN2bV9hY2Nlc3NfcmVxdWlyZWQgLSBtYWtlIEJPcyBhY2Nlc3NpYmxlIGJ5 IHRoZQo+Pj4+PiBzeXN0ZW0gVk0KPj4+Pj4gKyAqCj4+Pj4+ICsgKiBAcGFyc2VyOiBjb21tYW5k IHN1Ym1pc3Npb24gcGFyc2VyIGNvbnRleHQKPj4+Pj4gKyAqCj4+Pj4+ICsgKiBIZWxwZXIgZm9y IFVWRC9WQ0UgVk0gZW11bGF0aW9uLCBtYWtlIHN1cmUgQk9zIGFyZSBhY2Nlc3NpYmxlCj4+Pj4+ IGJ5IHRoZSBzeXN0ZW0gVk0uCj4+Pj4+ICsgKi8KPj4+Pj4gK2ludCBhbWRncHVfY3Nfc3lzdm1f YWNjZXNzX3JlcXVpcmVkKHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwYXJzZXIpCj4+Pj4+ICt7 Cj4+Pj4+ICsgICAgdW5zaWduZWQgaTsKPj4+Pj4gKyAgICBpbnQgcjsKPj4+Pj4gKwo+Pj4+PiAr ICAgIGlmICghcGFyc2VyLT5ib19saXN0KQo+Pj4+PiArICAgICAgICByZXR1cm4gMDsKPj4+Pj4g Kwo+Pj4+PiArICAgIGZvciAoaSA9IDA7IGkgPCBwYXJzZXItPmJvX2xpc3QtPm51bV9lbnRyaWVz OyBpKyspIHsKPj4+Pj4gKyAgICAgICAgc3RydWN0IGFtZGdwdV9ibyAqYm8gPSBwYXJzZXItPmJv X2xpc3QtPmFycmF5W2ldLnJvYmo7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgICAgciA9IGFtZGdwdV90 dG1fYmluZChiby0+dGJvLnR0bSwgJmJvLT50Ym8ubWVtKTsKPj4+Pj4gKyAgICAgICAgaWYgKHVu bGlrZWx5KHIpKQo+Pj4+PiArICAgICAgICAgICAgcmV0dXJuIHI7Cj4+Pj4+ICsgICAgfQo+Pj4+ PiArCj4+Pj4+ICsgICAgcmV0dXJuIDA7Cj4+Pj4+ICt9Cj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMKPj4+Pj4gYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfb2JqZWN0LmMKPj4+Pj4gaW5kZXggYjE3NzM0ZS4uZGM3 M2YxMSAxMDA2NDQKPj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X29iamVjdC5jCj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9v YmplY3QuYwo+Pj4+PiBAQCAtNjQ2LDYgKzY0NiwxMSBAQCBpbnQgYW1kZ3B1X2JvX3Bpbl9yZXN0 cmljdGVkKHN0cnVjdCBhbWRncHVfYm8KPj4+Pj4gKmJvLCB1MzIgZG9tYWluLAo+Pj4+PiAgICAg ICAgICAgZGV2X2Vycihiby0+YWRldi0+ZGV2LCAiJXAgcGluIGZhaWxlZFxuIiwgYm8pOwo+Pj4+ PiAgICAgICAgICAgZ290byBlcnJvcjsKPj4+Pj4gICAgICAgfQo+Pj4+PiArICAgIHIgPSBhbWRn cHVfdHRtX2JpbmQoYm8tPnRiby50dG0sICZiby0+dGJvLm1lbSk7Cj4+Pj4+ICsgICAgaWYgKHVu bGlrZWx5KHIpKSB7Cj4+Pj4+ICsgICAgICAgIGRldl9lcnIoYm8tPmFkZXYtPmRldiwgIiVwIGJp bmQgZmFpbGVkXG4iLCBibyk7Cj4+Pj4+ICsgICAgICAgIGdvdG8gZXJyb3I7Cj4+Pj4+ICsgICAg fQo+Pj4+PiAgICAgICAgIGJvLT5waW5fY291bnQgPSAxOwo+Pj4+PiAgICAgICBpZiAoZ3B1X2Fk ZHIgIT0gTlVMTCkKPj4+Pj4gQEAgLTkxOCw2ICs5MjMsOCBAQCB2b2lkIGFtZGdwdV9ib19mZW5j ZShzdHJ1Y3QgYW1kZ3B1X2JvICpibywKPj4+Pj4gc3RydWN0IGZlbmNlICpmZW5jZSwKPj4+Pj4g ICB1NjQgYW1kZ3B1X2JvX2dwdV9vZmZzZXQoc3RydWN0IGFtZGdwdV9ibyAqYm8pCj4+Pj4+ICAg ewo+Pj4+PiAgICAgICBXQVJOX09OX09OQ0UoYm8tPnRiby5tZW0ubWVtX3R5cGUgPT0gVFRNX1BM X1NZU1RFTSk7Cj4+Pj4+ICsgICAgV0FSTl9PTl9PTkNFKGJvLT50Ym8ubWVtLm1lbV90eXBlID09 IFRUTV9QTF9UVCAmJgo+Pj4+PiArICAgICAgICAgICAgICFhbWRncHVfdHRtX2lzX2JvdW5kKGJv LT50Ym8udHRtKSk7Cj4+Pj4+IFdBUk5fT05fT05DRSghd3dfbXV0ZXhfaXNfbG9ja2VkKCZiby0+ dGJvLnJlc3YtPmxvY2spICYmCj4+Pj4+ICAgICAgICAgICAgICAgICFiby0+cGluX2NvdW50KTsK Pj4+Pj4gICBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0 bS5jCj4+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5jCj4+Pj4+ IGluZGV4IDQzMzdiM2EuLmMyOTRhYTkgMTAwNjQ0Cj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV90dG0uYwo+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfdHRtLmMKPj4+Pj4gQEAgLTI1Niw4ICsyNTYsMTIgQEAgc3RhdGljIGlu dCBhbWRncHVfbW92ZV9ibGl0KHN0cnVjdAo+Pj4+PiB0dG1fYnVmZmVyX29iamVjdCAqYm8sCj4+ Pj4+ICAgICAgIG5ld19zdGFydCA9ICh1NjQpbmV3X21lbS0+c3RhcnQgPDwgUEFHRV9TSElGVDsK Pj4+Pj4gICAgICAgICBzd2l0Y2ggKG9sZF9tZW0tPm1lbV90eXBlKSB7Cj4+Pj4+IC0gICAgY2Fz ZSBUVE1fUExfVlJBTToKPj4+Pj4gICAgICAgY2FzZSBUVE1fUExfVFQ6Cj4+Pj4+ICsgICAgICAg IHIgPSBhbWRncHVfdHRtX2JpbmQoYm8tPnR0bSwgb2xkX21lbSk7Cj4+Pj4+ICsgICAgICAgIGlm IChyKQo+Pj4+PiArICAgICAgICAgICAgcmV0dXJuIHI7Cj4+Pj4+ICsKPj4+Pj4gKyAgICBjYXNl IFRUTV9QTF9WUkFNOgo+Pj4+PiAgICAgICAgICAgb2xkX3N0YXJ0ICs9IGJvLT5iZGV2LT5tYW5b b2xkX21lbS0+bWVtX3R5cGVdLmdwdV9vZmZzZXQ7Cj4+Pj4+ICAgICAgICAgICBicmVhazsKPj4+ Pj4gICAgICAgZGVmYXVsdDoKPj4+Pj4gQEAgLTI2NSw4ICsyNjksMTIgQEAgc3RhdGljIGludCBh bWRncHVfbW92ZV9ibGl0KHN0cnVjdAo+Pj4+PiB0dG1fYnVmZmVyX29iamVjdCAqYm8sCj4+Pj4+ ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4+Pj4gICAgICAgfQo+Pj4+PiAgICAgICBzd2l0 Y2ggKG5ld19tZW0tPm1lbV90eXBlKSB7Cj4+Pj4+IC0gICAgY2FzZSBUVE1fUExfVlJBTToKPj4+ Pj4gICAgICAgY2FzZSBUVE1fUExfVFQ6Cj4+Pj4+ICsgICAgICAgIHIgPSBhbWRncHVfdHRtX2Jp bmQoYm8tPnR0bSwgbmV3X21lbSk7Cj4+Pj4+ICsgICAgICAgIGlmIChyKQo+Pj4+PiArICAgICAg ICAgICAgcmV0dXJuIHI7Cj4+Pj4+ICsKPj4+Pj4gKyAgICBjYXNlIFRUTV9QTF9WUkFNOgo+Pj4+ PiAgICAgICAgICAgbmV3X3N0YXJ0ICs9IGJvLT5iZGV2LT5tYW5bbmV3X21lbS0+bWVtX3R5cGVd LmdwdV9vZmZzZXQ7Cj4+Pj4+ICAgICAgICAgICBicmVhazsKPj4+Pj4gICAgICAgZGVmYXVsdDoK Pj4+Pj4gQEAgLTYzOSw3ICs2NDcsNiBAQCBzdGF0aWMgaW50IGFtZGdwdV90dG1fYmFja2VuZF9i aW5kKHN0cnVjdAo+Pj4+PiB0dG1fdHQgKnR0bSwKPj4+Pj4gICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHR0bV9tZW1fcmVnICpib19tZW0pCj4+Pj4+ICAgewo+Pj4+PiAgICAgICBzdHJ1Y3Qg YW1kZ3B1X3R0bV90dCAqZ3R0ID0gKHZvaWQqKXR0bTsKPj4+Pj4gLSAgICB1aW50MzJfdCBmbGFn cyA9IGFtZGdwdV90dG1fdHRfcHRlX2ZsYWdzKGd0dC0+YWRldiwgdHRtLAo+Pj4+PiBib19tZW0p Owo+Pj4+PiAgICAgICBpbnQgcjsKPj4+Pj4gICAgICAgICBpZiAoZ3R0LT51c2VycHRyKSB7Cj4+ Pj4+IEBAIC02NjAsNiArNjY3LDI2IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X3R0bV9iYWNrZW5kX2Jp bmQoc3RydWN0Cj4+Pj4+IHR0bV90dCAqdHRtLAo+Pj4+PiAgICAgICAgICAgYm9fbWVtLT5tZW1f dHlwZSA9PSBBTURHUFVfUExfT0EpCj4+Pj4+ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4+ Pj4gICArICAgIHJldHVybiAwOwo+Pj4+PiArfQo+Pj4+PiArCj4+Pj4+ICtib29sIGFtZGdwdV90 dG1faXNfYm91bmQoc3RydWN0IHR0bV90dCAqdHRtKQo+Pj4+PiArewo+Pj4+PiArICAgIHN0cnVj dCBhbWRncHVfdHRtX3R0ICpndHQgPSAodm9pZCAqKXR0bTsKPj4+Pj4gKwo+Pj4+PiArICAgIHJl dHVybiBndHQgJiYgIWxpc3RfZW1wdHkoJmd0dC0+bGlzdCk7Cj4+Pj4+ICt9Cj4+Pj4+ICsKPj4+ Pj4gK2ludCBhbWRncHVfdHRtX2JpbmQoc3RydWN0IHR0bV90dCAqdHRtLCBzdHJ1Y3QgdHRtX21l bV9yZWcgKmJvX21lbSkKPj4+Pj4gK3sKPj4+Pj4gKyAgICBzdHJ1Y3QgYW1kZ3B1X3R0bV90dCAq Z3R0ID0gKHZvaWQgKil0dG07Cj4+Pj4+ICsgICAgdWludDMyX3QgZmxhZ3M7Cj4+Pj4+ICsgICAg aW50IHI7Cj4+Pj4+ICsKPj4+Pj4gKyAgICBpZiAoIXR0bSB8fCBhbWRncHVfdHRtX2lzX2JvdW5k KHR0bSkpCj4+Pj4+ICsgICAgICAgIHJldHVybiAwOwo+Pj4+PiArCj4+Pj4+ICsgICAgZmxhZ3Mg PSBhbWRncHVfdHRtX3R0X3B0ZV9mbGFncyhndHQtPmFkZXYsIHR0bSwgYm9fbWVtKTsKPj4+Pj4g ICAgICAgciA9IGFtZGdwdV9nYXJ0X2JpbmQoZ3R0LT5hZGV2LCBndHQtPm9mZnNldCwgdHRtLT5u dW1fcGFnZXMsCj4+Pj4+ICAgICAgICAgICB0dG0tPnBhZ2VzLCBndHQtPnR0bS5kbWFfYWRkcmVz cywgZmxhZ3MpOwo+Pj4+PiAgIGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfdHRtLmgKPj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf dHRtLmgKPj4+Pj4gaW5kZXggNzJmNmJmYy4uMjE0YmFlOSAxMDA2NDQKPj4+Pj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3R0bS5oCj4+Pj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV90dG0uaAo+Pj4+PiBAQCAtNzcsNCArNzcsNyBAQCBp bnQgYW1kZ3B1X2ZpbGxfYnVmZmVyKHN0cnVjdCBhbWRncHVfYm8gKmJvLAo+Pj4+PiAgICAgICAg ICAgICAgIHN0cnVjdCBmZW5jZSAqKmZlbmNlKTsKPj4+Pj4gICAgIGludCBhbWRncHVfbW1hcChz dHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOwo+Pj4+PiArYm9v bCBhbWRncHVfdHRtX2lzX2JvdW5kKHN0cnVjdCB0dG1fdHQgKnR0bSk7Cj4+Pj4+ICtpbnQgYW1k Z3B1X3R0bV9iaW5kKHN0cnVjdCB0dG1fdHQgKnR0bSwgc3RydWN0IHR0bV9tZW1fcmVnICpib19t ZW0pOwo+Pj4+PiArCj4+Pj4+ICAgI2VuZGlmCj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXZkLmMKPj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfdXZkLmMKPj4+Pj4gaW5kZXggNTg4OGU4YS4uZmFiN2JiMSAxMDA2NDQK Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3V2ZC5jCj4+Pj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91dmQuYwo+Pj4+PiBAQCAt ODkxLDYgKzg5MSwxMCBAQCBpbnQgYW1kZ3B1X3V2ZF9yaW5nX3BhcnNlX2NzKHN0cnVjdAo+Pj4+ PiBhbWRncHVfY3NfcGFyc2VyICpwYXJzZXIsIHVpbnQzMl90IGliX2lkeCkKPj4+Pj4gICAgICAg ICAgIHJldHVybiAtRUlOVkFMOwo+Pj4+PiAgICAgICB9Cj4+Pj4+ICAgKyAgICByID0gYW1kZ3B1 X2NzX3N5c3ZtX2FjY2Vzc19yZXF1aXJlZChwYXJzZXIpOwo+Pj4+PiArICAgIGlmIChyKQo+Pj4+ PiArICAgICAgICByZXR1cm4gcjsKPj4+Pj4gKwo+Pj4+PiAgICAgICBjdHgucGFyc2VyID0gcGFy c2VyOwo+Pj4+PiAgICAgICBjdHguYnVmX3NpemVzID0gYnVmX3NpemVzOwo+Pj4+PiAgICAgICBj dHguaWJfaWR4ID0gaWJfaWR4Owo+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3ZjZS5jCj4+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X3ZjZS5jCj4+Pj4+IGluZGV4IDliNzFkNmMuLmIwYzY3MDIgMTAwNjQ0Cj4+Pj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92Y2UuYwo+Pj4+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmNlLmMKPj4+Pj4gQEAgLTYzNCw3ICs2 MzQsMTEgQEAgaW50IGFtZGdwdV92Y2VfcmluZ19wYXJzZV9jcyhzdHJ1Y3QKPj4+Pj4gYW1kZ3B1 X2NzX3BhcnNlciAqcCwgdWludDMyX3QgaWJfaWR4KQo+Pj4+PiAgICAgICB1aW50MzJfdCBhbGxv Y2F0ZWQgPSAwOwo+Pj4+PiAgICAgICB1aW50MzJfdCB0bXAsIGhhbmRsZSA9IDA7Cj4+Pj4+ICAg ICAgIHVpbnQzMl90ICpzaXplID0gJnRtcDsKPj4+Pj4gLSAgICBpbnQgaSwgciA9IDAsIGlkeCA9 IDA7Cj4+Pj4+ICsgICAgaW50IGksIHIsIGlkeCA9IDA7Cj4+Pj4+ICsKPj4+Pj4gKyAgICByID0g YW1kZ3B1X2NzX3N5c3ZtX2FjY2Vzc19yZXF1aXJlZChwKTsKPj4+Pj4gKyAgICBpZiAocikKPj4+ Pj4gKyAgICAgICAgcmV0dXJuIHI7Cj4+Pj4+ICAgICAgICAgd2hpbGUgKGlkeCA8IGliLT5sZW5n dGhfZHcpIHsKPj4+Pj4gICAgICAgICAgIHVpbnQzMl90IGxlbiA9IGFtZGdwdV9nZXRfaWJfdmFs dWUocCwgaWJfaWR4LCBpZHgpOwo+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfdm0uYwo+Pj4+PiBpbmRleCA3NjYwZjgyLi5hNTQ5YWJkIDEwMDY0NAo+Pj4+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwo+Pj4+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYwo+Pj4+PiBAQCAtMTE2Miw3ICsxMTYy LDggQEAgaW50IGFtZGdwdV92bV9ib191cGRhdGUoc3RydWN0IGFtZGdwdV9kZXZpY2UKPj4+Pj4g KmFkZXYsCj4+Pj4+ICAgICAgIH0KPj4+Pj4gICAgICAgICBmbGFncyA9IGFtZGdwdV90dG1fdHRf cHRlX2ZsYWdzKGFkZXYsIGJvX3ZhLT5iby0+dGJvLnR0bSwKPj4+Pj4gbWVtKTsKPj4+Pj4gLSAg ICBndHRfZmxhZ3MgPSAoYWRldiA9PSBib192YS0+Ym8tPmFkZXYpID8gZmxhZ3MgOiAwOwo+Pj4+ PiArICAgIGd0dF9mbGFncyA9IChhbWRncHVfdHRtX2lzX2JvdW5kKGJvX3ZhLT5iby0+dGJvLnR0 bSkgJiYKPj4+Pj4gKyAgICAgICAgYWRldiA9PSBib192YS0+Ym8tPmFkZXYpID8gZmxhZ3MgOiAw Owo+Pj4+PiAgICAgICAgIHNwaW5fbG9jaygmdm0tPnN0YXR1c19sb2NrKTsKPj4+Pj4gICAgICAg aWYgKCFsaXN0X2VtcHR5KCZib192YS0+dm1fc3RhdHVzKSkKPj4+Pgo+Pj4KPj4+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+PiBhbWQtZ2Z4IG1haWxp bmcgbGlzdAo+Pj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4+IGh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo+Pgo+Cj4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBhbWQtZ2Z4IG1haWxp bmcgbGlzdAo+IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4CgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK