From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [DPU PATCH 3/6] drm/msm: remove panel autorefresh support for SDM845 Date: Tue, 17 Apr 2018 16:54:12 -0400 Message-ID: <20180417205412.GR73214@art_vandelay> References: <1523902941-2253-1-git-send-email-jsanka@codeaurora.org> <1523902941-2253-4-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: <1523902941-2253-4-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 T24gTW9uLCBBcHIgMTYsIDIwMTggYXQgMTE6MjI6MThBTSAtMDcwMCwgSmV5a3VtYXIgU2Fua2Fy YW4gd3JvdGU6Cj4gUmVtb3ZlIGF1dG9yZWZyZXNoIHN1cHBvcnQgZm9yIHNtYXJ0IHBhbmVscyBp biBTRE04NDUgZm9yIG5vdy4KPiBJdCBuZWVkcyBtb3JlIGRpc2N1c3Npb24gdG8gZmlndXJlIG91 dCB0aGUgdXNlciBzcGFjZQo+IGNvbW11bmljYXRpb24gdG8gc2V0IHByZWZlcmVuY2UgZm9yIHRo ZSBmZWF0dXJlLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEpleWt1bWFyIFNhbmthcmFuIDxqc2Fua2FA Y29kZWF1cm9yYS5vcmc+CgpSZXZpZXdlZC1ieTogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1 bS5vcmc+Cgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29ubmVj dG9yLmMgICAgICB8ICAgNyAtCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9l bmNvZGVyLmMgICAgICAgIHwgIDM3ICstLQo+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfZW5jb2Rlcl9waHlzLmggICB8ICAyMCAtLQo+ICAuLi4vZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9lbmNvZGVyX3BoeXNfY21kLmMgICB8IDI5OCArLS0tLS0tLS0tLS0tLS0tLS0tLS0K PiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3Bpbmdwb25nLmMgICAgfCAg NDEgLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19waW5ncG9uZy5o ICAgIHwgIDE4IC0tCj4gIDYgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgNDEwIGRl bGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfY29ubmVjdG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29u bmVjdG9yLmMKPiBpbmRleCBmN2U5Zjc2Li5kYzA5NzhkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb25uZWN0b3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb25uZWN0b3IuYwo+IEBAIC0yNCw5ICsyNCw2IEBACj4g IAo+ICAjZGVmaW5lIEJMX05PREVfTkFNRV9TSVpFIDMyCj4gIAo+IC0vKiBBdXRvcmVmcmVzaCB3 aWxsIG9jY3VyIGFmdGVyIEZSQU1FX0NOVCBmcmFtZXMuIExhcmdlIHZhbHVlcyBhcmUgdW5saWtl bHkgKi8KPiAtI2RlZmluZSBBVVRPUkVGUkVTSF9NQVhfRlJBTUVfQ05UIDYKPiAtCj4gICNkZWZp bmUgRFBVX0RFQlVHX0NPTk4oYywgZm10LCAuLi4pIERQVV9ERUJVRygiY29ubiVkICIgZm10LFwK PiAgCQkoYykgPyAoYyktPmJhc2UuYmFzZS5pZCA6IC0xLCAjI19fVkFfQVJHU19fKQo+ICAKPiBA QCAtMTEyNiwxMCArMTEyMyw2IEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yICpkcHVfY29ubmVjdG9y X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQlDT05ORUNUT1JfUFJPUF9BRF9CTF9T Q0FMRSk7Cj4gICNlbmRpZgo+ICAKPiAtCW1zbV9wcm9wZXJ0eV9pbnN0YWxsX3JhbmdlKCZjX2Nv bm4tPnByb3BlcnR5X2luZm8sICJhdXRvcmVmcmVzaCIsCj4gLQkJCTB4MCwgMCwgQVVUT1JFRlJF U0hfTUFYX0ZSQU1FX0NOVCwgMCwKPiAtCQkJQ09OTkVDVE9SX1BST1BfQVVUT1JFRlJFU0gpOwo+ IC0KPiAgCS8qIGVudW0vYml0bWFzayBwcm9wZXJ0aWVzICovCj4gIAltc21fcHJvcGVydHlfaW5z dGFsbF9lbnVtKCZjX2Nvbm4tPnByb3BlcnR5X2luZm8sICJ0b3BvbG9neV9uYW1lIiwKPiAgCQkJ RFJNX01PREVfUFJPUF9JTU1VVEFCTEUsIDAsIGVfdG9wb2xvZ3lfbmFtZSwKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuYyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMKPiBpbmRleCAzMjM3NWIxLi4zMDA0 NTY5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNv ZGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5j Cj4gQEAgLTgxNSw3ICs4MTUsNiBAQCBzdGF0aWMgdm9pZCBfZHB1X2VuY29kZXJfcmVzb3VyY2Vf Y29udHJvbF9oZWxwZXIoc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jLAo+ICBzdGF0aWMgaW50 IGRwdV9lbmNvZGVyX3Jlc291cmNlX2NvbnRyb2woc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5j LAo+ICAJCXUzMiBzd19ldmVudCkKPiAgewo+IC0JYm9vbCBhdXRvcmVmcmVzaF9lbmFibGVkID0g ZmFsc2U7Cj4gIAl1bnNpZ25lZCBpbnQgbHAsIGlkbGVfdGltZW91dDsKPiAgCXN0cnVjdCBkcHVf ZW5jb2Rlcl92aXJ0ICpkcHVfZW5jOwo+ICAJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdjsK PiBAQCAtOTIyLDEzICs5MjEsNiBAQCBzdGF0aWMgaW50IGRwdV9lbmNvZGVyX3Jlc291cmNlX2Nv bnRyb2woc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jLAo+ICAJCQlyZXR1cm4gMDsKPiAgCQl9 Cj4gIAo+IC0JCS8qIHNjaGVkdWxlIGRlbGF5ZWQgb2ZmIHdvcmsgaWYgYXV0b3JlZnJlc2ggaXMg ZGlzYWJsZWQgKi8KPiAtCQlpZiAoZHB1X2VuYy0+Y3VyX21hc3RlciAmJgo+IC0JCQlkcHVfZW5j LT5jdXJfbWFzdGVyLT5vcHMuaXNfYXV0b3JlZnJlc2hfZW5hYmxlZCkKPiAtCQkJYXV0b3JlZnJl c2hfZW5hYmxlZCA9Cj4gLQkJCQlkcHVfZW5jLT5jdXJfbWFzdGVyLT5vcHMuaXNfYXV0b3JlZnJl c2hfZW5hYmxlZCgKPiAtCQkJCQkJCWRwdV9lbmMtPmN1cl9tYXN0ZXIpOwo+IC0KPiAgCQkvKiBz ZXQgaWRsZSB0aW1lb3V0IGJhc2VkIG9uIG1hc3RlciBjb25uZWN0b3IncyBscCB2YWx1ZSAqLwo+ ICAJCWlmIChkcHVfZW5jLT5jdXJfbWFzdGVyKQo+ICAJCQlscCA9IGRwdV9jb25uZWN0b3JfZ2V0 X2xwKAo+IEBAIC05NDEsMTMgKzkzMywxMiBAQCBzdGF0aWMgaW50IGRwdV9lbmNvZGVyX3Jlc291 cmNlX2NvbnRyb2woc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jLAo+ICAJCWVsc2UKPiAgCQkJ aWRsZV90aW1lb3V0ID0gZHB1X2VuYy0+aWRsZV90aW1lb3V0Owo+ICAKPiAtCQlpZiAoIWF1dG9y ZWZyZXNoX2VuYWJsZWQpCj4gLQkJCWt0aHJlYWRfcXVldWVfZGVsYXllZF93b3JrKAo+IC0JCQkJ JmRpc3BfdGhyZWFkLT53b3JrZXIsCj4gLQkJCQkmZHB1X2VuYy0+ZGVsYXllZF9vZmZfd29yaywK PiAtCQkJCW1zZWNzX3RvX2ppZmZpZXMoaWRsZV90aW1lb3V0KSk7Cj4gKwkJa3RocmVhZF9xdWV1 ZV9kZWxheWVkX3dvcmsoCj4gKwkJCSZkaXNwX3RocmVhZC0+d29ya2VyLAo+ICsJCQkmZHB1X2Vu Yy0+ZGVsYXllZF9vZmZfd29yaywKPiArCQkJbXNlY3NfdG9famlmZmllcyhpZGxlX3RpbWVvdXQp KTsKPiArCj4gIAkJRFBVX0VWVDMyKERSTUlEKGRybV9lbmMpLCBzd19ldmVudCwgZHB1X2VuYy0+ cmNfc3RhdGUsCj4gLQkJCQlhdXRvcmVmcmVzaF9lbmFibGVkLAo+ICAJCQkJaWRsZV90aW1lb3V0 LCBEUFVfRVZUTE9HX0ZVTkNfQ0FTRTIpOwo+ICAJCURQVV9ERUJVR19FTkMoZHB1X2VuYywgInN3 X2V2ZW50OiVkLCB3b3JrIHNjaGVkdWxlZFxuIiwKPiAgCQkJCXN3X2V2ZW50KTsKPiBAQCAtMTk5 MCw3ICsxOTgxLDYgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfdnN5bmNfZXZlbnRfaGFuZGxl cihzdHJ1Y3QgdGltZXJfbGlzdCAqdCkKPiAgCXN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYyA9 ICZkcHVfZW5jLT5iYXNlOwo+ICAJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdjsKPiAgCXN0 cnVjdCBtc21fZHJtX3RocmVhZCAqZXZlbnRfdGhyZWFkOwo+IC0JYm9vbCBhdXRvcmVmcmVzaF9l bmFibGVkID0gZmFsc2U7Cj4gIAo+ICAJaWYgKCFkcm1fZW5jLT5kZXYgfHwgIWRybV9lbmMtPmRl di0+ZGV2X3ByaXZhdGUgfHwKPiAgCQkJIWRybV9lbmMtPmNydGMpIHsKPiBAQCAtMjAxMSwyMiAr MjAwMSw3IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3ZzeW5jX2V2ZW50X2hhbmRsZXIoc3Ry dWN0IHRpbWVyX2xpc3QgKnQpCj4gIAkJcmV0dXJuOwo+ICAJfQo+ICAKPiAtCWlmIChkcHVfZW5j LT5jdXJfbWFzdGVyICYmCj4gLQkJZHB1X2VuYy0+Y3VyX21hc3Rlci0+b3BzLmlzX2F1dG9yZWZy ZXNoX2VuYWJsZWQpCj4gLQkJYXV0b3JlZnJlc2hfZW5hYmxlZCA9Cj4gLQkJCWRwdV9lbmMtPmN1 cl9tYXN0ZXItPm9wcy5pc19hdXRvcmVmcmVzaF9lbmFibGVkKAo+IC0JCQkJCQlkcHVfZW5jLT5j dXJfbWFzdGVyKTsKPiAtCj4gLQkvKgo+IC0JICogUXVldWUgd29yayB0byB1cGRhdGUgdGhlIHZz eW5jIGV2ZW50IHRpbWVyCj4gLQkgKiBpZiBhdXRvcmVmcmVzaCBpcyBlbmFibGVkLgo+IC0JICov Cj4gLQlEUFVfRVZUMzJfVkVSQk9TRShhdXRvcmVmcmVzaF9lbmFibGVkKTsKPiAtCWlmIChhdXRv cmVmcmVzaF9lbmFibGVkKQo+IC0JCWt0aHJlYWRfcXVldWVfd29yaygmZXZlbnRfdGhyZWFkLT53 b3JrZXIsCj4gLQkJCQkmZHB1X2VuYy0+dnN5bmNfZXZlbnRfd29yayk7Cj4gLQllbHNlCj4gLQkJ ZGVsX3RpbWVyKCZkcHVfZW5jLT52c3luY19ldmVudF90aW1lcik7Cj4gKwlkZWxfdGltZXIoJmRw dV9lbmMtPnZzeW5jX2V2ZW50X3RpbWVyKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgZHB1X2Vu Y29kZXJfdnN5bmNfZXZlbnRfd29ya19oYW5kbGVyKHN0cnVjdCBrdGhyZWFkX3dvcmsgKndvcmsp Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVy X3BoeXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXMu aAo+IGluZGV4IDY5ZWMyYjYuLmQzYmZjOTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5cy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5cy5oCj4gQEAgLTEyNCw4ICsxMjQsNiBAQCBz dHJ1Y3QgZHB1X2VuY29kZXJfdmlydF9vcHMgewo+ICAgKiBAcHJlcGFyZV9pZGxlX3BjOgkJcGh5 cyBlbmNvZGVyIGNhbiB1cGRhdGUgdGhlIHZzeW5jX2VuYWJsZSBzdGF0dXMKPiAgICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvbiBpZGxlIHBvd2VyIGNvbGxhcHNlIHByZXBhcmUKPiAg ICogQHJlc3RvcmU6CQkJUmVzdG9yZSBhbGwgdGhlIGVuY29kZXIgY29uZmlncy4KPiAtICogQGlz X2F1dG9yZWZyZXNoX2VuYWJsZWQ6CXByb3ZpZGVzIHRoZSBhdXRvcmVmcmVzaCBjdXJyZW50Cj4g LSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlL2Rpc2FibGUgc3RhdGUuCj4g ICAqIEBnZXRfbGluZV9jb3VudDoJCU9idGFpbiBjdXJyZW50IHZlcnRpY2FsIGxpbmUgY291bnQK PiAgICovCj4gIAo+IEBAIC0xNjYsNyArMTY0LDYgQEAgc3RydWN0IGRwdV9lbmNvZGVyX3BoeXNf b3BzIHsKPiAgCXZvaWQgKCppcnFfY29udHJvbCkoc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBo eXMsIGJvb2wgZW5hYmxlKTsKPiAgCXZvaWQgKCpwcmVwYXJlX2lkbGVfcGMpKHN0cnVjdCBkcHVf ZW5jb2Rlcl9waHlzICpwaHlzX2VuYyk7Cj4gIAl2b2lkICgqcmVzdG9yZSkoc3RydWN0IGRwdV9l bmNvZGVyX3BoeXMgKnBoeXMpOwo+IC0JYm9vbCAoKmlzX2F1dG9yZWZyZXNoX2VuYWJsZWQpKHN0 cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzKTsKPiAgCWludCAoKmdldF9saW5lX2NvdW50KShz dHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5cyk7Cj4gIH07Cj4gIAo+IEBAIC0xNzYsOCArMTcz LDYgQEAgc3RydWN0IGRwdV9lbmNvZGVyX3BoeXNfb3BzIHsKPiAgICogQElOVFJfSURYX1BJTkdQ T05HOiBQaW5ncG9uZyBkb25lIHVudGVycnVwdCBmb3IgY21kIG1vZGUgcGFuZWwKPiAgICogQElO VFJfSURYX1VOREVSUlVOOiBVbmRlcnJ1biB1bnRlcnJ1cHQgZm9yIHZpZGVvIGFuZCBjbWQgbW9k ZSBwYW5lbAo+ICAgKiBASU5UUl9JRFhfUkRQVFI6ICAgIFJlYWRwb2ludGVyIGRvbmUgdW50ZXJy dXB0IGZvciBjbWQgbW9kZSBwYW5lbAo+IC0gKiBASU5UUl9JRFhfQVVUT1JFRlJFU0hfRE9ORTog IEF1dG9yZWZyZXNoIGRvbmUgZm9yIGNtZCBtb2RlIHBhbmVsIG1lYW5pbmcKPiAtICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhdXRvcmVmcmVzaCBoYXMgdHJpZ2dlcmVkIGEgZG91Ymxl IGJ1ZmZlciBmbGlwCj4gICAqLwo+ICBlbnVtIGRwdV9pbnRyX2lkeCB7Cj4gIAlJTlRSX0lEWF9W U1lOQywKPiBAQCAtMTg1LDcgKzE4MCw2IEBAIGVudW0gZHB1X2ludHJfaWR4IHsKPiAgCUlOVFJf SURYX1VOREVSUlVOLAo+ICAJSU5UUl9JRFhfQ1RMX1NUQVJULAo+ICAJSU5UUl9JRFhfUkRQVFIs Cj4gLQlJTlRSX0lEWF9BVVRPUkVGUkVTSF9ET05FLAo+ICAJSU5UUl9JRFhfTUFYLAo+ICB9Owo+ ICAKPiBAQCAtMjg3LDE4ICsyODEsNiBAQCBzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5c192aWQgewo+ ICB9Owo+ICAKPiAgLyoqCj4gLSAqIHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzX2NtZF9hdXRvcmVm cmVzaCAtIGF1dG9yZWZyZXNoIHN0YXRlIHRyYWNraW5nCj4gLSAqIEBjZmc6IGN1cnJlbnQgYWN0 aXZlIGF1dG9yZWZyZXNoIGNvbmZpZ3VyYXRpb24KPiAtICogQGtpY2tvZmZfY250OiBhdG9taWMg Y291bnQgdHJhY2tpbmcgYXV0b3JlZnJlc2ggZG9uZSBpcnEga2lja29mZnMgcGVuZGluZwo+IC0g KiBAa2lja29mZl93cToJd2FpdCBxdWV1ZSBmb3Igd2FpdGluZyBvbiBhdXRvcmVmcmVzaCBkb25l IGlycQo+IC0gKi8KPiAtc3RydWN0IGRwdV9lbmNvZGVyX3BoeXNfY21kX2F1dG9yZWZyZXNoIHsK PiAtCXN0cnVjdCBkcHVfaHdfYXV0b3JlZnJlc2ggY2ZnOwo+IC0JYXRvbWljX3Qga2lja29mZl9j bnQ7Cj4gLQl3YWl0X3F1ZXVlX2hlYWRfdCBraWNrb2ZmX3dxOwo+IC19Owo+IC0KPiAtLyoqCj4g ICAqIHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzX2NtZCAtIHN1Yi1jbGFzcyBvZiBkcHVfZW5jb2Rl cl9waHlzIHRvIGhhbmRsZSBjb21tYW5kCj4gICAqCW1vZGUgc3BlY2lmaWMgb3BlcmF0aW9ucwo+ ICAgKiBAYmFzZToJQmFzZWNsYXNzIHBoeXNpY2FsIGVuY29kZXIgc3RydWN0dXJlCj4gQEAgLTMw Nyw3ICsyODksNiBAQCBzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5c19jbWRfYXV0b3JlZnJlc2ggewo+ ICAgKiBAc2VyaWFsaXplX3dhaXQ0cHA6CXNlcmlhbGl6ZSB3YWl0NHBwIGZlYXR1cmUgd2FpdHMg Zm9yIHBwX2RvbmUgaW50ZXJydXB0Cj4gICAqCQkJYWZ0ZXIgY3RsX3N0YXJ0IGluc3RlYWQgb2Yg YmVmb3JlIG5leHQgZnJhbWUga2lja29mZgo+ICAgKiBAcHBfdGltZW91dF9yZXBvcnRfY250OiBu dW1iZXIgb2YgcGluZ3BvbmcgZG9uZSBpcnEgdGltZW91dCBlcnJvcnMKPiAtICogQGF1dG9yZWZy ZXNoOiBhdXRvcmVmcmVzaCBmZWF0dXJlIHN0YXRlCj4gICAqIEBwZW5kaW5nX3ZibGFua19jbnQ6 IEF0b21pYyBjb3VudGVyIHRyYWNraW5nIHBlbmRpbmcgd2FpdCBmb3IgVkJMQU5LCj4gICAqIEBw ZW5kaW5nX3ZibGFua193cTogV2FpdCBxdWV1ZSBmb3IgYmxvY2tpbmcgdW50aWwgVkJMQU5LIHJl Y2VpdmVkCj4gICAqLwo+IEBAIC0zMTYsNyArMjk3LDYgQEAgc3RydWN0IGRwdV9lbmNvZGVyX3Bo eXNfY21kIHsKPiAgCWludCBzdHJlYW1fc2VsOwo+ICAJYm9vbCBzZXJpYWxpemVfd2FpdDRwcDsK PiAgCWludCBwcF90aW1lb3V0X3JlcG9ydF9jbnQ7Cj4gLQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5 c19jbWRfYXV0b3JlZnJlc2ggYXV0b3JlZnJlc2g7Cj4gIAlhdG9taWNfdCBwZW5kaW5nX3ZibGFu a19jbnQ7Cj4gIAl3YWl0X3F1ZXVlX2hlYWRfdCBwZW5kaW5nX3ZibGFua193cTsKPiAgfTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5 c19jbWQuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNf Y21kLmMKPiBpbmRleCAzNDM2Nzg4Li4wNzI5MzljIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfY21kLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX2NtZC5jCj4gQEAgLTQ3LDkg KzQ3LDcgQEAKPiAgc3RhdGljIGlubGluZSBpbnQgX2RwdV9lbmNvZGVyX3BoeXNfY21kX2dldF9p ZGxlX3RpbWVvdXQoCj4gIAkJc3RydWN0IGRwdV9lbmNvZGVyX3BoeXNfY21kICpjbWRfZW5jKQo+ ICB7Cj4gLQlyZXR1cm4gY21kX2VuYy0+YXV0b3JlZnJlc2guY2ZnLmZyYW1lX2NvdW50ID8KPiAt CQkJY21kX2VuYy0+YXV0b3JlZnJlc2guY2ZnLmZyYW1lX2NvdW50ICoKPiAtCQkJS0lDS09GRl9U SU1FT1VUX01TIDogS0lDS09GRl9USU1FT1VUX01TOwo+ICsJcmV0dXJuIEtJQ0tPRkZfVElNRU9V VF9NUzsKPiAgfQo+ICAKPiAgc3RhdGljIGlubGluZSBib29sIGRwdV9lbmNvZGVyX3BoeXNfY21k X2lzX21hc3RlcigKPiBAQCAtNjgsNTIgKzY2LDYgQEAgc3RhdGljIGJvb2wgZHB1X2VuY29kZXJf cGh5c19jbWRfbW9kZV9maXh1cCgKPiAgCXJldHVybiB0cnVlOwo+ICB9Cj4gIAo+IC1zdGF0aWMg dWludDY0X3QgX2RwdV9lbmNvZGVyX3BoeXNfY21kX2dldF9hdXRvcmVmcmVzaF9wcm9wZXJ0eSgK PiAtCQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpCj4gLXsKPiAtCXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uID0gcGh5c19lbmMtPmNvbm5lY3RvcjsKPiAtCj4gLQlpZiAoIWNv bm4gfHwgIWNvbm4tPnN0YXRlKQo+IC0JCXJldHVybiAwOwo+IC0KPiAtCXJldHVybiBkcHVfY29u bmVjdG9yX2dldF9wcm9wZXJ0eShjb25uLT5zdGF0ZSwKPiAtCQkJCUNPTk5FQ1RPUl9QUk9QX0FV VE9SRUZSRVNIKTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQgX2RwdV9lbmNvZGVyX3BoeXNfY21k X2NvbmZpZ19hdXRvcmVmcmVzaCgKPiAtCQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19l bmMsCj4gLQkJdTMyIG5ld19mcmFtZV9jb3VudCkKPiAtewo+IC0Jc3RydWN0IGRwdV9lbmNvZGVy X3BoeXNfY21kICpjbWRfZW5jID0KPiAtCQkJdG9fZHB1X2VuY29kZXJfcGh5c19jbWQocGh5c19l bmMpOwo+IC0Jc3RydWN0IGRwdV9od19waW5ncG9uZyAqaHdfcHAgPSBwaHlzX2VuYy0+aHdfcHA7 Cj4gLQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubiA9IHBoeXNfZW5jLT5jb25uZWN0b3I7Cj4g LQlzdHJ1Y3QgZHB1X2h3X2F1dG9yZWZyZXNoICpjZmdfY3VyLCBjZmdfbnh0Owo+IC0KPiAtCWlm ICghY29ubiB8fCAhY29ubi0+c3RhdGUgfHwgIWh3X3BwKQo+IC0JCXJldHVybjsKPiAtCj4gLQlj ZmdfY3VyID0gJmNtZF9lbmMtPmF1dG9yZWZyZXNoLmNmZzsKPiAtCj4gLQkvKiBhdXRvcmVmcmVz aCBwcm9wZXJ0eSB2YWx1ZSBzaG91bGQgYmUgdmFsaWRhdGVkIGFscmVhZHkgKi8KPiAtCW1lbXNl dCgmY2ZnX254dCwgMCwgc2l6ZW9mKGNmZ19ueHQpKTsKPiAtCWNmZ19ueHQuZnJhbWVfY291bnQg PSBuZXdfZnJhbWVfY291bnQ7Cj4gLQljZmdfbnh0LmVuYWJsZSA9IChjZmdfbnh0LmZyYW1lX2Nv dW50ICE9IDApOwo+IC0KPiAtCURQVV9ERUJVR19DTURFTkMoY21kX2VuYywgImF1dG9yZWZyZXNo IHN0YXRlICVkLT4lZCBmcmFtZWNvdW50ICVkXG4iLAo+IC0JCQljZmdfY3VyLT5lbmFibGUsIGNm Z19ueHQuZW5hYmxlLCBjZmdfbnh0LmZyYW1lX2NvdW50KTsKPiAtCURQVV9FVlQzMihEUk1JRChw aHlzX2VuYy0+cGFyZW50KSwgaHdfcHAtPmlkeCwgY2ZnX2N1ci0+ZW5hYmxlLAo+IC0JCQljZmdf bnh0LmVuYWJsZSwgY2ZnX254dC5mcmFtZV9jb3VudCk7Cj4gLQo+IC0JLyogb25seSBwcm9jZWVk IG9uIHN0YXRlIGNoYW5nZXMgKi8KPiAtCWlmIChjZmdfbnh0LmVuYWJsZSA9PSBjZmdfY3VyLT5l bmFibGUpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCW1lbWNweShjZmdfY3VyLCAmY2ZnX254dCwgc2l6 ZW9mKCpjZmdfY3VyKSk7Cj4gLQlpZiAoaHdfcHAtPm9wcy5zZXR1cF9hdXRvcmVmcmVzaCkKPiAt CQlod19wcC0+b3BzLnNldHVwX2F1dG9yZWZyZXNoKGh3X3BwLCBjZmdfY3VyKTsKPiAtfQo+IC0K PiAgc3RhdGljIHZvaWQgX2RwdV9lbmNvZGVyX3BoeXNfY21kX3VwZGF0ZV9pbnRmX2NmZygKPiAg CQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpCj4gIHsKPiBAQCAtMTY0LDI5ICsx MTYsNiBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX2NtZF9wcF90eF9kb25lX2lycSh2 b2lkICphcmcsIGludCBpcnFfaWR4KQo+ICAJRFBVX0FUUkFDRV9FTkQoInBwX2RvbmVfaXJxIik7 Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfY21kX2F1dG9yZWZyZXNo X2RvbmVfaXJxKHZvaWQgKmFyZywgaW50IGlycV9pZHgpCj4gLXsKPiAtCXN0cnVjdCBkcHVfZW5j b2Rlcl9waHlzICpwaHlzX2VuYyA9IGFyZzsKPiAtCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzX2Nt ZCAqY21kX2VuYyA9Cj4gLQkJCXRvX2RwdV9lbmNvZGVyX3BoeXNfY21kKHBoeXNfZW5jKTsKPiAt CXVuc2lnbmVkIGxvbmcgbG9ja19mbGFnczsKPiAtCWludCBuZXdfY250Owo+IC0KPiAtCWlmICgh Y21kX2VuYykKPiAtCQlyZXR1cm47Cj4gLQo+IC0JcGh5c19lbmMgPSAmY21kX2VuYy0+YmFzZTsK PiAtCXNwaW5fbG9ja19pcnFzYXZlKHBoeXNfZW5jLT5lbmNfc3BpbmxvY2ssIGxvY2tfZmxhZ3Mp Owo+IC0JbmV3X2NudCA9IGF0b21pY19hZGRfdW5sZXNzKCZjbWRfZW5jLT5hdXRvcmVmcmVzaC5r aWNrb2ZmX2NudCwgLTEsIDApOwo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShwaHlzX2VuYy0+ ZW5jX3NwaW5sb2NrLCBsb2NrX2ZsYWdzKTsKPiAtCj4gLQlEUFVfRVZUMzJfSVJRKERSTUlEKHBo eXNfZW5jLT5wYXJlbnQpLAo+IC0JCQlwaHlzX2VuYy0+aHdfcHAtPmlkeCAtIFBJTkdQT05HXzAs IG5ld19jbnQpOwo+IC0KPiAtCS8qIFNpZ25hbCBhbnkgd2FpdGluZyBhdG9taWMgY29tbWl0IHRo cmVhZCAqLwo+IC0Jd2FrZV91cF9hbGwoJmNtZF9lbmMtPmF1dG9yZWZyZXNoLmtpY2tvZmZfd3Ep Owo+IC19Cj4gLQo+ICBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX2NtZF9wcF9yZF9wdHJf aXJxKHZvaWQgKmFyZywgaW50IGlycV9pZHgpCj4gIHsKPiAgCXN0cnVjdCBkcHVfZW5jb2Rlcl9w aHlzICpwaHlzX2VuYyA9IGFyZzsKPiBAQCAtMjU3LDEwICsxODYsNiBAQCBzdGF0aWMgdm9pZCBf ZHB1X2VuY29kZXJfcGh5c19jbWRfc2V0dXBfaXJxX2h3X2lkeCgKPiAgCWlycSA9ICZwaHlzX2Vu Yy0+aXJxW0lOVFJfSURYX1VOREVSUlVOXTsKPiAgCWlycS0+aHdfaWR4ID0gcGh5c19lbmMtPmlu dGZfaWR4Owo+ICAJaXJxLT5pcnFfaWR4ID0gLUVJTlZBTDsKPiAtCj4gLQlpcnEgPSAmcGh5c19l bmMtPmlycVtJTlRSX0lEWF9BVVRPUkVGUkVTSF9ET05FXTsKPiAtCWlycS0+aHdfaWR4ID0gcGh5 c19lbmMtPmh3X3BwLT5pZHg7Cj4gLQlpcnEtPmlycV9pZHggPSAtRUlOVkFMOwo+ICB9Cj4gIAo+ ICBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX2NtZF9tb2RlX3NldCgKPiBAQCAtMzUyLDcz ICsyNzcsNiBAQCBzdGF0aWMgaW50IF9kcHVfZW5jb2Rlcl9waHlzX2NtZF9oYW5kbGVfcHBkb25l X3RpbWVvdXQoCj4gIAlyZXR1cm4gLUVUSU1FRE9VVDsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBf ZHB1X2VuY29kZXJfcGh5c19jbWRfcG9sbF93cml0ZV9wb2ludGVyX3N0YXJ0ZWQoCj4gLQkJc3Ry dWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQo+IC17Cj4gLQlzdHJ1Y3QgZHB1X2VuY29k ZXJfcGh5c19jbWQgKmNtZF9lbmMgPQo+IC0JCQl0b19kcHVfZW5jb2Rlcl9waHlzX2NtZChwaHlz X2VuYyk7Cj4gLQlzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICpod19wcCA9IHBoeXNfZW5jLT5od19w cDsKPiAtCXN0cnVjdCBkcHVfaHdfcHBfdnN5bmNfaW5mbyBpbmZvOwo+IC0JdTMyIHRpbWVvdXRf dXMgPSBEUFVfRU5DX1dSX1BUUl9TVEFSVF9USU1FT1VUX1VTOwo+IC0JaW50IHJldDsKPiAtCj4g LQlpZiAoIWh3X3BwIHx8ICFod19wcC0+b3BzLmdldF92c3luY19pbmZvIHx8Cj4gLQkJCSFod19w cC0+b3BzLnBvbGxfdGltZW91dF93cl9wdHIpCj4gLQkJcmV0dXJuIDA7Cj4gLQo+IC0JcmV0ID0g aHdfcHAtPm9wcy5nZXRfdnN5bmNfaW5mbyhod19wcCwgJmluZm8pOwo+IC0JaWYgKHJldCkKPiAt CQlyZXR1cm4gcmV0Owo+IC0KPiAtCURQVV9ERUJVR19DTURFTkMoY21kX2VuYywKPiAtCQkJInBw OiVkIHJkX3B0ciAlZCB3cl9wdHIgJWRcbiIsCj4gLQkJCXBoeXNfZW5jLT5od19wcC0+aWR4IC0g UElOR1BPTkdfMCwKPiAtCQkJaW5mby5yZF9wdHJfbGluZV9jb3VudCwKPiAtCQkJaW5mby53cl9w dHJfbGluZV9jb3VudCk7Cj4gLQlEUFVfRVZUMzJfVkVSQk9TRShEUk1JRChwaHlzX2VuYy0+cGFy ZW50KSwKPiAtCQkJcGh5c19lbmMtPmh3X3BwLT5pZHggLSBQSU5HUE9OR18wLAo+IC0JCQlpbmZv LndyX3B0cl9saW5lX2NvdW50KTsKPiAtCj4gLQlyZXQgPSBod19wcC0+b3BzLnBvbGxfdGltZW91 dF93cl9wdHIoaHdfcHAsIHRpbWVvdXRfdXMpOwo+IC0JaWYgKHJldCkgewo+IC0JCURQVV9FVlQz MihEUk1JRChwaHlzX2VuYy0+cGFyZW50KSwKPiAtCQkJCXBoeXNfZW5jLT5od19wcC0+aWR4IC0g UElOR1BPTkdfMCwKPiAtCQkJCXRpbWVvdXRfdXMsCj4gLQkJCQlyZXQpOwo+IC0JCURQVV9EQkdf RFVNUCgiYWxsIiwgImRiZ19idXMiLCAidmJpZl9kYmdfYnVzIiwgInBhbmljIik7Cj4gLQl9Cj4g LQo+IC0JcmV0dXJuIHJldDsKPiAtfQo+IC0KPiAtc3RhdGljIGJvb2wgX2RwdV9lbmNvZGVyX3Bo eXNfY21kX2lzX29uZ29pbmdfcHB0eCgKPiAtCQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5 c19lbmMpCj4gLXsKPiAtCXN0cnVjdCBkcHVfaHdfcGluZ3BvbmcgKmh3X3BwOwo+IC0Jc3RydWN0 IGRwdV9od19wcF92c3luY19pbmZvIGluZm87Cj4gLQo+IC0JaWYgKCFwaHlzX2VuYykKPiAtCQly ZXR1cm4gZmFsc2U7Cj4gLQo+IC0JaHdfcHAgPSBwaHlzX2VuYy0+aHdfcHA7Cj4gLQlpZiAoIWh3 X3BwIHx8ICFod19wcC0+b3BzLmdldF92c3luY19pbmZvKQo+IC0JCXJldHVybiBmYWxzZTsKPiAt Cj4gLQlod19wcC0+b3BzLmdldF92c3luY19pbmZvKGh3X3BwLCAmaW5mbyk7Cj4gLQo+IC0JRFBV X0VWVDMyKERSTUlEKHBoeXNfZW5jLT5wYXJlbnQpLAo+IC0JCQlwaHlzX2VuYy0+aHdfcHAtPmlk eCAtIFBJTkdQT05HXzAsCj4gLQkJCWF0b21pY19yZWFkKCZwaHlzX2VuYy0+cGVuZGluZ19raWNr b2ZmX2NudCksCj4gLQkJCWluZm8ud3JfcHRyX2xpbmVfY291bnQsCj4gLQkJCXBoeXNfZW5jLT5j YWNoZWRfbW9kZS52ZGlzcGxheSk7Cj4gLQo+IC0JaWYgKGluZm8ud3JfcHRyX2xpbmVfY291bnQg PiAwICYmIGluZm8ud3JfcHRyX2xpbmVfY291bnQgPAo+IC0JCQlwaHlzX2VuYy0+Y2FjaGVkX21v ZGUudmRpc3BsYXkpCj4gLQkJcmV0dXJuIHRydWU7Cj4gLQo+IC0JcmV0dXJuIGZhbHNlOwo+IC19 Cj4gLQo+ICBzdGF0aWMgaW50IF9kcHVfZW5jb2Rlcl9waHlzX2NtZF93YWl0X2Zvcl9pZGxlKAo+ ICAJCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYykKPiAgewo+IEBAIC00NDYsNDIg KzMwNCw2IEBAIHN0YXRpYyBpbnQgX2RwdV9lbmNvZGVyX3BoeXNfY21kX3dhaXRfZm9yX2lkbGUo Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IF9kcHVfZW5jb2Rlcl9waHlz X2NtZF93YWl0X2Zvcl9hdXRvcmVmcmVzaF9kb25lKAo+IC0JCXN0cnVjdCBkcHVfZW5jb2Rlcl9w aHlzICpwaHlzX2VuYykKPiAtewo+IC0Jc3RydWN0IGRwdV9lbmNvZGVyX3BoeXNfY21kICpjbWRf ZW5jID0KPiAtCQkJdG9fZHB1X2VuY29kZXJfcGh5c19jbWQocGh5c19lbmMpOwo+IC0Jc3RydWN0 IGRwdV9lbmNvZGVyX3dhaXRfaW5mbyB3YWl0X2luZm87Cj4gLQlpbnQgcmV0ID0gMDsKPiAtCj4g LQlpZiAoIXBoeXNfZW5jKSB7Cj4gLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGVuY29kZXJcbiIpOwo+ IC0JCXJldHVybiAtRUlOVkFMOwo+IC0JfQo+IC0KPiAtCS8qIG9ubHkgbWFzdGVyIGRlYWxzIHdp dGggYXV0b3JlZnJlc2ggKi8KPiAtCWlmICghZHB1X2VuY29kZXJfcGh5c19jbWRfaXNfbWFzdGVy KHBoeXNfZW5jKSkKPiAtCQlyZXR1cm4gMDsKPiAtCj4gLQl3YWl0X2luZm8ud3EgPSAmY21kX2Vu Yy0+YXV0b3JlZnJlc2gua2lja29mZl93cTsKPiAtCXdhaXRfaW5mby5hdG9taWNfY250ID0gJmNt ZF9lbmMtPmF1dG9yZWZyZXNoLmtpY2tvZmZfY250Owo+IC0Jd2FpdF9pbmZvLnRpbWVvdXRfbXMg PSBfZHB1X2VuY29kZXJfcGh5c19jbWRfZ2V0X2lkbGVfdGltZW91dChjbWRfZW5jKTsKPiAtCj4g LQkvKiB3YWl0IGZvciBhdXRvcmVmcmVzaCBraWNrb2ZmIHRvIHN0YXJ0ICovCj4gLQlyZXQgPSBk cHVfZW5jb2Rlcl9oZWxwZXJfd2FpdF9mb3JfaXJxKHBoeXNfZW5jLAo+IC0JCQlJTlRSX0lEWF9B VVRPUkVGUkVTSF9ET05FLCAmd2FpdF9pbmZvKTsKPiAtCj4gLQkvKiBkb3VibGUgY2hlY2sgdGhh dCBraWNrb2ZmIGhhcyBzdGFydGVkIGJ5IHJlYWRpbmcgd3JpdGUgcHRyIHJlZyAqLwo+IC0JaWYg KCFyZXQpCj4gLQkJcmV0ID0gX2RwdV9lbmNvZGVyX3BoeXNfY21kX3BvbGxfd3JpdGVfcG9pbnRl cl9zdGFydGVkKAo+IC0JCQlwaHlzX2VuYyk7Cj4gLQllbHNlCj4gLQkJZHB1X2VuY29kZXJfaGVs cGVyX3JlcG9ydF9pcnFfdGltZW91dChwaHlzX2VuYywKPiAtCQkJCUlOVFJfSURYX0FVVE9SRUZS RVNIX0RPTkUpOwo+IC0KPiAtCXJldHVybiByZXQ7Cj4gLX0KPiAtCj4gIHN0YXRpYyBpbnQgZHB1 X2VuY29kZXJfcGh5c19jbWRfY29udHJvbF92YmxhbmtfaXJxKAo+ICAJCXN0cnVjdCBkcHVfZW5j b2Rlcl9waHlzICpwaHlzX2VuYywKPiAgCQlib29sIGVuYWJsZSkKPiBAQCAtNTUwLDIwICszNzIs MTMgQEAgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX2NtZF9pcnFfY29udHJvbChzdHJ1Y3QgZHB1X2Vu Y29kZXJfcGh5cyAqcGh5c19lbmMsCj4gIAkJZHB1X2VuY29kZXJfaGVscGVyX3JlZ2lzdGVyX2ly cShwaHlzX2VuYywgSU5UUl9JRFhfVU5ERVJSVU4pOwo+ICAJCWRwdV9lbmNvZGVyX3BoeXNfY21k X2NvbnRyb2xfdmJsYW5rX2lycShwaHlzX2VuYywgdHJ1ZSk7Cj4gIAo+IC0JCWlmIChkcHVfZW5j b2Rlcl9waHlzX2NtZF9pc19tYXN0ZXIocGh5c19lbmMpKSB7Cj4gKwkJaWYgKGRwdV9lbmNvZGVy X3BoeXNfY21kX2lzX21hc3RlcihwaHlzX2VuYykpCj4gIAkJCWRwdV9lbmNvZGVyX2hlbHBlcl9y ZWdpc3Rlcl9pcnEocGh5c19lbmMsCj4gIAkJCQkJSU5UUl9JRFhfQ1RMX1NUQVJUKTsKPiAtCQkJ ZHB1X2VuY29kZXJfaGVscGVyX3JlZ2lzdGVyX2lycShwaHlzX2VuYywKPiAtCQkJCQlJTlRSX0lE WF9BVVRPUkVGUkVTSF9ET05FKTsKPiAtCQl9Cj4gLQo+ICAJfSBlbHNlIHsKPiAtCQlpZiAoZHB1 X2VuY29kZXJfcGh5c19jbWRfaXNfbWFzdGVyKHBoeXNfZW5jKSkgewo+ICsJCWlmIChkcHVfZW5j b2Rlcl9waHlzX2NtZF9pc19tYXN0ZXIocGh5c19lbmMpKQo+ICAJCQlkcHVfZW5jb2Rlcl9oZWxw ZXJfdW5yZWdpc3Rlcl9pcnEocGh5c19lbmMsCj4gIAkJCQkJSU5UUl9JRFhfQ1RMX1NUQVJUKTsK PiAtCQkJZHB1X2VuY29kZXJfaGVscGVyX3VucmVnaXN0ZXJfaXJxKHBoeXNfZW5jLAo+IC0JCQkJ CUlOVFJfSURYX0FVVE9SRUZSRVNIX0RPTkUpOwo+IC0JCX0KPiAgCj4gIAkJZHB1X2VuY29kZXJf aGVscGVyX3VucmVnaXN0ZXJfaXJxKHBoeXNfZW5jLCBJTlRSX0lEWF9VTkRFUlJVTik7Cj4gIAkJ ZHB1X2VuY29kZXJfcGh5c19jbWRfY29udHJvbF92YmxhbmtfaXJxKHBoeXNfZW5jLCBmYWxzZSk7 Cj4gQEAgLTczNiwzMCArNTUxLDYgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c19jbWRf ZW5hYmxlKHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYykKPiAgCXBoeXNfZW5jLT5l bmFibGVfc3RhdGUgPSBEUFVfRU5DX0VOQUJMRUQ7Cj4gIH0KPiAgCj4gLXN0YXRpYyBib29sIGRw dV9lbmNvZGVyX3BoeXNfY21kX2lzX2F1dG9yZWZyZXNoX2VuYWJsZWQoCj4gLQkJc3RydWN0IGRw dV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQo+IC17Cj4gLQlzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25n ICpod19wcDsKPiAtCXN0cnVjdCBkcHVfaHdfYXV0b3JlZnJlc2ggY2ZnOwo+IC0JaW50IHJldDsK PiAtCj4gLQlpZiAoIXBoeXNfZW5jIHx8ICFwaHlzX2VuYy0+aHdfcHApCj4gLQkJcmV0dXJuIDA7 Cj4gLQo+IC0JaWYgKCFkcHVfZW5jb2Rlcl9waHlzX2NtZF9pc19tYXN0ZXIocGh5c19lbmMpKQo+ IC0JCXJldHVybiAwOwo+IC0KPiAtCWh3X3BwID0gcGh5c19lbmMtPmh3X3BwOwo+IC0JaWYgKCFo d19wcC0+b3BzLmdldF9hdXRvcmVmcmVzaCkKPiAtCQlyZXR1cm4gMDsKPiAtCj4gLQlyZXQgPSBo d19wcC0+b3BzLmdldF9hdXRvcmVmcmVzaChod19wcCwgJmNmZyk7Cj4gLQlpZiAocmV0KQo+IC0J CXJldHVybiAwOwo+IC0KPiAtCXJldHVybiBjZmcuZW5hYmxlOwo+IC19Cj4gLQo+ICBzdGF0aWMg dm9pZCBfZHB1X2VuY29kZXJfcGh5c19jbWRfY29ubmVjdF90ZSgKPiAgCQlzdHJ1Y3QgZHB1X2Vu Y29kZXJfcGh5cyAqcGh5c19lbmMsIGJvb2wgZW5hYmxlKQo+ICB7Cj4gQEAgLTg2OSw4ICs2NjAs NyBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX2NtZF9wcmVwYXJlX2Zvcl9raWNrb2Zm KAo+ICAJRFBVX0RFQlVHX0NNREVOQyhjbWRfZW5jLCAicHAgJWRcbiIsIHBoeXNfZW5jLT5od19w cC0+aWR4IC0gUElOR1BPTkdfMCk7Cj4gIAo+ICAJRFBVX0VWVDMyKERSTUlEKHBoeXNfZW5jLT5w YXJlbnQpLCBwaHlzX2VuYy0+aHdfcHAtPmlkeCAtIFBJTkdQT05HXzAsCj4gLQkJCWF0b21pY19y ZWFkKCZwaHlzX2VuYy0+cGVuZGluZ19raWNrb2ZmX2NudCksCj4gLQkJCWF0b21pY19yZWFkKCZj bWRfZW5jLT5hdXRvcmVmcmVzaC5raWNrb2ZmX2NudCkpOwo+ICsJCQlhdG9taWNfcmVhZCgmcGh5 c19lbmMtPnBlbmRpbmdfa2lja29mZl9jbnQpKTsKPiAgCj4gIAkvKgo+ICAJICogTWFyayBraWNr b2ZmIHJlcXVlc3QgYXMgb3V0c3RhbmRpbmcuIElmIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lLAo+ IEBAIC05NTQsMTAgKzc0NCw2IEBAIHN0YXRpYyBpbnQgZHB1X2VuY29kZXJfcGh5c19jbWRfd2Fp dF9mb3JfY29tbWl0X2RvbmUoCj4gIAlpZiAoZHB1X2VuY29kZXJfcGh5c19jbWRfaXNfbWFzdGVy KHBoeXNfZW5jKSkKPiAgCQlyYyA9IF9kcHVfZW5jb2Rlcl9waHlzX2NtZF93YWl0X2Zvcl9jdGxf c3RhcnQocGh5c19lbmMpOwo+ICAKPiAtCWlmICghcmMgJiYgZHB1X2VuY29kZXJfcGh5c19jbWRf aXNfbWFzdGVyKHBoeXNfZW5jKSAmJgo+IC0JCQljbWRfZW5jLT5hdXRvcmVmcmVzaC5jZmcuZW5h YmxlKQo+IC0JCXJjID0gX2RwdV9lbmNvZGVyX3BoeXNfY21kX3dhaXRfZm9yX2F1dG9yZWZyZXNo X2RvbmUocGh5c19lbmMpOwo+IC0KPiAgCS8qIHJlcXVpcmVkIGZvciBib3RoIGNvbnRyb2xsZXJz ICovCj4gIAlpZiAoIXJjICYmIGNtZF9lbmMtPnNlcmlhbGl6ZV93YWl0NHBwKQo+ICAJCWRwdV9l bmNvZGVyX3BoeXNfY21kX3ByZXBhcmVfZm9yX2tpY2tvZmYocGh5c19lbmMsIE5VTEwpOwo+IEBA IC05OTMsNTggKzc3OSw2IEBAIHN0YXRpYyBpbnQgZHB1X2VuY29kZXJfcGh5c19jbWRfd2FpdF9m b3JfdmJsYW5rKAo+ICAJcmV0dXJuIHJjOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBkcHVfZW5j b2Rlcl9waHlzX2NtZF9wcmVwYXJlX2NvbW1pdCgKPiAtCQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5 cyAqcGh5c19lbmMpCj4gLXsKPiAtCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzX2NtZCAqY21kX2Vu YyA9Cj4gLQkJdG9fZHB1X2VuY29kZXJfcGh5c19jbWQocGh5c19lbmMpOwo+IC0JdW5zaWduZWQg bG9uZyBsb2NrX2ZsYWdzOwo+IC0KPiAtCWlmICghcGh5c19lbmMpCj4gLQkJcmV0dXJuOwo+IC0K PiAtCWlmICghZHB1X2VuY29kZXJfcGh5c19jbWRfaXNfbWFzdGVyKHBoeXNfZW5jKSkKPiAtCQly ZXR1cm47Cj4gLQo+IC0JRFBVX0VWVDMyKERSTUlEKHBoeXNfZW5jLT5wYXJlbnQpLCBwaHlzX2Vu Yy0+aW50Zl9pZHggLSBJTlRGXzAsCj4gLQkJCWNtZF9lbmMtPmF1dG9yZWZyZXNoLmNmZy5lbmFi bGUpOwo+IC0KPiAtCWlmICghZHB1X2VuY29kZXJfcGh5c19jbWRfaXNfYXV0b3JlZnJlc2hfZW5h YmxlZChwaHlzX2VuYykpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCS8qKgo+IC0JICogQXV0b3JlZnJl c2ggbXVzdCBiZSBkaXNhYmxlZCBjYXJlZnVsbHk6Cj4gLQkgKiAgLSBBdXRvcmVmcmVzaCBtdXN0 IGJlIGRpc2FibGVkIGJldHdlZW4gcHBfZG9uZSBhbmQgdGUKPiAtCSAqICAgIHNpZ25hbCBwcmlv ciB0byBzZG04NDUgdGFyZ2V0cy4gQWxsIHRhcmdldHMgYWZ0ZXIgc2RtODQ1Cj4gLQkgKiAgICBz dXBwb3J0cyBhdXRvcmVmcmVzaCBkaXNhYmxlIHdpdGhvdXQgdHVybmluZyBvZmYgdGhlCj4gLQkg KiAgICBoYXJkd2FyZSBURSBhbmQgcHBfZG9uZSB3YWl0Lgo+IC0JICoKPiAtCSAqICAtIFdhaXQg Zm9yIFRYIHRvIENvbXBsZXRlCj4gLQkgKiAgICBXYWl0IGZvciBQUERvbmUgY29uZmlybXMgdGhl IGxhc3QgZnJhbWUgdHJhbnNmZXIgaXMgY29tcGxldGUuCj4gLQkgKgo+IC0JICogIC0gTGVhdmUg QXV0b3JlZnJlc2ggRGlzYWJsZWQKPiAtCSAqICAgIC0gQXNzdW1lIGRpc2FibGUgb2YgQXV0b3Jl ZnJlc2ggc2luY2UgaXQgaXMgbm93IHNhZmUKPiAtCSAqICAgIC0gQ2FuIG5vdyBzYWZlbHkgRGlz YWJsZSBFbmNvZGVyLCBkbyBkZWJ1ZyBwcmludGluZywgZXRjLgo+IC0JICogICAgIHdpdGhvdXQg d29ycnlpbmcgdGhhdCBBdXRvcmVmcmVzaCB3aWxsIGtpY2tvZmYKPiAtCSAqLwo+IC0KPiAtCXNw aW5fbG9ja19pcnFzYXZlKHBoeXNfZW5jLT5lbmNfc3BpbmxvY2ssIGxvY2tfZmxhZ3MpOwo+IC0K PiAtCV9kcHVfZW5jb2Rlcl9waHlzX2NtZF9jb25maWdfYXV0b3JlZnJlc2gocGh5c19lbmMsIDAp Owo+IC0KPiAtCS8qIGNoZWNrIGZvciBvdXRzdGFuZGluZyBUWCAqLwo+IC0JaWYgKF9kcHVfZW5j b2Rlcl9waHlzX2NtZF9pc19vbmdvaW5nX3BwdHgocGh5c19lbmMpKQo+IC0JCWF0b21pY19hZGRf dW5sZXNzKCZwaHlzX2VuYy0+cGVuZGluZ19raWNrb2ZmX2NudCwgMSwgMSk7Cj4gLQlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKHBoeXNfZW5jLT5lbmNfc3BpbmxvY2ssIGxvY2tfZmxhZ3MpOwo+IC0K PiAtCS8qIHdhaXQgZm9yIHBwZG9uZSBpZiBuZWNlc3NhcnkgZHVlIHRvIGNhdGNoaW5nIG9uZ29p bmcgVFggKi8KPiAtCWlmIChfZHB1X2VuY29kZXJfcGh5c19jbWRfd2FpdF9mb3JfaWRsZShwaHlz X2VuYykpCj4gLQkJRFBVX0VSUk9SX0NNREVOQyhjbWRfZW5jLCAicHA6JWQga2lja29mZiB0aW1l ZCBvdXRcbiIsCj4gLQkJCQlwaHlzX2VuYy0+aHdfcHAtPmlkeCAtIFBJTkdQT05HXzApOwo+IC0K PiAtCURQVV9ERUJVR19DTURFTkMoY21kX2VuYywgImRpc2FibGVkIGF1dG9yZWZyZXNoXG4iKTsK PiAtfQo+IC0KPiAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c19jbWRfaGFuZGxlX3Bvc3Rf a2lja29mZigKPiAgCQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpCj4gIHsKPiBA QCAtMTA2MSwyNyArNzk1LDE1IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfY21kX2hh bmRsZV9wb3N0X2tpY2tvZmYoCj4gIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfY21kX3Ry aWdnZXJfc3RhcnQoCj4gIAkJc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQo+ICB7 Cj4gLQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5c19jbWQgKmNtZF9lbmMgPQo+IC0JCQl0b19kcHVf ZW5jb2Rlcl9waHlzX2NtZChwaHlzX2VuYyk7Cj4gLQl1MzIgZnJhbWVfY250Owo+IC0KPiAgCWlm ICghcGh5c19lbmMpCj4gIAkJcmV0dXJuOwo+ICAKPiAtCS8qIHdlIGRvbid0IGlzc3VlIENUTF9T VEFSVCB3aGVuIHVzaW5nIGF1dG9yZWZyZXNoICovCj4gLQlmcmFtZV9jbnQgPSBfZHB1X2VuY29k ZXJfcGh5c19jbWRfZ2V0X2F1dG9yZWZyZXNoX3Byb3BlcnR5KHBoeXNfZW5jKTsKPiAtCWlmIChm cmFtZV9jbnQpIHsKPiAtCQlfZHB1X2VuY29kZXJfcGh5c19jbWRfY29uZmlnX2F1dG9yZWZyZXNo KHBoeXNfZW5jLCBmcmFtZV9jbnQpOwo+IC0JCWF0b21pY19pbmMoJmNtZF9lbmMtPmF1dG9yZWZy ZXNoLmtpY2tvZmZfY250KTsKPiAtCX0gZWxzZSB7Cj4gLQkJZHB1X2VuY29kZXJfaGVscGVyX3Ry aWdnZXJfc3RhcnQocGh5c19lbmMpOwo+IC0JfQo+ICsJZHB1X2VuY29kZXJfaGVscGVyX3RyaWdn ZXJfc3RhcnQocGh5c19lbmMpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9w aHlzX2NtZF9pbml0X29wcygKPiAgCQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5c19vcHMgKm9wcykK PiAgewo+IC0Jb3BzLT5wcmVwYXJlX2NvbW1pdCA9IGRwdV9lbmNvZGVyX3BoeXNfY21kX3ByZXBh cmVfY29tbWl0Owo+ICAJb3BzLT5pc19tYXN0ZXIgPSBkcHVfZW5jb2Rlcl9waHlzX2NtZF9pc19t YXN0ZXI7Cj4gIAlvcHMtPm1vZGVfc2V0ID0gZHB1X2VuY29kZXJfcGh5c19jbWRfbW9kZV9zZXQ7 Cj4gIAlvcHMtPm1vZGVfZml4dXAgPSBkcHVfZW5jb2Rlcl9waHlzX2NtZF9tb2RlX2ZpeHVwOwo+ IEBAIC0xMTAwLDggKzgyMiw2IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfY21kX2lu aXRfb3BzKAo+ICAJb3BzLT5pcnFfY29udHJvbCA9IGRwdV9lbmNvZGVyX3BoeXNfY21kX2lycV9j b250cm9sOwo+ICAJb3BzLT5yZXN0b3JlID0gZHB1X2VuY29kZXJfcGh5c19jbWRfZW5hYmxlX2hl bHBlcjsKPiAgCW9wcy0+cHJlcGFyZV9pZGxlX3BjID0gZHB1X2VuY29kZXJfcGh5c19jbWRfcHJl cGFyZV9pZGxlX3BjOwo+IC0Jb3BzLT5pc19hdXRvcmVmcmVzaF9lbmFibGVkID0KPiAtCQkJZHB1 X2VuY29kZXJfcGh5c19jbWRfaXNfYXV0b3JlZnJlc2hfZW5hYmxlZDsKPiAgCW9wcy0+aGFuZGxl X3Bvc3Rfa2lja29mZiA9IGRwdV9lbmNvZGVyX3BoeXNfY21kX2hhbmRsZV9wb3N0X2tpY2tvZmY7 Cj4gIAlvcHMtPmdldF9saW5lX2NvdW50ID0gZHB1X2VuY29kZXJfcGh5c19jbWRfZ2V0X2xpbmVf Y291bnQ7Cj4gIH0KPiBAQCAtMTE3NSwyMCArODk1LDEyIEBAIHN0cnVjdCBkcHVfZW5jb2Rlcl9w aHlzICpkcHVfZW5jb2Rlcl9waHlzX2NtZF9pbml0KAo+ICAJaXJxLT5pbnRyX2lkeCA9IElOVFJf SURYX1VOREVSUlVOOwo+ICAJaXJxLT5jYi5mdW5jID0gZHB1X2VuY29kZXJfcGh5c19jbWRfdW5k ZXJydW5faXJxOwo+ICAKPiAtCWlycSA9ICZwaHlzX2VuYy0+aXJxW0lOVFJfSURYX0FVVE9SRUZS RVNIX0RPTkVdOwo+IC0JaXJxLT5uYW1lID0gImF1dG9yZWZyZXNoX2RvbmUiOwo+IC0JaXJxLT5p bnRyX3R5cGUgPSBEUFVfSVJRX1RZUEVfUElOR19QT05HX0FVVE9fUkVGOwo+IC0JaXJxLT5pbnRy X2lkeCA9IElOVFJfSURYX0FVVE9SRUZSRVNIX0RPTkU7Cj4gLQlpcnEtPmNiLmZ1bmMgPSBkcHVf ZW5jb2Rlcl9waHlzX2NtZF9hdXRvcmVmcmVzaF9kb25lX2lycTsKPiAtCj4gIAlhdG9taWNfc2V0 KCZwaHlzX2VuYy0+dmJsYW5rX3JlZmNvdW50LCAwKTsKPiAgCWF0b21pY19zZXQoJnBoeXNfZW5j LT5wZW5kaW5nX2tpY2tvZmZfY250LCAwKTsKPiAgCWF0b21pY19zZXQoJnBoeXNfZW5jLT5wZW5k aW5nX2N0bHN0YXJ0X2NudCwgMCk7Cj4gIAlhdG9taWNfc2V0KCZjbWRfZW5jLT5wZW5kaW5nX3Zi bGFua19jbnQsIDApOwo+ICAJaW5pdF93YWl0cXVldWVfaGVhZCgmcGh5c19lbmMtPnBlbmRpbmdf a2lja29mZl93cSk7Cj4gIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZjbWRfZW5jLT5wZW5kaW5nX3Zi bGFua193cSk7Cj4gLQlhdG9taWNfc2V0KCZjbWRfZW5jLT5hdXRvcmVmcmVzaC5raWNrb2ZmX2Nu dCwgMCk7Cj4gLQlpbml0X3dhaXRxdWV1ZV9oZWFkKCZjbWRfZW5jLT5hdXRvcmVmcmVzaC5raWNr b2ZmX3dxKTsKPiAgCj4gIAlEUFVfREVCVUdfQ01ERU5DKGNtZF9lbmMsICJjcmVhdGVkXG4iKTsK PiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19w aW5ncG9uZy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3Bpbmdwb25n LmMKPiBpbmRleCA5MzA4ZjVjLi4wYmZiNTExIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9od19waW5ncG9uZy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2h3X3Bpbmdwb25nLmMKPiBAQCAtMzEsNyArMzEsNiBAQAo+ICAj ZGVmaW5lIFBQX1dSX1BUUl9JUlEgICAgICAgICAgICAgICAgICAgMHgwMjQKPiAgI2RlZmluZSBQ UF9PVVRfTElORV9DT1VOVCAgICAgICAgICAgICAgIDB4MDI4Cj4gICNkZWZpbmUgUFBfTElORV9D T1VOVCAgICAgICAgICAgICAgICAgICAweDAyQwo+IC0jZGVmaW5lIFBQX0FVVE9SRUZSRVNIX0NP TkZJRyAgICAgICAgICAgMHgwMzAKPiAgCj4gICNkZWZpbmUgUFBfRkJDX01PREUgICAgICAgICAg ICAgICAgICAgICAweDAzNAo+ICAjZGVmaW5lIFBQX0ZCQ19CVURHRVRfQ1RMICAgICAgICAgICAg ICAgMHgwMzgKPiBAQCAtOTMsNDQgKzkyLDYgQEAgc3RhdGljIGludCBkcHVfaHdfcHBfc2V0dXBf dGVfY29uZmlnKHN0cnVjdCBkcHVfaHdfcGluZ3BvbmcgKnBwLAo+ICAJcmV0dXJuIDA7Cj4gIH0K PiAgCj4gLXN0YXRpYyBpbnQgZHB1X2h3X3BwX3NldHVwX2F1dG9yZWZyZXNoX2NvbmZpZyhzdHJ1 Y3QgZHB1X2h3X3Bpbmdwb25nICpwcCwKPiAtCQlzdHJ1Y3QgZHB1X2h3X2F1dG9yZWZyZXNoICpj ZmcpCj4gLXsKPiAtCXN0cnVjdCBkcHVfaHdfYmxrX3JlZ19tYXAgKmM7Cj4gLQl1MzIgcmVmcmVz aF9jZmc7Cj4gLQo+IC0JaWYgKCFwcCB8fCAhY2ZnKQo+IC0JCXJldHVybiAtRUlOVkFMOwo+IC0J YyA9ICZwcC0+aHc7Cj4gLQo+IC0JaWYgKGNmZy0+ZW5hYmxlKQo+IC0JCXJlZnJlc2hfY2ZnID0g QklUKDMxKSB8IGNmZy0+ZnJhbWVfY291bnQ7Cj4gLQllbHNlCj4gLQkJcmVmcmVzaF9jZmcgPSAw Owo+IC0KPiAtCURQVV9SRUdfV1JJVEUoYywgUFBfQVVUT1JFRlJFU0hfQ09ORklHLCByZWZyZXNo X2NmZyk7Cj4gLQlEUFVfRVZUMzIocHAtPmlkeCAtIFBJTkdQT05HXzAsIHJlZnJlc2hfY2ZnKTsK PiAtCj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0KPiAtc3RhdGljIGludCBkcHVfaHdfcHBfZ2V0X2F1 dG9yZWZyZXNoX2NvbmZpZyhzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICpwcCwKPiAtCQlzdHJ1Y3Qg ZHB1X2h3X2F1dG9yZWZyZXNoICpjZmcpCj4gLXsKPiAtCXN0cnVjdCBkcHVfaHdfYmxrX3JlZ19t YXAgKmM7Cj4gLQl1MzIgdmFsOwo+IC0KPiAtCWlmICghcHAgfHwgIWNmZykKPiAtCQlyZXR1cm4g LUVJTlZBTDsKPiAtCj4gLQljID0gJnBwLT5odzsKPiAtCXZhbCA9IERQVV9SRUdfUkVBRChjLCBQ UF9BVVRPUkVGUkVTSF9DT05GSUcpOwo+IC0JY2ZnLT5lbmFibGUgPSAodmFsICYgQklUKDMxKSkg Pj4gMzE7Cj4gLQljZmctPmZyYW1lX2NvdW50ID0gdmFsICYgMHhmZmZmOwo+IC0KPiAtCXJldHVy biAwOwo+IC19Cj4gLQo+ICBzdGF0aWMgaW50IGRwdV9od19wcF9wb2xsX3RpbWVvdXRfd3JfcHRy KHN0cnVjdCBkcHVfaHdfcGluZ3BvbmcgKnBwLAo+ICAJCXUzMiB0aW1lb3V0X3VzKQo+ICB7Cj4g QEAgLTI5Myw4ICsyNTQsNiBAQCBzdGF0aWMgdm9pZCBfc2V0dXBfcGluZ3Bvbmdfb3BzKHN0cnVj dCBkcHVfaHdfcGluZ3Bvbmdfb3BzICpvcHMsCj4gIAlvcHMtPmVuYWJsZV90ZWFyY2hlY2sgPSBk cHVfaHdfcHBfZW5hYmxlX3RlOwo+ICAJb3BzLT5jb25uZWN0X2V4dGVybmFsX3RlID0gZHB1X2h3 X3BwX2Nvbm5lY3RfZXh0ZXJuYWxfdGU7Cj4gIAlvcHMtPmdldF92c3luY19pbmZvID0gZHB1X2h3 X3BwX2dldF92c3luY19pbmZvOwo+IC0Jb3BzLT5zZXR1cF9hdXRvcmVmcmVzaCA9IGRwdV9od19w cF9zZXR1cF9hdXRvcmVmcmVzaF9jb25maWc7Cj4gLQlvcHMtPmdldF9hdXRvcmVmcmVzaCA9IGRw dV9od19wcF9nZXRfYXV0b3JlZnJlc2hfY29uZmlnOwo+ICAJb3BzLT5wb2xsX3RpbWVvdXRfd3Jf cHRyID0gZHB1X2h3X3BwX3BvbGxfdGltZW91dF93cl9wdHI7Cj4gIAlvcHMtPmdldF9saW5lX2Nv dW50ID0gZHB1X2h3X3BwX2dldF9saW5lX2NvdW50Owo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3Bpbmdwb25nLmggYi9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfcGluZ3BvbmcuaAo+IGluZGV4IDkzZDAzY2NlLi43ZGJm Y2FlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19w aW5ncG9uZy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3Bp bmdwb25nLmgKPiBAQCAtMzYsMTEgKzM2LDYgQEAgc3RydWN0IGRwdV9od190ZWFyX2NoZWNrIHsK PiAgCXU4IGh3X3ZzeW5jX21vZGU7Cj4gIH07Cj4gIAo+IC1zdHJ1Y3QgZHB1X2h3X2F1dG9yZWZy ZXNoIHsKPiAtCWJvb2wgIGVuYWJsZTsKPiAtCXUzMiBmcmFtZV9jb3VudDsKPiAtfTsKPiAtCj4g IHN0cnVjdCBkcHVfaHdfcHBfdnN5bmNfaW5mbyB7Cj4gIAl1MzIgcmRfcHRyX2luaXRfdmFsOwkv KiB2YWx1ZSBvZiByZCBwb2ludGVyIGF0IHZzeW5jIGVkZ2UgKi8KPiAgCXUzMiByZF9wdHJfZnJh bWVfY291bnQ7CS8qIG51bSBmcmFtZXMgc2VudCBzaW5jZSBlbmFibGluZyBpbnRlcmZhY2UgKi8K PiBAQCAtNTUsNyArNTAsNiBAQCBzdHJ1Y3QgZHB1X2h3X3BwX3ZzeW5jX2luZm8gewo+ICAgKiAg QHNldHVwX3RlYXJjaGVjayA6IHByb2dyYW0gdGVhciBjaGVjayB2YWx1ZXMKPiAgICogIEBlbmFi bGVfdGVhcmNoZWNrIDogZW5hYmxlcyB0ZWFyIGNoZWNrCj4gICAqICBAZ2V0X3ZzeW5jX2luZm8g OiByZXRyaWVzIHRpbWluZyBpbmZvIG9mIHRoZSBwYW5lbAo+IC0gKiAgQHNldHVwX2F1dG9yZWZy ZXNoIDogcHJvZ3JhbSBhdXRvIHJlZnJlc2gKPiAgICogIEBzZXR1cF9kaXRoZXIgOiBmdW5jdGlv biB0byBwcm9ncmFtIHRoZSBkaXRoZXIgaHcgYmxvY2sKPiAgICogIEBnZXRfbGluZV9jb3VudDog b2J0YWluIGN1cnJlbnQgdmVydGljYWwgbGluZSBjb3VudGVyCj4gICAqLwo+IEBAIC04OCwxOCAr ODIsNiBAQCBzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nX29wcyB7Cj4gIAkJCXN0cnVjdCBkcHVfaHdf cHBfdnN5bmNfaW5mbyAgKmluZm8pOwo+ICAKPiAgCS8qKgo+IC0JICogY29uZmlndXJlIGFuZCBl bmFibGUgdGhlIGF1dG9yZWZyZXNoIGNvbmZpZwo+IC0JICovCj4gLQlpbnQgKCpzZXR1cF9hdXRv cmVmcmVzaCkoc3RydWN0IGRwdV9od19waW5ncG9uZyAqcHAsCj4gLQkJCXN0cnVjdCBkcHVfaHdf YXV0b3JlZnJlc2ggKmNmZyk7Cj4gLQo+IC0JLyoqCj4gLQkgKiByZXRyaWV2ZSBhdXRvcmVmcmVz aCBjb25maWcgZnJvbSBoYXJkd2FyZQo+IC0JICovCj4gLQlpbnQgKCpnZXRfYXV0b3JlZnJlc2gp KHN0cnVjdCBkcHVfaHdfcGluZ3BvbmcgKnBwLAo+IC0JCQlzdHJ1Y3QgZHB1X2h3X2F1dG9yZWZy ZXNoICpjZmcpOwo+IC0KPiAtCS8qKgo+ICAJICogcG9sbCB1bnRpbCB3cml0ZSBwb2ludGVyIHRy YW5zbWlzc2lvbiBzdGFydHMKPiAgCSAqIEBSZXR1cm46IDAgb24gc3VjY2VzcywgLUVUSU1FRE9V VCBvbiB0aW1lb3V0Cj4gIAkgKi8KPiAtLSAKPiBUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50 ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2YgdGhlIENvZGUgQXVyb3JhIEZvcnVtLAo+IGEgTGludXgg Rm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2plY3QKPiAKCi0tIApTZWFuIFBhdWwsIFNvZnR3 YXJlIEVuZ2luZWVyLCBHb29nbGUgLyBDaHJvbWl1bSBPUwpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVu b0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9mcmVlZHJlbm8K