From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: Re: [PATCH v2 1/6] drm/msm: Use drm_private_obj/state instead of subclassing Date: Mon, 2 Apr 2018 10:31:38 +0530 Message-ID: References: <20180328190657.218661-1-seanpaul@chromium.org> <20180328190657.218661-2-seanpaul@chromium.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180328190657.218661-2-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Sean Paul , freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org CgpPbiBUaHVyc2RheSAyOSBNYXJjaCAyMDE4IDEyOjM2IEFNLCBTZWFuIFBhdWwgd3JvdGU6Cj4g Tm93IHRoYXQgd2UgaGF2ZSBwcml2YXRlIHN0YXRlIGhhbmRsZWQgYnkgdGhlIGNvcmUsIHdlIGNh biB1c2UgdGhvc2UKPiBpbnN0ZWFkIG9mIHJvbGxpbmcgb3VyIG93biBzd2FwX3N0YXRlIGZvciBw cml2YXRlIGRhdGEuCj4gCj4gT3JpZ2luYWxseSBwb3N0ZWQgaGVyZTogaHR0cHM6Ly9wYXRjaHdv cmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoLzIxMTM2MS8KPiAKPiBDaGFuZ2VzIGluIHYyOgo+ICAg LSBVc2Ugc3RhdGUtPnN0YXRlIGluIGRpc3AgZHVwbGljYXRlX3N0YXRlIGNhbGxiYWNrIChKZXlr dW1hcikKPiBDaGFuZ2VzIGluIHYzOgo+ICAgLSBVcGRhdGUgY29tbWVudCBkZXNjcmliaW5nIG1z bV9rbXNfc3RhdGUgKEpleWt1bWFyKQo+IENoYW5nZXMgaW4gdjQ6Cj4gICAtIFJlYmFzZWQgb24g bXNtLW5leHQKPiAgIC0gRG9uJ3QgYWx3YXlzIHVzZSBwcml2YXRlIHN0YXRlIGZyb20gYXRvbWlj IHN0YXRlIChBcmNoaXQpCj4gICAtIFJlbmFtZWQgc29tZSBvZiB0aGUgc3RhdGUgYWNjZXNzb3Jz Cj4gICAtIFRlc3RlZCBvbiBtZHA1IGRiNDEwYwo+IENoYW5nZXMgaW4gdjU6Cj4gICAtIE5vbmUK PiAKPiBDYzogSmV5a3VtYXIgU2Fua2FyYW4gPGpzYW5rYUBjb2RlYXVyb3JhLm9yZz4KPiBDYzog QXJjaGl0IFRhbmVqYSA8YXJjaGl0dEBjb2RlYXVyb3JhLm9yZz4KPiBTaWduZWQtb2ZmLWJ5OiBT ZWFuIFBhdWwgPHNlYW5wYXVsQGNocm9taXVtLm9yZz4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9tZHA1L21kcDVfa21zLmMgICB8IDc3ICsrKysrKysrKystLS0tLS0tLS0KPiAg IGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA1L21kcDVfa21zLmggICB8IDExICstLQo+ICAg ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDUvbWRwNV9taXhlci5jIHwgMTIgKystCj4gICBk cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1X3BpcGUuYyAgfCAyOCArKysrLS0tCj4g ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1X3NtcC5jICAgfCAxOSArKystLQo+ ICAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDUvbWRwNV9zbXAuaCAgIHwgIDQgKy0KPiAg IGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2F0b21pYy5jICAgICAgICAgICB8IDM3IC0tLS0tLS0t LQo+ICAgZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMgICAgICAgICAgICAgIHwgODcgKysr KysrKysrKysrKysrKysrKysrLQo+ICAgZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmggICAg ICAgICAgICAgIHwgIDMgLQo+ICAgZHJpdmVycy9ncHUvZHJtL21zbS9tc21fa21zLmggICAgICAg ICAgICAgIHwgMjEgKysrKy0tCj4gICAxMCBmaWxlcyBjaGFuZ2VkLCAxODMgaW5zZXJ0aW9ucygr KSwgMTE2IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvbWRwNS9tZHA1X2ttcy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDUvbWRw NV9rbXMuYwo+IGluZGV4IDZkOGUzYTlhNmZjMC4uMzY2NjcwMDQzMTkwIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA1L21kcDVfa21zLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1X2ttcy5jCj4gQEAgLTcwLDYwICs3MCw2MiBAQCBz dGF0aWMgaW50IG1kcDVfaHdfaW5pdChzdHJ1Y3QgbXNtX2ttcyAqa21zKQo+ICAgCXJldHVybiAw Owo+ICAgfQo+ICAgCj4gLXN0cnVjdCBtZHA1X3N0YXRlICptZHA1X2dldF9zdGF0ZShzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqcykKPiArc3RydWN0IG1kcDVfc3RhdGUgKm1kcDVfc3RhdGVfZnJv bV9hdG9taWMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAgewo+IC0Jc3RydWN0 IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IHMtPmRldi0+ZGV2X3ByaXZhdGU7Cj4gLQlzdHJ1Y3Qg bWRwNV9rbXMgKm1kcDVfa21zID0gdG9fbWRwNV9rbXModG9fbWRwX2ttcyhwcml2LT5rbXMpKTsK PiAtCXN0cnVjdCBtc21fa21zX3N0YXRlICpzdGF0ZSA9IHRvX2ttc19zdGF0ZShzKTsKPiAtCXN0 cnVjdCBtZHA1X3N0YXRlICpuZXdfc3RhdGU7Cj4gLQlpbnQgcmV0Owo+ICsJc3RydWN0IG1zbV9r bXNfc3RhdGUgKmttc19zdGF0ZSA9IG1zbV9rbXNfc3RhdGVfZnJvbV9hdG9taWMoc3RhdGUpOwo+ ICAgCj4gLQlpZiAoc3RhdGUtPnN0YXRlKQo+IC0JCXJldHVybiBzdGF0ZS0+c3RhdGU7Cj4gKwlp ZiAoSVNfRVJSX09SX05VTEwoa21zX3N0YXRlKSkKPiArCQlyZXR1cm4gKHN0cnVjdCBtZHA1X3N0 YXRlICopa21zX3N0YXRlOyAvKiBjYXN0aW5nIEVSUl9QVFIgKi8KPiAgIAo+IC0JcmV0ID0gZHJt X21vZGVzZXRfbG9jaygmbWRwNV9rbXMtPnN0YXRlX2xvY2ssIHMtPmFjcXVpcmVfY3R4KTsKPiAt CWlmIChyZXQpCj4gLQkJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiArCXJldHVybiBrbXNfc3RhdGUt PnN0YXRlOwo+ICt9Cj4gICAKPiAtCW5ld19zdGF0ZSA9IGttYWxsb2Moc2l6ZW9mKCptZHA1X2tt cy0+c3RhdGUpLCBHRlBfS0VSTkVMKTsKPiAtCWlmICghbmV3X3N0YXRlKQo+IC0JCXJldHVybiBF UlJfUFRSKC1FTk9NRU0pOwo+ICtzdHJ1Y3QgbWRwNV9zdGF0ZSAqbWRwNV9zdGF0ZV9mcm9tX2Rl dihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgbXNtX2ttc19zdGF0ZSAq a21zX3N0YXRlID0gbXNtX2ttc19zdGF0ZV9mcm9tX2RldihkZXYpOwo+ICAgCj4gLQkvKiBDb3B5 IHN0YXRlOiAqLwo+IC0JbmV3X3N0YXRlLT5od3BpcGUgPSBtZHA1X2ttcy0+c3RhdGUtPmh3cGlw ZTsKPiAtCW5ld19zdGF0ZS0+aHdtaXhlciA9IG1kcDVfa21zLT5zdGF0ZS0+aHdtaXhlcjsKPiAt CWlmIChtZHA1X2ttcy0+c21wKQo+IC0JCW5ld19zdGF0ZS0+c21wID0gbWRwNV9rbXMtPnN0YXRl LT5zbXA7Cj4gKwlpZiAoSVNfRVJSX09SX05VTEwoa21zX3N0YXRlKSkKPiArCQlyZXR1cm4gKHN0 cnVjdCBtZHA1X3N0YXRlICopa21zX3N0YXRlOyAvKiBjYXN0aW5nIEVSUl9QVFIgKi8KPiAgIAo+ IC0Jc3RhdGUtPnN0YXRlID0gbmV3X3N0YXRlOwo+ICsJcmV0dXJuIGttc19zdGF0ZS0+c3RhdGU7 Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkICptZHA1X2R1cGxpY2F0ZV9zdGF0ZSh2b2lkICpzdGF0 ZSkKPiArewo+ICsJaWYgKCFzdGF0ZSkKPiArCQlyZXR1cm4ga3phbGxvYyhzaXplb2Yoc3RydWN0 IG1kcDVfc3RhdGUpLCBHRlBfS0VSTkVMKTsKPiAgIAo+IC0JcmV0dXJuIG5ld19zdGF0ZTsKPiAr CXJldHVybiBrbWVtZHVwKHN0YXRlLCBzaXplb2Yoc3RydWN0IG1kcDVfc3RhdGUpLCBHRlBfS0VS TkVMKTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdm9pZCBtZHA1X3N3YXBfc3RhdGUoc3RydWN0IG1z bV9rbXMgKmttcywgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICtzdGF0aWMgdm9p ZCBtZHA1X2Rlc3Ryb3lfc3RhdGUodm9pZCAqc3RhdGUpCj4gICB7Cj4gLQlzdHJ1Y3QgbWRwNV9r bXMgKm1kcDVfa21zID0gdG9fbWRwNV9rbXModG9fbWRwX2ttcyhrbXMpKTsKPiAtCXN3YXAodG9f a21zX3N0YXRlKHN0YXRlKS0+c3RhdGUsIG1kcDVfa21zLT5zdGF0ZSk7Cj4gKwlzdHJ1Y3QgbWRw NV9zdGF0ZSAqbWRwX3N0YXRlID0gKHN0cnVjdCBtZHA1X3N0YXRlICopc3RhdGU7Cj4gKwlrZnJl ZShtZHBfc3RhdGUpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyB2b2lkIG1kcDVfcHJlcGFyZV9jb21t aXQoc3RydWN0IG1zbV9rbXMgKmttcywgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ ICtzdGF0aWMgdm9pZCBtZHA1X3ByZXBhcmVfY29tbWl0KHN0cnVjdCBtc21fa21zICprbXMsCj4g KwkJCQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQo+ICAgewo+ICAgCXN0cnVj dCBtZHA1X2ttcyAqbWRwNV9rbXMgPSB0b19tZHA1X2ttcyh0b19tZHBfa21zKGttcykpOwo+ICsJ c3RydWN0IG1kcDVfc3RhdGUgKm1kcDVfc3RhdGUgPSBtZHA1X3N0YXRlX2Zyb21fZGV2KG1kcDVf a21zLT5kZXYpOwo+ICAgCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZtZHA1X2ttcy0+cGRldi0+ZGV2 Owo+ICAgCj4gICAJcG1fcnVudGltZV9nZXRfc3luYyhkZXYpOwo+ICAgCj4gICAJaWYgKG1kcDVf a21zLT5zbXApCj4gLQkJbWRwNV9zbXBfcHJlcGFyZV9jb21taXQobWRwNV9rbXMtPnNtcCwgJm1k cDVfa21zLT5zdGF0ZS0+c21wKTsKPiArCQltZHA1X3NtcF9wcmVwYXJlX2NvbW1pdChtZHA1X2tt cy0+c21wLCAmbWRwNV9zdGF0ZS0+c21wKTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdm9pZCBtZHA1 X2NvbXBsZXRlX2NvbW1pdChzdHJ1Y3QgbXNtX2ttcyAqa21zLCBzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGUpCj4gK3N0YXRpYyB2b2lkIG1kcDVfY29tcGxldGVfY29tbWl0KHN0cnVjdCBt c21fa21zICprbXMsCj4gKwkJCQkgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkK PiAgIHsKPiAgIAlzdHJ1Y3QgbWRwNV9rbXMgKm1kcDVfa21zID0gdG9fbWRwNV9rbXModG9fbWRw X2ttcyhrbXMpKTsKPiArCXN0cnVjdCBtZHA1X3N0YXRlICptZHA1X3N0YXRlID0gbWRwNV9zdGF0 ZV9mcm9tX2RldihtZHA1X2ttcy0+ZGV2KTsKPiAgIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmbWRw NV9rbXMtPnBkZXYtPmRldjsKPiAgIAo+ICAgCWlmIChtZHA1X2ttcy0+c21wKQo+IC0JCW1kcDVf c21wX2NvbXBsZXRlX2NvbW1pdChtZHA1X2ttcy0+c21wLCAmbWRwNV9rbXMtPnN0YXRlLT5zbXAp Owo+ICsJCW1kcDVfc21wX2NvbXBsZXRlX2NvbW1pdChtZHA1X2ttcy0+c21wLCAmbWRwNV9zdGF0 ZS0+c21wKTsKPiAgIAo+ICAgCXBtX3J1bnRpbWVfcHV0X3N5bmMoZGV2KTsKPiAgIH0KPiBAQCAt MjI5LDcgKzIzMSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRwX2ttc19mdW5jcyBrbXNfZnVu Y3MgPSB7Cj4gICAJCS5pcnEgICAgICAgICAgICAgPSBtZHA1X2lycSwKPiAgIAkJLmVuYWJsZV92 YmxhbmsgICA9IG1kcDVfZW5hYmxlX3ZibGFuaywKPiAgIAkJLmRpc2FibGVfdmJsYW5rICA9IG1k cDVfZGlzYWJsZV92YmxhbmssCj4gLQkJLnN3YXBfc3RhdGUgICAgICA9IG1kcDVfc3dhcF9zdGF0 ZSwKPiArCQkuZHVwbGljYXRlX3N0YXRlID0gbWRwNV9kdXBsaWNhdGVfc3RhdGUsCj4gKwkJLmRl c3Ryb3lfc3RhdGUJID0gbWRwNV9kZXN0cm95X3N0YXRlLAo+ICAgCQkucHJlcGFyZV9jb21taXQg ID0gbWRwNV9wcmVwYXJlX2NvbW1pdCwKPiAgIAkJLmNvbXBsZXRlX2NvbW1pdCA9IG1kcDVfY29t cGxldGVfY29tbWl0LAo+ICAgCQkud2FpdF9mb3JfY3J0Y19jb21taXRfZG9uZSA9IG1kcDVfd2Fp dF9mb3JfY3J0Y19jb21taXRfZG9uZSwKPiBAQCAtNzI2LDggKzcyOSw2IEBAIHN0YXRpYyB2b2lk IG1kcDVfZGVzdHJveShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICAgCj4gICAJaWYg KG1kcDVfa21zLT5ycG1fZW5hYmxlZCkKPiAgIAkJcG1fcnVudGltZV9kaXNhYmxlKCZwZGV2LT5k ZXYpOwo+IC0KPiAtCWtmcmVlKG1kcDVfa21zLT5zdGF0ZSk7Cj4gICB9Cj4gICAKPiAgIHN0YXRp YyBpbnQgY29uc3RydWN0X3BpcGVzKHN0cnVjdCBtZHA1X2ttcyAqbWRwNV9rbXMsIGludCBjbnQs Cj4gQEAgLTg1OSw3ICs4NjAsOCBAQCBzdGF0aWMgaW50IGludGVyZmFjZV9pbml0KHN0cnVjdCBt ZHA1X2ttcyAqbWRwNV9rbXMpCj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAtc3RhdGljIGlu dCBtZHA1X2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiArc3RhdGljIGludCBtZHA1X2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldiwgc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQkgICAgIHN0cnVjdCBtc21fa21zX3N0 YXRlICppbml0aWFsX3N0YXRlKQo+ICAgewo+ICAgCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnBy aXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAgCXN0cnVjdCBtZHA1X2ttcyAqbWRwNV9rbXM7Cj4g QEAgLTg4MCw5ICs4ODIsOCBAQCBzdGF0aWMgaW50IG1kcDVfaW5pdChzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2LCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCW1kcDVfa21zLT5kZXYg PSBkZXY7Cj4gICAJbWRwNV9rbXMtPnBkZXYgPSBwZGV2Owo+ICAgCj4gLQlkcm1fbW9kZXNldF9s b2NrX2luaXQoJm1kcDVfa21zLT5zdGF0ZV9sb2NrKTsKPiAtCW1kcDVfa21zLT5zdGF0ZSA9IGt6 YWxsb2Moc2l6ZW9mKCptZHA1X2ttcy0+c3RhdGUpLCBHRlBfS0VSTkVMKTsKPiAtCWlmICghbWRw NV9rbXMtPnN0YXRlKSB7Cj4gKwlpbml0aWFsX3N0YXRlLT5zdGF0ZSA9IG1kcDVfZHVwbGljYXRl X3N0YXRlKE5VTEwpOwo+ICsJaWYgKCFpbml0aWFsX3N0YXRlLT5zdGF0ZSkgewo+ICAgCQlyZXQg PSAtRU5PTUVNOwo+ICAgCQlnb3RvIGZhaWw7Cj4gICAJfQo+IEBAIC05NDAsNyArOTQxLDggQEAg c3RhdGljIGludCBtZHA1X2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiAgIAkgKiB0aGlzIHNlY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIFNN UDoKPiAgIAkgKi8KPiAgIAlpZiAobWRwNV9rbXMtPmNhcHMgJiBNRFBfQ0FQX1NNUCkgewo+IC0J CW1kcDVfa21zLT5zbXAgPSBtZHA1X3NtcF9pbml0KG1kcDVfa21zLCAmY29uZmlnLT5ody0+c21w KTsKPiArCQltZHA1X2ttcy0+c21wID0gbWRwNV9zbXBfaW5pdChtZHA1X2ttcywgJmNvbmZpZy0+ aHctPnNtcCwKPiArCQkJCQkgICAgICBpbml0aWFsX3N0YXRlLT5zdGF0ZSk7Cj4gICAJCWlmIChJ U19FUlIobWRwNV9rbXMtPnNtcCkpIHsKPiAgIAkJCXJldCA9IFBUUl9FUlIobWRwNV9rbXMtPnNt cCk7Cj4gICAJCQltZHA1X2ttcy0+c21wID0gTlVMTDsKPiBAQCAtOTgwLDEwICs5ODIsMTEgQEAg c3RhdGljIGludCBtZHA1X2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICpt YXN0ZXIsIHZvaWQgKmRhdGEpCj4gICB7Cj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRkZXYgPSBk ZXZfZ2V0X2RydmRhdGEobWFzdGVyKTsKPiAgIAlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7Cj4gKwlzdHJ1Y3QgbXNtX2ttc19zdGF0ZSAqaW5p dGlhbF9zdGF0ZSA9IChzdHJ1Y3QgbXNtX2ttc19zdGF0ZSAqKWRhdGE7Cj4gICAKPiAgIAlEQkco IiIpOwo+ICAgCj4gLQlyZXR1cm4gbWRwNV9pbml0KHBkZXYsIGRkZXYpOwo+ICsJcmV0dXJuIG1k cDVfaW5pdChwZGV2LCBkZGV2LCBpbml0aWFsX3N0YXRlKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGlj IHZvaWQgbWRwNV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0 ZXIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA1L21kcDVfa21z LmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1X2ttcy5oCj4gaW5kZXggNDI1 YTAzZDIxM2U1Li5lMjMxMTdiODJhYWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL21kcDUvbWRwNV9rbXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9t ZHA1L21kcDVfa21zLmgKPiBAQCAtMjgsOCArMjgsNiBAQAo+ICAgI2luY2x1ZGUgIm1kcDVfY3Rs LmgiCj4gICAjaW5jbHVkZSAibWRwNV9zbXAuaCIKPiAgIAo+IC1zdHJ1Y3QgbWRwNV9zdGF0ZTsK PiAtCj4gICBzdHJ1Y3QgbWRwNV9rbXMgewo+ICAgCXN0cnVjdCBtZHBfa21zIGJhc2U7Cj4gICAK PiBAQCAtNDksMTIgKzQ3LDYgQEAgc3RydWN0IG1kcDVfa21zIHsKPiAgIAlzdHJ1Y3QgbWRwNV9j ZmdfaGFuZGxlciAqY2ZnOwo+ICAgCXVpbnQzMl90IGNhcHM7CS8qIE1EUCBjYXBhYmlsaXRpZXMg KE1EUF9DQVBfWFhYIGJpdHMpICovCj4gICAKPiAtCS8qKgo+IC0JICogR2xvYmFsIGF0b21pYyBz dGF0ZS4gIERvIG5vdCBhY2Nlc3MgZGlyZWN0bHksIHVzZSBtZHA1X2dldF9zdGF0ZSgpCj4gLQkg Ki8KPiAtCXN0cnVjdCBtZHA1X3N0YXRlICpzdGF0ZTsKPiAtCXN0cnVjdCBkcm1fbW9kZXNldF9s b2NrIHN0YXRlX2xvY2s7Cj4gLQo+ICAgCXN0cnVjdCBtZHA1X3NtcCAqc21wOwo+ICAgCXN0cnVj dCBtZHA1X2N0bF9tYW5hZ2VyICpjdGxtOwo+ICAgCj4gQEAgLTkzLDcgKzg1LDggQEAgc3RydWN0 IG1kcDVfc3RhdGUgewo+ICAgfTsKPiAgIAo+ICAgc3RydWN0IG1kcDVfc3RhdGUgKl9fbXVzdF9j aGVjawo+IC1tZHA1X2dldF9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqcyk7Cj4gK21k cDVfc3RhdGVfZnJvbV9hdG9taWMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnMpOwo+ICtzdHJ1 Y3QgbWRwNV9zdGF0ZSAqX19tdXN0X2NoZWNrIG1kcDVfc3RhdGVfZnJvbV9kZXYoc3RydWN0IGRy bV9kZXZpY2UgKmRldik7Cj4gICAKPiAgIC8qIEF0b21pYyBwbGFuZSBzdGF0ZS4gIFN1YmNsYXNz ZXMgdGhlIGJhc2UgZHJtX3BsYW5lX3N0YXRlIGluIG9yZGVyIHRvCj4gICAgKiB0cmFjayBhc3Np Z25lZCBod3BpcGUgYW5kIGh3IHNwZWNpZmljIHN0YXRlLgo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1X21peGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvbWRwNS9tZHA1X21peGVyLmMKPiBpbmRleCA4YTAwOTkxZjAzYzcuLmZkZDVlMTJhOWQ1 NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1X21peGVy LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1X21peGVyLmMKPiBA QCAtNTIsMTAgKzUyLDExIEBAIGludCBtZHA1X21peGVyX2Fzc2lnbihzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqcywgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAgewo+ICAgCXN0cnVjdCBtc21f ZHJtX3ByaXZhdGUgKnByaXYgPSBzLT5kZXYtPmRldl9wcml2YXRlOwo+ICAgCXN0cnVjdCBtZHA1 X2ttcyAqbWRwNV9rbXMgPSB0b19tZHA1X2ttcyh0b19tZHBfa21zKHByaXYtPmttcykpOwo+IC0J c3RydWN0IG1kcDVfc3RhdGUgKnN0YXRlID0gbWRwNV9nZXRfc3RhdGUocyk7Cj4gKwlzdHJ1Y3Qg bWRwNV9zdGF0ZSAqc3RhdGU7Cj4gICAJc3RydWN0IG1kcDVfaHdfbWl4ZXJfc3RhdGUgKm5ld19z dGF0ZTsKPiAgIAlpbnQgaTsKPiAgIAo+ICsJc3RhdGUgPSBtZHA1X3N0YXRlX2Zyb21fYXRvbWlj KHMpOwo+ICAgCWlmIChJU19FUlIoc3RhdGUpKQo+ICAgCQlyZXR1cm4gUFRSX0VSUihzdGF0ZSk7 Cj4gICAKPiBAQCAtMTI5LDEyICsxMzAsMTcgQEAgaW50IG1kcDVfbWl4ZXJfYXNzaWduKHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gICAKPiAgIHZv aWQgbWRwNV9taXhlcl9yZWxlYXNlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzLCBzdHJ1Y3Qg bWRwNV9od19taXhlciAqbWl4ZXIpCj4gICB7Cj4gLQlzdHJ1Y3QgbWRwNV9zdGF0ZSAqc3RhdGUg PSBtZHA1X2dldF9zdGF0ZShzKTsKPiAtCXN0cnVjdCBtZHA1X2h3X21peGVyX3N0YXRlICpuZXdf c3RhdGUgPSAmc3RhdGUtPmh3bWl4ZXI7Cj4gKwlzdHJ1Y3QgbWRwNV9zdGF0ZSAqc3RhdGU7Cj4g KwlzdHJ1Y3QgbWRwNV9od19taXhlcl9zdGF0ZSAqbmV3X3N0YXRlOwo+ICAgCj4gICAJaWYgKCFt aXhlcikKPiAgIAkJcmV0dXJuOwo+ICAgCj4gKwlzdGF0ZSA9IG1kcDVfc3RhdGVfZnJvbV9hdG9t aWMocyk7Cj4gKwlpZiAoSVNfRVJSKHN0YXRlKSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJbmV3X3N0 YXRlID0gJnN0YXRlLT5od21peGVyOwo+ICAgCWlmIChXQVJOX09OKCFuZXdfc3RhdGUtPmh3bWl4 ZXJfdG9fY3J0Y1ttaXhlci0+aWR4XSkpCj4gICAJCXJldHVybjsKPiAgIAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1X3BpcGUuYyBiL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9tZHA1L21kcDVfcGlwZS5jCj4gaW5kZXggZmY1MmM0OTA5NWY5Li5kYzY2 YWI5ZmRkNTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDUvbWRw NV9waXBlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1X3BpcGUu Ywo+IEBAIC0yNCwxNyArMjQsMjAgQEAgaW50IG1kcDVfcGlwZV9hc3NpZ24oc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnMsIHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAgewo+ICAgCXN0cnVj dCBtc21fZHJtX3ByaXZhdGUgKnByaXYgPSBzLT5kZXYtPmRldl9wcml2YXRlOwo+ICAgCXN0cnVj dCBtZHA1X2ttcyAqbWRwNV9rbXMgPSB0b19tZHA1X2ttcyh0b19tZHBfa21zKHByaXYtPmttcykp Owo+IC0Jc3RydWN0IG1kcDVfc3RhdGUgKnN0YXRlOwo+ICsJc3RydWN0IG1kcDVfc3RhdGUgKm9s ZF9tZHA1X3N0YXRlLCAqbmV3X21kcDVfc3RhdGU7Cj4gICAJc3RydWN0IG1kcDVfaHdfcGlwZV9z dGF0ZSAqb2xkX3N0YXRlLCAqbmV3X3N0YXRlOwo+ICAgCWludCBpLCBqOwo+ICAgCj4gLQlzdGF0 ZSA9IG1kcDVfZ2V0X3N0YXRlKHMpOwo+IC0JaWYgKElTX0VSUihzdGF0ZSkpCj4gLQkJcmV0dXJu IFBUUl9FUlIoc3RhdGUpOwo+ICsJbmV3X21kcDVfc3RhdGUgPSBtZHA1X3N0YXRlX2Zyb21fYXRv bWljKHMpOwo+ICsJaWYgKElTX0VSUihuZXdfbWRwNV9zdGF0ZSkpCj4gKwkJcmV0dXJuIFBUUl9F UlIobmV3X21kcDVfc3RhdGUpOwo+ICAgCj4gLQkvKiBncmFiIG9sZF9zdGF0ZSBhZnRlciBtZHA1 X2dldF9zdGF0ZSgpLCBzaW5jZSBub3cgd2UgaG9sZCBsb2NrOiAqLwo+IC0Jb2xkX3N0YXRlID0g Jm1kcDVfa21zLT5zdGF0ZS0+aHdwaXBlOwo+IC0JbmV3X3N0YXRlID0gJnN0YXRlLT5od3BpcGU7 Cj4gKwlvbGRfbWRwNV9zdGF0ZSA9IG1kcDVfc3RhdGVfZnJvbV9kZXYocy0+ZGV2KTsKPiArCWlm IChJU19FUlIob2xkX21kcDVfc3RhdGUpKQo+ICsJCXJldHVybiBQVFJfRVJSKG9sZF9tZHA1X3N0 YXRlKTsKPiArCj4gKwlvbGRfc3RhdGUgPSAmb2xkX21kcDVfc3RhdGUtPmh3cGlwZTsKPiArCW5l d19zdGF0ZSA9ICZuZXdfbWRwNV9zdGF0ZS0+aHdwaXBlOwo+ICAgCj4gICAJZm9yIChpID0gMDsg aSA8IG1kcDVfa21zLT5udW1faHdwaXBlczsgaSsrKSB7Cj4gICAJCXN0cnVjdCBtZHA1X2h3X3Bp cGUgKmN1ciA9IG1kcDVfa21zLT5od3BpcGVzW2ldOwo+IEBAIC0xMDcsNyArMTEwLDcgQEAgaW50 IG1kcDVfcGlwZV9hc3NpZ24oc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnMsIHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLAo+ICAgCQlXQVJOX09OKHJfaHdwaXBlKTsKPiAgIAo+ICAgCQlEQkcoIiVz OiBhbGxvYyBTTVAgYmxvY2tzIiwgKCpod3BpcGUpLT5uYW1lKTsKPiAtCQlyZXQgPSBtZHA1X3Nt cF9hc3NpZ24obWRwNV9rbXMtPnNtcCwgJnN0YXRlLT5zbXAsCj4gKwkJcmV0ID0gbWRwNV9zbXBf YXNzaWduKG1kcDVfa21zLT5zbXAsICZuZXdfbWRwNV9zdGF0ZS0+c21wLAo+ICAgCQkJCSgqaHdw aXBlKS0+cGlwZSwgYmxrY2ZnKTsKPiAgIAkJaWYgKHJldCkKPiAgIAkJCXJldHVybiAtRU5PTUVN Owo+IEBAIC0xMzIsMTIgKzEzNSwxNyBAQCB2b2lkIG1kcDVfcGlwZV9yZWxlYXNlKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzLCBzdHJ1Y3QgbWRwNV9od19waXBlICpod3BpcGUpCj4gICB7Cj4g ICAJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IHMtPmRldi0+ZGV2X3ByaXZhdGU7Cj4g ICAJc3RydWN0IG1kcDVfa21zICptZHA1X2ttcyA9IHRvX21kcDVfa21zKHRvX21kcF9rbXMocHJp di0+a21zKSk7Cj4gLQlzdHJ1Y3QgbWRwNV9zdGF0ZSAqc3RhdGUgPSBtZHA1X2dldF9zdGF0ZShz KTsKPiAtCXN0cnVjdCBtZHA1X2h3X3BpcGVfc3RhdGUgKm5ld19zdGF0ZSA9ICZzdGF0ZS0+aHdw aXBlOwo+ICsJc3RydWN0IG1kcDVfc3RhdGUgKnN0YXRlOwo+ICsJc3RydWN0IG1kcDVfaHdfcGlw ZV9zdGF0ZSAqbmV3X3N0YXRlOwo+ICAgCj4gICAJaWYgKCFod3BpcGUpCj4gICAJCXJldHVybjsK PiAgIAo+ICsJc3RhdGUgPSBtZHA1X3N0YXRlX2Zyb21fYXRvbWljKHMpOwo+ICsJaWYgKElTX0VS UihzdGF0ZSkpCj4gKwkJcmV0dXJuOwo+ICsKPiArCW5ld19zdGF0ZSA9ICZzdGF0ZS0+aHdwaXBl Owo+ICAgCWlmIChXQVJOX09OKCFuZXdfc3RhdGUtPmh3cGlwZV90b19wbGFuZVtod3BpcGUtPmlk eF0pKQo+ICAgCQlyZXR1cm47Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL21kcDUvbWRwNV9zbXAuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA1L21k cDVfc21wLmMKPiBpbmRleCBhZTQ5ODNkOWQwYTUuLjkxOGU0MTIzZTc4MSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1X3NtcC5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL21kcDUvbWRwNV9zbXAuYwo+IEBAIC0zMzgsNiArMzM4LDcgQEAg dm9pZCBtZHA1X3NtcF9jb21wbGV0ZV9jb21taXQoc3RydWN0IG1kcDVfc21wICpzbXAsIHN0cnVj dCBtZHA1X3NtcF9zdGF0ZSAqc3RhdGUKPiAgIHZvaWQgbWRwNV9zbXBfZHVtcChzdHJ1Y3QgbWRw NV9zbXAgKnNtcCwgc3RydWN0IGRybV9wcmludGVyICpwKQo+ICAgewo+ICAgCXN0cnVjdCBtZHA1 X2ttcyAqbWRwNV9rbXMgPSBnZXRfa21zKHNtcCk7Cj4gKwlzdHJ1Y3QgbWRwNV9zdGF0ZSAqbWRw NV9zdGF0ZTsKPiAgIAlzdHJ1Y3QgbWRwNV9od19waXBlX3N0YXRlICpod3BzdGF0ZTsKPiAgIAlz dHJ1Y3QgbWRwNV9zbXBfc3RhdGUgKnN0YXRlOwo+ICAgCWludCB0b3RhbCA9IDAsIGksIGo7Cj4g QEAgLTM0NiwxMSArMzQ3LDEyIEBAIHZvaWQgbWRwNV9zbXBfZHVtcChzdHJ1Y3QgbWRwNV9zbXAg KnNtcCwgc3RydWN0IGRybV9wcmludGVyICpwKQo+ICAgCWRybV9wcmludGYocCwgIi0tLS1cdC0t LS0tXHQtLS0tLVxuIik7Cj4gICAKPiAgIAlpZiAoZHJtX2Nhbl9zbGVlcCgpKQo+IC0JCWRybV9t b2Rlc2V0X2xvY2soJm1kcDVfa21zLT5zdGF0ZV9sb2NrLCBOVUxMKTsKPiArCQlkcm1fbW9kZXNl dF9sb2NrX2FsbChtZHA1X2ttcy0+ZGV2KTsKPiAgIAo+IC0JLyogZ3JhYiB0aGVzZSAqYWZ0ZXIq IHdlIGhvbGQgdGhlIHN0YXRlX2xvY2sgKi8KPiAtCWh3cHN0YXRlID0gJm1kcDVfa21zLT5zdGF0 ZS0+aHdwaXBlOwo+IC0Jc3RhdGUgPSAmbWRwNV9rbXMtPnN0YXRlLT5zbXA7Cj4gKwkvKiBncmFi IHRoZXNlICphZnRlciogd2UgaG9sZCB0aGUgbW9kZXNldF9sb2NrICovCj4gKwltZHA1X3N0YXRl ID0gbWRwNV9zdGF0ZV9mcm9tX2RldihtZHA1X2ttcy0+ZGV2KTsKPiArCWh3cHN0YXRlID0gJm1k cDVfc3RhdGUtPmh3cGlwZTsKPiArCXN0YXRlID0gJm1kcDVfc3RhdGUtPnNtcDsKPiAgIAo+ICAg CWZvciAoaSA9IDA7IGkgPCBtZHA1X2ttcy0+bnVtX2h3cGlwZXM7IGkrKykgewo+ICAgCQlzdHJ1 Y3QgbWRwNV9od19waXBlICpod3BpcGUgPSBtZHA1X2ttcy0+aHdwaXBlc1tpXTsKPiBAQCAtMzc0 LDcgKzM3Niw3IEBAIHZvaWQgbWRwNV9zbXBfZHVtcChzdHJ1Y3QgbWRwNV9zbXAgKnNtcCwgc3Ry dWN0IGRybV9wcmludGVyICpwKQo+ICAgCQkJYml0bWFwX3dlaWdodChzdGF0ZS0+c3RhdGUsIHNt cC0+YmxrX2NudCkpOwo+ICAgCj4gICAJaWYgKGRybV9jYW5fc2xlZXAoKSkKPiAtCQlkcm1fbW9k ZXNldF91bmxvY2soJm1kcDVfa21zLT5zdGF0ZV9sb2NrKTsKPiArCQlkcm1fbW9kZXNldF91bmxv Y2tfYWxsKG1kcDVfa21zLT5kZXYpOwo+ICAgfQo+ICAgCj4gICB2b2lkIG1kcDVfc21wX2Rlc3Ry b3koc3RydWN0IG1kcDVfc21wICpzbXApCj4gQEAgLTM4MiwxMiArMzg0LDE1IEBAIHZvaWQgbWRw NV9zbXBfZGVzdHJveShzdHJ1Y3QgbWRwNV9zbXAgKnNtcCkKPiAgIAlrZnJlZShzbXApOwo+ICAg fQo+ICAgCj4gLXN0cnVjdCBtZHA1X3NtcCAqbWRwNV9zbXBfaW5pdChzdHJ1Y3QgbWRwNV9rbXMg Km1kcDVfa21zLCBjb25zdCBzdHJ1Y3QgbWRwNV9zbXBfYmxvY2sgKmNmZykKPiArc3RydWN0IG1k cDVfc21wICptZHA1X3NtcF9pbml0KHN0cnVjdCBtZHA1X2ttcyAqbWRwNV9rbXMsCj4gKwkJCSAg ICAgICBjb25zdCBzdHJ1Y3QgbWRwNV9zbXBfYmxvY2sgKmNmZywKPiArCQkJICAgICAgIHN0cnVj dCBtZHA1X3N0YXRlICptZHA1X3N0YXRlKQo+ICAgewo+IC0Jc3RydWN0IG1kcDVfc21wX3N0YXRl ICpzdGF0ZSA9ICZtZHA1X2ttcy0+c3RhdGUtPnNtcDsKPiArCXN0cnVjdCBtZHA1X3NtcF9zdGF0 ZSAqc3RhdGU7Cj4gICAJc3RydWN0IG1kcDVfc21wICpzbXAgPSBOVUxMOwo+ICAgCWludCByZXQ7 Cj4gICAKPiArCXN0YXRlID0gJm1kcDVfc3RhdGUtPnNtcDsKPiAgIAlzbXAgPSBremFsbG9jKHNp emVvZigqc21wKSwgR0ZQX0tFUk5FTCk7Cj4gICAJaWYgKHVubGlrZWx5KCFzbXApKSB7Cj4gICAJ CXJldCA9IC1FTk9NRU07Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9t ZHA1L21kcDVfc21wLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1X3NtcC5o Cj4gaW5kZXggYjQxZDA0NDhmYmU4Li4xYmZhMjJiNjNhMmQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL21kcDUvbWRwNV9zbXAuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9tZHA1L21kcDVfc21wLmgKPiBAQCAtNjksNiArNjksNyBAQCBzdHJ1Y3QgbWRw NV9zbXBfc3RhdGUgewo+ICAgfTsKPiAgIAo+ICAgc3RydWN0IG1kcDVfa21zOwo+ICtzdHJ1Y3Qg bWRwNV9zdGF0ZTsKPiAgIHN0cnVjdCBtZHA1X3NtcDsKPiAgIAo+ICAgLyoKPiBAQCAtNzgsNyAr NzksOCBAQCBzdHJ1Y3QgbWRwNV9zbXA7Cj4gICAgKi8KPiAgIAo+ICAgc3RydWN0IG1kcDVfc21w ICptZHA1X3NtcF9pbml0KHN0cnVjdCBtZHA1X2ttcyAqbWRwNV9rbXMsCj4gLQkJY29uc3Qgc3Ry dWN0IG1kcDVfc21wX2Jsb2NrICpjZmcpOwo+ICsJCWNvbnN0IHN0cnVjdCBtZHA1X3NtcF9ibG9j ayAqY2ZnLAo+ICsJCXN0cnVjdCBtZHA1X3N0YXRlICptZHA1X3N0YXRlKTsKPiAgIHZvaWQgIG1k cDVfc21wX2Rlc3Ryb3koc3RydWN0IG1kcDVfc21wICpzbXApOwo+ICAgCj4gICB2b2lkIG1kcDVf c21wX2R1bXAoc3RydWN0IG1kcDVfc21wICpzbXAsIHN0cnVjdCBkcm1fcHJpbnRlciAqcCk7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2F0b21pYy5jIGIvZHJpdmVycy9n cHUvZHJtL21zbS9tc21fYXRvbWljLmMKPiBpbmRleCBiZjVmOGMzOWYzNGQuLmU3OTIxNTg2NzZh YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9hdG9taWMuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2F0b21pYy5jCj4gQEAgLTIyMCwxNiArMjIwLDYgQEAg aW50IG1zbV9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAKPiAgIAlC VUdfT04oZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZShzdGF0ZSwgZmFsc2UpIDwgMCk7Cj4g ICAKPiAtCS8qCj4gLQkgKiBUaGlzIGlzIHRoZSBwb2ludCBvZiBubyByZXR1cm4gLSBldmVyeXRo aW5nIGJlbG93IG5ldmVyIGZhaWxzIGV4Y2VwdAo+IC0JICogd2hlbiB0aGUgaHcgZ29lcyBib25n aGl0cy4gV2hpY2ggbWVhbnMgd2UgY2FuIGNvbW1pdCB0aGUgbmV3IHN0YXRlIG9uCj4gLQkgKiB0 aGUgc29mdHdhcmUgc2lkZSBub3cuCj4gLQkgKgo+IC0JICogc3dhcCBkcml2ZXIgcHJpdmF0ZSBz dGF0ZSB3aGlsZSBzdGlsbCBob2xkaW5nIHN0YXRlX2xvY2sKPiAtCSAqLwo+IC0JaWYgKHRvX2tt c19zdGF0ZShzdGF0ZSktPnN0YXRlKQo+IC0JCXByaXYtPmttcy0+ZnVuY3MtPnN3YXBfc3RhdGUo cHJpdi0+a21zLCBzdGF0ZSk7Cj4gLQo+ICAgCS8qCj4gICAJICogRXZlcnl0aGluZyBiZWxvdyBj YW4gYmUgcnVuIGFzeW5jaHJvbm91c2x5IHdpdGhvdXQgdGhlIG5lZWQgdG8gZ3JhYgo+ICAgCSAq IGFueSBtb2Rlc2V0IGxvY2tzIGF0IGFsbCB1bmRlciBvbmUgY29uZGl0aW9uczogSXQgbXVzdCBi ZSBndWFyYW50ZWVkCj4gQEAgLTI2MiwzMCArMjUyLDMgQEAgaW50IG1zbV9hdG9taWNfY29tbWl0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9w bGFuZXMoZGV2LCBzdGF0ZSk7Cj4gICAJcmV0dXJuIHJldDsKPiAgIH0KPiAtCj4gLXN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICptc21fYXRvbWljX3N0YXRlX2FsbG9jKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gLXsKPiAtCXN0cnVjdCBtc21fa21zX3N0YXRlICpzdGF0ZSA9IGt6YWxsb2Moc2l6 ZW9mKCpzdGF0ZSksIEdGUF9LRVJORUwpOwo+IC0KPiAtCWlmICghc3RhdGUgfHwgZHJtX2F0b21p Y19zdGF0ZV9pbml0KGRldiwgJnN0YXRlLT5iYXNlKSA8IDApIHsKPiAtCQlrZnJlZShzdGF0ZSk7 Cj4gLQkJcmV0dXJuIE5VTEw7Cj4gLQl9Cj4gLQo+IC0JcmV0dXJuICZzdGF0ZS0+YmFzZTsKPiAt fQo+IC0KPiAtdm9pZCBtc21fYXRvbWljX3N0YXRlX2NsZWFyKHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzKQo+IC17Cj4gLQlzdHJ1Y3QgbXNtX2ttc19zdGF0ZSAqc3RhdGUgPSB0b19rbXNfc3Rh dGUocyk7Cj4gLQlkcm1fYXRvbWljX3N0YXRlX2RlZmF1bHRfY2xlYXIoJnN0YXRlLT5iYXNlKTsK PiAtCWtmcmVlKHN0YXRlLT5zdGF0ZSk7Cj4gLQlzdGF0ZS0+c3RhdGUgPSBOVUxMOwo+IC19Cj4g LQo+IC12b2lkIG1zbV9hdG9taWNfc3RhdGVfZnJlZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUpCj4gLXsKPiAtCWtmcmVlKHRvX2ttc19zdGF0ZShzdGF0ZSktPnN0YXRlKTsKPiAtCWRy bV9hdG9taWNfc3RhdGVfZGVmYXVsdF9yZWxlYXNlKHN0YXRlKTsKPiAtCWtmcmVlKHN0YXRlKTsK PiAtfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jCj4gaW5kZXggMzBjZDUxNGQ4ZjdjLi43ZThmNjQwMDYy ZWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYwo+IEBAIC00MiwxMSArNDIsNzkgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9jb25maWdfZnVuY3MgbW9kZV9jb25maWdfZnVuY3MgPSB7 Cj4gICAJLm91dHB1dF9wb2xsX2NoYW5nZWQgPSBkcm1fZmJfaGVscGVyX291dHB1dF9wb2xsX2No YW5nZWQsCj4gICAJLmF0b21pY19jaGVjayA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrLAo+ICAg CS5hdG9taWNfY29tbWl0ID0gbXNtX2F0b21pY19jb21taXQsCj4gLQkuYXRvbWljX3N0YXRlX2Fs bG9jID0gbXNtX2F0b21pY19zdGF0ZV9hbGxvYywKPiAtCS5hdG9taWNfc3RhdGVfY2xlYXIgPSBt c21fYXRvbWljX3N0YXRlX2NsZWFyLAo+IC0JLmF0b21pY19zdGF0ZV9mcmVlID0gbXNtX2F0b21p Y19zdGF0ZV9mcmVlLAo+ICAgfTsKPiAgIAo+ICtzdGF0aWMgaW5saW5lCj4gK3N0cnVjdCBtc21f a21zICptc21fa21zX2Zyb21fb2JqKHN0cnVjdCBkcm1fcHJpdmF0ZV9vYmogKm9iaikKPiArewo+ ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihvYmosIHN0cnVjdCBtc21fa21zLCBiYXNlKTsKPiArfQo+ ICsKPiArc3RhdGljIGlubGluZQo+ICtzdHJ1Y3QgbXNtX2ttc19zdGF0ZSAqbXNtX2ttc19zdGF0 ZV9mcm9tX3ByaXYoc3RydWN0IGRybV9wcml2YXRlX3N0YXRlICpwcml2KQo+ICt7Cj4gKwlyZXR1 cm4gY29udGFpbmVyX29mKHByaXYsIHN0cnVjdCBtc21fa21zX3N0YXRlLCBiYXNlKTsKPiArfQo+ ICsKPiArCj4gK3N0cnVjdCBtc21fa21zX3N0YXRlICptc21fa21zX3N0YXRlX2Zyb21fYXRvbWlj KHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiArewo+ICsJc3RydWN0IG1zbV9kcm1f cHJpdmF0ZSAqcHJpdiA9IHN0YXRlLT5kZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9w cml2YXRlX29iaiAqb2JqID0gJnByaXYtPmttcy0+YmFzZTsKPiArCXN0cnVjdCBkcm1fcHJpdmF0 ZV9zdGF0ZSAqcHJpdl9zdGF0ZTsKPiArCj4gKwlwcml2X3N0YXRlID0gZHJtX2F0b21pY19nZXRf cHJpdmF0ZV9vYmpfc3RhdGUoc3RhdGUsIG9iaik7Cj4gKwlpZiAoSVNfRVJSX09SX05VTEwocHJp dl9zdGF0ZSkpCj4gKwkJcmV0dXJuIChzdHJ1Y3QgbXNtX2ttc19zdGF0ZSAqKXN0YXRlOyAvKiBj YXN0aW5nIEVSUl9QVFIgKi8KPiArCj4gKwlyZXR1cm4gbXNtX2ttc19zdGF0ZV9mcm9tX3ByaXYo cHJpdl9zdGF0ZSk7Cj4gK30KPiArCj4gK3N0cnVjdCBtc21fa21zX3N0YXRlICptc21fa21zX3N0 YXRlX2Zyb21fZGV2KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0cnVjdCBtc21f ZHJtX3ByaXZhdGUgKnByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9wcml2 YXRlX29iaiAqb2JqID0gJnByaXYtPmttcy0+YmFzZTsKPiArCXN0cnVjdCBkcm1fcHJpdmF0ZV9z dGF0ZSAqcHJpdl9zdGF0ZSA9IG9iai0+c3RhdGU7Cj4gKwo+ICsJcmV0dXJuIG1zbV9rbXNfc3Rh dGVfZnJvbV9wcml2KHByaXZfc3RhdGUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGRybV9w cml2YXRlX3N0YXRlICoKPiArbXNtX2ttc19kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9wcml2 YXRlX29iaiAqb2JqKQo+ICt7Cj4gKwlzdHJ1Y3QgbXNtX2ttcyAqa21zID0gbXNtX2ttc19mcm9t X29iaihvYmopOwo+ICsJc3RydWN0IG1zbV9rbXNfc3RhdGUgKnN0YXRlID0gbXNtX2ttc19zdGF0 ZV9mcm9tX3ByaXYob2JqLT5zdGF0ZSk7Cj4gKwlzdHJ1Y3QgbXNtX2ttc19zdGF0ZSAqbmV3X3N0 YXRlOwo+ICsKPiArCW5ld19zdGF0ZSA9IGt6YWxsb2Moc2l6ZW9mKCpuZXdfc3RhdGUpLCBHRlBf S0VSTkVMKTsKPiArCWlmICghbmV3X3N0YXRlKQo+ICsJCXJldHVybiBOVUxMOwo+ICsKPiArCWlm IChrbXMtPmZ1bmNzLT5kdXBsaWNhdGVfc3RhdGUpCj4gKwkJbmV3X3N0YXRlLT5zdGF0ZSA9IGtt cy0+ZnVuY3MtPmR1cGxpY2F0ZV9zdGF0ZShzdGF0ZS0+c3RhdGUpOwo+ICsKPiArCV9fZHJtX2F0 b21pY19oZWxwZXJfcHJpdmF0ZV9vYmpfZHVwbGljYXRlX3N0YXRlKG9iaiwgJm5ld19zdGF0ZS0+ YmFzZSk7Cj4gKwo+ICsJcmV0dXJuICZuZXdfc3RhdGUtPmJhc2U7Cj4gK30KPiArCj4gK3N0YXRp YyB2b2lkIG1zbV9rbXNfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJtX3ByaXZhdGVfb2JqICpvYmos Cj4gKwkJCQkgIHN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSAqcHJpdl9zdGF0ZSkKPiArewo+ICsJ c3RydWN0IG1zbV9rbXMgKmttcyA9IG1zbV9rbXNfZnJvbV9vYmoob2JqKTsKPiArCXN0cnVjdCBt c21fa21zX3N0YXRlICpzdGF0ZSA9IG1zbV9rbXNfc3RhdGVfZnJvbV9wcml2KHByaXZfc3RhdGUp Owo+ICsKPiArCWlmIChrbXMtPmZ1bmNzLT5kZXN0cm95X3N0YXRlKQo+ICsJCWttcy0+ZnVuY3Mt PmRlc3Ryb3lfc3RhdGUoc3RhdGUtPnN0YXRlKTsKPiArCWtmcmVlKHN0YXRlKTsKPiArfQo+ICsK PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZV9mdW5jcyBrbXNfc3RhdGVf ZnVuY3MgPSB7Cj4gKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IG1zbV9rbXNfZHVwbGljYXRl X3N0YXRlLAo+ICsJLmF0b21pY19kZXN0cm95X3N0YXRlID0gbXNtX2ttc19kZXN0cm95X3N0YXRl LAo+ICt9Owo+ICsKPiArCgpNaW5vciBuaXQ6IFR3byBibGFuayBsaW5lcyBoZXJlXgoKPiAgICNp ZmRlZiBDT05GSUdfRFJNX01TTV9SRUdJU1RFUl9MT0dHSU5HCj4gICBzdGF0aWMgYm9vbCByZWds b2cgPSBmYWxzZTsKPiAgIE1PRFVMRV9QQVJNX0RFU0MocmVnbG9nLCAiRW5hYmxlIHJlZ2lzdGVy IHJlYWQvd3JpdGUgbG9nZ2luZyIpOwo+IEBAIC0yNDUsNiArMzEzLDggQEAgc3RhdGljIGludCBt c21fZHJtX3VuaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gICAJZmx1c2hfd29ya3F1ZXVlKHBy aXYtPmF0b21pY193cSk7Cj4gICAJZGVzdHJveV93b3JrcXVldWUocHJpdi0+YXRvbWljX3dxKTsK PiAgIAo+ICsJZHJtX2F0b21pY19wcml2YXRlX29ial9maW5pKCZrbXMtPmJhc2UpOwo+ICsKPiAg IAlpZiAoa21zICYmIGttcy0+ZnVuY3MpCj4gICAJCWttcy0+ZnVuY3MtPmRlc3Ryb3koa21zKTsK PiAgIAo+IEBAIC0zNTYsNiArNDI2LDcgQEAgc3RhdGljIGludCBtc21fZHJtX2luaXQoc3RydWN0 IGRldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2RyaXZlciAqZHJ2KQo+ICAgCXN0cnVjdCBkcm1fZGV2 aWNlICpkZGV2Owo+ICAgCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXY7Cj4gICAJc3RydWN0 IG1zbV9rbXMgKmttczsKPiArCXN0cnVjdCBtc21fa21zX3N0YXRlICppbml0aWFsX3N0YXRlOwo+ ICAgCWludCByZXQ7Cj4gICAKPiAgIAlkZGV2ID0gZHJtX2Rldl9hbGxvYyhkcnYsIGRldik7Cj4g QEAgLTM2NCw2ICs0MzUsMTAgQEAgc3RhdGljIGludCBtc21fZHJtX2luaXQoc3RydWN0IGRldmlj ZSAqZGV2LCBzdHJ1Y3QgZHJtX2RyaXZlciAqZHJ2KQo+ICAgCQlyZXR1cm4gUFRSX0VSUihkZGV2 KTsKPiAgIAl9Cj4gICAKPiArCWluaXRpYWxfc3RhdGUgPSBremFsbG9jKHNpemVvZigqaW5pdGlh bF9zdGF0ZSksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFpbml0aWFsX3N0YXRlKQo+ICsJCXJldHVy biAtRU5PTUVNOwo+ICsKPiAgIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkZGV2KTsKPiAg IAo+ICAgCXByaXYgPSBremFsbG9jKHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpOwo+IEBAIC0z OTQsNyArNDY5LDcgQEAgc3RhdGljIGludCBtc21fZHJtX2luaXQoc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3QgZHJtX2RyaXZlciAqZHJ2KQo+ICAgCWRybV9tb2RlX2NvbmZpZ19pbml0KGRkZXYp Owo+ICAgCj4gICAJLyogQmluZCBhbGwgb3VyIHN1Yi1jb21wb25lbnRzOiAqLwo+IC0JcmV0ID0g Y29tcG9uZW50X2JpbmRfYWxsKGRldiwgZGRldik7Cj4gKwlyZXQgPSBjb21wb25lbnRfYmluZF9h bGwoZGV2LCBpbml0aWFsX3N0YXRlKTsKCk9ubHkgdGhlIGNvcmUga21zIGNvbXBvbmVudCAobWRw NC9tZHA1L2RwdSkgd2lsbCB1c2UgaW5pdGlhbF9zdGF0ZSwKYW5kIHRoZSBlbmNvZGVycyBkcml2 ZXJzIChEU0kvSERNSSkgd291bGQgZGlzY2FyZCBpdCwgcmlnaHQ/IEkgZ3Vlc3MKaXQncyBzdGls bCBiZXR0ZXIgdGhhbiBwYXNzaW5nIGRkZXYsIHdoaWNoIGNhbiBiZSBkZXJpdmVkIGZyb20gdGhl CmNvbXBvbmVudCBtYXN0ZXIuCgpSZXZpZXdlZC1ieTogQXJjaGl0IFRhbmVqYSA8YXJjaGl0dEBj b2RlYXVyb3JhLm9yZz4KCj4gICAJaWYgKHJldCkgewo+ICAgCQltc21fbWRzc19kZXN0cm95KGRk ZXYpOwo+ICAgCQlrZnJlZShwcml2KTsKPiBAQCAtNDMzLDYgKzUwOCwxMCBAQCBzdGF0aWMgaW50 IG1zbV9kcm1faW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZHJpdmVyICpkcnYp Cj4gICAJCWdvdG8gZmFpbDsKPiAgIAl9Cj4gICAKPiArCWRybV9hdG9taWNfcHJpdmF0ZV9vYmpf aW5pdCgma21zLT5iYXNlLAo+ICsJCQkJICAgICZpbml0aWFsX3N0YXRlLT5iYXNlLAo+ICsJCQkJ ICAgICZrbXNfc3RhdGVfZnVuY3MpOwo+ICsKPiAgIAlpZiAoa21zKSB7Cj4gICAJCXJldCA9IGtt cy0+ZnVuY3MtPmh3X2luaXQoa21zKTsKPiAgIAkJaWYgKHJldCkgewo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Ry di5oCj4gaW5kZXggNDhlZDViOWE4NTgwLi5jNWI4Yzk4OWI4NTkgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21z bV9kcnYuaAo+IEBAIC0xNjIsOSArMTYyLDYgQEAgc3RydWN0IG1zbV9mb3JtYXQgewo+ICAgCj4g ICBpbnQgbXNtX2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAkJc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLCBib29sIG5vbmJsb2NrKTsKPiAtc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKm1zbV9hdG9taWNfc3RhdGVfYWxsb2Moc3RydWN0IGRybV9kZXZpY2Ug KmRldik7Cj4gLXZvaWQgbXNtX2F0b21pY19zdGF0ZV9jbGVhcihzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGUpOwo+IC12b2lkIG1zbV9hdG9taWNfc3RhdGVfZnJlZShzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUpOwo+ICAgCj4gICB2b2lkIG1zbV9nZW1fdW5tYXBfdm1hKHN0cnVj dCBtc21fZ2VtX2FkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKPiAgIAkJc3RydWN0IG1zbV9nZW1fdm1h ICp2bWEsIHN0cnVjdCBzZ190YWJsZSAqc2d0KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21zbS9tc21fa21zLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9rbXMuaAo+IGluZGV4 IDE3ZDU4MjQ0MTdhZC4uMjRkMDlmY2ViZjE2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vbXNtX2ttcy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fa21zLmgKPiBA QCAtNDIsNiArNDIsOCBAQCBzdHJ1Y3QgbXNtX2ttc19mdW5jcyB7Cj4gICAJdm9pZCAoKmRpc2Fi bGVfdmJsYW5rKShzdHJ1Y3QgbXNtX2ttcyAqa21zLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwo+ ICAgCS8qIHN3YXAgZ2xvYmFsIGF0b21pYyBzdGF0ZTogKi8KPiAgIAl2b2lkICgqc3dhcF9zdGF0 ZSkoc3RydWN0IG1zbV9rbXMgKmttcywgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsK PiArCXZvaWQgKigqZHVwbGljYXRlX3N0YXRlKSh2b2lkICpzdGF0ZSk7Cj4gKwl2b2lkICgqZGVz dHJveV9zdGF0ZSkodm9pZCAqc3RhdGUpOwo+ICAgCS8qIG1vZGVzZXQsIGJyYWNrZXRpbmcgYXRv bWljX2NvbW1pdCgpOiAqLwo+ICAgCXZvaWQgKCpwcmVwYXJlX2NvbW1pdCkoc3RydWN0IG1zbV9r bXMgKmttcywgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKPiAgIAl2b2lkICgqY29t cGxldGVfY29tbWl0KShzdHJ1Y3QgbXNtX2ttcyAqa21zLCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUpOwo+IEBAIC02OCw2ICs3MCw4IEBAIHN0cnVjdCBtc21fa21zX2Z1bmNzIHsKPiAg IH07Cj4gICAKPiAgIHN0cnVjdCBtc21fa21zIHsKPiArCXN0cnVjdCBkcm1fcHJpdmF0ZV9vYmog YmFzZTsKPiArCj4gICAJY29uc3Qgc3RydWN0IG1zbV9rbXNfZnVuY3MgKmZ1bmNzOwo+ICAgCj4g ICAJLyogaXJxIG51bWJlciB0byBiZSBwYXNzZWQgb24gdG8gZHJtX2lycV9pbnN0YWxsICovCj4g QEAgLTc4LDE2ICs4MiwyMyBAQCBzdHJ1Y3QgbXNtX2ttcyB7Cj4gICB9Owo+ICAgCj4gICAvKioK PiAtICogU3ViY2xhc3Mgb2YgZHJtX2F0b21pY19zdGF0ZSwgdG8gYWxsb3cga21zIGJhY2tlbmQg dG8gaGF2ZSBkcml2ZXIKPiArICogU3ViY2xhc3Mgb2YgZHJtX3ByaXZhdGVfc3RhdGUsIHRvIGFs bG93IGttcyBiYWNrZW5kIHRvIGhhdmUgZHJpdmVyCj4gICAgKiBwcml2YXRlIGdsb2JhbCBzdGF0 ZS4gIFRoZSBrbXMgYmFja2VuZCBjYW4gZG8gd2hhdGV2ZXIgaXQgd2FudHMKPiAtICogd2l0aCB0 aGUgLT5zdGF0ZSBwdHIuICBPbiAtPmF0b21pY19zdGF0ZV9jbGVhcigpIHRoZSAtPnN0YXRlIHB0 cgo+IC0gKiBpcyBrZnJlZSdkIGFuZCBzZXQgYmFjayB0byBOVUxMLgo+ICsgKiB3aXRoIHRoZSAt PnN0YXRlIHB0ci4KPiAgICAqLwo+ICAgc3RydWN0IG1zbV9rbXNfc3RhdGUgewo+IC0Jc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgYmFzZTsKPiArCXN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSBiYXNl Owo+ICAgCXZvaWQgKnN0YXRlOwo+ICAgfTsKPiAtI2RlZmluZSB0b19rbXNfc3RhdGUoeCkgY29u dGFpbmVyX29mKHgsIHN0cnVjdCBtc21fa21zX3N0YXRlLCBiYXNlKQo+ICsKPiArLyoqCj4gKyAq IEV4dHJhY3RzIHRoZSBtc21fa21zX3N0YXRlIGZyb20gZWl0aGVyIGFuIGF0b21pYyBzdGF0ZSwg b3IgdGhlIGN1cnJlbnQKPiArICogZGV2aWNlLiBPbmUgb3IgdGhlIG90aGVyIG1pZ2h0IGJlIGRl c2lyYWJsZSBkZXBlbmRpbmcgb24gd2hldGhlciB5b3Ugd2FudCB0aGUKPiArICogY3VycmVudGx5 IGNvbmZpZ3VyZWQgbXNtX2ttc19zdGF0ZSAoZnJvbV9kZXYpLCBvciB5b3Ugd291bGQgbGlrZSB0 aGUgc3RhdGUKPiArICogd2hpY2ggaXMgYWJvdXQgdG8gYmUgYXBwbGllZCAoZnJvbV9hdG9taWMp Lgo+ICsgKi8KPiArc3RydWN0IG1zbV9rbXNfc3RhdGUgKm1zbV9rbXNfc3RhdGVfZnJvbV9kZXYo c3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gK3N0cnVjdCBtc21fa21zX3N0YXRlICptc21fa21z X3N0YXRlX2Zyb21fYXRvbWljKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Cj4gICAK PiAgIHN0YXRpYyBpbmxpbmUgdm9pZCBtc21fa21zX2luaXQoc3RydWN0IG1zbV9rbXMgKmttcywK PiAgIAkJY29uc3Qgc3RydWN0IG1zbV9rbXNfZnVuY3MgKmZ1bmNzKQo+IApfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0 CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K