From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zhang, Jerry (Junwei)" Subject: Re: [PATCH] drm/amdgpu: fix vm size and block size for VMPT (v3) Date: Wed, 5 Apr 2017 10:41:32 +0800 Message-ID: <58E4595C.9040406@amd.com> References: <1491014612-12448-1-git-send-email-Jerry.Zhang@amd.com> <58E4523D.8080005@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: 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: "Deucher, Alexander" , "Koenig, Christian" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" T24gMDQvMDUvMjAxNyAxMDoyNyBBTSwgQWxleCBEZXVjaGVyIHdyb3RlOgo+IE9uIFR1ZSwgQXBy IDQsIDIwMTcgYXQgMTA6MTEgUE0sIFpoYW5nLCBKZXJyeSAoSnVud2VpKQo+IDxKZXJyeS5aaGFu Z0BhbWQuY29tPiB3cm90ZToKPj4gT24gMDQvMDQvMjAxNyAwMzozNCBBTSwgRGV1Y2hlciwgQWxl eGFuZGVyIHdyb3RlOgo+Pj4+Cj4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPj4+PiBG cm9tOiBKdW53ZWkgWmhhbmcgW21haWx0bzpKZXJyeS5aaGFuZ0BhbWQuY29tXQo+Pj4+IFNlbnQ6 IEZyaWRheSwgTWFyY2ggMzEsIDIwMTcgMTA6NDQgUE0KPj4+PiBUbzogRGV1Y2hlciwgQWxleGFu ZGVyOyBLb2VuaWcsIENocmlzdGlhbgo+Pj4+IENjOiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZzsgWmhhbmcsIEplcnJ5Cj4+Pj4gU3ViamVjdDogW1BBVENIXSBkcm0vYW1kZ3B1OiBmaXgg dm0gc2l6ZSBhbmQgYmxvY2sgc2l6ZSBmb3IgVk1QVCAodjMpCj4+Pj4KPj4+PiBGcm9tOiAiWmhh bmcsIEplcnJ5IiA8SmVycnkuWmhhbmdAYW1kLmNvbT4KPj4+Pgo+Pj4+IHYyOiBzZXQgYm90aCBv ZiB0aGVtIGluIGdtYwo+Pj4+IHYzOiBtb3ZlIHZtIHNpemUgYW5kIGJsb2NrIHNpemUgaW4gdm0g bWFuYWdlcgo+Pj4+Cj4+Pj4gU2lnbmVkLW9mZi1ieTogSnVud2VpIFpoYW5nIDxKZXJyeS5aaGFu Z0BhbWQuY29tPgo+Pj4+IC0tLQo+Pj4+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2RldmljZS5jIHwgIDggLS0tLS0tLS0KPj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV92bS5jICAgICB8IDIyICsrKysrKysrKysrKy0tLS0tLS0tLQo+Pj4+IC0KPj4+ PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5oICAgICB8ICA0ICsrKy0K Pj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeGh1Yl92MV8wLmMgICB8ICAyICst Cj4+Pj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjZfMC5jICAgICAgfCAxMCAr KysrKysrKy0tCj4+Pj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjdfMC5jICAg ICAgfCAgOSArKysrKysrLS0KPj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192 OF8wLmMgICAgICB8ICA5ICsrKysrKystLQo+Pj4+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvZ21jX3Y5XzAuYyAgICAgIHwgMjEgKysrKysrKysrKysrKy0tLS0tLS0tCj4+Pj4gICBkcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9tbWh1Yl92MV8wLmMgICAgfCAgMiArLQo+Pj4+ICAgOSBm aWxlcyBjaGFuZ2VkLCA1MiBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMK Pj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYwo+Pj4+IGlu ZGV4IGZiYjRhZmIuLjFkMGM3NDIgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2RldmljZS5jCj4+Pj4gQEAgLTEwNDEsMTQgKzEwNDEsNiBAQCBzdGF0aWMg Ym9vbCBhbWRncHVfY2hlY2tfcG90X2FyZ3VtZW50KGludCBhcmcpCj4+Pj4KPj4+PiAgIHN0YXRp YyB2b2lkIGFtZGdwdV9nZXRfYmxvY2tfc2l6ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikK Pj4+PiAgIHsKPj4+PiAtICAgICAvKiBmcm9tIEFJLCBhc2ljIHN0YXJ0cyB0byBzdXBwb3J0IG11 bHRpcGxlIGxldmVsIFZNUFQgKi8KPj4+PiAtICAgICBpZiAoYWRldi0+YXNpY190eXBlID49IENI SVBfVkVHQTEwKSB7Cj4+Pj4gLSAgICAgICAgICAgICBpZiAoYW1kZ3B1X3ZtX2Jsb2NrX3NpemUg IT0gOSkKPj4+PiAtICAgICAgICAgICAgICAgICAgICAgZGV2X3dhcm4oYWRldi0+ZGV2LAo+Pj4+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTXVsdGktVk1QVCBsaW1pdHMgYmxvY2sg c2l6ZSB0byBvbmUKPj4+PiBwYWdlIVxuIik7Cj4+Pj4gLSAgICAgICAgICAgICBhbWRncHVfdm1f YmxvY2tfc2l6ZSA9IDk7Cj4+Pj4gLSAgICAgICAgICAgICByZXR1cm47Cj4+Pj4gLSAgICAgfQo+ Pj4+ICAgICAgICAgLyogZGVmaW5lcyBudW1iZXIgb2YgYml0cyBpbiBwYWdlIHRhYmxlIHZlcnN1 cyBwYWdlIGRpcmVjdG9yeSwKPj4+PiAgICAgICAgICAqIGEgcGFnZSBpcyA0S0Igc28gd2UgaGF2 ZSAxMiBiaXRzIG9mZnNldCwgbWluaW11bSA5IGJpdHMgaW4gdGhlCj4+Pj4gICAgICAgICAgKiBw YWdlIHRhYmxlIGFuZCB0aGUgcmVtYWluaW5nIGJpdHMgYXJlIGluIHRoZSBwYWdlIGRpcmVjdG9y eSAqLwo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf dm0uYwo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPj4+PiBp bmRleCA0M2FkYzRiLi40NmQzZjFhIDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV92bS5jCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X3ZtLmMKPj4+PiBAQCAtMTAwLDEzICsxMDAsMTQgQEAgc3RhdGljIHVuc2lnbmVk IGFtZGdwdV92bV9udW1fZW50cmllcyhzdHJ1Y3QKPj4+PiBhbWRncHVfZGV2aWNlICphZGV2LAo+ Pj4+ICAgICAgICAgaWYgKGxldmVsID09IDApCj4+Pj4gICAgICAgICAgICAgICAgIC8qIEZvciB0 aGUgcm9vdCBkaXJlY3RvcnkgKi8KPj4+PiAgICAgICAgICAgICAgICAgcmV0dXJuIGFkZXYtPnZt X21hbmFnZXIubWF4X3BmbiA+Pgo+Pj4+IC0gICAgICAgICAgICAgICAgICAgICAoYW1kZ3B1X3Zt X2Jsb2NrX3NpemUgKiBhZGV2LQo+Pj4+PiB2bV9tYW5hZ2VyLm51bV9sZXZlbCk7Cj4+Pj4gKyAg ICAgICAgICAgICAgICAgICAgIChhZGV2LT52bV9tYW5hZ2VyLmJsb2NrX3NpemUgKgo+Pj4+ICsg ICAgICAgICAgICAgICAgICAgICAgYWRldi0+dm1fbWFuYWdlci5udW1fbGV2ZWwpOwo+Pj4+ICAg ICAgICAgZWxzZSBpZiAobGV2ZWwgPT0gYWRldi0+dm1fbWFuYWdlci5udW1fbGV2ZWwpCj4+Pj4g ICAgICAgICAgICAgICAgIC8qIEZvciB0aGUgcGFnZSB0YWJsZXMgb24gdGhlIGxlYXZlcyAqLwo+ Pj4+IC0gICAgICAgICAgICAgcmV0dXJuIEFNREdQVV9WTV9QVEVfQ09VTlQ7Cj4+Pj4gKyAgICAg ICAgICAgICByZXR1cm4gQU1ER1BVX1ZNX1BURV9DT1VOVChhZGV2KTsKPj4+PiAgICAgICAgIGVs c2UKPj4+PiAgICAgICAgICAgICAgICAgLyogRXZlcnl0aGluZyBpbiBiZXR3ZWVuICovCj4+Pj4g LSAgICAgICAgICAgICByZXR1cm4gMSA8PCBhbWRncHVfdm1fYmxvY2tfc2l6ZTsKPj4+PiArICAg ICAgICAgICAgIHJldHVybiAxIDw8IGFkZXYtPnZtX21hbmFnZXIuYmxvY2tfc2l6ZTsKPj4+PiAg IH0KPj4+Pgo+Pj4+ICAgLyoqCj4+Pj4gQEAgLTI3MSw3ICsyNzIsNyBAQCBzdGF0aWMgaW50IGFt ZGdwdV92bV9hbGxvY19sZXZlbHMoc3RydWN0Cj4+Pj4gYW1kZ3B1X2RldmljZSAqYWRldiwKPj4+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGV2ZWwpCj4+Pj4g ICB7Cj4+Pj4gICAgICAgICB1bnNpZ25lZCBzaGlmdCA9IChhZGV2LT52bV9tYW5hZ2VyLm51bV9s ZXZlbCAtIGxldmVsKSAqCj4+Pj4gLSAgICAgICAgICAgICBhbWRncHVfdm1fYmxvY2tfc2l6ZTsK Pj4+PiArICAgICAgICAgICAgIGFkZXYtPnZtX21hbmFnZXIuYmxvY2tfc2l6ZTsKPj4+PiAgICAg ICAgIHVuc2lnbmVkIHB0X2lkeCwgZnJvbSwgdG87Cj4+Pj4gICAgICAgICBpbnQgcjsKPj4+Pgo+ Pj4+IEBAIC05NzAsNyArOTcxLDcgQEAgc3RhdGljIHN0cnVjdCBhbWRncHVfYm8gKmFtZGdwdV92 bV9nZXRfcHQoc3RydWN0Cj4+Pj4gYW1kZ3B1X3B0ZV91cGRhdGVfcGFyYW1zICpwLAo+Pj4+ICAg ICAgICAgdW5zaWduZWQgaWR4LCBsZXZlbCA9IHAtPmFkZXYtPnZtX21hbmFnZXIubnVtX2xldmVs Owo+Pj4+Cj4+Pj4gICAgICAgICB3aGlsZSAoZW50cnktPmVudHJpZXMpIHsKPj4+PiAtICAgICAg ICAgICAgIGlkeCA9IGFkZHIgPj4gKGFtZGdwdV92bV9ibG9ja19zaXplICogbGV2ZWwtLSk7Cj4+ Pj4gKyAgICAgICAgICAgICBpZHggPSBhZGRyID4+IChwLT5hZGV2LT52bV9tYW5hZ2VyLmJsb2Nr X3NpemUgKiBsZXZlbC0tKTsKPj4+PiAgICAgICAgICAgICAgICAgaWR4ICU9IGFtZGdwdV9ib19z aXplKGVudHJ5LT5ibykgLyA4Owo+Pj4+ICAgICAgICAgICAgICAgICBlbnRyeSA9ICZlbnRyeS0+ ZW50cmllc1tpZHhdOwo+Pj4+ICAgICAgICAgfQo+Pj4+IEBAIC05OTcsNyArOTk4LDggQEAgc3Rh dGljIHZvaWQgYW1kZ3B1X3ZtX3VwZGF0ZV9wdGVzKHN0cnVjdAo+Pj4+IGFtZGdwdV9wdGVfdXBk YXRlX3BhcmFtcyAqcGFyYW1zLAo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1aW50NjRfdCBzdGFydCwgdWludDY0X3QgZW5kLAo+Pj4+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50NjRfdCBkc3QsIHVpbnQ2NF90IGZsYWdzKQo+Pj4+ICAgewo+Pj4+ IC0gICAgIGNvbnN0IHVpbnQ2NF90IG1hc2sgPSBBTURHUFVfVk1fUFRFX0NPVU5UIC0gMTsKPj4+ PiArICAgICBzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IHBhcmFtcy0+YWRldjsKPj4+PiAr ICAgICBjb25zdCB1aW50NjRfdCBtYXNrID0gQU1ER1BVX1ZNX1BURV9DT1VOVChhZGV2KSAtIDE7 Cj4+Pj4KPj4+PiAgICAgICAgIHVpbnQ2NF90IGN1cl9wZV9zdGFydCwgY3VyX25wdGVzLCBjdXJf ZHN0Owo+Pj4+ICAgICAgICAgdWludDY0X3QgYWRkcjsgLyogbmV4dCBHUFUgYWRkcmVzcyB0byBi ZSB1cGRhdGVkICovCj4+Pj4gQEAgLTEwMjEsNyArMTAyMyw3IEBAIHN0YXRpYyB2b2lkIGFtZGdw dV92bV91cGRhdGVfcHRlcyhzdHJ1Y3QKPj4+PiBhbWRncHVfcHRlX3VwZGF0ZV9wYXJhbXMgKnBh cmFtcywKPj4+PiAgICAgICAgIGlmICgoYWRkciAmIH5tYXNrKSA9PSAoZW5kICYgfm1hc2spKQo+ Pj4+ICAgICAgICAgICAgICAgICBucHRlcyA9IGVuZCAtIGFkZHI7Cj4+Pj4gICAgICAgICBlbHNl Cj4+Pj4gLSAgICAgICAgICAgICBucHRlcyA9IEFNREdQVV9WTV9QVEVfQ09VTlQgLSAoYWRkciAm IG1hc2spOwo+Pj4+ICsgICAgICAgICAgICAgbnB0ZXMgPSBBTURHUFVfVk1fUFRFX0NPVU5UKGFk ZXYpIC0gKGFkZHIgJiBtYXNrKTsKPj4+Pgo+Pj4+ICAgICAgICAgY3VyX3BlX3N0YXJ0ID0gYW1k Z3B1X2JvX2dwdV9vZmZzZXQocHQpOwo+Pj4+ICAgICAgICAgY3VyX3BlX3N0YXJ0ICs9IChhZGRy ICYgbWFzaykgKiA4Owo+Pj4+IEBAIC0xMDQ5LDcgKzEwNTEsNyBAQCBzdGF0aWMgdm9pZCBhbWRn cHVfdm1fdXBkYXRlX3B0ZXMoc3RydWN0Cj4+Pj4gYW1kZ3B1X3B0ZV91cGRhdGVfcGFyYW1zICpw YXJhbXMsCj4+Pj4gICAgICAgICAgICAgICAgIGlmICgoYWRkciAmIH5tYXNrKSA9PSAoZW5kICYg fm1hc2spKQo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgIG5wdGVzID0gZW5kIC0gYWRkcjsK Pj4+PiAgICAgICAgICAgICAgICAgZWxzZQo+Pj4+IC0gICAgICAgICAgICAgICAgICAgICBucHRl cyA9IEFNREdQVV9WTV9QVEVfQ09VTlQgLSAoYWRkciAmIG1hc2spOwo+Pj4+ICsgICAgICAgICAg ICAgICAgICAgICBucHRlcyA9IEFNREdQVV9WTV9QVEVfQ09VTlQoYWRldikgLSAoYWRkciAmCj4+ Pj4gbWFzayk7Cj4+Pj4KPj4+PiAgICAgICAgICAgICAgICAgbmV4dF9wZV9zdGFydCA9IGFtZGdw dV9ib19ncHVfb2Zmc2V0KHB0KTsKPj4+PiAgICAgICAgICAgICAgICAgbmV4dF9wZV9zdGFydCAr PSAoYWRkciAmIG1hc2spICogODsKPj4+PiBAQCAtMTE5Niw3ICsxMTk4LDcgQEAgc3RhdGljIGlu dCBhbWRncHVfdm1fYm9fdXBkYXRlX21hcHBpbmcoc3RydWN0Cj4+Pj4gYW1kZ3B1X2RldmljZSAq YWRldiwKPj4+PiAgICAgICAgICAqIHJlc2VydmUgc3BhY2UgZm9yIG9uZSBjb21tYW5kIGV2ZXJ5 ICgxIDw8IEJMT0NLX1NJWkUpCj4+Pj4gICAgICAgICAgKiAgZW50cmllcyBvciAyayBkd29yZHMg KHdoYXRldmVyIGlzIHNtYWxsZXIpCj4+Pj4gICAgICAgICAgKi8KPj4+PiAtICAgICBuY21kcyA9 IChucHRlcyA+PiBtaW4oYW1kZ3B1X3ZtX2Jsb2NrX3NpemUsIDExKSkgKyAxOwo+Pj4+ICsgICAg IG5jbWRzID0gKG5wdGVzID4+IG1pbihhZGV2LT52bV9tYW5hZ2VyLmJsb2NrX3NpemUsIDExKSkg KyAxOwo+Pj4+Cj4+Pj4gICAgICAgICAvKiBwYWRkaW5nLCBldGMuICovCj4+Pj4gICAgICAgICBu ZHcgPSA2NDsKPj4+PiBAQCAtMjA2Nyw3ICsyMDY5LDcgQEAgdm9pZCBhbWRncHVfdm1fYm9faW52 YWxpZGF0ZShzdHJ1Y3QKPj4+PiBhbWRncHVfZGV2aWNlICphZGV2LAo+Pj4+ICAgaW50IGFtZGdw dV92bV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2 bSkKPj4+PiAgIHsKPj4+PiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGFsaWduID0gbWluKEFNREdQ VV9WTV9QVEJfQUxJR05fU0laRSwKPj4+PiAtICAgICAgICAgICAgIEFNREdQVV9WTV9QVEVfQ09V TlQgKiA4KTsKPj4+PiArICAgICAgICAgICAgIEFNREdQVV9WTV9QVEVfQ09VTlQoYWRldikgKiA4 KTsKPj4+PiAgICAgICAgIHVuc2lnbmVkIHJpbmdfaW5zdGFuY2U7Cj4+Pj4gICAgICAgICBzdHJ1 Y3QgYW1kZ3B1X3JpbmcgKnJpbmc7Cj4+Pj4gICAgICAgICBzdHJ1Y3QgYW1kX3NjaGVkX3JxICpy cTsKPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Zt LmgKPj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5oCj4+Pj4gaW5k ZXggMTAyYjFmNy4uMTI0MjI2NCAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfdm0uaAo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV92bS5oCj4+Pj4gQEAgLTQ1LDcgKzQ1LDcgQEAKPj4+PiAgICNkZWZpbmUgQU1ER1BV X1ZNX01BWF9VUERBVEVfU0laRSAgICAweDNGRkZGCj4+Pj4KPj4+PiAgIC8qIG51bWJlciBvZiBl bnRyaWVzIGluIHBhZ2UgdGFibGUgKi8KPj4+PiAtI2RlZmluZSBBTURHUFVfVk1fUFRFX0NPVU5U ICgxIDw8IGFtZGdwdV92bV9ibG9ja19zaXplKQo+Pj4+ICsjZGVmaW5lIEFNREdQVV9WTV9QVEVf Q09VTlQoYWRldikgKDEgPDwgYWRldi0KPj4+Pj4gdm1fbWFuYWdlci5ibG9ja19zaXplKQo+Pj4K Pj4+Cj4+PiBGb3Igc2FmZXR5LCBwdXQgcGFyZW5zIGFyb3VuZCBhZGV2LiAgRS5nLiwKPj4+ICNk ZWZpbmUgQU1ER1BVX1ZNX1BURV9DT1VOVChhZGV2KSAoMSA8PCAoYWRldiktPnZtX21hbmFnZXIu YmxvY2tfc2l6ZSkKPj4KPj4KPj4gWWVhaCwgdGhhbmtzIHRvIHBvaW50IGl0IG91dC4KPj4KPj4+ Cj4+PiBXaXRoIHRoYXQgZml4ZWQ6Cj4+PiBSZXZpZXdlZC1ieTogQWxleCBEZXVjaGVyIDxhbGV4 YW5kZXIuZGV1Y2hlckBhbWQuY29tPgo+Pj4KPj4+IEFzIGEgZm9sbG93IG9uIHBhdGNoLCBpdCB3 b3VsZCBiZSBuaWNlIHRvIGFkZCBzb21lIHJlYXNvbmFibGUgY2xhbXBpbmcgaW4KPj4+IHRoZQo+ Pj4gZ21jIGZpbGVzIHNvIHdlIGNhbiBzdGlsbCBvdmVycmlkZSB0aGUgZGVmYXVsdCBzZXR0aW5n cyBhbmQgbm90IGNhdXNlIHRvbwo+Pj4gbXVjaAo+Pj4gcHJvYmxlbSB3aXRoIG11bHRpcGxlIGFz aWNzIGluIHRoZSBzYW1lIHN5c3RlbS4KPj4KPj4KPj4gQ291bGQgeW91IGVsYWJvcmF0ZSBpdCBh IGJpdCBtb3JlLCBhYm91dCAiY2xhbXBpbmciPwo+Cj4gZS5nLiwgc2V0dGluZyBhbWRncHVfdm1f YmxvY2tfc2l6ZSB0byAtMSAoYXV0bykgYnQgZGVmYXVsdCBhbmQgc2V0dGluZwo+IGEgcmVhc29u YWJsZSBkZWZhdWx0IGZvciBlYWNoIGdtYyBpZiBpdCdzIHNldCB0byAwLCBvciBvdmVycmlkaW5n IGlmCj4gaXQncyBub3Qgc2V0IHRvIC0xLiAgVGhhdCB3YXkgd2UgY2FuIGhhdmUgZGlmZmVyZW50 IGRlZmF1bHRzIG9uIGVhY2gKPiBmYW1pbHkgYW5kIHN0aWxsIG92ZXJyaWRlIGZvciB0ZXN0aW5n L2RlYnVnZ2luZy4KClRoYW5rcyBmb3IgeW91ciBleHBsYW5hdGlvbi4KTm93IEkgZ290IHRoZSAi Y2xhbXBpbmciIDopCgpKZXJyeQoKPgo+IEFsZXgKPgo+Cj4+Cj4+IEplcnJ5Cj4+Cj4+Pgo+Pj4g QWxleAo+Pj4KPj4+Pgo+Pj4+ICAgLyogUFRCcyAoUGFnZSBUYWJsZSBCbG9ja3MpIG5lZWQgdG8g YmUgYWxpZ25lZCB0byAzMksgKi8KPj4+PiAgICNkZWZpbmUgQU1ER1BVX1ZNX1BUQl9BTElHTl9T SVpFICAgMzI3NjgKPj4+PiBAQCAtMTU1LDYgKzE1NSw4IEBAIHN0cnVjdCBhbWRncHVfdm1fbWFu YWdlciB7Cj4+Pj4KPj4+PiAgICAgICAgIHVpbnQ2NF90ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtYXhfcGZuOwo+Pj4+ICAgICAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG51bV9sZXZlbDsKPj4+PiArICAgICB1aW50NjRfdCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdm1fc2l6ZTsKPj4+PiArICAgICB1aW50MzJfdCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYmxvY2tfc2l6ZTsKPj4+PiAgICAgICAgIC8qIHZyYW0gYmFz ZSBhZGRyZXNzIGZvciBwYWdlIHRhYmxlIGVudHJ5ICAqLwo+Pj4+ICAgICAgICAgdTY0ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZyYW1fYmFzZV9vZmZzZXQ7Cj4+Pj4gICAg ICAgICAvKiBpcyB2bSBlbmFibGVkPyAqLwo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9nZnhodWJfdjFfMC5jCj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9nZnhodWJfdjFfMC5jCj4+Pj4gaW5kZXggMzBlZjMxMi4uOTIyM2MyYiAxMDA2NDQKPj4+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhodWJfdjFfMC5jCj4+Pj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4aHViX3YxXzAuYwo+Pj4+IEBAIC0yMjIs NyArMjIyLDcgQEAgaW50IGdmeGh1Yl92MV8wX2dhcnRfZW5hYmxlKHN0cnVjdCBhbWRncHVfZGV2 aWNlCj4+Pj4gKmFkZXYpCj4+Pj4KPj4+PiAgICAgICAgIEVYRUNVVEVfUFJPVEVDVElPTl9GQVVM VF9FTkFCTEVfREVGQVVMVCwgMSk7Cj4+Pj4gICAgICAgICAgICAgICAgIHRtcCA9IFJFR19TRVRf RklFTEQodG1wLCBWTV9DT05URVhUMV9DTlRMLAo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUEFHRV9UQUJMRV9CTE9DS19TSVpFLAo+Pj4+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhbWRncHVfdm1fYmxvY2tfc2l6ZSAtIDkpOwo+Pj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFkZXYtPnZtX21hbmFnZXIuYmxvY2tfc2l6ZSAtIDkpOwo+Pj4+ ICAgICAgICAgICAgICAgICBXUkVHMzIoU09DMTVfUkVHX09GRlNFVChHQywgMCwKPj4+PiBtbVZN X0NPTlRFWFQxX0NOVEwpICsgaSwgdG1wKTsKPj4+PiAgICAgICAgICAgICAgICAgV1JFRzMyKFNP QzE1X1JFR19PRkZTRVQoR0MsIDAsCj4+Pj4gbW1WTV9DT05URVhUMV9QQUdFX1RBQkxFX1NUQVJU X0FERFJfTE8zMikgKyBpKjIsIDApOwo+Pj4+ICAgICAgICAgICAgICAgICBXUkVHMzIoU09DMTVf UkVHX09GRlNFVChHQywgMCwKPj4+PiBtbVZNX0NPTlRFWFQxX1BBR0VfVEFCTEVfU1RBUlRfQURE Ul9ISTMyKSArIGkqMiwgMCk7Cj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2dtY192Nl8wLmMKPj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192 Nl8wLmMKPj4+PiBpbmRleCBkOTU4NjYwLi4zMGQ1YzQyIDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192Nl8wLmMKPj4+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9nbWNfdjZfMC5jCj4+Pj4gQEAgLTU0Myw3ICs1NDMsOCBAQCBzdGF0aWMg aW50IGdtY192Nl8wX2dhcnRfZW5hYmxlKHN0cnVjdAo+Pj4+IGFtZGdwdV9kZXZpY2UgKmFkZXYp Cj4+Pj4gICAgICAgICBXUkVHMzIobW1WTV9DT05URVhUMV9DTlRMLAo+Pj4+ICAgICAgICAgICAg ICAgIFZNX0NPTlRFWFQxX0NOVExfX0VOQUJMRV9DT05URVhUX01BU0sgfAo+Pj4+ICAgICAgICAg ICAgICAgICgxVUwgPDwgVk1fQ09OVEVYVDFfQ05UTF9fUEFHRV9UQUJMRV9ERVBUSF9fU0hJRlQp IHwKPj4+PiAtICAgICAgICAgICAgKChhbWRncHVfdm1fYmxvY2tfc2l6ZSAtIDkpIDw8Cj4+Pj4g Vk1fQ09OVEVYVDFfQ05UTF9fUEFHRV9UQUJMRV9CTE9DS19TSVpFX19TSElGVCkpOwo+Pj4+ICsg ICAgICAgICAgICAoKGFkZXYtPnZtX21hbmFnZXIuYmxvY2tfc2l6ZSAtIDkpCj4+Pj4gKyAgICAg ICAgICAgIDw8IFZNX0NPTlRFWFQxX0NOVExfX1BBR0VfVEFCTEVfQkxPQ0tfU0laRV9fU0hJRlQp KTsKPj4+PiAgICAgICAgIGlmIChhbWRncHVfdm1fZmF1bHRfc3RvcCA9PQo+Pj4+IEFNREdQVV9W TV9GQVVMVF9TVE9QX0FMV0FZUykKPj4+PiAgICAgICAgICAgICAgICAgZ21jX3Y2XzBfc2V0X2Zh dWx0X2VuYWJsZV9kZWZhdWx0KGFkZXYsIGZhbHNlKTsKPj4+PiAgICAgICAgIGVsc2UKPj4+PiBA QCAtODQ4LDcgKzg0OSwxMiBAQCBzdGF0aWMgaW50IGdtY192Nl8wX3N3X2luaXQodm9pZCAqaGFu ZGxlKQo+Pj4+ICAgICAgICAgaWYgKHIpCj4+Pj4gICAgICAgICAgICAgICAgIHJldHVybiByOwo+ Pj4+Cj4+Pj4gLSAgICAgYWRldi0+dm1fbWFuYWdlci5tYXhfcGZuID0gYW1kZ3B1X3ZtX3NpemUg PDwgMTg7Cj4+Pj4gKyAgICAgYWRldi0+dm1fbWFuYWdlci52bV9zaXplID0gYW1kZ3B1X3ZtX3Np emU7Cj4+Pj4gKyAgICAgYWRldi0+dm1fbWFuYWdlci5ibG9ja19zaXplID0gYW1kZ3B1X3ZtX2Js b2NrX3NpemU7Cj4+Pj4gKyAgICAgYWRldi0+dm1fbWFuYWdlci5tYXhfcGZuID0gYWRldi0+dm1f bWFuYWdlci52bV9zaXplIDw8IDE4Owo+Pj4+ICsKPj4+PiArICAgICBEUk1fSU5GTygidm0gc2l6 ZSBpcyAlZCBHQiwgYmxvY2sgc2l6ZSBpcyAlZC1iaXRcbiIsCj4+Pj4gKyAgICAgICAgICAgICBh ZGV2LT52bV9tYW5hZ2VyLnZtX3NpemUsIGFkZXYtCj4+Pj4+IHZtX21hbmFnZXIuYmxvY2tfc2l6 ZSk7Cj4+Pj4KPj4+PiAgICAgICAgIGFkZXYtPm1jLm1jX21hc2sgPSAweGZmZmZmZmZmZmZVTEw7 Cj4+Pj4KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y3 XzAuYwo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y3XzAuYwo+Pj4+IGlu ZGV4IDBjMGE2MDEuLjk0MjdjN2QgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvZ21jX3Y3XzAuYwo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2dtY192N18wLmMKPj4+PiBAQCAtNjM5LDcgKzYzOSw3IEBAIHN0YXRpYyBpbnQgZ21jX3Y3XzBf Z2FydF9lbmFibGUoc3RydWN0Cj4+Pj4gYW1kZ3B1X2RldmljZSAqYWRldikKPj4+PiAgICAgICAg IHRtcCA9IFJFR19TRVRfRklFTEQodG1wLCBWTV9DT05URVhUMV9DTlRMLAo+Pj4+IEVOQUJMRV9D T05URVhULCAxKTsKPj4+PiAgICAgICAgIHRtcCA9IFJFR19TRVRfRklFTEQodG1wLCBWTV9DT05U RVhUMV9DTlRMLAo+Pj4+IFBBR0VfVEFCTEVfREVQVEgsIDEpOwo+Pj4+ICAgICAgICAgdG1wID0g UkVHX1NFVF9GSUVMRCh0bXAsIFZNX0NPTlRFWFQxX0NOVEwsCj4+Pj4gUEFHRV9UQUJMRV9CTE9D S19TSVpFLAo+Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgYW1kZ3B1X3ZtX2Jsb2NrX3Np emUgLSA5KTsKPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgIGFkZXYtPnZtX21hbmFnZXIu YmxvY2tfc2l6ZSAtIDkpOwo+Pj4+ICAgICAgICAgV1JFRzMyKG1tVk1fQ09OVEVYVDFfQ05UTCwg dG1wKTsKPj4+PiAgICAgICAgIGlmIChhbWRncHVfdm1fZmF1bHRfc3RvcCA9PQo+Pj4+IEFNREdQ VV9WTV9GQVVMVF9TVE9QX0FMV0FZUykKPj4+PiAgICAgICAgICAgICAgICAgZ21jX3Y3XzBfc2V0 X2ZhdWx0X2VuYWJsZV9kZWZhdWx0KGFkZXYsIGZhbHNlKTsKPj4+PiBAQCAtOTk4LDcgKzk5OCwx MiBAQCBzdGF0aWMgaW50IGdtY192N18wX3N3X2luaXQodm9pZCAqaGFuZGxlKQo+Pj4+ICAgICAg ICAgICogQ3VycmVudGx5IHNldCB0byA0R0IgKCgxIDw8IDIwKSA0ayBwYWdlcykuCj4+Pj4gICAg ICAgICAgKiBNYXggR1BVVk0gc2l6ZSBmb3IgY2F5bWFuIGFuZCBTSSBpcyA0MCBiaXRzLgo+Pj4+ ICAgICAgICAgICovCj4+Pj4gLSAgICAgYWRldi0+dm1fbWFuYWdlci5tYXhfcGZuID0gYW1kZ3B1 X3ZtX3NpemUgPDwgMTg7Cj4+Pj4gKyAgICAgYWRldi0+dm1fbWFuYWdlci52bV9zaXplID0gYW1k Z3B1X3ZtX3NpemU7Cj4+Pj4gKyAgICAgYWRldi0+dm1fbWFuYWdlci5ibG9ja19zaXplID0gYW1k Z3B1X3ZtX2Jsb2NrX3NpemU7Cj4+Pj4gKyAgICAgYWRldi0+dm1fbWFuYWdlci5tYXhfcGZuID0g YWRldi0+dm1fbWFuYWdlci52bV9zaXplIDw8IDE4Owo+Pj4+ICsKPj4+PiArICAgICBEUk1fSU5G Tygidm0gc2l6ZSBpcyAlZCBHQiwgYmxvY2sgc2l6ZSBpcyAlZC1iaXRcbiIsCj4+Pj4gKyAgICAg ICAgICAgICBhZGV2LT52bV9tYW5hZ2VyLnZtX3NpemUsIGFkZXYtCj4+Pj4+IHZtX21hbmFnZXIu YmxvY2tfc2l6ZSk7Cj4+Pj4KPj4+PiAgICAgICAgIC8qIFNldCB0aGUgaW50ZXJuYWwgTUMgYWRk cmVzcyBtYXNrCj4+Pj4gICAgICAgICAgKiBUaGlzIGlzIHRoZSBtYXggYWRkcmVzcyBvZiB0aGUg R1BVJ3MKPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y4 XzAuYwo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y4XzAuYwo+Pj4+IGlu ZGV4IGQxOWQxYzUuLjE2NzQyYmUgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvZ21jX3Y4XzAuYwo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2dtY192OF8wLmMKPj4+PiBAQCAtODQ4LDcgKzg0OCw3IEBAIHN0YXRpYyBpbnQgZ21jX3Y4XzBf Z2FydF9lbmFibGUoc3RydWN0Cj4+Pj4gYW1kZ3B1X2RldmljZSAqYWRldikKPj4+PiAgICAgICAg IHRtcCA9IFJFR19TRVRfRklFTEQodG1wLCBWTV9DT05URVhUMV9DTlRMLAo+Pj4+IFdSSVRFX1BS T1RFQ1RJT05fRkFVTFRfRU5BQkxFX0RFRkFVTFQsIDEpOwo+Pj4+ICAgICAgICAgdG1wID0gUkVH X1NFVF9GSUVMRCh0bXAsIFZNX0NPTlRFWFQxX0NOVEwsCj4+Pj4gRVhFQ1VURV9QUk9URUNUSU9O X0ZBVUxUX0VOQUJMRV9ERUZBVUxULCAxKTsKPj4+PiAgICAgICAgIHRtcCA9IFJFR19TRVRfRklF TEQodG1wLCBWTV9DT05URVhUMV9DTlRMLAo+Pj4+IFBBR0VfVEFCTEVfQkxPQ0tfU0laRSwKPj4+ PiAtICAgICAgICAgICAgICAgICAgICAgICAgIGFtZGdwdV92bV9ibG9ja19zaXplIC0gOSk7Cj4+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGV2LT52bV9tYW5hZ2VyLmJsb2NrX3NpemUg LSA5KTsKPj4+PiAgICAgICAgIFdSRUczMihtbVZNX0NPTlRFWFQxX0NOVEwsIHRtcCk7Cj4+Pj4g ICAgICAgICBpZiAoYW1kZ3B1X3ZtX2ZhdWx0X3N0b3AgPT0KPj4+PiBBTURHUFVfVk1fRkFVTFRf U1RPUF9BTFdBWVMpCj4+Pj4gICAgICAgICAgICAgICAgIGdtY192OF8wX3NldF9mYXVsdF9lbmFi bGVfZGVmYXVsdChhZGV2LCBmYWxzZSk7Cj4+Pj4gQEAgLTEwODIsNyArMTA4MiwxMiBAQCBzdGF0 aWMgaW50IGdtY192OF8wX3N3X2luaXQodm9pZCAqaGFuZGxlKQo+Pj4+ICAgICAgICAgICogQ3Vy cmVudGx5IHNldCB0byA0R0IgKCgxIDw8IDIwKSA0ayBwYWdlcykuCj4+Pj4gICAgICAgICAgKiBN YXggR1BVVk0gc2l6ZSBmb3IgY2F5bWFuIGFuZCBTSSBpcyA0MCBiaXRzLgo+Pj4+ICAgICAgICAg ICovCj4+Pj4gLSAgICAgYWRldi0+dm1fbWFuYWdlci5tYXhfcGZuID0gYW1kZ3B1X3ZtX3NpemUg PDwgMTg7Cj4+Pj4gKyAgICAgYWRldi0+dm1fbWFuYWdlci52bV9zaXplID0gYW1kZ3B1X3ZtX3Np emU7Cj4+Pj4gKyAgICAgYWRldi0+dm1fbWFuYWdlci5ibG9ja19zaXplID0gYW1kZ3B1X3ZtX2Js b2NrX3NpemU7Cj4+Pj4gKyAgICAgYWRldi0+dm1fbWFuYWdlci5tYXhfcGZuID0gYWRldi0+dm1f bWFuYWdlci52bV9zaXplIDw8IDE4Owo+Pj4+ICsKPj4+PiArICAgICBEUk1fSU5GTygidm0gc2l6 ZSBpcyAlZCBHQiwgYmxvY2sgc2l6ZSBpcyAlZC1iaXRcbiIsCj4+Pj4gKyAgICAgICAgICAgICBh ZGV2LT52bV9tYW5hZ2VyLnZtX3NpemUsIGFkZXYtCj4+Pj4+IHZtX21hbmFnZXIuYmxvY2tfc2l6 ZSk7Cj4+Pj4KPj4+PiAgICAgICAgIC8qIFNldCB0aGUgaW50ZXJuYWwgTUMgYWRkcmVzcyBtYXNr Cj4+Pj4gICAgICAgICAgKiBUaGlzIGlzIHRoZSBtYXggYWRkcmVzcyBvZiB0aGUgR1BVJ3MKPj4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y5XzAuYwo+Pj4+ IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y5XzAuYwo+Pj4+IGluZGV4IGRmNjlh YWUuLjIxODBlZGIgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Z21jX3Y5XzAuYwo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192OV8w LmMKPj4+PiBAQCAtNTQzLDExICs1NDMsMjMgQEAgc3RhdGljIGludCBnbWNfdjlfMF9zd19pbml0 KHZvaWQgKmhhbmRsZSkKPj4+Pgo+Pj4+ICAgICAgICAgaWYgKGFkZXYtPmZsYWdzICYgQU1EX0lT X0FQVSkgewo+Pj4+ICAgICAgICAgICAgICAgICBhZGV2LT5tYy52cmFtX3R5cGUgPSBBTURHUFVf VlJBTV9UWVBFX1VOS05PV047Cj4+Pj4gKyAgICAgICAgICAgICBhZGV2LT52bV9tYW5hZ2VyLnZt X3NpemUgPSBhbWRncHVfdm1fc2l6ZTsKPj4+PiArICAgICAgICAgICAgIGFkZXYtPnZtX21hbmFn ZXIuYmxvY2tfc2l6ZSA9IGFtZGdwdV92bV9ibG9ja19zaXplOwo+Pj4+ICAgICAgICAgfSBlbHNl IHsKPj4+PiAgICAgICAgICAgICAgICAgLyogWFhYIERvbid0IGtub3cgaG93IHRvIGdldCBWUkFN IHR5cGUgeWV0LiAqLwo+Pj4+ICAgICAgICAgICAgICAgICBhZGV2LT5tYy52cmFtX3R5cGUgPSBB TURHUFVfVlJBTV9UWVBFX0hCTTsKPj4+PiArICAgICAgICAgICAgIC8qCj4+Pj4gKyAgICAgICAg ICAgICAgKiBUbyBmdWxmaWxsIDQtbGV2ZWwgcGFnZSBzdXBwb3J0LAo+Pj4+ICsgICAgICAgICAg ICAgICogdm0gc2l6ZSBpcyAyNTZUQiAoNDhiaXQpLCBtYXhpbXVtIHNpemUgb2YgVmVnYTEwLAo+ Pj4+ICsgICAgICAgICAgICAgICogYmxvY2sgc2l6ZSA1MTIgKDliaXQpCj4+Pj4gKyAgICAgICAg ICAgICAgKi8KPj4+PiArICAgICAgICAgICAgIGFkZXYtPnZtX21hbmFnZXIudm1fc2l6ZSA9IDFV IDw8IDE4Owo+Pj4+ICsgICAgICAgICAgICAgYWRldi0+dm1fbWFuYWdlci5ibG9ja19zaXplID0g OTsKPj4+PiAgICAgICAgIH0KPj4+Pgo+Pj4+ICsgICAgIERSTV9JTkZPKCJ2bSBzaXplIGlzICVk IEdCLCBibG9jayBzaXplIGlzICVkLWJpdFxuIiwKPj4+PiArICAgICAgICAgICAgIGFkZXYtPnZt X21hbmFnZXIudm1fc2l6ZSwgYWRldi0KPj4+Pj4gdm1fbWFuYWdlci5ibG9ja19zaXplKTsKPj4+ PiArCj4+Pj4gICAgICAgICAvKiBUaGlzIGludGVycnVwdCBpcyBWTUMgcGFnZSBmYXVsdC4qLwo+ Pj4+ICAgICAgICAgciA9IGFtZGdwdV9pcnFfYWRkX2lkKGFkZXYsIEFNREdQVV9JSF9DTElFTlRJ RF9WTUMsIDAsCj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRldi0+bWMu dm1fZmF1bHQpOwo+Pj4+IEBAIC01NTcsMTQgKzU2OSw3IEBAIHN0YXRpYyBpbnQgZ21jX3Y5XzBf c3dfaW5pdCh2b2lkICpoYW5kbGUpCj4+Pj4gICAgICAgICBpZiAocikKPj4+PiAgICAgICAgICAg ICAgICAgcmV0dXJuIHI7Cj4+Pj4KPj4+PiAtICAgICAvKiBCZWNhdXNlIG9mIGZvdXIgbGV2ZWwg Vk1QVHMsIHZtIHNpemUgaXMgYXQgbGVhc3QgNTEyR0IuCj4+Pj4gLSAgICAgICogVGhlIG1heGlt dW0gc2l6ZSBpcyAyNTZUQiAoNDhiaXQpLgo+Pj4+IC0gICAgICAqLwo+Pj4+IC0gICAgIGlmIChh bWRncHVfdm1fc2l6ZSA8IDUxMikgewo+Pj4+IC0gICAgICAgICAgICAgRFJNX1dBUk4oIlZNIHNp emUgaXMgYXQgbGVhc3QgNTEyR0IhXG4iKTsKPj4+PiAtICAgICAgICAgICAgIGFtZGdwdV92bV9z aXplID0gNTEyOwo+Pj4+IC0gICAgIH0KPj4+PiAtICAgICBhZGV2LT52bV9tYW5hZ2VyLm1heF9w Zm4gPSAodWludDY0X3QpYW1kZ3B1X3ZtX3NpemUgPDwgMTg7Cj4+Pj4gKyAgICAgYWRldi0+dm1f bWFuYWdlci5tYXhfcGZuID0gYWRldi0+dm1fbWFuYWdlci52bV9zaXplIDw8IDE4Owo+Pj4+Cj4+ Pj4gICAgICAgICAvKiBTZXQgdGhlIGludGVybmFsIE1DIGFkZHJlc3MgbWFzawo+Pj4+ICAgICAg ICAgICogVGhpcyBpcyB0aGUgbWF4IGFkZHJlc3Mgb2YgdGhlIEdQVSdzCj4+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L21taHViX3YxXzAuYwo+Pj4+IGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvbW1odWJfdjFfMC5jCj4+Pj4gaW5kZXggMjY2YTBmNC4uMmNj MWQ1OCAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9tbWh1Yl92 MV8wLmMKPj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9tbWh1Yl92MV8wLmMK Pj4+PiBAQCAtMjQyLDcgKzI0Miw3IEBAIGludCBtbWh1Yl92MV8wX2dhcnRfZW5hYmxlKHN0cnVj dCBhbWRncHVfZGV2aWNlCj4+Pj4gKmFkZXYpCj4+Pj4KPj4+PiAgICAgICAgIEVYRUNVVEVfUFJP VEVDVElPTl9GQVVMVF9FTkFCTEVfREVGQVVMVCwgMSk7Cj4+Pj4gICAgICAgICAgICAgICAgIHRt cCA9IFJFR19TRVRfRklFTEQodG1wLCBWTV9DT05URVhUMV9DTlRMLAo+Pj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUEFHRV9UQUJMRV9CTE9DS19TSVpFLAo+Pj4+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFtZGdwdV92bV9ibG9ja19zaXplIC0gOSk7Cj4+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRldi0+dm1fbWFuYWdlci5ibG9ja19zaXplIC0g OSk7Cj4+Pj4gICAgICAgICAgICAgICAgIFdSRUczMihTT0MxNV9SRUdfT0ZGU0VUKE1NSFVCLCAw LAo+Pj4+IG1tVk1fQ09OVEVYVDFfQ05UTCkgKyBpLCB0bXApOwo+Pj4+ICAgICAgICAgICAgICAg ICBXUkVHMzIoU09DMTVfUkVHX09GRlNFVChNTUhVQiwgMCwKPj4+PiBtbVZNX0NPTlRFWFQxX1BB R0VfVEFCTEVfU1RBUlRfQUREUl9MTzMyKSArIGkqMiwgMCk7Cj4+Pj4gICAgICAgICAgICAgICAg IFdSRUczMihTT0MxNV9SRUdfT0ZGU0VUKE1NSFVCLCAwLAo+Pj4+IG1tVk1fQ09OVEVYVDFfUEFH RV9UQUJMRV9TVEFSVF9BRERSX0hJMzIpICsgaSoyLCAwKTsKPj4+PiAtLQo+Pj4+IDEuOS4xCj4+ Pgo+Pj4KPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K Pj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QKPj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK Pj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4 Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZngg bWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=