From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [PATCH 14/14] drm/msm/dpu: remove cdm block support from resource manager Date: Fri, 31 Aug 2018 12:12:32 -0400 Message-ID: <20180831161232.GQ188300@art_vandelay> References: <1535503203-22054-1-git-send-email-jsanka@codeaurora.org> <1535503203-22054-15-git-send-email-jsanka@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1535503203-22054-15-git-send-email-jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Jeykumar Sankaran Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, hoegsberg-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gVHVlLCBBdWcgMjgsIDIwMTggYXQgMDU6NDA6MDNQTSAtMDcwMCwgSmV5a3VtYXIgU2Fua2Fy YW4gd3JvdGU6Cj4gU3VwcG9ydCBmb3IgQ0RNIGJsb2NrIGlzIG5vdCBwcmVzZW50IGluIERQVS4g UmVtb3ZlIENETQo+IGhhbmRsZXJzIGZyb20gcmVzb3VyY2UgbWFuYWdlci4KCkkgdGhpbmsgdGhl cmUncyBzb21lIGxlZnRvdmVycyB0aGF0IGNhbiBiZSBjbGVhbmVkIHVwLi4uCgokIGFjayAtaSBj ZG0KZGlzcC9kcHUxL2RwdV9od19tZHNzLmgKMTAzOiAgICBEUFVfSFdfQkxLX0NETSwKMTkyOmVu dW0gZHB1X2NkbSB7CjE5MzogICAgQ0RNXzAgPSAxLAoxOTQ6ICAgIENETV8xLAoxOTU6ICAgIENE TV9NQVgKNDU0OiNkZWZpbmUgRFBVX0RCR19NQVNLX0NETSAgICAgICgxIDw8IDEpCgpkaXNwL2Rw dTEvZHB1X2h3X2NhdGFsb2cuaAo1MzM6ICogc3RydWN0IGRwdV9jZG1fY2ZnIC0gaW5mb3JtYXRp b24gb2YgY2hyb21hIGRvd24gYmxvY2tzCjUzNzogKiBAaW50Zl9jb25uZWN0ICAgICAgIEJpdG1h c2sgb2YgSU5URiBJRHMgdGhpcyBDRE0gY2FuIGNvbm5lY3QgdG8KNTM5OnN0cnVjdCBkcHVfY2Rt X2NmZyAgIHsKNzM3OiAgICB1MzIgY2RtX2NvdW50Owo3Mzg6ICAgIHN0cnVjdCBkcHVfY2RtX2Nm ZyAqY2RtOwo3NzY6I2RlZmluZSBCTEtfQ0RNKHMpICgocyktPmNkbSkKCmRpc3AvZHB1MS9kcHVf aHdfY2F0YWxvZy5jCjMyNDogKiBDRE0gc3ViIGJsb2NrcyBjb25maWcKMzI2OnN0YXRpYyBzdHJ1 Y3QgZHB1X2NkbV9jZmcgc2RtODQ1X2NkbVtdID0gewozMjg6ICAgIC5uYW1lID0gImNkbV8wIiwg LmlkID0gQ0RNXzAsCjQ2MTogICAgICAgICAgICAuY2RtX2NvdW50ID0gQVJSQVlfU0laRShzZG04 NDVfY2RtKSwKNDYyOiAgICAgICAgICAgIC5jZG0gPSBzZG04NDVfY2RtLAoKCgo+IAo+IFNpZ25l ZC1vZmYtYnk6IEpleWt1bWFyIFNhbmthcmFuIDxqc2Fua2FAY29kZWF1cm9yYS5vcmc+Cj4gLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICB8ICAg MSAtCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmggICAgICB8 ICAgMiAtCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXMu aCB8ICAgNSAtCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jZG0uYyAg ICAgICB8IDMyMyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfaHdfY2RtLmggICAgICAgfCAxMzkgLS0tLS0tLS0tLQo+ICBkcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY3RsLmMgICAgICAgfCAgMTQgLQo+ICBkcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY3RsLmggICAgICAgfCAgIDQgLQo+ICBk cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfdG9wLmMgICAgICAgfCAgMTggLS0K PiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3RvcC5oICAgICAgIHwgIDE3 IC0tCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jICAgICAgICAgICB8 ICA2OCArLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfdHJhY2UuaCAg ICAgICAgfCAgIDQgLQo+ICAxMSBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDU5MyBk ZWxldGlvbnMoLSkKPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9od19jZG0uYwo+ICBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2h3X2NkbS5oCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxlCj4gaW5kZXgg MjYxZmE3OS4uMTlhYjUyMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL01ha2Vm aWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZQo+IEBAIC01OCw3ICs1OCw2 IEBAIG1zbS15IDo9IFwKPiAgCWRpc3AvZHB1MS9kcHVfZm9ybWF0cy5vIFwKPiAgCWRpc3AvZHB1 MS9kcHVfaHdfYmxrLm8gXAo+ICAJZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLm8gXAo+IC0JZGlz cC9kcHUxL2RwdV9od19jZG0ubyBcCj4gIAlkaXNwL2RwdTEvZHB1X2h3X2N0bC5vIFwKPiAgCWRp c3AvZHB1MS9kcHVfaHdfaW50ZXJydXB0cy5vIFwKPiAgCWRpc3AvZHB1MS9kcHVfaHdfaW50Zi5v IFwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29k ZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmgKPiBpbmRl eCBlNDUzMjcxLi5lODQ0YWZhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9lbmNvZGVyLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfZW5jb2Rlci5oCj4gQEAgLTMyLDExICszMiw5IEBACj4gIC8qKgo+ICAgKiBFbmNvZGVy IGZ1bmN0aW9ucyBhbmQgZGF0YSB0eXBlcwo+ICAgKiBAaW50ZnM6CUludGVyZmFjZXMgdGhpcyBl bmNvZGVyIGlzIHVzaW5nLCBJTlRGX01PREVfTk9ORSBpZiB1bnVzZWQKPiAtICogQG5lZWRzX2Nk bToJRW5jb2RlciByZXF1ZXN0cyBhIENETSBiYXNlZCBvbiBwaXhlbCBmb3JtYXQgY29udmVyc2lv biBuZWVkcwo+ICAgKi8KPiAgc3RydWN0IGRwdV9lbmNvZGVyX2h3X3Jlc291cmNlcyB7Cj4gIAll bnVtIGRwdV9pbnRmX21vZGUgaW50ZnNbSU5URl9NQVhdOwo+IC0JYm9vbCBuZWVkc19jZG07Cj4g IH07Cj4gIAo+ICAvKioKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2VuY29kZXJfcGh5cy5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2VuY29kZXJfcGh5cy5oCj4gaW5kZXggYjVmYzY1Yy4uZjc5NjY4MyAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzLmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzLmgKPiBAQCAtMjIs NyArMjIsNiBAQAo+ICAjaW5jbHVkZSAiZHB1X2h3X3Bpbmdwb25nLmgiCj4gICNpbmNsdWRlICJk cHVfaHdfY3RsLmgiCj4gICNpbmNsdWRlICJkcHVfaHdfdG9wLmgiCj4gLSNpbmNsdWRlICJkcHVf aHdfY2RtLmgiCj4gICNpbmNsdWRlICJkcHVfZW5jb2Rlci5oIgo+ICAjaW5jbHVkZSAiZHB1X2Ny dGMuaCIKPiAgCj4gQEAgLTIwNSw4ICsyMDQsNiBAQCBzdHJ1Y3QgZHB1X2VuY29kZXJfaXJxIHsK PiAgICogQHBhcmVudF9vcHM6CQlDYWxsYmFja3MgZXhwb3NlZCBieSB0aGUgcGFyZW50IHRvIHRo ZSBwaHlzX2VuYwo+ICAgKiBAaHdfbWRwdG9wOgkJSGFyZHdhcmUgaW50ZXJmYWNlIHRvIHRoZSB0 b3AgcmVnaXN0ZXJzCj4gICAqIEBod19jdGw6CQlIYXJkd2FyZSBpbnRlcmZhY2UgdG8gdGhlIGN0 bCByZWdpc3RlcnMKPiAtICogQGh3X2NkbToJCUhhcmR3YXJlIGludGVyZmFjZSB0byB0aGUgY2Rt IHJlZ2lzdGVycwo+IC0gKiBAY2RtX2NmZzoJCUNocm9tYS1kb3duIGhhcmR3YXJlIGNvbmZpZ3Vy YXRpb24KPiAgICogQGh3X3BwOgkJSGFyZHdhcmUgaW50ZXJmYWNlIHRvIHRoZSBwaW5nIHBvbmcg cmVnaXN0ZXJzCj4gICAqIEBkcHVfa21zOgkJUG9pbnRlciB0byB0aGUgZHB1X2ttcyB0b3AgbGV2 ZWwKPiAgICogQGNhY2hlZF9tb2RlOglEUk0gbW9kZSBjYWNoZWQgYXQgbW9kZV9zZXQgdGltZSwg YWN0ZWQgb24gaW4gZW5hYmxlCj4gQEAgLTIzNSw4ICsyMzIsNiBAQCBzdHJ1Y3QgZHB1X2VuY29k ZXJfcGh5cyB7Cj4gIAljb25zdCBzdHJ1Y3QgZHB1X2VuY29kZXJfdmlydF9vcHMgKnBhcmVudF9v cHM7Cj4gIAlzdHJ1Y3QgZHB1X2h3X21kcCAqaHdfbWRwdG9wOwo+ICAJc3RydWN0IGRwdV9od19j dGwgKmh3X2N0bDsKPiAtCXN0cnVjdCBkcHVfaHdfY2RtICpod19jZG07Cj4gLQlzdHJ1Y3QgZHB1 X2h3X2NkbV9jZmcgY2RtX2NmZzsKPiAgCXN0cnVjdCBkcHVfaHdfcGluZ3BvbmcgKmh3X3BwOwo+ ICAJc3RydWN0IGRwdV9rbXMgKmRwdV9rbXM7Cj4gIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSBj YWNoZWRfbW9kZTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2h3X2NkbS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NkbS5j Cj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggNTU0ODc0Yi4uMDAwMDAwMAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jZG0uYwo+ICsrKyAvZGV2 L251bGwKPiBAQCAtMSwzMjMgKzAsMCBAQAo+IC0vKiBDb3B5cmlnaHQgKGMpIDIwMTUtMjAxOCwg VGhlIExpbnV4IEZvdW5kYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gLSAqCj4gLSAqIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5Cj4gLSAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgdmVyc2lvbiAyIGFuZAo+IC0gKiBvbmx5IHZlcnNpb24gMiBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiAtICoKPiAtICogVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4g LSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCj4gLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKPiAtICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KPiAtICovCj4gLQo+IC0jaW5jbHVkZSAiZHB1X2h3X21kc3MuaCIKPiAt I2luY2x1ZGUgImRwdV9od2lvLmgiCj4gLSNpbmNsdWRlICJkcHVfaHdfY2F0YWxvZy5oIgo+IC0j aW5jbHVkZSAiZHB1X2h3X2NkbS5oIgo+IC0jaW5jbHVkZSAiZHB1X2RiZy5oIgo+IC0jaW5jbHVk ZSAiZHB1X2ttcy5oIgo+IC0KPiAtI2RlZmluZSBDRE1fQ1NDXzEwX09QTU9ERSAgICAgICAgICAg ICAgICAgIDB4MDAwCj4gLSNkZWZpbmUgQ0RNX0NTQ18xMF9CQVNFICAgICAgICAgICAgICAgICAg ICAweDAwNAo+IC0KPiAtI2RlZmluZSBDRE1fQ0RXTjJfT1BfTU9ERSAgICAgICAgICAgICAgICAg IDB4MTAwCj4gLSNkZWZpbmUgQ0RNX0NEV04yX0NMQU1QX09VVCAgICAgICAgICAgICAgICAweDEw NAo+IC0jZGVmaW5lIENETV9DRFdOMl9QQVJBTVNfM0RfMCAgICAgICAgICAgICAgMHgxMDgKPiAt I2RlZmluZSBDRE1fQ0RXTjJfUEFSQU1TXzNEXzEgICAgICAgICAgICAgIDB4MTBDCj4gLSNkZWZp bmUgQ0RNX0NEV04yX0NPRUZGX0NPU0lURV9IXzAgICAgICAgICAweDExMAo+IC0jZGVmaW5lIENE TV9DRFdOMl9DT0VGRl9DT1NJVEVfSF8xICAgICAgICAgMHgxMTQKPiAtI2RlZmluZSBDRE1fQ0RX TjJfQ09FRkZfQ09TSVRFX0hfMiAgICAgICAgIDB4MTE4Cj4gLSNkZWZpbmUgQ0RNX0NEV04yX0NP RUZGX09GRlNJVEVfSF8wICAgICAgICAweDExQwo+IC0jZGVmaW5lIENETV9DRFdOMl9DT0VGRl9P RkZTSVRFX0hfMSAgICAgICAgMHgxMjAKPiAtI2RlZmluZSBDRE1fQ0RXTjJfQ09FRkZfT0ZGU0lU RV9IXzIgICAgICAgIDB4MTI0Cj4gLSNkZWZpbmUgQ0RNX0NEV04yX0NPRUZGX0NPU0lURV9WICAg ICAgICAgICAweDEyOAo+IC0jZGVmaW5lIENETV9DRFdOMl9DT0VGRl9PRkZTSVRFX1YgICAgICAg ICAgMHgxMkMKPiAtI2RlZmluZSBDRE1fQ0RXTjJfT1VUX1NJWkUgICAgICAgICAgICAgICAgIDB4 MTMwCj4gLQo+IC0jZGVmaW5lIENETV9IRE1JX1BBQ0tfT1BfTU9ERSAgICAgICAgICAgICAgMHgy MDAKPiAtI2RlZmluZSBDRE1fQ1NDXzEwX01BVFJJWF9DT0VGRl8wICAgICAgICAgIDB4MDA0Cj4g LQo+IC0vKioKPiAtICogSG9yaXpvbnRhbCBjb2VmZmljaWVudHMgZm9yIGNvc2l0ZSBjaHJvbWEg ZG93bnNjYWxlCj4gLSAqIHMxMyByZXByZXNlbnRhdGlvbiBvZiBjb2VmZmljaWVudHMKPiAtICov Cj4gLXN0YXRpYyB1MzIgY29zaXRlX2hfY29lZmZbXSA9IHsweDAwMDAwMDE2LCAweDAwMDAwMWNj LCAweDAxMDAwMDllfTsKPiAtCj4gLS8qKgo+IC0gKiBIb3Jpem9udGFsIGNvZWZmaWNpZW50cyBm b3Igb2Zmc2l0ZSBjaHJvbWEgZG93bnNjYWxlCj4gLSAqLwo+IC1zdGF0aWMgdTMyIG9mZnNpdGVf aF9jb2VmZltdID0gezB4MDAwYjAwMDUsIDB4MDFkYjAxZWIsIDB4MDBlNDAwNDZ9Owo+IC0KPiAt LyoqCj4gLSAqIFZlcnRpY2FsIGNvZWZmaWNpZW50cyBmb3IgY29zaXRlIGNocm9tYSBkb3duc2Nh bGUKPiAtICovCj4gLXN0YXRpYyB1MzIgY29zaXRlX3ZfY29lZmZbXSA9IHsweDAwMDgwMDA0fTsK PiAtLyoqCj4gLSAqIFZlcnRpY2FsIGNvZWZmaWNpZW50cyBmb3Igb2Zmc2l0ZSBjaHJvbWEgZG93 bnNjYWxlCj4gLSAqLwo+IC1zdGF0aWMgdTMyIG9mZnNpdGVfdl9jb2VmZltdID0gezB4MDAwNjAw MDJ9Owo+IC0KPiAtLyogTGltaXRlZCBSYW5nZSByZ2IyeXV2IGNvZWZmIHdpdGggY2xhbXAgYW5k IGJpYXMgdmFsdWVzIGZvciBDU0MgMTAgbW9kdWxlICovCj4gLXN0YXRpYyBzdHJ1Y3QgZHB1X2Nz Y19jZmcgcmdiMnl1dl9jZmcgPSB7Cj4gLQl7Cj4gLQkJMHgwMDgzLCAweDAxMDIsIDB4MDAzMiwK PiAtCQkweDFmYjUsIDB4MWY2YywgMHgwMGUxLAo+IC0JCTB4MDBlMSwgMHgxZjQ1LCAweDFmZGMK PiAtCX0sCj4gLQl7IDB4MDAsIDB4MDAsIDB4MDAgfSwKPiAtCXsgMHgwMDQwLCAweDAyMDAsIDB4 MDIwMCB9LAo+IC0JeyAweDAwMCwgMHgzZmYsIDB4MDAwLCAweDNmZiwgMHgwMDAsIDB4M2ZmIH0s Cj4gLQl7IDB4MDQwLCAweDNhYywgMHgwNDAsIDB4M2MwLCAweDA0MCwgMHgzYzAgfSwKPiAtfTsK PiAtCj4gLXN0YXRpYyBzdHJ1Y3QgZHB1X2NkbV9jZmcgKl9jZG1fb2Zmc2V0KGVudW0gZHB1X2Nk bSBjZG0sCj4gLQkJc3RydWN0IGRwdV9tZHNzX2NmZyAqbSwKPiAtCQl2b2lkIF9faW9tZW0gKmFk ZHIsCj4gLQkJc3RydWN0IGRwdV9od19ibGtfcmVnX21hcCAqYikKPiAtewo+IC0JaW50IGk7Cj4g LQo+IC0JZm9yIChpID0gMDsgaSA8IG0tPmNkbV9jb3VudDsgaSsrKSB7Cj4gLQkJaWYgKGNkbSA9 PSBtLT5jZG1baV0uaWQpIHsKPiAtCQkJYi0+YmFzZV9vZmYgPSBhZGRyOwo+IC0JCQliLT5ibGtf b2ZmID0gbS0+Y2RtW2ldLmJhc2U7Cj4gLQkJCWItPmxlbmd0aCA9IG0tPmNkbVtpXS5sZW47Cj4g LQkJCWItPmh3dmVyc2lvbiA9IG0tPmh3dmVyc2lvbjsKPiAtCQkJYi0+bG9nX21hc2sgPSBEUFVf REJHX01BU0tfQ0RNOwo+IC0JCQlyZXR1cm4gJm0tPmNkbVtpXTsKPiAtCQl9Cj4gLQl9Cj4gLQo+ IC0JcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQgZHB1X2h3 X2NkbV9zZXR1cF9jc2NfMTBiaXQoc3RydWN0IGRwdV9od19jZG0gKmN0eCwKPiAtCQlzdHJ1Y3Qg ZHB1X2NzY19jZmcgKmRhdGEpCj4gLXsKPiAtCWRwdV9od19jc2Nfc2V0dXAoJmN0eC0+aHcsIENE TV9DU0NfMTBfTUFUUklYX0NPRUZGXzAsIGRhdGEsIHRydWUpOwo+IC0KPiAtCXJldHVybiAwOwo+ IC19Cj4gLQo+IC1zdGF0aWMgaW50IGRwdV9od19jZG1fc2V0dXBfY2R3bihzdHJ1Y3QgZHB1X2h3 X2NkbSAqY3R4LAo+IC0JCXN0cnVjdCBkcHVfaHdfY2RtX2NmZyAqY2ZnKQo+IC17Cj4gLQlzdHJ1 Y3QgZHB1X2h3X2Jsa19yZWdfbWFwICpjID0gJmN0eC0+aHc7Cj4gLQl1MzIgb3Btb2RlID0gMDsK PiAtCXUzMiBvdXRfc2l6ZSA9IDA7Cj4gLQo+IC0JaWYgKGNmZy0+b3V0cHV0X2JpdF9kZXB0aCA9 PSBDRE1fQ0RXTl9PVVRQVVRfMTBCSVQpCj4gLQkJb3Btb2RlICY9IH5CSVQoNyk7Cj4gLQllbHNl Cj4gLQkJb3Btb2RlIHw9IEJJVCg3KTsKPiAtCj4gLQkvKiBFTkFCTEUgRFdOU19IIGJpdCAqLwo+ IC0Jb3Btb2RlIHw9IEJJVCgxKTsKPiAtCj4gLQlzd2l0Y2ggKGNmZy0+aF9jZHduX3R5cGUpIHsK PiAtCWNhc2UgQ0RNX0NEV05fRElTQUJMRToKPiAtCQkvKiBDTEVBUiBNRVRIT0RfSCBmaWVsZCAq Lwo+IC0JCW9wbW9kZSAmPSB+KDB4MTgpOwo+IC0JCS8qIENMRUFSIERXTlNfSCBiaXQgKi8KPiAt CQlvcG1vZGUgJj0gfkJJVCgxKTsKPiAtCQlicmVhazsKPiAtCWNhc2UgQ0RNX0NEV05fUElYRUxf RFJPUDoKPiAtCQkvKiBDbGVhciBNRVRIT0RfSCBmaWVsZCAocGl4ZWwgZHJvcCBpcyAwKSAqLwo+ IC0JCW9wbW9kZSAmPSB+KDB4MTgpOwo+IC0JCWJyZWFrOwo+IC0JY2FzZSBDRE1fQ0RXTl9BVkc6 Cj4gLQkJLyogQ2xlYXIgTUVUSE9EX0ggZmllbGQgKEF2ZXJhZ2UgaXMgMHgxKSAqLwo+IC0JCW9w bW9kZSAmPSB+KDB4MTgpOwo+IC0JCW9wbW9kZSB8PSAoMHgxIDw8IDB4Myk7Cj4gLQkJYnJlYWs7 Cj4gLQljYXNlIENETV9DRFdOX0NPU0lURToKPiAtCQkvKiBDbGVhciBNRVRIT0RfSCBmaWVsZCAo QXZlcmFnZSBpcyAweDIpICovCj4gLQkJb3Btb2RlICY9IH4oMHgxOCk7Cj4gLQkJb3Btb2RlIHw9 ICgweDIgPDwgMHgzKTsKPiAtCQkvKiBDby1zaXRlIGhvcml6b250YWwgY29lZmZpY2llbnRzICov Cj4gLQkJRFBVX1JFR19XUklURShjLCBDRE1fQ0RXTjJfQ09FRkZfQ09TSVRFX0hfMCwKPiAtCQkJ CWNvc2l0ZV9oX2NvZWZmWzBdKTsKPiAtCQlEUFVfUkVHX1dSSVRFKGMsIENETV9DRFdOMl9DT0VG Rl9DT1NJVEVfSF8xLAo+IC0JCQkJY29zaXRlX2hfY29lZmZbMV0pOwo+IC0JCURQVV9SRUdfV1JJ VEUoYywgQ0RNX0NEV04yX0NPRUZGX0NPU0lURV9IXzIsCj4gLQkJCQljb3NpdGVfaF9jb2VmZlsy XSk7Cj4gLQkJYnJlYWs7Cj4gLQljYXNlIENETV9DRFdOX09GRlNJVEU6Cj4gLQkJLyogQ2xlYXIg TUVUSE9EX0ggZmllbGQgKEF2ZXJhZ2UgaXMgMHgzKSAqLwo+IC0JCW9wbW9kZSAmPSB+KDB4MTgp Owo+IC0JCW9wbW9kZSB8PSAoMHgzIDw8IDB4Myk7Cj4gLQo+IC0JCS8qIE9mZi1zaXRlIGhvcml6 b250YWwgY29lZmZpY2llbnRzICovCj4gLQkJRFBVX1JFR19XUklURShjLCBDRE1fQ0RXTjJfQ09F RkZfT0ZGU0lURV9IXzAsCj4gLQkJCQlvZmZzaXRlX2hfY29lZmZbMF0pOwo+IC0JCURQVV9SRUdf V1JJVEUoYywgQ0RNX0NEV04yX0NPRUZGX09GRlNJVEVfSF8xLAo+IC0JCQkJb2Zmc2l0ZV9oX2Nv ZWZmWzFdKTsKPiAtCQlEUFVfUkVHX1dSSVRFKGMsIENETV9DRFdOMl9DT0VGRl9PRkZTSVRFX0hf MiwKPiAtCQkJCW9mZnNpdGVfaF9jb2VmZlsyXSk7Cj4gLQkJYnJlYWs7Cj4gLQlkZWZhdWx0Ogo+ IC0JCXByX2VycigiJXMgaW52YWxpZCBob3J6IGRvd24gc2FtcGxpbmcgdHlwZVxuIiwgX19mdW5j X18pOwo+IC0JCXJldHVybiAtRUlOVkFMOwo+IC0JfQo+IC0KPiAtCS8qIEVOQUJMRSBEV05TX1Yg Yml0ICovCj4gLQlvcG1vZGUgfD0gQklUKDIpOwo+IC0KPiAtCXN3aXRjaCAoY2ZnLT52X2Nkd25f dHlwZSkgewo+IC0JY2FzZSBDRE1fQ0RXTl9ESVNBQkxFOgo+IC0JCS8qIENMRUFSIE1FVEhPRF9W IGZpZWxkICovCj4gLQkJb3Btb2RlICY9IH4oMHg2MCk7Cj4gLQkJLyogQ0xFQVIgRFdOU19WIGJp dCAqLwo+IC0JCW9wbW9kZSAmPSB+QklUKDIpOwo+IC0JCWJyZWFrOwo+IC0JY2FzZSBDRE1fQ0RX Tl9QSVhFTF9EUk9QOgo+IC0JCS8qIENsZWFyIE1FVEhPRF9WIGZpZWxkIChwaXhlbCBkcm9wIGlz IDApICovCj4gLQkJb3Btb2RlICY9IH4oMHg2MCk7Cj4gLQkJYnJlYWs7Cj4gLQljYXNlIENETV9D RFdOX0FWRzoKPiAtCQkvKiBDbGVhciBNRVRIT0RfViBmaWVsZCAoQXZlcmFnZSBpcyAweDEpICov Cj4gLQkJb3Btb2RlICY9IH4oMHg2MCk7Cj4gLQkJb3Btb2RlIHw9ICgweDEgPDwgMHg1KTsKPiAt CQlicmVhazsKPiAtCWNhc2UgQ0RNX0NEV05fQ09TSVRFOgo+IC0JCS8qIENsZWFyIE1FVEhPRF9W IGZpZWxkIChBdmVyYWdlIGlzIDB4MikgKi8KPiAtCQlvcG1vZGUgJj0gfigweDYwKTsKPiAtCQlv cG1vZGUgfD0gKDB4MiA8PCAweDUpOwo+IC0JCS8qIENvLXNpdGUgdmVydGljYWwgY29lZmZpY2ll bnRzICovCj4gLQkJRFBVX1JFR19XUklURShjLAo+IC0JCQkJQ0RNX0NEV04yX0NPRUZGX0NPU0lU RV9WLAo+IC0JCQkJY29zaXRlX3ZfY29lZmZbMF0pOwo+IC0JCWJyZWFrOwo+IC0JY2FzZSBDRE1f Q0RXTl9PRkZTSVRFOgo+IC0JCS8qIENsZWFyIE1FVEhPRF9WIGZpZWxkIChBdmVyYWdlIGlzIDB4 MykgKi8KPiAtCQlvcG1vZGUgJj0gfigweDYwKTsKPiAtCQlvcG1vZGUgfD0gKDB4MyA8PCAweDUp Owo+IC0KPiAtCQkvKiBPZmYtc2l0ZSB2ZXJ0aWNhbCBjb2VmZmljaWVudHMgKi8KPiAtCQlEUFVf UkVHX1dSSVRFKGMsCj4gLQkJCQlDRE1fQ0RXTjJfQ09FRkZfT0ZGU0lURV9WLAo+IC0JCQkJb2Zm c2l0ZV92X2NvZWZmWzBdKTsKPiAtCQlicmVhazsKPiAtCWRlZmF1bHQ6Cj4gLQkJcmV0dXJuIC1F SU5WQUw7Cj4gLQl9Cj4gLQo+IC0JaWYgKGNmZy0+dl9jZHduX3R5cGUgfHwgY2ZnLT5oX2Nkd25f dHlwZSkKPiAtCQlvcG1vZGUgfD0gQklUKDApOyAvKiBFTiBDRFdOIG1vZHVsZSAqLwo+IC0JZWxz ZQo+IC0JCW9wbW9kZSAmPSB+QklUKDApOwo+IC0KPiAtCW91dF9zaXplID0gKGNmZy0+b3V0cHV0 X3dpZHRoICYgMHhGRkZGKSB8Cj4gLQkJKChjZmctPm91dHB1dF9oZWlnaHQgJiAweEZGRkYpIDw8 IDE2KTsKPiAtCURQVV9SRUdfV1JJVEUoYywgQ0RNX0NEV04yX09VVF9TSVpFLCBvdXRfc2l6ZSk7 Cj4gLQlEUFVfUkVHX1dSSVRFKGMsIENETV9DRFdOMl9PUF9NT0RFLCBvcG1vZGUpOwo+IC0JRFBV X1JFR19XUklURShjLCBDRE1fQ0RXTjJfQ0xBTVBfT1VULAo+IC0JCQkoKDB4M0ZGIDw8IDE2KSB8 IDB4MCkpOwo+IC0KPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW50IGRwdV9od19j ZG1fZW5hYmxlKHN0cnVjdCBkcHVfaHdfY2RtICpjdHgsCj4gLQkJc3RydWN0IGRwdV9od19jZG1f Y2ZnICpjZG0pCj4gLXsKPiAtCXN0cnVjdCBkcHVfaHdfYmxrX3JlZ19tYXAgKmMgPSAmY3R4LT5o dzsKPiAtCWNvbnN0IHN0cnVjdCBkcHVfZm9ybWF0ICpmbXQgPSBjZG0tPm91dHB1dF9mbXQ7Cj4g LQlzdHJ1Y3QgY2RtX291dHB1dF9jZmcgY2RtX2NmZyA9IHsgMCB9Owo+IC0JdTMyIG9wbW9kZSA9 IDA7Cj4gLQl1MzIgY3NjID0gMDsKPiAtCj4gLQlpZiAoIURQVV9GT1JNQVRfSVNfWVVWKGZtdCkp Cj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQo+IC0JaWYgKGNkbS0+b3V0cHV0X3R5cGUgPT0gQ0RN X0NEV05fT1VUUFVUX0hETUkpIHsKPiAtCQlpZiAoZm10LT5jaHJvbWFfc2FtcGxlICE9IERQVV9D SFJPTUFfSDFWMikKPiAtCQkJcmV0dXJuIC1FSU5WQUw7IC8qdW5zdXBwb3J0ZWQgZm9ybWF0ICov Cj4gLQkJb3Btb2RlID0gQklUKDApOwo+IC0JCW9wbW9kZSB8PSAoZm10LT5jaHJvbWFfc2FtcGxl IDw8IDEpOwo+IC0JCWNkbV9jZmcuaW50Zl9lbiA9IHRydWU7Cj4gLQl9Cj4gLQo+IC0JY3NjIHw9 IEJJVCgyKTsKPiAtCWNzYyAmPSB+QklUKDEpOwo+IC0JY3NjIHw9IEJJVCgwKTsKPiAtCj4gLQlp ZiAoY3R4LT5od19tZHAgJiYgY3R4LT5od19tZHAtPm9wcy5zZXR1cF9jZG1fb3V0cHV0KQo+IC0J CWN0eC0+aHdfbWRwLT5vcHMuc2V0dXBfY2RtX291dHB1dChjdHgtPmh3X21kcCwgJmNkbV9jZmcp Owo+IC0KPiAtCURQVV9SRUdfV1JJVEUoYywgQ0RNX0NTQ18xMF9PUE1PREUsIGNzYyk7Cj4gLQlE UFVfUkVHX1dSSVRFKGMsIENETV9IRE1JX1BBQ0tfT1BfTU9ERSwgb3Btb2RlKTsKPiAtCXJldHVy biAwOwo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCBkcHVfaHdfY2RtX2Rpc2FibGUoc3RydWN0IGRw dV9od19jZG0gKmN0eCkKPiAtewo+IC0Jc3RydWN0IGNkbV9vdXRwdXRfY2ZnIGNkbV9jZmcgPSB7 IDAgfTsKPiAtCj4gLQlpZiAoY3R4LT5od19tZHAgJiYgY3R4LT5od19tZHAtPm9wcy5zZXR1cF9j ZG1fb3V0cHV0KQo+IC0JCWN0eC0+aHdfbWRwLT5vcHMuc2V0dXBfY2RtX291dHB1dChjdHgtPmh3 X21kcCwgJmNkbV9jZmcpOwo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCBfc2V0dXBfY2RtX29wcyhz dHJ1Y3QgZHB1X2h3X2NkbV9vcHMgKm9wcywKPiAtCXVuc2lnbmVkIGxvbmcgZmVhdHVyZXMpCj4g LXsKPiAtCW9wcy0+c2V0dXBfY3NjX2RhdGEgPSBkcHVfaHdfY2RtX3NldHVwX2NzY18xMGJpdDsK PiAtCW9wcy0+c2V0dXBfY2R3biA9IGRwdV9od19jZG1fc2V0dXBfY2R3bjsKPiAtCW9wcy0+ZW5h YmxlID0gZHB1X2h3X2NkbV9lbmFibGU7Cj4gLQlvcHMtPmRpc2FibGUgPSBkcHVfaHdfY2RtX2Rp c2FibGU7Cj4gLX0KPiAtCj4gLXN0YXRpYyBzdHJ1Y3QgZHB1X2h3X2Jsa19vcHMgZHB1X2h3X29w cyA9IHsKPiAtCS5zdGFydCA9IE5VTEwsCj4gLQkuc3RvcCA9IE5VTEwsCj4gLX07Cj4gLQo+IC1z dHJ1Y3QgZHB1X2h3X2NkbSAqZHB1X2h3X2NkbV9pbml0KGVudW0gZHB1X2NkbSBpZHgsCj4gLQkJ dm9pZCBfX2lvbWVtICphZGRyLAo+IC0JCXN0cnVjdCBkcHVfbWRzc19jZmcgKm0sCj4gLQkJc3Ry dWN0IGRwdV9od19tZHAgKmh3X21kcCkKPiAtewo+IC0Jc3RydWN0IGRwdV9od19jZG0gKmM7Cj4g LQlzdHJ1Y3QgZHB1X2NkbV9jZmcgKmNmZzsKPiAtCWludCByYzsKPiAtCj4gLQljID0ga3phbGxv YyhzaXplb2YoKmMpLCBHRlBfS0VSTkVMKTsKPiAtCWlmICghYykKPiAtCQlyZXR1cm4gRVJSX1BU UigtRU5PTUVNKTsKPiAtCj4gLQljZmcgPSBfY2RtX29mZnNldChpZHgsIG0sIGFkZHIsICZjLT5o dyk7Cj4gLQlpZiAoSVNfRVJSX09SX05VTEwoY2ZnKSkgewo+IC0JCWtmcmVlKGMpOwo+IC0JCXJl dHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+IC0JfQo+IC0KPiAtCWMtPmlkeCA9IGlkeDsKPiAtCWMt PmNhcHMgPSBjZmc7Cj4gLQlfc2V0dXBfY2RtX29wcygmYy0+b3BzLCBjLT5jYXBzLT5mZWF0dXJl cyk7Cj4gLQljLT5od19tZHAgPSBod19tZHA7Cj4gLQo+IC0JcmMgPSBkcHVfaHdfYmxrX2luaXQo JmMtPmJhc2UsIERQVV9IV19CTEtfQ0RNLCBpZHgsICZkcHVfaHdfb3BzKTsKPiAtCWlmIChyYykg ewo+IC0JCURQVV9FUlJPUigiZmFpbGVkIHRvIGluaXQgaHcgYmxrICVkXG4iLCByYyk7Cj4gLQkJ Z290byBibGtfaW5pdF9lcnJvcjsKPiAtCX0KPiAtCj4gLQkvKgo+IC0JICogUGVyZm9ybSBhbnkg ZGVmYXVsdCBpbml0aWFsaXphdGlvbiBmb3IgdGhlIGNocm9tYSBkb3duIG1vZHVsZQo+IC0JICog QHNldHVwIGRlZmF1bHQgY3NjIGNvZWZmaWNpZW50cwo+IC0JICovCj4gLQlkcHVfaHdfY2RtX3Nl dHVwX2NzY18xMGJpdChjLCAmcmdiMnl1dl9jZmcpOwo+IC0KPiAtCXJldHVybiBjOwo+IC0KPiAt YmxrX2luaXRfZXJyb3I6Cj4gLQlremZyZWUoYyk7Cj4gLQo+IC0JcmV0dXJuIEVSUl9QVFIocmMp Owo+IC19Cj4gLQo+IC12b2lkIGRwdV9od19jZG1fZGVzdHJveShzdHJ1Y3QgZHB1X2h3X2NkbSAq Y2RtKQo+IC17Cj4gLQlpZiAoY2RtKQo+IC0JCWRwdV9od19ibGtfZGVzdHJveSgmY2RtLT5iYXNl KTsKPiAtCWtmcmVlKGNkbSk7Cj4gLX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2h3X2NkbS5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2h3X2NkbS5oCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggNWNjZWIxZS4u MDAwMDAwMAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jZG0u aAo+ICsrKyAvZGV2L251bGwKPiBAQCAtMSwxMzkgKzAsMCBAQAo+IC0vKiBDb3B5cmlnaHQgKGMp IDIwMTUtMjAxOCwgVGhlIExpbnV4IEZvdW5kYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4g LSAqCj4gLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gLSAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFuZAo+IC0gKiBvbmx5IHZlcnNpb24g MiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPiAtICoKPiAt ICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCj4gLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKPiAtICogR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiAtICovCj4gLQo+IC0jaWZuZGVmIF9EUFVfSFdf Q0RNX0gKPiAtI2RlZmluZSBfRFBVX0hXX0NETV9ICj4gLQo+IC0jaW5jbHVkZSAiZHB1X2h3X21k c3MuaCIKPiAtI2luY2x1ZGUgImRwdV9od190b3AuaCIKPiAtI2luY2x1ZGUgImRwdV9od19ibGsu aCIKPiAtCj4gLXN0cnVjdCBkcHVfaHdfY2RtOwo+IC0KPiAtc3RydWN0IGRwdV9od19jZG1fY2Zn IHsKPiAtCXUzMiBvdXRwdXRfd2lkdGg7Cj4gLQl1MzIgb3V0cHV0X2hlaWdodDsKPiAtCXUzMiBv dXRwdXRfYml0X2RlcHRoOwo+IC0JdTMyIGhfY2R3bl90eXBlOwo+IC0JdTMyIHZfY2R3bl90eXBl Owo+IC0JY29uc3Qgc3RydWN0IGRwdV9mb3JtYXQgKm91dHB1dF9mbXQ7Cj4gLQl1MzIgb3V0cHV0 X3R5cGU7Cj4gLQlpbnQgZmxhZ3M7Cj4gLX07Cj4gLQo+IC1lbnVtIGRwdV9od19jZHduX3R5cGUg ewo+IC0JQ0RNX0NEV05fRElTQUJMRSwKPiAtCUNETV9DRFdOX1BJWEVMX0RST1AsCj4gLQlDRE1f Q0RXTl9BVkcsCj4gLQlDRE1fQ0RXTl9DT1NJVEUsCj4gLQlDRE1fQ0RXTl9PRkZTSVRFLAo+IC19 Owo+IC0KPiAtZW51bSBkcHVfaHdfY2R3bl9vdXRwdXRfdHlwZSB7Cj4gLQlDRE1fQ0RXTl9PVVRQ VVRfSERNSSwKPiAtCUNETV9DRFdOX09VVFBVVF9XQiwKPiAtfTsKPiAtCj4gLWVudW0gZHB1X2h3 X2Nkd25fb3V0cHV0X2JpdF9kZXB0aCB7Cj4gLQlDRE1fQ0RXTl9PVVRQVVRfOEJJVCwKPiAtCUNE TV9DRFdOX09VVFBVVF8xMEJJVCwKPiAtfTsKPiAtCj4gLS8qKgo+IC0gKiBzdHJ1Y3QgZHB1X2h3 X2NkbV9vcHMgOiBJbnRlcmZhY2UgdG8gdGhlIGNocm9tYSBkb3duIEh3IGRyaXZlciBmdW5jdGlv bnMKPiAtICogICAgICAgICAgICAgICAgICAgICAgICAgQXNzdW1wdGlvbiBpcyB0aGVzZSBmdW5j dGlvbnMgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIKPiAtICogICAgICAgICAgICAgICAgICAgICAgICAg Y2xvY2tzIGFyZSBlbmFibGVkCj4gLSAqICBAc2V0dXBfY3NjOiAgICAgICAgICAgIFByb2dyYW1z IHRoZSBjc2MgbWF0cml4Cj4gLSAqICBAc2V0dXBfY2R3bjogICAgICAgICAgIFNldHMgdXAgdGhl IGNocm9tYSBkb3duIHN1YiBtb2R1bGUKPiAtICogIEBlbmFibGU6ICAgICAgICAgICAgICAgRW5h YmxlcyB0aGUgb3V0cHV0IHRvIGludGVyZmFjZSBhbmQgcHJvZ3JhbXMgdGhlCj4gLSAqICAgICAg ICAgICAgICAgICAgICAgICAgIG91dHB1dCBwYWNrZXIKPiAtICogIEBkaXNhYmxlOiAgICAgICAg ICAgICAgUHV0cyB0aGUgY2RtIGluIGJ5cGFzcyBtb2RlCj4gLSAqLwo+IC1zdHJ1Y3QgZHB1X2h3 X2NkbV9vcHMgewo+IC0JLyoqCj4gLQkgKiBQcm9ncmFtcyB0aGUgQ1NDIG1hdHJpeCBmb3IgY29u dmVyc2lvbiBmcm9tIFJHQiBzcGFjZSB0byBZVVYgc3BhY2UsCj4gLQkgKiBpdCBpcyBvcHRpb25h bCB0byBjYWxsIHRoaXMgZnVuY3Rpb24gYXMgdGhpcyBtYXRyaXggaXMgYXV0b21hdGljYWxseQo+ IC0JICogc2V0IGR1cmluZyBpbml0aWFsaXphdGlvbiwgdXNlciBzaG91bGQgY2FsbCB0aGlzIGlm IGl0IHdhbnRzCj4gLQkgKiB0byBwcm9ncmFtIGEgZGlmZmVyZW50IG1hdHJpeCB0aGFuIGRlZmF1 bHQgbWF0cml4Lgo+IC0JICogQGNkbTogICAgICAgICAgUG9pbnRlciB0byB0aGUgY2hyb21hIGRv d24gY29udGV4dCBzdHJ1Y3R1cmUKPiAtCSAqIEBkYXRhICAgICAgICAgIFBvaW50ZXIgdG8gQ1ND IGNvbmZpZ3VyYXRpb24gZGF0YQo+IC0JICogcmV0dXJuOiAgICAgICAgMCBpZiBzdWNjZXNzOyBl cnJvciBjb2RlIG90aGVyd2lzZQo+IC0JICovCj4gLQlpbnQgKCpzZXR1cF9jc2NfZGF0YSkoc3Ry dWN0IGRwdV9od19jZG0gKmNkbSwKPiAtCQkJc3RydWN0IGRwdV9jc2NfY2ZnICpkYXRhKTsKPiAt Cj4gLQkvKioKPiAtCSAqIFByb2dyYW1zIHRoZSBDaHJvbWEgZG93bnNhbXBsZSBwYXJ0Lgo+IC0J ICogQGNkbSAgICAgICAgIFBvaW50ZXIgdG8gY2hyb21hIGRvd24gY29udGV4dAo+IC0JICovCj4g LQlpbnQgKCpzZXR1cF9jZHduKShzdHJ1Y3QgZHB1X2h3X2NkbSAqY2RtLAo+IC0Jc3RydWN0IGRw dV9od19jZG1fY2ZnICpjZmcpOwo+IC0KPiAtCS8qKgo+IC0JICogRW5hYmxlIHRoZSBDRE0gbW9k dWxlCj4gLQkgKiBAY2RtICAgICAgICAgUG9pbnRlciB0byBjaHJvbWEgZG93biBjb250ZXh0Cj4g LQkgKi8KPiAtCWludCAoKmVuYWJsZSkoc3RydWN0IGRwdV9od19jZG0gKmNkbSwKPiAtCXN0cnVj dCBkcHVfaHdfY2RtX2NmZyAqY2ZnKTsKPiAtCj4gLQkvKioKPiAtCSAqIERpc2FibGUgdGhlIENE TSBtb2R1bGUKPiAtCSAqIEBjZG0gICAgICAgICBQb2ludGVyIHRvIGNocm9tYSBkb3duIGNvbnRl eHQKPiAtCSAqLwo+IC0Jdm9pZCAoKmRpc2FibGUpKHN0cnVjdCBkcHVfaHdfY2RtICpjZG0pOwo+ IC19Owo+IC0KPiAtc3RydWN0IGRwdV9od19jZG0gewo+IC0Jc3RydWN0IGRwdV9od19ibGsgYmFz ZTsKPiAtCXN0cnVjdCBkcHVfaHdfYmxrX3JlZ19tYXAgaHc7Cj4gLQo+IC0JLyogY2hyb21hIGRv d24gKi8KPiAtCWNvbnN0IHN0cnVjdCBkcHVfY2RtX2NmZyAqY2FwczsKPiAtCWVudW0gIGRwdV9j ZG0gIGlkeDsKPiAtCj4gLQkvKiBtZHAgdG9wIGh3IGRyaXZlciAqLwo+IC0Jc3RydWN0IGRwdV9o d19tZHAgKmh3X21kcDsKPiAtCj4gLQkvKiBvcHMgKi8KPiAtCXN0cnVjdCBkcHVfaHdfY2RtX29w cyBvcHM7Cj4gLX07Cj4gLQo+IC0vKioKPiAtICogZHB1X2h3X2NkbSAtIGNvbnZlcnQgYmFzZSBv YmplY3QgZHB1X2h3X2Jhc2UgdG8gY29udGFpbmVyCj4gLSAqIEBodzogUG9pbnRlciB0byBiYXNl IGhhcmR3YXJlIGJsb2NrCj4gLSAqIHJldHVybjogUG9pbnRlciB0byBoYXJkd2FyZSBibG9jayBj b250YWluZXIKPiAtICovCj4gLXN0YXRpYyBpbmxpbmUgc3RydWN0IGRwdV9od19jZG0gKnRvX2Rw dV9od19jZG0oc3RydWN0IGRwdV9od19ibGsgKmh3KQo+IC17Cj4gLQlyZXR1cm4gY29udGFpbmVy X29mKGh3LCBzdHJ1Y3QgZHB1X2h3X2NkbSwgYmFzZSk7Cj4gLX0KPiAtCj4gLS8qKgo+IC0gKiBk cHVfaHdfY2RtX2luaXQgLSBpbml0aWFsaXplcyB0aGUgY2RtIGh3IGRyaXZlciBvYmplY3QuCj4g LSAqIHNob3VsZCBiZSBjYWxsZWQgb25jZSBiZWZvcmUgYWNjZXNzaW5nIGV2ZXJ5IGNkbS4KPiAt ICogQGlkeDogIGNkbSBpbmRleCBmb3Igd2hpY2ggZHJpdmVyIG9iamVjdCBpcyByZXF1aXJlZAo+ IC0gKiBAYWRkcjogbWFwcGVkIHJlZ2lzdGVyIGlvIGFkZHJlc3Mgb2YgTURQCj4gLSAqIEBtIDog ICBwb2ludGVyIHRvIG1kc3MgY2F0YWxvZyBkYXRhCj4gLSAqIEBod19tZHA6ICBwb2ludGVyIHRv IG1kcCB0b3AgaHcgZHJpdmVyIG9iamVjdAo+IC0gKi8KPiAtc3RydWN0IGRwdV9od19jZG0gKmRw dV9od19jZG1faW5pdChlbnVtIGRwdV9jZG0gaWR4LAo+IC0JCXZvaWQgX19pb21lbSAqYWRkciwK PiAtCQlzdHJ1Y3QgZHB1X21kc3NfY2ZnICptLAo+IC0JCXN0cnVjdCBkcHVfaHdfbWRwICpod19t ZHApOwo+IC0KPiAtLyoqCj4gLSAqIGRwdV9od19jZG1fZGVzdHJveSAtIGRlc3Ryb3lzIENETSBk cml2ZXIgY29udGV4dAo+IC0gKiBAY2RtOiAgIHBvaW50ZXIgdG8gQ0RNIGRyaXZlciBjb250ZXh0 Cj4gLSAqLwo+IC12b2lkIGRwdV9od19jZG1fZGVzdHJveShzdHJ1Y3QgZHB1X2h3X2NkbSAqY2Rt KTsKPiAtCj4gLSNlbmRpZiAvKl9EUFVfSFdfQ0RNX0ggKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2N0bC5jIGIvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2h3X2N0bC5jCj4gaW5kZXggMDZiZTdjZi4uYjM5NGExOCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY3RsLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY3RsLmMKPiBAQCAtMjI0LDE5 ICsyMjQsNiBAQCBzdGF0aWMgaW5saW5lIGludCBkcHVfaHdfY3RsX2dldF9iaXRtYXNrX2ludGYo c3RydWN0IGRwdV9od19jdGwgKmN0eCwKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMg aW5saW5lIGludCBkcHVfaHdfY3RsX2dldF9iaXRtYXNrX2NkbShzdHJ1Y3QgZHB1X2h3X2N0bCAq Y3R4LAo+IC0JCXUzMiAqZmx1c2hiaXRzLCBlbnVtIGRwdV9jZG0gY2RtKQo+IC17Cj4gLQlzd2l0 Y2ggKGNkbSkgewo+IC0JY2FzZSBDRE1fMDoKPiAtCQkqZmx1c2hiaXRzIHw9IEJJVCgyNik7Cj4g LQkJYnJlYWs7Cj4gLQlkZWZhdWx0Ogo+IC0JCXJldHVybiAtRUlOVkFMOwo+IC0JfQo+IC0JcmV0 dXJuIDA7Cj4gLX0KPiAtCj4gIHN0YXRpYyB1MzIgZHB1X2h3X2N0bF9wb2xsX3Jlc2V0X3N0YXR1 cyhzdHJ1Y3QgZHB1X2h3X2N0bCAqY3R4LCB1MzIgdGltZW91dF91cykKPiAgewo+ICAJc3RydWN0 IGRwdV9od19ibGtfcmVnX21hcCAqYyA9ICZjdHgtPmh3Owo+IEBAIC00ODUsNyArNDcyLDYgQEAg c3RhdGljIHZvaWQgX3NldHVwX2N0bF9vcHMoc3RydWN0IGRwdV9od19jdGxfb3BzICpvcHMsCj4g IAlvcHMtPmdldF9iaXRtYXNrX3NzcHAgPSBkcHVfaHdfY3RsX2dldF9iaXRtYXNrX3NzcHA7Cj4g IAlvcHMtPmdldF9iaXRtYXNrX21peGVyID0gZHB1X2h3X2N0bF9nZXRfYml0bWFza19taXhlcjsK PiAgCW9wcy0+Z2V0X2JpdG1hc2tfaW50ZiA9IGRwdV9od19jdGxfZ2V0X2JpdG1hc2tfaW50ZjsK PiAtCW9wcy0+Z2V0X2JpdG1hc2tfY2RtID0gZHB1X2h3X2N0bF9nZXRfYml0bWFza19jZG07Cj4g IH07Cj4gIAo+ICBzdGF0aWMgc3RydWN0IGRwdV9od19ibGtfb3BzIGRwdV9od19vcHMgPSB7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jdGwuaCBi L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jdGwuaAo+IGluZGV4IGM2NmE3 MWYuLjZmMzEzZmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2h3X2N0bC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3 X2N0bC5oCj4gQEAgLTE0MiwxMCArMTQyLDYgQEAgc3RydWN0IGRwdV9od19jdGxfb3BzIHsKPiAg CQl1MzIgKmZsdXNoYml0cywKPiAgCQllbnVtIGRwdV9pbnRmIGJsayk7Cj4gIAo+IC0JaW50ICgq Z2V0X2JpdG1hc2tfY2RtKShzdHJ1Y3QgZHB1X2h3X2N0bCAqY3R4LAo+IC0JCXUzMiAqZmx1c2hi aXRzLAo+IC0JCWVudW0gZHB1X2NkbSBibGspOwo+IC0KPiAgCS8qKgo+ICAJICogU2V0IGFsbCBi bGVuZCBzdGFnZXMgdG8gZGlzYWJsZWQKPiAgCSAqIEBjdHggICAgICAgOiBjdGwgcGF0aCBjdHgg cG9pbnRlcgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf aHdfdG9wLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfdG9wLmMKPiBp bmRleCBkYjI3OThlLi5iODc4MTI1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9od190b3AuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9od190b3AuYwo+IEBAIC05OCwyMyArOTgsNiBAQCBzdGF0aWMgdm9pZCBkcHVfaHdf c2V0dXBfc3BsaXRfcGlwZShzdHJ1Y3QgZHB1X2h3X21kcCAqbWRwLAo+ICAJRFBVX1JFR19XUklU RShjLCBTUExJVF9ESVNQTEFZX0VOLCBjZmctPmVuICYgMHgxKTsKPiAgfQo+ICAKPiAtc3RhdGlj IHZvaWQgZHB1X2h3X3NldHVwX2NkbV9vdXRwdXQoc3RydWN0IGRwdV9od19tZHAgKm1kcCwKPiAt CQlzdHJ1Y3QgY2RtX291dHB1dF9jZmcgKmNmZykKPiAtewo+IC0Jc3RydWN0IGRwdV9od19ibGtf cmVnX21hcCAqYzsKPiAtCXUzMiBvdXRfY3RsID0gMDsKPiAtCj4gLQlpZiAoIW1kcCB8fCAhY2Zn KQo+IC0JCXJldHVybjsKPiAtCj4gLQljID0gJm1kcC0+aHc7Cj4gLQo+IC0JaWYgKGNmZy0+aW50 Zl9lbikKPiAtCQlvdXRfY3RsIHw9IEJJVCgxOSk7Cj4gLQo+IC0JRFBVX1JFR19XUklURShjLCBN RFBfT1VUX0NUTF8wLCBvdXRfY3RsKTsKPiAtfQo+IC0KPiAgc3RhdGljIGJvb2wgZHB1X2h3X3Nl dHVwX2Nsa19mb3JjZV9jdHJsKHN0cnVjdCBkcHVfaHdfbWRwICptZHAsCj4gIAkJZW51bSBkcHVf Y2xrX2N0cmxfdHlwZSBjbGtfY3RybCwgYm9vbCBlbmFibGUpCj4gIHsKPiBAQCAtMzA3LDcgKzI5 MCw2IEBAIHN0YXRpYyB2b2lkIF9zZXR1cF9tZHBfb3BzKHN0cnVjdCBkcHVfaHdfbWRwX29wcyAq b3BzLAo+ICAJCXVuc2lnbmVkIGxvbmcgY2FwKQo+ICB7Cj4gIAlvcHMtPnNldHVwX3NwbGl0X3Bp cGUgPSBkcHVfaHdfc2V0dXBfc3BsaXRfcGlwZTsKPiAtCW9wcy0+c2V0dXBfY2RtX291dHB1dCA9 IGRwdV9od19zZXR1cF9jZG1fb3V0cHV0Owo+ICAJb3BzLT5zZXR1cF9jbGtfZm9yY2VfY3RybCA9 IGRwdV9od19zZXR1cF9jbGtfZm9yY2VfY3RybDsKPiAgCW9wcy0+Z2V0X2Rhbmdlcl9zdGF0dXMg PSBkcHVfaHdfZ2V0X2Rhbmdlcl9zdGF0dXM7Cj4gIAlvcHMtPnNldHVwX3ZzeW5jX3NvdXJjZSA9 IGRwdV9od19zZXR1cF92c3luY19zb3VyY2U7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9od190b3AuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9od190b3AuaAo+IGluZGV4IDg5OTkyNWEuLjE5MmUzMzggMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3RvcC5oCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3RvcC5oCj4gQEAgLTUyLDE0ICs1Miw2IEBA IHN0cnVjdCBzcGxpdF9waXBlX2NmZyB7Cj4gIH07Cj4gIAo+ICAvKioKPiAtICogc3RydWN0IGNk bV9vdXRwdXRfY2ZnOiBvdXRwdXQgY29uZmlndXJhdGlvbiBmb3IgY2RtCj4gLSAqIEBpbnRmX2Vu ICAgOiBlbmFibGUvZGlzYWJsZSBpbnRlcmZhY2Ugb3V0cHV0Cj4gLSAqLwo+IC1zdHJ1Y3QgY2Rt X291dHB1dF9jZmcgewo+IC0JYm9vbCBpbnRmX2VuOwo+IC19Owo+IC0KPiAtLyoqCj4gICAqIHN0 cnVjdCBkcHVfZGFuZ2VyX3NhZmVfc3RhdHVzOiBkYW5nZXIgYW5kIHNhZmUgc3RhdHVzIHNpZ25h bHMKPiAgICogQG1kcDogdG9wIGxldmVsIHN0YXR1cwo+ICAgKiBAc3NwcDogc291cmNlIHBpcGUg c3RhdHVzCj4gQEAgLTg5LDcgKzgxLDYgQEAgc3RydWN0IGRwdV92c3luY19zb3VyY2VfY2ZnIHsK PiAgICogQXNzdW1wdGlvbiBpcyB0aGVzZSBmdW5jdGlvbnMgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIg Y2xvY2tzIGFyZSBlbmFibGVkLgo+ICAgKiBAc2V0dXBfc3BsaXRfcGlwZSA6IFByb2dyYW1zIHRo ZSBwaXBlIGNvbnRyb2wgcmVnaXN0ZXJzCj4gICAqIEBzZXR1cF9wcF9zcGxpdCA6IFByb2dyYW1z IHRoZSBwcCBzcGxpdCBjb250cm9sIHJlZ2lzdGVycwo+IC0gKiBAc2V0dXBfY2RtX291dHB1dCA6 IHByb2dyYW1zIGNkbSBjb250cm9sCj4gICAqIEBzZXR1cF90cmFmZmljX3NoYXBlciA6IHByb2dy YW1zIHRyYWZmaWMgc2hhcGVyIGNvbnRyb2wKPiAgICovCj4gIHN0cnVjdCBkcHVfaHdfbWRwX29w cyB7Cj4gQEAgLTEwMiwxNCArOTMsNiBAQCBzdHJ1Y3QgZHB1X2h3X21kcF9vcHMgewo+ICAJCQlz dHJ1Y3Qgc3BsaXRfcGlwZV9jZmcgKnApOwo+ICAKPiAgCS8qKgo+IC0JICogc2V0dXBfY2RtX291 dHB1dCgpIDogU2V0dXAgc2VsZWN0aW9uIGNvbnRyb2wgb2YgdGhlIGNkbSBkYXRhIHBhdGgKPiAt CSAqIEBtZHAgIDogbWRwIHRvcCBjb250ZXh0IGRyaXZlcgo+IC0JICogQGNmZyAgOiBjZG0gb3V0 cHV0IGNvbmZpZ3VyYXRpb24KPiAtCSAqLwo+IC0Jdm9pZCAoKnNldHVwX2NkbV9vdXRwdXQpKHN0 cnVjdCBkcHVfaHdfbWRwICptZHAsCj4gLQkJCXN0cnVjdCBjZG1fb3V0cHV0X2NmZyAqY2ZnKTsK PiAtCj4gLQkvKioKPiAgCSAqIHNldHVwX3RyYWZmaWNfc2hhcGVyKCkgOiBTZXR1cCB0cmFmZmlj IHNoYXBlciBjb250cm9sCj4gIAkgKiBAbWRwICA6IG1kcCB0b3AgY29udGV4dCBkcml2ZXIKPiAg CSAqIEBjZmcgIDogdHJhZmZpYyBzaGFwZXIgY29uZmlndXJhdGlvbgo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9ybS5jCj4gaW5kZXggMzg4YWU2NS4uZTA4YjNiZCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCj4gQEAgLTE2LDcgKzE2LDYgQEAKPiAg I2luY2x1ZGUgImRwdV9rbXMuaCIKPiAgI2luY2x1ZGUgImRwdV9od19sbS5oIgo+ICAjaW5jbHVk ZSAiZHB1X2h3X2N0bC5oIgo+IC0jaW5jbHVkZSAiZHB1X2h3X2NkbS5oIgo+ICAjaW5jbHVkZSAi ZHB1X2h3X3Bpbmdwb25nLmgiCj4gICNpbmNsdWRlICJkcHVfaHdfaW50Zi5oIgo+ICAjaW5jbHVk ZSAiZHB1X2VuY29kZXIuaCIKPiBAQCAtMjE0LDkgKzIxMyw2IEBAIHN0YXRpYyB2b2lkIF9kcHVf cm1faHdfZGVzdHJveShlbnVtIGRwdV9od19ibGtfdHlwZSB0eXBlLCB2b2lkICpodykKPiAgCWNh c2UgRFBVX0hXX0JMS19DVEw6Cj4gIAkJZHB1X2h3X2N0bF9kZXN0cm95KGh3KTsKPiAgCQlicmVh azsKPiAtCWNhc2UgRFBVX0hXX0JMS19DRE06Cj4gLQkJZHB1X2h3X2NkbV9kZXN0cm95KGh3KTsK PiAtCQlicmVhazsKPiAgCWNhc2UgRFBVX0hXX0JMS19QSU5HUE9ORzoKPiAgCQlkcHVfaHdfcGlu Z3BvbmdfZGVzdHJveShodyk7Cj4gIAkJYnJlYWs7Cj4gQEAgLTI5MCw5ICsyODYsNiBAQCBzdGF0 aWMgaW50IF9kcHVfcm1faHdfYmxrX2NyZWF0ZSgKPiAgCWNhc2UgRFBVX0hXX0JMS19DVEw6Cj4g IAkJaHcgPSBkcHVfaHdfY3RsX2luaXQoaWQsIG1taW8sIGNhdCk7Cj4gIAkJYnJlYWs7Cj4gLQlj YXNlIERQVV9IV19CTEtfQ0RNOgo+IC0JCWh3ID0gZHB1X2h3X2NkbV9pbml0KGlkLCBtbWlvLCBj YXQsIGh3X21kcCk7Cj4gLQkJYnJlYWs7Cj4gIAljYXNlIERQVV9IV19CTEtfUElOR1BPTkc6Cj4g IAkJaHcgPSBkcHVfaHdfcGluZ3BvbmdfaW5pdChpZCwgbW1pbywgY2F0KTsKPiAgCQlicmVhazsK PiBAQCAtNDIzLDE1ICs0MTYsNiBAQCBpbnQgZHB1X3JtX2luaXQoc3RydWN0IGRwdV9ybSAqcm0s Cj4gIAkJfQo+ICAJfQo+ICAKPiAtCWZvciAoaSA9IDA7IGkgPCBjYXQtPmNkbV9jb3VudDsgaSsr KSB7Cj4gLQkJcmMgPSBfZHB1X3JtX2h3X2Jsa19jcmVhdGUocm0sIGNhdCwgbW1pbywgRFBVX0hX X0JMS19DRE0sCj4gLQkJCQljYXQtPmNkbVtpXS5pZCwgJmNhdC0+Y2RtW2ldKTsKPiAtCQlpZiAo cmMpIHsKPiAtCQkJRFBVX0VSUk9SKCJmYWlsZWQ6IGNkbSBodyBub3QgYXZhaWxhYmxlXG4iKTsK PiAtCQkJZ290byBmYWlsOwo+IC0JCX0KPiAtCX0KPiAtCj4gIAlyZXR1cm4gMDsKPiAgCj4gIGZh aWw6Cj4gQEAgLTYyOCw1NSArNjEyLDExIEBAIHN0YXRpYyBpbnQgX2RwdV9ybV9yZXNlcnZlX2N0 bHMoCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVf Y2RtKAo+IC0JCXN0cnVjdCBkcHVfcm0gKnJtLAo+IC0JCXN0cnVjdCBkcHVfcm1fcnN2cCAqcnN2 cCwKPiAtCQl1aW50MzJfdCBpZCwKPiAtCQllbnVtIGRwdV9od19ibGtfdHlwZSB0eXBlKQo+IC17 Cj4gLQlzdHJ1Y3QgZHB1X3JtX2h3X2l0ZXIgaXRlcjsKPiAtCj4gLQlEUk1fREVCVUdfS01TKCJ0 eXBlICVkIGlkICVkXG4iLCB0eXBlLCBpZCk7Cj4gLQo+IC0JZHB1X3JtX2luaXRfaHdfaXRlcigm aXRlciwgMCwgRFBVX0hXX0JMS19DRE0pOwo+IC0Jd2hpbGUgKF9kcHVfcm1fZ2V0X2h3X2xvY2tl ZChybSwgJml0ZXIpKSB7Cj4gLQkJY29uc3Qgc3RydWN0IGRwdV9od19jZG0gKmNkbSA9IHRvX2Rw dV9od19jZG0oaXRlci5ibGstPmh3KTsKPiAtCQljb25zdCBzdHJ1Y3QgZHB1X2NkbV9jZmcgKmNh cHMgPSBjZG0tPmNhcHM7Cj4gLQkJYm9vbCBtYXRjaCA9IGZhbHNlOwo+IC0KPiAtCQlpZiAoUkVT RVJWRURfQllfT1RIRVIoaXRlci5ibGssIHJzdnApKQo+IC0JCQljb250aW51ZTsKPiAtCj4gLQkJ aWYgKHR5cGUgPT0gRFBVX0hXX0JMS19JTlRGICYmIGlkICE9IElOVEZfTUFYKQo+IC0JCQltYXRj aCA9IHRlc3RfYml0KGlkLCAmY2Fwcy0+aW50Zl9jb25uZWN0KTsKPiAtCj4gLQkJRFJNX0RFQlVH X0tNUygiaXRlcjogdHlwZTolZCBpZDolZCBlbmM6JWQgY2RtOiVsdSBtYXRjaDolZFxuIiwKPiAt CQkJICAgICAgaXRlci5ibGstPnR5cGUsIGl0ZXIuYmxrLT5pZCwgcnN2cC0+ZW5jX2lkLAo+IC0J CQkgICAgICBjYXBzLT5pbnRmX2Nvbm5lY3QsIG1hdGNoKTsKPiAtCj4gLQkJaWYgKCFtYXRjaCkK PiAtCQkJY29udGludWU7Cj4gLQo+IC0JCXRyYWNlX2RwdV9ybV9yZXNlcnZlX2NkbShpdGVyLmJs ay0+aWQsIGl0ZXIuYmxrLT50eXBlLAo+IC0JCQkJCSByc3ZwLT5lbmNfaWQpOwo+IC0JCWl0ZXIu YmxrLT5yc3ZwX254dCA9IHJzdnA7Cj4gLQkJYnJlYWs7Cj4gLQl9Cj4gLQo+IC0JaWYgKCFpdGVy Lmh3KSB7Cj4gLQkJRFBVX0VSUk9SKCJjb3VsZG4ndCByZXNlcnZlIGNkbSBmb3IgdHlwZSAlZCBp ZCAlZFxuIiwgdHlwZSwgaWQpOwo+IC0JCXJldHVybiAtRU5BVkFJTDsKPiAtCX0KPiAtCj4gLQly ZXR1cm4gMDsKPiAtfQo+IC0KPiAgc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVfaW50ZigKPiAg CQlzdHJ1Y3QgZHB1X3JtICpybSwKPiAgCQlzdHJ1Y3QgZHB1X3JtX3JzdnAgKnJzdnAsCj4gIAkJ dWludDMyX3QgaWQsCj4gLQkJZW51bSBkcHVfaHdfYmxrX3R5cGUgdHlwZSwKPiAtCQlib29sIG5l ZWRzX2NkbSkKPiArCQllbnVtIGRwdV9od19ibGtfdHlwZSB0eXBlKQo+ICB7Cj4gIAlzdHJ1Y3Qg ZHB1X3JtX2h3X2l0ZXIgaXRlcjsKPiAgCWludCByZXQgPSAwOwo+IEBAIC03MDQsOSArNjQ0LDYg QEAgc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVfaW50ZigKPiAgCQlyZXR1cm4gLUVJTlZBTDsK PiAgCX0KPiAgCj4gLQlpZiAobmVlZHNfY2RtKQo+IC0JCXJldCA9IF9kcHVfcm1fcmVzZXJ2ZV9j ZG0ocm0sIHJzdnAsIGlkLCB0eXBlKTsKPiAtCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IEBA IC03MjMsNyArNjYwLDcgQEAgc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVfaW50Zl9yZWxhdGVk X2h3KAo+ICAJCQljb250aW51ZTsKPiAgCQlpZCA9IGkgKyBJTlRGXzA7Cj4gIAkJcmV0ID0gX2Rw dV9ybV9yZXNlcnZlX2ludGYocm0sIHJzdnAsIGlkLAo+IC0JCQkJRFBVX0hXX0JMS19JTlRGLCBo d19yZXMtPm5lZWRzX2NkbSk7Cj4gKwkJCQlEUFVfSFdfQkxLX0lOVEYpOwo+ICAJCWlmIChyZXQp Cj4gIAkJCXJldHVybiByZXQ7Cj4gIAl9Cj4gQEAgLTc2OSw3ICs3MDYsNiBAQCBzdGF0aWMgaW50 IF9kcHVfcm1fbWFrZV9uZXh0X3JzdnAoCj4gIAkJcmV0dXJuIHJldDsKPiAgCX0KPiAgCj4gLQkv KiBBc3NpZ24gSU5URnMgYW5kIGJsa3Mgd2hvc2UgdXNhZ2UgaXMgdGllZCB0byB0aGVtOiBDVEwg JiBDRE0gKi8KPiAgCXJldCA9IF9kcHVfcm1fcmVzZXJ2ZV9pbnRmX3JlbGF0ZWRfaHcocm0sIHJz dnAsICZyZXFzLT5od19yZXMpOwo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfdHJhY2UuaCBiL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV90cmFjZS5oCj4gaW5kZXggYWUwY2E1MC4uMGJl NTFkYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfdHJh Y2UuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV90cmFjZS5oCj4g QEAgLTg2OCwxMCArODY4LDYgQEAKPiAgCVRQX3ByaW50aygiaWQ6JWQgdHlwZTolZCBlbmNfaWQ6 JXUiLCBfX2VudHJ5LT5pZCwgX19lbnRyeS0+dHlwZSwKPiAgCQkgIF9fZW50cnktPmVuY19pZCkK PiAgKTsKPiAtREVGSU5FX0VWRU5UKGRwdV9ybV9pdGVyX3RlbXBsYXRlLCBkcHVfcm1fcmVzZXJ2 ZV9jZG0sCj4gLQlUUF9QUk9UTyh1aW50MzJfdCBpZCwgZW51bSBkcHVfaHdfYmxrX3R5cGUgdHlw ZSwgdWludDMyX3QgZW5jX2lkKSwKPiAtCVRQX0FSR1MoaWQsIHR5cGUsIGVuY19pZCkKPiAtKTsK PiAgREVGSU5FX0VWRU5UKGRwdV9ybV9pdGVyX3RlbXBsYXRlLCBkcHVfcm1fcmVzZXJ2ZV9pbnRm LAo+ICAJVFBfUFJPVE8odWludDMyX3QgaWQsIGVudW0gZHB1X2h3X2Jsa190eXBlIHR5cGUsIHVp bnQzMl90IGVuY19pZCksCj4gIAlUUF9BUkdTKGlkLCB0eXBlLCBlbmNfaWQpCj4gLS0gCj4gVGhl IFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9mIHRoZSBDb2Rl IEF1cm9yYSBGb3J1bSwKPiBhIExpbnV4IEZvdW5kYXRpb24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0 Cj4gCgotLSAKU2VhbiBQYXVsLCBTb2Z0d2FyZSBFbmdpbmVlciwgR29vZ2xlIC8gQ2hyb21pdW0g T1MKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRy ZW5vIG1haWxpbmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg==