From: Jeykumar Sankaran Subject: [DPU PATCH v4 3/6] drm/msm: remove panel autorefresh support for SDM845 Date: Fri, 1 Jun 2018 10:45:50 -0700 Message-ID: <1527875153-27446-4-git-send-email-jsanka@codeaurora.org> References: <1527875153-27446-1-git-send-email-jsanka@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1527875153-27446-1-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: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: hoegsberg-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, Jeykumar Sankaran , seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, Rajesh Yadav List-Id: dri-devel@lists.freedesktop.org UmVtb3ZlIGF1dG9yZWZyZXNoIHN1cHBvcnQgZm9yIHNtYXJ0IHBhbmVscyBpbiBTRE04NDUgZm9y IG5vdy4KSXQgbmVlZHMgbW9yZSBkaXNjdXNzaW9uIHRvIGZpZ3VyZSBvdXQgdGhlIHVzZXIgc3Bh Y2UKY29tbXVuaWNhdGlvbiB0byBzZXQgcHJlZmVyZW5jZSBmb3IgdGhlIGZlYXR1cmUuCgpjaGFu Z2VzIGluIHYyOgoJLSBub25lCmNoYW5nZXMgaW4gdjM6CgktIG5vbmUKY2hhbmdlcyBpbiB2NDoK CS0gbm9uZQoKUmV2aWV3ZWQtYnk6IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgpT aWduZWQtb2ZmLWJ5OiBKZXlrdW1hciBTYW5rYXJhbiA8anNhbmthQGNvZGVhdXJvcmEub3JnPgpT aWduZWQtb2ZmLWJ5OiBTZWFuIFBhdWwgPHNlYW5wYXVsQGNocm9taXVtLm9yZz4KU2lnbmVkLW9m Zi1ieTogUmFqZXNoIFlhZGF2IDxyeWFkYXZAY29kZWF1cm9yYS5vcmc+Ci0tLQogZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Nvbm5lY3Rvci5jICAgICAgfCAgIDcgLQogZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuYyAgICAgICAgfCAgMzcgKy0tCiBk cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzLmggICB8ICAyMCAt LQogLi4uL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX2NtZC5jICAgfCAy OTggKy0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfaHdfcGluZ3BvbmcuYyAgICB8ICA0MSAtLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9od19waW5ncG9uZy5oICAgIHwgIDE4IC0tCiA2IGZpbGVzIGNoYW5nZWQsIDExIGlu c2VydGlvbnMoKyksIDQxMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29ubmVjdG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfY29ubmVjdG9yLmMKaW5kZXggYTg5MzkyZS4uOTY5OTE5ZiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Nvbm5lY3Rvci5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb25uZWN0b3IuYwpAQCAtMjQsOSArMjQs NiBAQAogCiAjZGVmaW5lIEJMX05PREVfTkFNRV9TSVpFIDMyCiAKLS8qIEF1dG9yZWZyZXNoIHdp bGwgb2NjdXIgYWZ0ZXIgRlJBTUVfQ05UIGZyYW1lcy4gTGFyZ2UgdmFsdWVzIGFyZSB1bmxpa2Vs eSAqLwotI2RlZmluZSBBVVRPUkVGUkVTSF9NQVhfRlJBTUVfQ05UIDYKLQogI2RlZmluZSBEUFVf REVCVUdfQ09OTihjLCBmbXQsIC4uLikgRFBVX0RFQlVHKCJjb25uJWQgIiBmbXQsXAogCQkoYykg PyAoYyktPmJhc2UuYmFzZS5pZCA6IC0xLCAjI19fVkFfQVJHU19fKQogCkBAIC0xMTI3LDEwICsx MTI0LDYgQEAgc3RydWN0IGRybV9jb25uZWN0b3IgKmRwdV9jb25uZWN0b3JfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAogCQlDT05ORUNUT1JfUFJPUF9BRF9CTF9TQ0FMRSk7CiAjZW5kaWYK IAotCW1zbV9wcm9wZXJ0eV9pbnN0YWxsX3JhbmdlKCZjX2Nvbm4tPnByb3BlcnR5X2luZm8sICJh dXRvcmVmcmVzaCIsCi0JCQkweDAsIDAsIEFVVE9SRUZSRVNIX01BWF9GUkFNRV9DTlQsIDAsCi0J CQlDT05ORUNUT1JfUFJPUF9BVVRPUkVGUkVTSCk7Ci0KIAkvKiBlbnVtL2JpdG1hc2sgcHJvcGVy dGllcyAqLwogCW1zbV9wcm9wZXJ0eV9pbnN0YWxsX2VudW0oJmNfY29ubi0+cHJvcGVydHlfaW5m bywgInRvcG9sb2d5X25hbWUiLAogCQkJRFJNX01PREVfUFJPUF9JTU1VVEFCTEUsIDAsIGVfdG9w b2xvZ3lfbmFtZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9lbmNvZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5j CmluZGV4IGQwNDA5NWIuLjM4NTQ0MTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2VuY29kZXIuYwpAQCAtODEzLDcgKzgxMyw2IEBAIHN0YXRpYyB2b2lkIF9kcHVfZW5j b2Rlcl9yZXNvdXJjZV9jb250cm9sX2hlbHBlcihzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMs CiBzdGF0aWMgaW50IGRwdV9lbmNvZGVyX3Jlc291cmNlX2NvbnRyb2woc3RydWN0IGRybV9lbmNv ZGVyICpkcm1fZW5jLAogCQl1MzIgc3dfZXZlbnQpCiB7Ci0JYm9vbCBhdXRvcmVmcmVzaF9lbmFi bGVkID0gZmFsc2U7CiAJdW5zaWduZWQgaW50IGxwLCBpZGxlX3RpbWVvdXQ7CiAJc3RydWN0IGRw dV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmM7CiAJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdjsK QEAgLTkyMCwxMyArOTE5LDYgQEAgc3RhdGljIGludCBkcHVfZW5jb2Rlcl9yZXNvdXJjZV9jb250 cm9sKHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYywKIAkJCXJldHVybiAwOwogCQl9CiAKLQkJ Lyogc2NoZWR1bGUgZGVsYXllZCBvZmYgd29yayBpZiBhdXRvcmVmcmVzaCBpcyBkaXNhYmxlZCAq LwotCQlpZiAoZHB1X2VuYy0+Y3VyX21hc3RlciAmJgotCQkJZHB1X2VuYy0+Y3VyX21hc3Rlci0+ b3BzLmlzX2F1dG9yZWZyZXNoX2VuYWJsZWQpCi0JCQlhdXRvcmVmcmVzaF9lbmFibGVkID0KLQkJ CQlkcHVfZW5jLT5jdXJfbWFzdGVyLT5vcHMuaXNfYXV0b3JlZnJlc2hfZW5hYmxlZCgKLQkJCQkJ CQlkcHVfZW5jLT5jdXJfbWFzdGVyKTsKLQogCQkvKiBzZXQgaWRsZSB0aW1lb3V0IGJhc2VkIG9u IG1hc3RlciBjb25uZWN0b3IncyBscCB2YWx1ZSAqLwogCQlpZiAoZHB1X2VuYy0+Y3VyX21hc3Rl cikKIAkJCWxwID0gZHB1X2Nvbm5lY3Rvcl9nZXRfbHAoCkBAIC05MzksMTMgKzkzMSwxMiBAQCBz dGF0aWMgaW50IGRwdV9lbmNvZGVyX3Jlc291cmNlX2NvbnRyb2woc3RydWN0IGRybV9lbmNvZGVy ICpkcm1fZW5jLAogCQllbHNlCiAJCQlpZGxlX3RpbWVvdXQgPSBkcHVfZW5jLT5pZGxlX3RpbWVv dXQ7CiAKLQkJaWYgKCFhdXRvcmVmcmVzaF9lbmFibGVkKQotCQkJa3RocmVhZF9xdWV1ZV9kZWxh eWVkX3dvcmsoCi0JCQkJJmRpc3BfdGhyZWFkLT53b3JrZXIsCi0JCQkJJmRwdV9lbmMtPmRlbGF5 ZWRfb2ZmX3dvcmssCi0JCQkJbXNlY3NfdG9famlmZmllcyhpZGxlX3RpbWVvdXQpKTsKKwkJa3Ro cmVhZF9xdWV1ZV9kZWxheWVkX3dvcmsoCisJCQkmZGlzcF90aHJlYWQtPndvcmtlciwKKwkJCSZk cHVfZW5jLT5kZWxheWVkX29mZl93b3JrLAorCQkJbXNlY3NfdG9famlmZmllcyhpZGxlX3RpbWVv dXQpKTsKKwogCQlEUFVfRVZUMzIoRFJNSUQoZHJtX2VuYyksIHN3X2V2ZW50LCBkcHVfZW5jLT5y Y19zdGF0ZSwKLQkJCQlhdXRvcmVmcmVzaF9lbmFibGVkLAogCQkJCWlkbGVfdGltZW91dCwgRFBV X0VWVExPR19GVU5DX0NBU0UyKTsKIAkJRFBVX0RFQlVHX0VOQyhkcHVfZW5jLCAic3dfZXZlbnQ6 JWQsIHdvcmsgc2NoZWR1bGVkXG4iLAogCQkJCXN3X2V2ZW50KTsKQEAgLTE5ODgsNyArMTk3OSw2 IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3ZzeW5jX2V2ZW50X2hhbmRsZXIoc3RydWN0IHRp bWVyX2xpc3QgKnQpCiAJc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jID0gJmRwdV9lbmMtPmJh c2U7CiAJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdjsKIAlzdHJ1Y3QgbXNtX2RybV90aHJl YWQgKmV2ZW50X3RocmVhZDsKLQlib29sIGF1dG9yZWZyZXNoX2VuYWJsZWQgPSBmYWxzZTsKIAog CWlmICghZHJtX2VuYy0+ZGV2IHx8ICFkcm1fZW5jLT5kZXYtPmRldl9wcml2YXRlIHx8CiAJCQkh ZHJtX2VuYy0+Y3J0YykgewpAQCAtMjAwOSwyMiArMTk5OSw3IEBAIHN0YXRpYyB2b2lkIGRwdV9l bmNvZGVyX3ZzeW5jX2V2ZW50X2hhbmRsZXIoc3RydWN0IHRpbWVyX2xpc3QgKnQpCiAJCXJldHVy bjsKIAl9CiAKLQlpZiAoZHB1X2VuYy0+Y3VyX21hc3RlciAmJgotCQlkcHVfZW5jLT5jdXJfbWFz dGVyLT5vcHMuaXNfYXV0b3JlZnJlc2hfZW5hYmxlZCkKLQkJYXV0b3JlZnJlc2hfZW5hYmxlZCA9 Ci0JCQlkcHVfZW5jLT5jdXJfbWFzdGVyLT5vcHMuaXNfYXV0b3JlZnJlc2hfZW5hYmxlZCgKLQkJ CQkJCWRwdV9lbmMtPmN1cl9tYXN0ZXIpOwotCi0JLyoKLQkgKiBRdWV1ZSB3b3JrIHRvIHVwZGF0 ZSB0aGUgdnN5bmMgZXZlbnQgdGltZXIKLQkgKiBpZiBhdXRvcmVmcmVzaCBpcyBlbmFibGVkLgot CSAqLwotCURQVV9FVlQzMl9WRVJCT1NFKGF1dG9yZWZyZXNoX2VuYWJsZWQpOwotCWlmIChhdXRv cmVmcmVzaF9lbmFibGVkKQotCQlrdGhyZWFkX3F1ZXVlX3dvcmsoJmV2ZW50X3RocmVhZC0+d29y a2VyLAotCQkJCSZkcHVfZW5jLT52c3luY19ldmVudF93b3JrKTsKLQllbHNlCi0JCWRlbF90aW1l cigmZHB1X2VuYy0+dnN5bmNfZXZlbnRfdGltZXIpOworCWRlbF90aW1lcigmZHB1X2VuYy0+dnN5 bmNfZXZlbnRfdGltZXIpOwogfQogCiBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl92c3luY19ldmVu dF93b3JrX2hhbmRsZXIoc3RydWN0IGt0aHJlYWRfd29yayAqd29yaykKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXMuaCBiL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXMuaAppbmRleCA5MTFhYzZkLi41 NzZjNDc1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5j b2Rlcl9waHlzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29k ZXJfcGh5cy5oCkBAIC0xMjQsOCArMTI0LDYgQEAgc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnRfb3Bz IHsKICAqIEBwcmVwYXJlX2lkbGVfcGM6CQlwaHlzIGVuY29kZXIgY2FuIHVwZGF0ZSB0aGUgdnN5 bmNfZW5hYmxlIHN0YXR1cwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiBpZGxl IHBvd2VyIGNvbGxhcHNlIHByZXBhcmUKICAqIEByZXN0b3JlOgkJCVJlc3RvcmUgYWxsIHRoZSBl bmNvZGVyIGNvbmZpZ3MuCi0gKiBAaXNfYXV0b3JlZnJlc2hfZW5hYmxlZDoJcHJvdmlkZXMgdGhl IGF1dG9yZWZyZXNoIGN1cnJlbnQKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5h YmxlL2Rpc2FibGUgc3RhdGUuCiAgKiBAZ2V0X2xpbmVfY291bnQ6CQlPYnRhaW4gY3VycmVudCB2 ZXJ0aWNhbCBsaW5lIGNvdW50CiAgKi8KIApAQCAtMTY2LDcgKzE2NCw2IEBAIHN0cnVjdCBkcHVf ZW5jb2Rlcl9waHlzX29wcyB7CiAJdm9pZCAoKmlycV9jb250cm9sKShzdHJ1Y3QgZHB1X2VuY29k ZXJfcGh5cyAqcGh5cywgYm9vbCBlbmFibGUpOwogCXZvaWQgKCpwcmVwYXJlX2lkbGVfcGMpKHN0 cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYyk7CiAJdm9pZCAoKnJlc3RvcmUpKHN0cnVj dCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzKTsKLQlib29sICgqaXNfYXV0b3JlZnJlc2hfZW5hYmxl ZCkoc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXMpOwogCWludCAoKmdldF9saW5lX2NvdW50 KShzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5cyk7CiB9OwogCkBAIC0xNzYsOCArMTczLDYg QEAgc3RydWN0IGRwdV9lbmNvZGVyX3BoeXNfb3BzIHsKICAqIEBJTlRSX0lEWF9QSU5HUE9ORzog UGluZ3BvbmcgZG9uZSB1bnRlcnJ1cHQgZm9yIGNtZCBtb2RlIHBhbmVsCiAgKiBASU5UUl9JRFhf VU5ERVJSVU46IFVuZGVycnVuIHVudGVycnVwdCBmb3IgdmlkZW8gYW5kIGNtZCBtb2RlIHBhbmVs CiAgKiBASU5UUl9JRFhfUkRQVFI6ICAgIFJlYWRwb2ludGVyIGRvbmUgdW50ZXJydXB0IGZvciBj bWQgbW9kZSBwYW5lbAotICogQElOVFJfSURYX0FVVE9SRUZSRVNIX0RPTkU6ICBBdXRvcmVmcmVz aCBkb25lIGZvciBjbWQgbW9kZSBwYW5lbCBtZWFuaW5nCi0gKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGF1dG9yZWZyZXNoIGhhcyB0cmlnZ2VyZWQgYSBkb3VibGUgYnVmZmVyIGZsaXAK ICAqLwogZW51bSBkcHVfaW50cl9pZHggewogCUlOVFJfSURYX1ZTWU5DLApAQCAtMTg1LDcgKzE4 MCw2IEBAIGVudW0gZHB1X2ludHJfaWR4IHsKIAlJTlRSX0lEWF9VTkRFUlJVTiwKIAlJTlRSX0lE WF9DVExfU1RBUlQsCiAJSU5UUl9JRFhfUkRQVFIsCi0JSU5UUl9JRFhfQVVUT1JFRlJFU0hfRE9O RSwKIAlJTlRSX0lEWF9NQVgsCiB9OwogCkBAIC0yODcsMTggKzI4MSw2IEBAIHN0cnVjdCBkcHVf ZW5jb2Rlcl9waHlzX3ZpZCB7CiB9OwogCiAvKioKLSAqIHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlz X2NtZF9hdXRvcmVmcmVzaCAtIGF1dG9yZWZyZXNoIHN0YXRlIHRyYWNraW5nCi0gKiBAY2ZnOiBj dXJyZW50IGFjdGl2ZSBhdXRvcmVmcmVzaCBjb25maWd1cmF0aW9uCi0gKiBAa2lja29mZl9jbnQ6 IGF0b21pYyBjb3VudCB0cmFja2luZyBhdXRvcmVmcmVzaCBkb25lIGlycSBraWNrb2ZmcyBwZW5k aW5nCi0gKiBAa2lja29mZl93cToJd2FpdCBxdWV1ZSBmb3Igd2FpdGluZyBvbiBhdXRvcmVmcmVz aCBkb25lIGlycQotICovCi1zdHJ1Y3QgZHB1X2VuY29kZXJfcGh5c19jbWRfYXV0b3JlZnJlc2gg ewotCXN0cnVjdCBkcHVfaHdfYXV0b3JlZnJlc2ggY2ZnOwotCWF0b21pY190IGtpY2tvZmZfY250 OwotCXdhaXRfcXVldWVfaGVhZF90IGtpY2tvZmZfd3E7Ci19OwotCi0vKioKICAqIHN0cnVjdCBk cHVfZW5jb2Rlcl9waHlzX2NtZCAtIHN1Yi1jbGFzcyBvZiBkcHVfZW5jb2Rlcl9waHlzIHRvIGhh bmRsZSBjb21tYW5kCiAgKgltb2RlIHNwZWNpZmljIG9wZXJhdGlvbnMKICAqIEBiYXNlOglCYXNl Y2xhc3MgcGh5c2ljYWwgZW5jb2RlciBzdHJ1Y3R1cmUKQEAgLTMwNyw3ICsyODksNiBAQCBzdHJ1 Y3QgZHB1X2VuY29kZXJfcGh5c19jbWRfYXV0b3JlZnJlc2ggewogICogQHNlcmlhbGl6ZV93YWl0 NHBwOglzZXJpYWxpemUgd2FpdDRwcCBmZWF0dXJlIHdhaXRzIGZvciBwcF9kb25lIGludGVycnVw dAogICoJCQlhZnRlciBjdGxfc3RhcnQgaW5zdGVhZCBvZiBiZWZvcmUgbmV4dCBmcmFtZSBraWNr b2ZmCiAgKiBAcHBfdGltZW91dF9yZXBvcnRfY250OiBudW1iZXIgb2YgcGluZ3BvbmcgZG9uZSBp cnEgdGltZW91dCBlcnJvcnMKLSAqIEBhdXRvcmVmcmVzaDogYXV0b3JlZnJlc2ggZmVhdHVyZSBz dGF0ZQogICogQHBlbmRpbmdfdmJsYW5rX2NudDogQXRvbWljIGNvdW50ZXIgdHJhY2tpbmcgcGVu ZGluZyB3YWl0IGZvciBWQkxBTksKICAqIEBwZW5kaW5nX3ZibGFua193cTogV2FpdCBxdWV1ZSBm b3IgYmxvY2tpbmcgdW50aWwgVkJMQU5LIHJlY2VpdmVkCiAgKi8KQEAgLTMxNiw3ICsyOTcsNiBA QCBzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5c19jbWQgewogCWludCBzdHJlYW1fc2VsOwogCWJvb2wg c2VyaWFsaXplX3dhaXQ0cHA7CiAJaW50IHBwX3RpbWVvdXRfcmVwb3J0X2NudDsKLQlzdHJ1Y3Qg ZHB1X2VuY29kZXJfcGh5c19jbWRfYXV0b3JlZnJlc2ggYXV0b3JlZnJlc2g7CiAJYXRvbWljX3Qg cGVuZGluZ192YmxhbmtfY250OwogCXdhaXRfcXVldWVfaGVhZF90IHBlbmRpbmdfdmJsYW5rX3dx OwogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNv ZGVyX3BoeXNfY21kLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rl cl9waHlzX2NtZC5jCmluZGV4IDM0MzY3ODguLjA3MjkzOWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfY21kLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c19jbWQuYwpAQCAtNDcsOSAr NDcsNyBAQAogc3RhdGljIGlubGluZSBpbnQgX2RwdV9lbmNvZGVyX3BoeXNfY21kX2dldF9pZGxl X3RpbWVvdXQoCiAJCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzX2NtZCAqY21kX2VuYykKIHsKLQly ZXR1cm4gY21kX2VuYy0+YXV0b3JlZnJlc2guY2ZnLmZyYW1lX2NvdW50ID8KLQkJCWNtZF9lbmMt PmF1dG9yZWZyZXNoLmNmZy5mcmFtZV9jb3VudCAqCi0JCQlLSUNLT0ZGX1RJTUVPVVRfTVMgOiBL SUNLT0ZGX1RJTUVPVVRfTVM7CisJcmV0dXJuIEtJQ0tPRkZfVElNRU9VVF9NUzsKIH0KIAogc3Rh dGljIGlubGluZSBib29sIGRwdV9lbmNvZGVyX3BoeXNfY21kX2lzX21hc3RlcigKQEAgLTY4LDUy ICs2Niw2IEBAIHN0YXRpYyBib29sIGRwdV9lbmNvZGVyX3BoeXNfY21kX21vZGVfZml4dXAoCiAJ cmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB1aW50NjRfdCBfZHB1X2VuY29kZXJfcGh5c19jbWRf Z2V0X2F1dG9yZWZyZXNoX3Byb3BlcnR5KAotCQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5 c19lbmMpCi17Ci0Jc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm4gPSBwaHlzX2VuYy0+Y29ubmVj dG9yOwotCi0JaWYgKCFjb25uIHx8ICFjb25uLT5zdGF0ZSkKLQkJcmV0dXJuIDA7Ci0KLQlyZXR1 cm4gZHB1X2Nvbm5lY3Rvcl9nZXRfcHJvcGVydHkoY29ubi0+c3RhdGUsCi0JCQkJQ09OTkVDVE9S X1BST1BfQVVUT1JFRlJFU0gpOwotfQotCi1zdGF0aWMgdm9pZCBfZHB1X2VuY29kZXJfcGh5c19j bWRfY29uZmlnX2F1dG9yZWZyZXNoKAotCQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19l bmMsCi0JCXUzMiBuZXdfZnJhbWVfY291bnQpCi17Ci0Jc3RydWN0IGRwdV9lbmNvZGVyX3BoeXNf Y21kICpjbWRfZW5jID0KLQkJCXRvX2RwdV9lbmNvZGVyX3BoeXNfY21kKHBoeXNfZW5jKTsKLQlz dHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICpod19wcCA9IHBoeXNfZW5jLT5od19wcDsKLQlzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubiA9IHBoeXNfZW5jLT5jb25uZWN0b3I7Ci0Jc3RydWN0IGRwdV9o d19hdXRvcmVmcmVzaCAqY2ZnX2N1ciwgY2ZnX254dDsKLQotCWlmICghY29ubiB8fCAhY29ubi0+ c3RhdGUgfHwgIWh3X3BwKQotCQlyZXR1cm47Ci0KLQljZmdfY3VyID0gJmNtZF9lbmMtPmF1dG9y ZWZyZXNoLmNmZzsKLQotCS8qIGF1dG9yZWZyZXNoIHByb3BlcnR5IHZhbHVlIHNob3VsZCBiZSB2 YWxpZGF0ZWQgYWxyZWFkeSAqLwotCW1lbXNldCgmY2ZnX254dCwgMCwgc2l6ZW9mKGNmZ19ueHQp KTsKLQljZmdfbnh0LmZyYW1lX2NvdW50ID0gbmV3X2ZyYW1lX2NvdW50OwotCWNmZ19ueHQuZW5h YmxlID0gKGNmZ19ueHQuZnJhbWVfY291bnQgIT0gMCk7Ci0KLQlEUFVfREVCVUdfQ01ERU5DKGNt ZF9lbmMsICJhdXRvcmVmcmVzaCBzdGF0ZSAlZC0+JWQgZnJhbWVjb3VudCAlZFxuIiwKLQkJCWNm Z19jdXItPmVuYWJsZSwgY2ZnX254dC5lbmFibGUsIGNmZ19ueHQuZnJhbWVfY291bnQpOwotCURQ VV9FVlQzMihEUk1JRChwaHlzX2VuYy0+cGFyZW50KSwgaHdfcHAtPmlkeCwgY2ZnX2N1ci0+ZW5h YmxlLAotCQkJY2ZnX254dC5lbmFibGUsIGNmZ19ueHQuZnJhbWVfY291bnQpOwotCi0JLyogb25s eSBwcm9jZWVkIG9uIHN0YXRlIGNoYW5nZXMgKi8KLQlpZiAoY2ZnX254dC5lbmFibGUgPT0gY2Zn X2N1ci0+ZW5hYmxlKQotCQlyZXR1cm47Ci0KLQltZW1jcHkoY2ZnX2N1ciwgJmNmZ19ueHQsIHNp emVvZigqY2ZnX2N1cikpOwotCWlmIChod19wcC0+b3BzLnNldHVwX2F1dG9yZWZyZXNoKQotCQlo d19wcC0+b3BzLnNldHVwX2F1dG9yZWZyZXNoKGh3X3BwLCBjZmdfY3VyKTsKLX0KLQogc3RhdGlj IHZvaWQgX2RwdV9lbmNvZGVyX3BoeXNfY21kX3VwZGF0ZV9pbnRmX2NmZygKIAkJc3RydWN0IGRw dV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQogewpAQCAtMTY0LDI5ICsxMTYsNiBAQCBzdGF0aWMg dm9pZCBkcHVfZW5jb2Rlcl9waHlzX2NtZF9wcF90eF9kb25lX2lycSh2b2lkICphcmcsIGludCBp cnFfaWR4KQogCURQVV9BVFJBQ0VfRU5EKCJwcF9kb25lX2lycSIpOwogfQogCi1zdGF0aWMgdm9p ZCBkcHVfZW5jb2Rlcl9waHlzX2NtZF9hdXRvcmVmcmVzaF9kb25lX2lycSh2b2lkICphcmcsIGlu dCBpcnFfaWR4KQotewotCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYyA9IGFyZzsK LQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5c19jbWQgKmNtZF9lbmMgPQotCQkJdG9fZHB1X2VuY29k ZXJfcGh5c19jbWQocGh5c19lbmMpOwotCXVuc2lnbmVkIGxvbmcgbG9ja19mbGFnczsKLQlpbnQg bmV3X2NudDsKLQotCWlmICghY21kX2VuYykKLQkJcmV0dXJuOwotCi0JcGh5c19lbmMgPSAmY21k X2VuYy0+YmFzZTsKLQlzcGluX2xvY2tfaXJxc2F2ZShwaHlzX2VuYy0+ZW5jX3NwaW5sb2NrLCBs b2NrX2ZsYWdzKTsKLQluZXdfY250ID0gYXRvbWljX2FkZF91bmxlc3MoJmNtZF9lbmMtPmF1dG9y ZWZyZXNoLmtpY2tvZmZfY250LCAtMSwgMCk7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShwaHlz X2VuYy0+ZW5jX3NwaW5sb2NrLCBsb2NrX2ZsYWdzKTsKLQotCURQVV9FVlQzMl9JUlEoRFJNSUQo cGh5c19lbmMtPnBhcmVudCksCi0JCQlwaHlzX2VuYy0+aHdfcHAtPmlkeCAtIFBJTkdQT05HXzAs IG5ld19jbnQpOwotCi0JLyogU2lnbmFsIGFueSB3YWl0aW5nIGF0b21pYyBjb21taXQgdGhyZWFk ICovCi0Jd2FrZV91cF9hbGwoJmNtZF9lbmMtPmF1dG9yZWZyZXNoLmtpY2tvZmZfd3EpOwotfQot CiBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX2NtZF9wcF9yZF9wdHJfaXJxKHZvaWQgKmFy ZywgaW50IGlycV9pZHgpCiB7CiAJc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jID0g YXJnOwpAQCAtMjU3LDEwICsxODYsNiBAQCBzdGF0aWMgdm9pZCBfZHB1X2VuY29kZXJfcGh5c19j bWRfc2V0dXBfaXJxX2h3X2lkeCgKIAlpcnEgPSAmcGh5c19lbmMtPmlycVtJTlRSX0lEWF9VTkRF UlJVTl07CiAJaXJxLT5od19pZHggPSBwaHlzX2VuYy0+aW50Zl9pZHg7CiAJaXJxLT5pcnFfaWR4 ID0gLUVJTlZBTDsKLQotCWlycSA9ICZwaHlzX2VuYy0+aXJxW0lOVFJfSURYX0FVVE9SRUZSRVNI X0RPTkVdOwotCWlycS0+aHdfaWR4ID0gcGh5c19lbmMtPmh3X3BwLT5pZHg7Ci0JaXJxLT5pcnFf aWR4ID0gLUVJTlZBTDsKIH0KIAogc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c19jbWRfbW9k ZV9zZXQoCkBAIC0zNTIsNzMgKzI3Nyw2IEBAIHN0YXRpYyBpbnQgX2RwdV9lbmNvZGVyX3BoeXNf Y21kX2hhbmRsZV9wcGRvbmVfdGltZW91dCgKIAlyZXR1cm4gLUVUSU1FRE9VVDsKIH0KIAotc3Rh dGljIGludCBfZHB1X2VuY29kZXJfcGh5c19jbWRfcG9sbF93cml0ZV9wb2ludGVyX3N0YXJ0ZWQo Ci0JCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYykKLXsKLQlzdHJ1Y3QgZHB1X2Vu Y29kZXJfcGh5c19jbWQgKmNtZF9lbmMgPQotCQkJdG9fZHB1X2VuY29kZXJfcGh5c19jbWQocGh5 c19lbmMpOwotCXN0cnVjdCBkcHVfaHdfcGluZ3BvbmcgKmh3X3BwID0gcGh5c19lbmMtPmh3X3Bw OwotCXN0cnVjdCBkcHVfaHdfcHBfdnN5bmNfaW5mbyBpbmZvOwotCXUzMiB0aW1lb3V0X3VzID0g RFBVX0VOQ19XUl9QVFJfU1RBUlRfVElNRU9VVF9VUzsKLQlpbnQgcmV0OwotCi0JaWYgKCFod19w cCB8fCAhaHdfcHAtPm9wcy5nZXRfdnN5bmNfaW5mbyB8fAotCQkJIWh3X3BwLT5vcHMucG9sbF90 aW1lb3V0X3dyX3B0cikKLQkJcmV0dXJuIDA7Ci0KLQlyZXQgPSBod19wcC0+b3BzLmdldF92c3lu Y19pbmZvKGh3X3BwLCAmaW5mbyk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCURQVV9E RUJVR19DTURFTkMoY21kX2VuYywKLQkJCSJwcDolZCByZF9wdHIgJWQgd3JfcHRyICVkXG4iLAot CQkJcGh5c19lbmMtPmh3X3BwLT5pZHggLSBQSU5HUE9OR18wLAotCQkJaW5mby5yZF9wdHJfbGlu ZV9jb3VudCwKLQkJCWluZm8ud3JfcHRyX2xpbmVfY291bnQpOwotCURQVV9FVlQzMl9WRVJCT1NF KERSTUlEKHBoeXNfZW5jLT5wYXJlbnQpLAotCQkJcGh5c19lbmMtPmh3X3BwLT5pZHggLSBQSU5H UE9OR18wLAotCQkJaW5mby53cl9wdHJfbGluZV9jb3VudCk7Ci0KLQlyZXQgPSBod19wcC0+b3Bz LnBvbGxfdGltZW91dF93cl9wdHIoaHdfcHAsIHRpbWVvdXRfdXMpOwotCWlmIChyZXQpIHsKLQkJ RFBVX0VWVDMyKERSTUlEKHBoeXNfZW5jLT5wYXJlbnQpLAotCQkJCXBoeXNfZW5jLT5od19wcC0+ aWR4IC0gUElOR1BPTkdfMCwKLQkJCQl0aW1lb3V0X3VzLAotCQkJCXJldCk7Ci0JCURQVV9EQkdf RFVNUCgiYWxsIiwgImRiZ19idXMiLCAidmJpZl9kYmdfYnVzIiwgInBhbmljIik7Ci0JfQotCi0J cmV0dXJuIHJldDsKLX0KLQotc3RhdGljIGJvb2wgX2RwdV9lbmNvZGVyX3BoeXNfY21kX2lzX29u Z29pbmdfcHB0eCgKLQkJc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQotewotCXN0 cnVjdCBkcHVfaHdfcGluZ3BvbmcgKmh3X3BwOwotCXN0cnVjdCBkcHVfaHdfcHBfdnN5bmNfaW5m byBpbmZvOwotCi0JaWYgKCFwaHlzX2VuYykKLQkJcmV0dXJuIGZhbHNlOwotCi0JaHdfcHAgPSBw aHlzX2VuYy0+aHdfcHA7Ci0JaWYgKCFod19wcCB8fCAhaHdfcHAtPm9wcy5nZXRfdnN5bmNfaW5m bykKLQkJcmV0dXJuIGZhbHNlOwotCi0JaHdfcHAtPm9wcy5nZXRfdnN5bmNfaW5mbyhod19wcCwg JmluZm8pOwotCi0JRFBVX0VWVDMyKERSTUlEKHBoeXNfZW5jLT5wYXJlbnQpLAotCQkJcGh5c19l bmMtPmh3X3BwLT5pZHggLSBQSU5HUE9OR18wLAotCQkJYXRvbWljX3JlYWQoJnBoeXNfZW5jLT5w ZW5kaW5nX2tpY2tvZmZfY250KSwKLQkJCWluZm8ud3JfcHRyX2xpbmVfY291bnQsCi0JCQlwaHlz X2VuYy0+Y2FjaGVkX21vZGUudmRpc3BsYXkpOwotCi0JaWYgKGluZm8ud3JfcHRyX2xpbmVfY291 bnQgPiAwICYmIGluZm8ud3JfcHRyX2xpbmVfY291bnQgPAotCQkJcGh5c19lbmMtPmNhY2hlZF9t b2RlLnZkaXNwbGF5KQotCQlyZXR1cm4gdHJ1ZTsKLQotCXJldHVybiBmYWxzZTsKLX0KLQogc3Rh dGljIGludCBfZHB1X2VuY29kZXJfcGh5c19jbWRfd2FpdF9mb3JfaWRsZSgKIAkJc3RydWN0IGRw dV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQogewpAQCAtNDQ2LDQyICszMDQsNiBAQCBzdGF0aWMg aW50IF9kcHVfZW5jb2Rlcl9waHlzX2NtZF93YWl0X2Zvcl9pZGxlKAogCXJldHVybiByZXQ7CiB9 CiAKLXN0YXRpYyBpbnQgX2RwdV9lbmNvZGVyX3BoeXNfY21kX3dhaXRfZm9yX2F1dG9yZWZyZXNo X2RvbmUoCi0JCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYykKLXsKLQlzdHJ1Y3Qg ZHB1X2VuY29kZXJfcGh5c19jbWQgKmNtZF9lbmMgPQotCQkJdG9fZHB1X2VuY29kZXJfcGh5c19j bWQocGh5c19lbmMpOwotCXN0cnVjdCBkcHVfZW5jb2Rlcl93YWl0X2luZm8gd2FpdF9pbmZvOwot CWludCByZXQgPSAwOwotCi0JaWYgKCFwaHlzX2VuYykgewotCQlEUFVfRVJST1IoImludmFsaWQg ZW5jb2RlclxuIik7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCS8qIG9ubHkgbWFzdGVyIGRl YWxzIHdpdGggYXV0b3JlZnJlc2ggKi8KLQlpZiAoIWRwdV9lbmNvZGVyX3BoeXNfY21kX2lzX21h c3RlcihwaHlzX2VuYykpCi0JCXJldHVybiAwOwotCi0Jd2FpdF9pbmZvLndxID0gJmNtZF9lbmMt PmF1dG9yZWZyZXNoLmtpY2tvZmZfd3E7Ci0Jd2FpdF9pbmZvLmF0b21pY19jbnQgPSAmY21kX2Vu Yy0+YXV0b3JlZnJlc2gua2lja29mZl9jbnQ7Ci0Jd2FpdF9pbmZvLnRpbWVvdXRfbXMgPSBfZHB1 X2VuY29kZXJfcGh5c19jbWRfZ2V0X2lkbGVfdGltZW91dChjbWRfZW5jKTsKLQotCS8qIHdhaXQg Zm9yIGF1dG9yZWZyZXNoIGtpY2tvZmYgdG8gc3RhcnQgKi8KLQlyZXQgPSBkcHVfZW5jb2Rlcl9o ZWxwZXJfd2FpdF9mb3JfaXJxKHBoeXNfZW5jLAotCQkJSU5UUl9JRFhfQVVUT1JFRlJFU0hfRE9O RSwgJndhaXRfaW5mbyk7Ci0KLQkvKiBkb3VibGUgY2hlY2sgdGhhdCBraWNrb2ZmIGhhcyBzdGFy dGVkIGJ5IHJlYWRpbmcgd3JpdGUgcHRyIHJlZyAqLwotCWlmICghcmV0KQotCQlyZXQgPSBfZHB1 X2VuY29kZXJfcGh5c19jbWRfcG9sbF93cml0ZV9wb2ludGVyX3N0YXJ0ZWQoCi0JCQlwaHlzX2Vu Yyk7Ci0JZWxzZQotCQlkcHVfZW5jb2Rlcl9oZWxwZXJfcmVwb3J0X2lycV90aW1lb3V0KHBoeXNf ZW5jLAotCQkJCUlOVFJfSURYX0FVVE9SRUZSRVNIX0RPTkUpOwotCi0JcmV0dXJuIHJldDsKLX0K LQogc3RhdGljIGludCBkcHVfZW5jb2Rlcl9waHlzX2NtZF9jb250cm9sX3ZibGFua19pcnEoCiAJ CXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYywKIAkJYm9vbCBlbmFibGUpCkBAIC01 NTAsMjAgKzM3MiwxMyBAQCB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfY21kX2lycV9jb250cm9sKHN0 cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYywKIAkJZHB1X2VuY29kZXJfaGVscGVyX3Jl Z2lzdGVyX2lycShwaHlzX2VuYywgSU5UUl9JRFhfVU5ERVJSVU4pOwogCQlkcHVfZW5jb2Rlcl9w aHlzX2NtZF9jb250cm9sX3ZibGFua19pcnEocGh5c19lbmMsIHRydWUpOwogCi0JCWlmIChkcHVf ZW5jb2Rlcl9waHlzX2NtZF9pc19tYXN0ZXIocGh5c19lbmMpKSB7CisJCWlmIChkcHVfZW5jb2Rl cl9waHlzX2NtZF9pc19tYXN0ZXIocGh5c19lbmMpKQogCQkJZHB1X2VuY29kZXJfaGVscGVyX3Jl Z2lzdGVyX2lycShwaHlzX2VuYywKIAkJCQkJSU5UUl9JRFhfQ1RMX1NUQVJUKTsKLQkJCWRwdV9l bmNvZGVyX2hlbHBlcl9yZWdpc3Rlcl9pcnEocGh5c19lbmMsCi0JCQkJCUlOVFJfSURYX0FVVE9S RUZSRVNIX0RPTkUpOwotCQl9Ci0KIAl9IGVsc2UgewotCQlpZiAoZHB1X2VuY29kZXJfcGh5c19j bWRfaXNfbWFzdGVyKHBoeXNfZW5jKSkgeworCQlpZiAoZHB1X2VuY29kZXJfcGh5c19jbWRfaXNf bWFzdGVyKHBoeXNfZW5jKSkKIAkJCWRwdV9lbmNvZGVyX2hlbHBlcl91bnJlZ2lzdGVyX2lycShw aHlzX2VuYywKIAkJCQkJSU5UUl9JRFhfQ1RMX1NUQVJUKTsKLQkJCWRwdV9lbmNvZGVyX2hlbHBl cl91bnJlZ2lzdGVyX2lycShwaHlzX2VuYywKLQkJCQkJSU5UUl9JRFhfQVVUT1JFRlJFU0hfRE9O RSk7Ci0JCX0KIAogCQlkcHVfZW5jb2Rlcl9oZWxwZXJfdW5yZWdpc3Rlcl9pcnEocGh5c19lbmMs IElOVFJfSURYX1VOREVSUlVOKTsKIAkJZHB1X2VuY29kZXJfcGh5c19jbWRfY29udHJvbF92Ymxh bmtfaXJxKHBoeXNfZW5jLCBmYWxzZSk7CkBAIC03MzYsMzAgKzU1MSw2IEBAIHN0YXRpYyB2b2lk IGRwdV9lbmNvZGVyX3BoeXNfY21kX2VuYWJsZShzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5 c19lbmMpCiAJcGh5c19lbmMtPmVuYWJsZV9zdGF0ZSA9IERQVV9FTkNfRU5BQkxFRDsKIH0KIAot c3RhdGljIGJvb2wgZHB1X2VuY29kZXJfcGh5c19jbWRfaXNfYXV0b3JlZnJlc2hfZW5hYmxlZCgK LQkJc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQotewotCXN0cnVjdCBkcHVfaHdf cGluZ3BvbmcgKmh3X3BwOwotCXN0cnVjdCBkcHVfaHdfYXV0b3JlZnJlc2ggY2ZnOwotCWludCBy ZXQ7Ci0KLQlpZiAoIXBoeXNfZW5jIHx8ICFwaHlzX2VuYy0+aHdfcHApCi0JCXJldHVybiAwOwot Ci0JaWYgKCFkcHVfZW5jb2Rlcl9waHlzX2NtZF9pc19tYXN0ZXIocGh5c19lbmMpKQotCQlyZXR1 cm4gMDsKLQotCWh3X3BwID0gcGh5c19lbmMtPmh3X3BwOwotCWlmICghaHdfcHAtPm9wcy5nZXRf YXV0b3JlZnJlc2gpCi0JCXJldHVybiAwOwotCi0JcmV0ID0gaHdfcHAtPm9wcy5nZXRfYXV0b3Jl ZnJlc2goaHdfcHAsICZjZmcpOwotCWlmIChyZXQpCi0JCXJldHVybiAwOwotCi0JcmV0dXJuIGNm Zy5lbmFibGU7Ci19Ci0KIHN0YXRpYyB2b2lkIF9kcHVfZW5jb2Rlcl9waHlzX2NtZF9jb25uZWN0 X3RlKAogCQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMsIGJvb2wgZW5hYmxlKQog ewpAQCAtODY5LDggKzY2MCw3IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfY21kX3By ZXBhcmVfZm9yX2tpY2tvZmYoCiAJRFBVX0RFQlVHX0NNREVOQyhjbWRfZW5jLCAicHAgJWRcbiIs IHBoeXNfZW5jLT5od19wcC0+aWR4IC0gUElOR1BPTkdfMCk7CiAKIAlEUFVfRVZUMzIoRFJNSUQo cGh5c19lbmMtPnBhcmVudCksIHBoeXNfZW5jLT5od19wcC0+aWR4IC0gUElOR1BPTkdfMCwKLQkJ CWF0b21pY19yZWFkKCZwaHlzX2VuYy0+cGVuZGluZ19raWNrb2ZmX2NudCksCi0JCQlhdG9taWNf cmVhZCgmY21kX2VuYy0+YXV0b3JlZnJlc2gua2lja29mZl9jbnQpKTsKKwkJCWF0b21pY19yZWFk KCZwaHlzX2VuYy0+cGVuZGluZ19raWNrb2ZmX2NudCkpOwogCiAJLyoKIAkgKiBNYXJrIGtpY2tv ZmYgcmVxdWVzdCBhcyBvdXRzdGFuZGluZy4gSWYgdGhlcmUgYXJlIG1vcmUgdGhhbiBvbmUsCkBA IC05NTQsMTAgKzc0NCw2IEBAIHN0YXRpYyBpbnQgZHB1X2VuY29kZXJfcGh5c19jbWRfd2FpdF9m b3JfY29tbWl0X2RvbmUoCiAJaWYgKGRwdV9lbmNvZGVyX3BoeXNfY21kX2lzX21hc3RlcihwaHlz X2VuYykpCiAJCXJjID0gX2RwdV9lbmNvZGVyX3BoeXNfY21kX3dhaXRfZm9yX2N0bF9zdGFydChw aHlzX2VuYyk7CiAKLQlpZiAoIXJjICYmIGRwdV9lbmNvZGVyX3BoeXNfY21kX2lzX21hc3Rlcihw aHlzX2VuYykgJiYKLQkJCWNtZF9lbmMtPmF1dG9yZWZyZXNoLmNmZy5lbmFibGUpCi0JCXJjID0g X2RwdV9lbmNvZGVyX3BoeXNfY21kX3dhaXRfZm9yX2F1dG9yZWZyZXNoX2RvbmUocGh5c19lbmMp OwotCiAJLyogcmVxdWlyZWQgZm9yIGJvdGggY29udHJvbGxlcnMgKi8KIAlpZiAoIXJjICYmIGNt ZF9lbmMtPnNlcmlhbGl6ZV93YWl0NHBwKQogCQlkcHVfZW5jb2Rlcl9waHlzX2NtZF9wcmVwYXJl X2Zvcl9raWNrb2ZmKHBoeXNfZW5jLCBOVUxMKTsKQEAgLTk5Myw1OCArNzc5LDYgQEAgc3RhdGlj IGludCBkcHVfZW5jb2Rlcl9waHlzX2NtZF93YWl0X2Zvcl92YmxhbmsoCiAJcmV0dXJuIHJjOwog fQogCi1zdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX2NtZF9wcmVwYXJlX2NvbW1pdCgKLQkJ c3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQotewotCXN0cnVjdCBkcHVfZW5jb2Rl cl9waHlzX2NtZCAqY21kX2VuYyA9Ci0JCXRvX2RwdV9lbmNvZGVyX3BoeXNfY21kKHBoeXNfZW5j KTsKLQl1bnNpZ25lZCBsb25nIGxvY2tfZmxhZ3M7Ci0KLQlpZiAoIXBoeXNfZW5jKQotCQlyZXR1 cm47Ci0KLQlpZiAoIWRwdV9lbmNvZGVyX3BoeXNfY21kX2lzX21hc3RlcihwaHlzX2VuYykpCi0J CXJldHVybjsKLQotCURQVV9FVlQzMihEUk1JRChwaHlzX2VuYy0+cGFyZW50KSwgcGh5c19lbmMt PmludGZfaWR4IC0gSU5URl8wLAotCQkJY21kX2VuYy0+YXV0b3JlZnJlc2guY2ZnLmVuYWJsZSk7 Ci0KLQlpZiAoIWRwdV9lbmNvZGVyX3BoeXNfY21kX2lzX2F1dG9yZWZyZXNoX2VuYWJsZWQocGh5 c19lbmMpKQotCQlyZXR1cm47Ci0KLQkvKioKLQkgKiBBdXRvcmVmcmVzaCBtdXN0IGJlIGRpc2Fi bGVkIGNhcmVmdWxseToKLQkgKiAgLSBBdXRvcmVmcmVzaCBtdXN0IGJlIGRpc2FibGVkIGJldHdl ZW4gcHBfZG9uZSBhbmQgdGUKLQkgKiAgICBzaWduYWwgcHJpb3IgdG8gc2RtODQ1IHRhcmdldHMu IEFsbCB0YXJnZXRzIGFmdGVyIHNkbTg0NQotCSAqICAgIHN1cHBvcnRzIGF1dG9yZWZyZXNoIGRp c2FibGUgd2l0aG91dCB0dXJuaW5nIG9mZiB0aGUKLQkgKiAgICBoYXJkd2FyZSBURSBhbmQgcHBf ZG9uZSB3YWl0LgotCSAqCi0JICogIC0gV2FpdCBmb3IgVFggdG8gQ29tcGxldGUKLQkgKiAgICBX YWl0IGZvciBQUERvbmUgY29uZmlybXMgdGhlIGxhc3QgZnJhbWUgdHJhbnNmZXIgaXMgY29tcGxl dGUuCi0JICoKLQkgKiAgLSBMZWF2ZSBBdXRvcmVmcmVzaCBEaXNhYmxlZAotCSAqICAgIC0gQXNz dW1lIGRpc2FibGUgb2YgQXV0b3JlZnJlc2ggc2luY2UgaXQgaXMgbm93IHNhZmUKLQkgKiAgICAt IENhbiBub3cgc2FmZWx5IERpc2FibGUgRW5jb2RlciwgZG8gZGVidWcgcHJpbnRpbmcsIGV0Yy4K LQkgKiAgICAgd2l0aG91dCB3b3JyeWluZyB0aGF0IEF1dG9yZWZyZXNoIHdpbGwga2lja29mZgot CSAqLwotCi0Jc3Bpbl9sb2NrX2lycXNhdmUocGh5c19lbmMtPmVuY19zcGlubG9jaywgbG9ja19m bGFncyk7Ci0KLQlfZHB1X2VuY29kZXJfcGh5c19jbWRfY29uZmlnX2F1dG9yZWZyZXNoKHBoeXNf ZW5jLCAwKTsKLQotCS8qIGNoZWNrIGZvciBvdXRzdGFuZGluZyBUWCAqLwotCWlmIChfZHB1X2Vu Y29kZXJfcGh5c19jbWRfaXNfb25nb2luZ19wcHR4KHBoeXNfZW5jKSkKLQkJYXRvbWljX2FkZF91 bmxlc3MoJnBoeXNfZW5jLT5wZW5kaW5nX2tpY2tvZmZfY250LCAxLCAxKTsKLQlzcGluX3VubG9j a19pcnFyZXN0b3JlKHBoeXNfZW5jLT5lbmNfc3BpbmxvY2ssIGxvY2tfZmxhZ3MpOwotCi0JLyog d2FpdCBmb3IgcHBkb25lIGlmIG5lY2Vzc2FyeSBkdWUgdG8gY2F0Y2hpbmcgb25nb2luZyBUWCAq LwotCWlmIChfZHB1X2VuY29kZXJfcGh5c19jbWRfd2FpdF9mb3JfaWRsZShwaHlzX2VuYykpCi0J CURQVV9FUlJPUl9DTURFTkMoY21kX2VuYywgInBwOiVkIGtpY2tvZmYgdGltZWQgb3V0XG4iLAot CQkJCXBoeXNfZW5jLT5od19wcC0+aWR4IC0gUElOR1BPTkdfMCk7Ci0KLQlEUFVfREVCVUdfQ01E RU5DKGNtZF9lbmMsICJkaXNhYmxlZCBhdXRvcmVmcmVzaFxuIik7Ci19Ci0KIHN0YXRpYyB2b2lk IGRwdV9lbmNvZGVyX3BoeXNfY21kX2hhbmRsZV9wb3N0X2tpY2tvZmYoCiAJCXN0cnVjdCBkcHVf ZW5jb2Rlcl9waHlzICpwaHlzX2VuYykKIHsKQEAgLTEwNjEsMjcgKzc5NSwxNSBAQCBzdGF0aWMg dm9pZCBkcHVfZW5jb2Rlcl9waHlzX2NtZF9oYW5kbGVfcG9zdF9raWNrb2ZmKAogc3RhdGljIHZv aWQgZHB1X2VuY29kZXJfcGh5c19jbWRfdHJpZ2dlcl9zdGFydCgKIAkJc3RydWN0IGRwdV9lbmNv ZGVyX3BoeXMgKnBoeXNfZW5jKQogewotCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzX2NtZCAqY21k X2VuYyA9Ci0JCQl0b19kcHVfZW5jb2Rlcl9waHlzX2NtZChwaHlzX2VuYyk7Ci0JdTMyIGZyYW1l X2NudDsKLQogCWlmICghcGh5c19lbmMpCiAJCXJldHVybjsKIAotCS8qIHdlIGRvbid0IGlzc3Vl IENUTF9TVEFSVCB3aGVuIHVzaW5nIGF1dG9yZWZyZXNoICovCi0JZnJhbWVfY250ID0gX2RwdV9l bmNvZGVyX3BoeXNfY21kX2dldF9hdXRvcmVmcmVzaF9wcm9wZXJ0eShwaHlzX2VuYyk7Ci0JaWYg KGZyYW1lX2NudCkgewotCQlfZHB1X2VuY29kZXJfcGh5c19jbWRfY29uZmlnX2F1dG9yZWZyZXNo KHBoeXNfZW5jLCBmcmFtZV9jbnQpOwotCQlhdG9taWNfaW5jKCZjbWRfZW5jLT5hdXRvcmVmcmVz aC5raWNrb2ZmX2NudCk7Ci0JfSBlbHNlIHsKLQkJZHB1X2VuY29kZXJfaGVscGVyX3RyaWdnZXJf c3RhcnQocGh5c19lbmMpOwotCX0KKwlkcHVfZW5jb2Rlcl9oZWxwZXJfdHJpZ2dlcl9zdGFydChw aHlzX2VuYyk7CiB9CiAKIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfY21kX2luaXRfb3Bz KAogCQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5c19vcHMgKm9wcykKIHsKLQlvcHMtPnByZXBhcmVf Y29tbWl0ID0gZHB1X2VuY29kZXJfcGh5c19jbWRfcHJlcGFyZV9jb21taXQ7CiAJb3BzLT5pc19t YXN0ZXIgPSBkcHVfZW5jb2Rlcl9waHlzX2NtZF9pc19tYXN0ZXI7CiAJb3BzLT5tb2RlX3NldCA9 IGRwdV9lbmNvZGVyX3BoeXNfY21kX21vZGVfc2V0OwogCW9wcy0+bW9kZV9maXh1cCA9IGRwdV9l bmNvZGVyX3BoeXNfY21kX21vZGVfZml4dXA7CkBAIC0xMTAwLDggKzgyMiw2IEBAIHN0YXRpYyB2 b2lkIGRwdV9lbmNvZGVyX3BoeXNfY21kX2luaXRfb3BzKAogCW9wcy0+aXJxX2NvbnRyb2wgPSBk cHVfZW5jb2Rlcl9waHlzX2NtZF9pcnFfY29udHJvbDsKIAlvcHMtPnJlc3RvcmUgPSBkcHVfZW5j b2Rlcl9waHlzX2NtZF9lbmFibGVfaGVscGVyOwogCW9wcy0+cHJlcGFyZV9pZGxlX3BjID0gZHB1 X2VuY29kZXJfcGh5c19jbWRfcHJlcGFyZV9pZGxlX3BjOwotCW9wcy0+aXNfYXV0b3JlZnJlc2hf ZW5hYmxlZCA9Ci0JCQlkcHVfZW5jb2Rlcl9waHlzX2NtZF9pc19hdXRvcmVmcmVzaF9lbmFibGVk OwogCW9wcy0+aGFuZGxlX3Bvc3Rfa2lja29mZiA9IGRwdV9lbmNvZGVyX3BoeXNfY21kX2hhbmRs ZV9wb3N0X2tpY2tvZmY7CiAJb3BzLT5nZXRfbGluZV9jb3VudCA9IGRwdV9lbmNvZGVyX3BoeXNf Y21kX2dldF9saW5lX2NvdW50OwogfQpAQCAtMTE3NSwyMCArODk1LDEyIEBAIHN0cnVjdCBkcHVf ZW5jb2Rlcl9waHlzICpkcHVfZW5jb2Rlcl9waHlzX2NtZF9pbml0KAogCWlycS0+aW50cl9pZHgg PSBJTlRSX0lEWF9VTkRFUlJVTjsKIAlpcnEtPmNiLmZ1bmMgPSBkcHVfZW5jb2Rlcl9waHlzX2Nt ZF91bmRlcnJ1bl9pcnE7CiAKLQlpcnEgPSAmcGh5c19lbmMtPmlycVtJTlRSX0lEWF9BVVRPUkVG UkVTSF9ET05FXTsKLQlpcnEtPm5hbWUgPSAiYXV0b3JlZnJlc2hfZG9uZSI7Ci0JaXJxLT5pbnRy X3R5cGUgPSBEUFVfSVJRX1RZUEVfUElOR19QT05HX0FVVE9fUkVGOwotCWlycS0+aW50cl9pZHgg PSBJTlRSX0lEWF9BVVRPUkVGUkVTSF9ET05FOwotCWlycS0+Y2IuZnVuYyA9IGRwdV9lbmNvZGVy X3BoeXNfY21kX2F1dG9yZWZyZXNoX2RvbmVfaXJxOwotCiAJYXRvbWljX3NldCgmcGh5c19lbmMt PnZibGFua19yZWZjb3VudCwgMCk7CiAJYXRvbWljX3NldCgmcGh5c19lbmMtPnBlbmRpbmdfa2lj a29mZl9jbnQsIDApOwogCWF0b21pY19zZXQoJnBoeXNfZW5jLT5wZW5kaW5nX2N0bHN0YXJ0X2Nu dCwgMCk7CiAJYXRvbWljX3NldCgmY21kX2VuYy0+cGVuZGluZ192YmxhbmtfY250LCAwKTsKIAlp bml0X3dhaXRxdWV1ZV9oZWFkKCZwaHlzX2VuYy0+cGVuZGluZ19raWNrb2ZmX3dxKTsKIAlpbml0 X3dhaXRxdWV1ZV9oZWFkKCZjbWRfZW5jLT5wZW5kaW5nX3ZibGFua193cSk7Ci0JYXRvbWljX3Nl dCgmY21kX2VuYy0+YXV0b3JlZnJlc2gua2lja29mZl9jbnQsIDApOwotCWluaXRfd2FpdHF1ZXVl X2hlYWQoJmNtZF9lbmMtPmF1dG9yZWZyZXNoLmtpY2tvZmZfd3EpOwogCiAJRFBVX0RFQlVHX0NN REVOQyhjbWRfZW5jLCAiY3JlYXRlZFxuIik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9od19waW5ncG9uZy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2h3X3Bpbmdwb25nLmMKaW5kZXggOTMwOGY1Yy4uMGJmYjUxMSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3Bpbmdwb25nLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3Bpbmdwb25nLmMKQEAgLTMx LDcgKzMxLDYgQEAKICNkZWZpbmUgUFBfV1JfUFRSX0lSUSAgICAgICAgICAgICAgICAgICAweDAy NAogI2RlZmluZSBQUF9PVVRfTElORV9DT1VOVCAgICAgICAgICAgICAgIDB4MDI4CiAjZGVmaW5l IFBQX0xJTkVfQ09VTlQgICAgICAgICAgICAgICAgICAgMHgwMkMKLSNkZWZpbmUgUFBfQVVUT1JF RlJFU0hfQ09ORklHICAgICAgICAgICAweDAzMAogCiAjZGVmaW5lIFBQX0ZCQ19NT0RFICAgICAg ICAgICAgICAgICAgICAgMHgwMzQKICNkZWZpbmUgUFBfRkJDX0JVREdFVF9DVEwgICAgICAgICAg ICAgICAweDAzOApAQCAtOTMsNDQgKzkyLDYgQEAgc3RhdGljIGludCBkcHVfaHdfcHBfc2V0dXBf dGVfY29uZmlnKHN0cnVjdCBkcHVfaHdfcGluZ3BvbmcgKnBwLAogCXJldHVybiAwOwogfQogCi1z dGF0aWMgaW50IGRwdV9od19wcF9zZXR1cF9hdXRvcmVmcmVzaF9jb25maWcoc3RydWN0IGRwdV9o d19waW5ncG9uZyAqcHAsCi0JCXN0cnVjdCBkcHVfaHdfYXV0b3JlZnJlc2ggKmNmZykKLXsKLQlz dHJ1Y3QgZHB1X2h3X2Jsa19yZWdfbWFwICpjOwotCXUzMiByZWZyZXNoX2NmZzsKLQotCWlmICgh cHAgfHwgIWNmZykKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JYyA9ICZwcC0+aHc7Ci0KLQlpZiAoY2Zn LT5lbmFibGUpCi0JCXJlZnJlc2hfY2ZnID0gQklUKDMxKSB8IGNmZy0+ZnJhbWVfY291bnQ7Ci0J ZWxzZQotCQlyZWZyZXNoX2NmZyA9IDA7Ci0KLQlEUFVfUkVHX1dSSVRFKGMsIFBQX0FVVE9SRUZS RVNIX0NPTkZJRywgcmVmcmVzaF9jZmcpOwotCURQVV9FVlQzMihwcC0+aWR4IC0gUElOR1BPTkdf MCwgcmVmcmVzaF9jZmcpOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgZHB1X2h3X3Bw X2dldF9hdXRvcmVmcmVzaF9jb25maWcoc3RydWN0IGRwdV9od19waW5ncG9uZyAqcHAsCi0JCXN0 cnVjdCBkcHVfaHdfYXV0b3JlZnJlc2ggKmNmZykKLXsKLQlzdHJ1Y3QgZHB1X2h3X2Jsa19yZWdf bWFwICpjOwotCXUzMiB2YWw7Ci0KLQlpZiAoIXBwIHx8ICFjZmcpCi0JCXJldHVybiAtRUlOVkFM OwotCi0JYyA9ICZwcC0+aHc7Ci0JdmFsID0gRFBVX1JFR19SRUFEKGMsIFBQX0FVVE9SRUZSRVNI X0NPTkZJRyk7Ci0JY2ZnLT5lbmFibGUgPSAodmFsICYgQklUKDMxKSkgPj4gMzE7Ci0JY2ZnLT5m cmFtZV9jb3VudCA9IHZhbCAmIDB4ZmZmZjsKLQotCXJldHVybiAwOwotfQotCiBzdGF0aWMgaW50 IGRwdV9od19wcF9wb2xsX3RpbWVvdXRfd3JfcHRyKHN0cnVjdCBkcHVfaHdfcGluZ3BvbmcgKnBw LAogCQl1MzIgdGltZW91dF91cykKIHsKQEAgLTI5Myw4ICsyNTQsNiBAQCBzdGF0aWMgdm9pZCBf c2V0dXBfcGluZ3Bvbmdfb3BzKHN0cnVjdCBkcHVfaHdfcGluZ3Bvbmdfb3BzICpvcHMsCiAJb3Bz LT5lbmFibGVfdGVhcmNoZWNrID0gZHB1X2h3X3BwX2VuYWJsZV90ZTsKIAlvcHMtPmNvbm5lY3Rf ZXh0ZXJuYWxfdGUgPSBkcHVfaHdfcHBfY29ubmVjdF9leHRlcm5hbF90ZTsKIAlvcHMtPmdldF92 c3luY19pbmZvID0gZHB1X2h3X3BwX2dldF92c3luY19pbmZvOwotCW9wcy0+c2V0dXBfYXV0b3Jl ZnJlc2ggPSBkcHVfaHdfcHBfc2V0dXBfYXV0b3JlZnJlc2hfY29uZmlnOwotCW9wcy0+Z2V0X2F1 dG9yZWZyZXNoID0gZHB1X2h3X3BwX2dldF9hdXRvcmVmcmVzaF9jb25maWc7CiAJb3BzLT5wb2xs X3RpbWVvdXRfd3JfcHRyID0gZHB1X2h3X3BwX3BvbGxfdGltZW91dF93cl9wdHI7CiAJb3BzLT5n ZXRfbGluZV9jb3VudCA9IGRwdV9od19wcF9nZXRfbGluZV9jb3VudDsKIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3Bpbmdwb25nLmggYi9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfcGluZ3BvbmcuaAppbmRleCA5M2QwM2NjZS4u N2RiZmNhZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3 X3Bpbmdwb25nLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3Bp bmdwb25nLmgKQEAgLTM2LDExICszNiw2IEBAIHN0cnVjdCBkcHVfaHdfdGVhcl9jaGVjayB7CiAJ dTggaHdfdnN5bmNfbW9kZTsKIH07CiAKLXN0cnVjdCBkcHVfaHdfYXV0b3JlZnJlc2ggewotCWJv b2wgIGVuYWJsZTsKLQl1MzIgZnJhbWVfY291bnQ7Ci19OwotCiBzdHJ1Y3QgZHB1X2h3X3BwX3Zz eW5jX2luZm8gewogCXUzMiByZF9wdHJfaW5pdF92YWw7CS8qIHZhbHVlIG9mIHJkIHBvaW50ZXIg YXQgdnN5bmMgZWRnZSAqLwogCXUzMiByZF9wdHJfZnJhbWVfY291bnQ7CS8qIG51bSBmcmFtZXMg c2VudCBzaW5jZSBlbmFibGluZyBpbnRlcmZhY2UgKi8KQEAgLTU1LDcgKzUwLDYgQEAgc3RydWN0 IGRwdV9od19wcF92c3luY19pbmZvIHsKICAqICBAc2V0dXBfdGVhcmNoZWNrIDogcHJvZ3JhbSB0 ZWFyIGNoZWNrIHZhbHVlcwogICogIEBlbmFibGVfdGVhcmNoZWNrIDogZW5hYmxlcyB0ZWFyIGNo ZWNrCiAgKiAgQGdldF92c3luY19pbmZvIDogcmV0cmllcyB0aW1pbmcgaW5mbyBvZiB0aGUgcGFu ZWwKLSAqICBAc2V0dXBfYXV0b3JlZnJlc2ggOiBwcm9ncmFtIGF1dG8gcmVmcmVzaAogICogIEBz ZXR1cF9kaXRoZXIgOiBmdW5jdGlvbiB0byBwcm9ncmFtIHRoZSBkaXRoZXIgaHcgYmxvY2sKICAq ICBAZ2V0X2xpbmVfY291bnQ6IG9idGFpbiBjdXJyZW50IHZlcnRpY2FsIGxpbmUgY291bnRlcgog ICovCkBAIC04OCwxOCArODIsNiBAQCBzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nX29wcyB7CiAJCQlz dHJ1Y3QgZHB1X2h3X3BwX3ZzeW5jX2luZm8gICppbmZvKTsKIAogCS8qKgotCSAqIGNvbmZpZ3Vy ZSBhbmQgZW5hYmxlIHRoZSBhdXRvcmVmcmVzaCBjb25maWcKLQkgKi8KLQlpbnQgKCpzZXR1cF9h dXRvcmVmcmVzaCkoc3RydWN0IGRwdV9od19waW5ncG9uZyAqcHAsCi0JCQlzdHJ1Y3QgZHB1X2h3 X2F1dG9yZWZyZXNoICpjZmcpOwotCi0JLyoqCi0JICogcmV0cmlldmUgYXV0b3JlZnJlc2ggY29u ZmlnIGZyb20gaGFyZHdhcmUKLQkgKi8KLQlpbnQgKCpnZXRfYXV0b3JlZnJlc2gpKHN0cnVjdCBk cHVfaHdfcGluZ3BvbmcgKnBwLAotCQkJc3RydWN0IGRwdV9od19hdXRvcmVmcmVzaCAqY2ZnKTsK LQotCS8qKgogCSAqIHBvbGwgdW50aWwgd3JpdGUgcG9pbnRlciB0cmFuc21pc3Npb24gc3RhcnRz CiAJICogQFJldHVybjogMCBvbiBzdWNjZXNzLCAtRVRJTUVET1VUIG9uIHRpbWVvdXQKIAkgKi8K LS0gClRoZSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiB0 aGUgQ29kZSBBdXJvcmEgRm9ydW0sCmEgTGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFBy b2plY3QKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZy ZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=