From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: [DPU PATCH 1/6] drm/msm: remove display stream compression(DSC) support for SM845 Date: Mon, 16 Apr 2018 11:22:16 -0700 Message-ID: <1523902941-2253-2-git-send-email-jsanka@codeaurora.org> References: <1523902941-2253-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: <1523902941-2253-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 List-Id: linux-arm-msm@vger.kernel.org VXBzdHJlYW0gRFNJIGRyaXZlciBkb2Vzbid0IHN1cHBvcnQgRFNDIHBhbmVscyB5ZXQuIFJlbW92 ZQp0aGUgc3VwcG9ydCBmb3IgY29tcHJlc3Npb24gZnJvbSBEUFUgZm9yIG5vdy4KClNpZ25lZC1v ZmYtYnk6IEpleWt1bWFyIFNhbmthcmFuIDxqc2Fua2FAY29kZWF1cm9yYS5vcmc+Ci0tLQogZHJp dmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgLQog ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Nvbm5lY3Rvci5jICAgICAgfCAgIDQg LQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuaCAgICAgICAgICAgfCAg IDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMgICAgICAg IHwgNDc2ICstLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2VuY29kZXIuaCAgICAgICAgfCAgMTQgLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2VuY29kZXJfcGh5cy5oICAgfCAgIDcgKy0KIC4uLi9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2VuY29kZXJfcGh5c19jbWQuYyAgIHwgICAxIC0KIC4uLi9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c192aWQuYyAgIHwgICA3ICstCiBkcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5jICAgICB8ICAyNSAtLQogZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuaCAgICAgfCAgMTYgLQogZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2RzYy5jICAgICAgICAgfCAyNTIgLS0tLS0t LS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19kc2MuaCAgICAgICAg IHwgMTAwIC0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfbWRzcy5o ICAgICAgICB8ICAxNyArLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3Bp bmdwb25nLmMgICAgfCAgNDggLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf aHdfcGluZ3BvbmcuaCAgICB8ICAyMiAtCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfaHdfdG9wLmMgICAgICAgICB8ICAxMyAtCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfaHdfdG9wLmggICAgICAgICB8ICAgNyAtCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfcm0uYyAgICAgICAgICAgICB8ICA1NSAtLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9ybS5oICAgICAgICAgICAgIHwgICA4IC0KIGRyaXZlcnMvZ3B1L2RybS9t c20vbXNtX2Rydi5oICAgICAgICAgICAgICAgICAgICAgIHwgIDE2IC0KIDIwIGZpbGVzIGNoYW5n ZWQsIDcgaW5zZXJ0aW9ucygrKSwgMTA4NCBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfZHNjLmMKIGRlbGV0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfZHNjLmgKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL21z bS9NYWtlZmlsZQppbmRleCA5YzI3OTkxLi5iMjNhMDAxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vbXNtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUKQEAg LTY0LDcgKzY0LDYgQEAgbXNtLXkgOj0gXAogCWRpc3AvZHB1MS9kcHVfaHdfY29sb3JfcHJvY2Vz c2luZ192MV83Lm8gXAogCWRpc3AvZHB1MS9kcHVfaHdfY3RsLm8gXAogCWRpc3AvZHB1MS9kcHVf aHdfZHMubyBcCi0JZGlzcC9kcHUxL2RwdV9od19kc2MubyBcCiAJZGlzcC9kcHUxL2RwdV9od19k c3BwLm8gXAogCWRpc3AvZHB1MS9kcHVfaHdfaW50ZXJydXB0cy5vIFwKIAlkaXNwL2RwdTEvZHB1 X2h3X2ludGYubyBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfY29ubmVjdG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29ubmVj dG9yLmMKaW5kZXggMzY2MDdlMy4uMTIzN2VmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2Nvbm5lY3Rvci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9jb25uZWN0b3IuYwpAQCAtMzksMTIgKzM5LDggQEAKIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZHJtX3Byb3BfZW51bV9saXN0IGVfdG9wb2xvZ3lfbmFtZVtdID0gewogCXtEUFVf Uk1fVE9QT0xPR1lfTk9ORSwJImRwdV9ub25lIn0sCiAJe0RQVV9STV9UT1BPTE9HWV9TSU5HTEVQ SVBFLAkiZHB1X3NpbmdsZXBpcGUifSwKLQl7RFBVX1JNX1RPUE9MT0dZX1NJTkdMRVBJUEVfRFND LAkiZHB1X3NpbmdsZXBpcGVfZHNjIn0sCiAJe0RQVV9STV9UT1BPTE9HWV9EVUFMUElQRSwJImRw dV9kdWFscGlwZSJ9LAotCXtEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVfRFNDLAkiZHB1X2R1YWxw aXBlX2RzYyJ9LAogCXtEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVfM0RNRVJHRSwJImRwdV9kdWFs cGlwZW1lcmdlIn0sCi0Je0RQVV9STV9UT1BPTE9HWV9EVUFMUElQRV8zRE1FUkdFX0RTQywJImRw dV9kdWFscGlwZW1lcmdlX2RzYyJ9LAotCXtEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVfRFNDTUVS R0UsCSJkcHVfZHVhbHBpcGVfZHNjbWVyZ2UifSwKIAl7RFBVX1JNX1RPUE9MT0dZX1BQU1BMSVQs CSJkcHVfcHBzcGxpdCJ9LAogfTsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3Byb3BfZW51bV9s aXN0IGVfdG9wb2xvZ3lfY29udHJvbFtdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2NydGMuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9jcnRjLmgKaW5kZXggODc1NmIyYi4uZmFkZTY1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfY3J0Yy5oCkBAIC0xNDcsNyArMTQ3LDcgQEAgc3RydWN0IGRwdV9jcnRj X2V2ZW50IHsKICAqIEBudW1fY3RscyAgICAgIDogTnVtYmVyIG9mIGN0bCBwYXRocyBpbiB1c2UK ICAqIEBudW1fbWl4ZXJzICAgIDogTnVtYmVyIG9mIG1peGVycyBpbiB1c2UKICAqIEBtaXhlcnNf c3dhcHBlZDogV2hldGhlciB0aGUgbWl4ZXJzIGhhdmUgYmVlbiBzd2FwcGVkIGZvciBsZWZ0L3Jp Z2h0IHVwZGF0ZQotICogICAgICAgICAgICAgICAgICBlc3BlY2lhbGx5IGluIHRoZSBjYXNlIG9m IERTQyBNZXJnZS4KKwkJCQkJZXNwZWNpYWxseSBpbiB0aGUgY2FzZSBvZiBEU0MgTWVyZ2UuCiAg KiBAbWl4ZXJzICAgICAgICA6IExpc3Qgb2YgYWN0aXZlIG1peGVycwogICogQGV2ZW50ICAgICAg ICAgOiBQb2ludGVyIHRvIGxhc3QgcmVjZWl2ZWQgZHJtIHZibGFuayBldmVudC4gSWYgdGhlcmUg aXMgYQogICogICAgICAgICAgICAgICAgICBwZW5kaW5nIHZibGFuayBldmVudCwgdGhpcyB3aWxs IGJlIG5vbi1udWxsLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2VuY29kZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVy LmMKaW5kZXggMTk4YzYxOC4uNmYxMjM1NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfZW5jb2Rlci5jCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiZHB1X2Zvcm1h dHMuaCIKICNpbmNsdWRlICJkcHVfZW5jb2Rlcl9waHlzLmgiCiAjaW5jbHVkZSAiZHB1X3Bvd2Vy X2hhbmRsZS5oIgotI2luY2x1ZGUgImRwdV9od19kc2MuaCIKICNpbmNsdWRlICJkcHVfY3J0Yy5o IgogI2luY2x1ZGUgImRwdV90cmFjZS5oIgogI2luY2x1ZGUgImRwdV9jb3JlX2lycS5oIgpAQCAt MTUyLDcgKzE1MSw2IEBAIGVudW0gZHB1X2VuY19yY19zdGF0ZXMgewogICoJCQlPbmx5IHZhbGlk IGFmdGVyIGVuYWJsZS4gQ2xlYXJlZCBhcyBkaXNhYmxlLgogICogQGh3X3BwCQlIYW5kbGUgdG8g dGhlIHBpbmdwb25nIGJsb2NrcyB1c2VkIGZvciB0aGUgZGlzcGxheS4gTm8uCiAgKgkJCXBpbmdw b25nIGJsb2NrcyBjYW4gYmUgZGlmZmVyZW50IHRoYW4gbnVtX3BoeXNfZW5jcy4KLSAqIEBod19k c2M6CQlBcnJheSBvZiBEU0MgYmxvY2sgaGFuZGxlcyB1c2VkIGZvciB0aGUgZGlzcGxheS4KICAq IEBpbnRmc19zd2FwcGVkCVdoZXRoZXIgb3Igbm90IHRoZSBwaHlzX2VuYyBpbnRlcmZhY2VzIGhh dmUgYmVlbiBzd2FwcGVkCiAgKgkJCWZvciBwYXJ0aWFsIHVwZGF0ZSByaWdodC1vbmx5IGNhc2Vz LCBzdWNoIGFzIHBpbmdwb25nCiAgKgkJCXNwbGl0IHdoZXJlIHZpcnR1YWwgcGluZ3BvbmcgZG9l cyBub3QgZ2VuZXJhdGUgSVJRcwpAQCAtMTk5LDcgKzE5Nyw2IEBAIHN0cnVjdCBkcHVfZW5jb2Rl cl92aXJ0IHsKIAlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmNzW01BWF9QSFlTX0VO Q09ERVJTX1BFUl9WSVJUVUFMXTsKIAlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqY3VyX21hc3Rl cjsKIAlzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICpod19wcFtNQVhfQ0hBTk5FTFNfUEVSX0VOQ107 Ci0Jc3RydWN0IGRwdV9od19kc2MgKmh3X2RzY1tNQVhfQ0hBTk5FTFNfUEVSX0VOQ107CiAKIAli b29sIGludGZzX3N3YXBwZWQ7CiAKQEAgLTIzNCwyMSArMjMxLDYgQEAgc3RydWN0IGRwdV9lbmNv ZGVyX3ZpcnQgewogCiAjZGVmaW5lIHRvX2RwdV9lbmNvZGVyX3ZpcnQoeCkgY29udGFpbmVyX29m KHgsIHN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0LCBiYXNlKQogCi1ib29sIGRwdV9lbmNvZGVyX2lz X2RzY19lbmFibGVkKHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYykKLQotewotCXN0cnVjdCBk cHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5jOwotCXN0cnVjdCBtc21fY29tcHJlc3Npb25faW5mbyAq Y29tcF9pbmZvOwotCi0JaWYgKCFkcm1fZW5jKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQlkcHVfZW5j ID0gdG9fZHB1X2VuY29kZXJfdmlydChkcm1fZW5jKTsKLQljb21wX2luZm8gPSAmZHB1X2VuYy0+ bW9kZV9pbmZvLmNvbXBfaW5mbzsKLQotCXJldHVybiAoY29tcF9pbmZvLT5jb21wX3R5cGUgPT0g TVNNX0RJU1BMQVlfQ09NUFJFU1NJT05fRFNDKTsKLX0KLQogdm9pZCBkcHVfZW5jb2Rlcl9zZXRf aWRsZV90aW1lb3V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYywgdTMyIGlkbGVfdGltZW91 dCkKIHsKIAlzdHJ1Y3QgZHB1X2VuY29kZXJfdmlydCAqZHB1X2VuYzsKQEAgLTI2MCwzMCArMjQy LDYgQEAgdm9pZCBkcHVfZW5jb2Rlcl9zZXRfaWRsZV90aW1lb3V0KHN0cnVjdCBkcm1fZW5jb2Rl ciAqZHJtX2VuYywgdTMyIGlkbGVfdGltZW91dCkKIAlkcHVfZW5jLT5pZGxlX3RpbWVvdXQgPSBp ZGxlX3RpbWVvdXQ7CiB9CiAKLWJvb2wgZHB1X2VuY29kZXJfaXNfZHNjX21lcmdlKHN0cnVjdCBk cm1fZW5jb2RlciAqZHJtX2VuYykKLXsKLQllbnVtIGRwdV9ybV90b3BvbG9neV9uYW1lIHRvcG9s b2d5OwotCXN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5jOwotCXN0cnVjdCBkcm1fY29u bmVjdG9yICpkcm1fY29ubjsKLQotCWlmICghZHJtX2VuYykKLQkJcmV0dXJuIGZhbHNlOwotCi0J ZHB1X2VuYyA9IHRvX2RwdV9lbmNvZGVyX3ZpcnQoZHJtX2VuYyk7Ci0JaWYgKCFkcHVfZW5jLT5j dXJfbWFzdGVyKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQlkcm1fY29ubiA9IGRwdV9lbmMtPmN1cl9t YXN0ZXItPmNvbm5lY3RvcjsKLQlpZiAoIWRybV9jb25uKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQl0 b3BvbG9neSA9IGRwdV9jb25uZWN0b3JfZ2V0X3RvcG9sb2d5X25hbWUoZHJtX2Nvbm4pOwotCWlm ICh0b3BvbG9neSA9PSBEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVfRFNDTUVSR0UpCi0JCXJldHVy biB0cnVlOwotCi0JcmV0dXJuIGZhbHNlOwotfQotCiBzdGF0aWMgaW5saW5lIGludCBfZHB1X2Vu Y29kZXJfcG93ZXJfZW5hYmxlKHN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5jLAogCQkJ CQkJCQlib29sIGVuYWJsZSkKIHsKQEAgLTc0NSwzMTIgKzcwMyw2IEBAIHN0YXRpYyBpbnQgZHB1 X2VuY29kZXJfdmlydF9hdG9taWNfY2hlY2soCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGlu dCBfZHB1X2VuY29kZXJfZHNjX3VwZGF0ZV9waWNfZGltKHN0cnVjdCBtc21fZGlzcGxheV9kc2Nf aW5mbyAqZHNjLAotCQlpbnQgcGljX3dpZHRoLCBpbnQgcGljX2hlaWdodCkKLXsKLQlpZiAoIWRz YyB8fCAhcGljX3dpZHRoIHx8ICFwaWNfaGVpZ2h0KSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBp bnB1dDogcGljX3dpZHRoPSVkIHBpY19oZWlnaHQ9JWRcbiIsCi0JCQlwaWNfd2lkdGgsIHBpY19o ZWlnaHQpOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQlpZiAoKHBpY193aWR0aCAlIGRzYy0+ c2xpY2Vfd2lkdGgpIHx8Ci0JICAgIChwaWNfaGVpZ2h0ICUgZHNjLT5zbGljZV9oZWlnaHQpKSB7 Ci0JCURQVV9FUlJPUigicGljX2RpbT0lZHglZCBoYXMgdG8gYmUgbXVsdGlwbGUgb2Ygc2xpY2U9 JWR4JWRcbiIsCi0JCQlwaWNfd2lkdGgsIHBpY19oZWlnaHQsCi0JCQlkc2MtPnNsaWNlX3dpZHRo LCBkc2MtPnNsaWNlX2hlaWdodCk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCWRzYy0+cGlj X3dpZHRoID0gcGljX3dpZHRoOwotCWRzYy0+cGljX2hlaWdodCA9IHBpY19oZWlnaHQ7Ci0KLQly ZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgX2RwdV9lbmNvZGVyX2RzY19wY2xrX3BhcmFtX2Nh bGMoc3RydWN0IG1zbV9kaXNwbGF5X2RzY19pbmZvICpkc2MsCi0JCWludCBpbnRmX3dpZHRoKQot ewotCWludCBzbGljZV9wZXJfcGt0LCBzbGljZV9wZXJfaW50ZjsKLQlpbnQgYnl0ZXNfaW5fc2xp Y2UsIHRvdGFsX2J5dGVzX3Blcl9pbnRmOwotCi0JaWYgKCFkc2MgfHwgIWRzYy0+c2xpY2Vfd2lk dGggfHwgIWRzYy0+c2xpY2VfcGVyX3BrdCB8fAotCSAgICAoaW50Zl93aWR0aCA8IGRzYy0+c2xp Y2Vfd2lkdGgpKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBpbnB1dDogaW50Zl93aWR0aD0lZCBz bGljZV93aWR0aD0lZFxuIiwKLQkJCWludGZfd2lkdGgsIGRzYyA/IGRzYy0+c2xpY2Vfd2lkdGgg OiAtMSk7Ci0JCXJldHVybjsKLQl9Ci0KLQlzbGljZV9wZXJfcGt0ID0gZHNjLT5zbGljZV9wZXJf cGt0OwotCXNsaWNlX3Blcl9pbnRmID0gRElWX1JPVU5EX1VQKGludGZfd2lkdGgsIGRzYy0+c2xp Y2Vfd2lkdGgpOwotCi0JLyoKLQkgKiBJZiBzbGljZV9wZXJfcGt0IGlzIGdyZWF0ZXIgdGhhbiBz bGljZV9wZXJfaW50ZiB0aGVuIGRlZmF1bHQgdG8gMS4KLQkgKiBUaGlzIGNhbiBoYXBwZW4gZHVy aW5nIHBhcnRpYWwgdXBkYXRlLgotCSAqLwotCWlmIChzbGljZV9wZXJfcGt0ID4gc2xpY2VfcGVy X2ludGYpCi0JCXNsaWNlX3Blcl9wa3QgPSAxOwotCi0JYnl0ZXNfaW5fc2xpY2UgPSBESVZfUk9V TkRfVVAoZHNjLT5zbGljZV93aWR0aCAqIGRzYy0+YnBwLCA4KTsKLQl0b3RhbF9ieXRlc19wZXJf aW50ZiA9IGJ5dGVzX2luX3NsaWNlICogc2xpY2VfcGVyX2ludGY7Ci0KLQlkc2MtPmVvbF9ieXRl X251bSA9IHRvdGFsX2J5dGVzX3Blcl9pbnRmICUgMzsKLQlkc2MtPnBjbGtfcGVyX2xpbmUgPSAg RElWX1JPVU5EX1VQKHRvdGFsX2J5dGVzX3Blcl9pbnRmLCAzKTsKLQlkc2MtPmJ5dGVzX2luX3Ns aWNlID0gYnl0ZXNfaW5fc2xpY2U7Ci0JZHNjLT5ieXRlc19wZXJfcGt0ID0gYnl0ZXNfaW5fc2xp Y2UgKiBzbGljZV9wZXJfcGt0OwotCWRzYy0+cGt0X3Blcl9saW5lID0gc2xpY2VfcGVyX2ludGYg LyBzbGljZV9wZXJfcGt0OwotfQotCi1zdGF0aWMgaW50IF9kcHVfZW5jb2Rlcl9kc2NfaW5pdGlh bF9saW5lX2NhbGMoc3RydWN0IG1zbV9kaXNwbGF5X2RzY19pbmZvICpkc2MsCi0JCWludCBlbmNf aXBfd2lkdGgpCi17Ci0JaW50IHNzbV9kZWxheSwgdG90YWxfcGl4ZWxzLCBzb2Z0X3NsaWNlX3Bl cl9lbmM7Ci0KLQlzb2Z0X3NsaWNlX3Blcl9lbmMgPSBlbmNfaXBfd2lkdGggLyBkc2MtPnNsaWNl X3dpZHRoOwotCi0JLyoKLQkgKiBtaW5pbXVtIG51bWJlciBvZiBpbml0aWFsIGxpbmUgcGl4ZWxz IGlzIGEgc3VtIG9mOgotCSAqIDEuIHN1Yi1zdHJlYW0gbXVsdGlwbGV4ZXIgZGVsYXkgKDgzIGdy b3VwcyBmb3IgOGJwYywKLQkgKiAgICA5MSBmb3IgMTAgYnBjKSAqIDMKLQkgKiAyLiBmb3IgdHdv IHNvZnQgc2xpY2UgY2FzZXMsIGFkZCBleHRyYSBzdWItc3RyZWFtIG11bHRpcGxleGVyICogMwot CSAqIDMuIHRoZSBpbml0aWFsIHhtaXQgZGVsYXkKLQkgKiA0LiB0b3RhbCBwaXBlbGluZSBkZWxh eSB0aHJvdWdoIHRoZSAibG9jayBzdGVwIiBvZiBlbmNvZGVyICg0NykKLQkgKiA1LiA2IGFkZGl0 aW9uYWwgcGl4ZWxzIGFzIHRoZSBvdXRwdXQgb2YgdGhlIHJhdGUgYnVmZmVyIGlzCi0JICogICAg NDggYml0cyB3aWRlCi0JICovCi0Jc3NtX2RlbGF5ID0gKChkc2MtPmJwYyA8IDEwKSA/IDg0IDog OTIpOwotCXRvdGFsX3BpeGVscyA9IHNzbV9kZWxheSAqIDMgKyBkc2MtPmluaXRpYWxfeG1pdF9k ZWxheSArIDQ3OwotCWlmIChzb2Z0X3NsaWNlX3Blcl9lbmMgPiAxKQotCQl0b3RhbF9waXhlbHMg Kz0gKHNzbV9kZWxheSAqIDMpOwotCWRzYy0+aW5pdGlhbF9saW5lcyA9IERJVl9ST1VORF9VUCh0 b3RhbF9waXhlbHMsIGRzYy0+c2xpY2Vfd2lkdGgpOwotCXJldHVybiAwOwotfQotCi1zdGF0aWMg Ym9vbCBfZHB1X2VuY29kZXJfZHNjX2ljaF9yZXNldF9vdmVycmlkZV9uZWVkZWQoYm9vbCBwdV9l biwKLQkJc3RydWN0IG1zbV9kaXNwbGF5X2RzY19pbmZvICpkc2MpCi17Ci0JLyoKLQkgKiBBcyBw ZXIgdGhlIERTQyBzcGVjLCBJQ0hfUkVTRVQgY2FuIGJlIGVpdGhlciBlbmQgb2YgdGhlIHNsaWNl IGxpbmUKLQkgKiBvciBhdCB0aGUgZW5kIG9mIHRoZSBzbGljZS4gSFcgaW50ZXJuYWxseSBnZW5l cmF0ZXMgaWNoX3Jlc2V0IGF0Ci0JICogZW5kIG9mIHRoZSBzbGljZSBsaW5lIGlmIERTQ19NRVJH RSBpcyB1c2VkIG9yIGVuY29kZXIgaGFzIHR3bwotCSAqIHNvZnQgc2xpY2VzLiBIb3dldmVyLCBp ZiBlbmNvZGVyIGhhcyBvbmx5IDEgc29mdCBzbGljZSBhbmQgRFNDX01FUkdFCi0JICogaXMgbm90 IHVzZWQgdGhlbiBpdCB3aWxsIGdlbmVyYXRlIGljaF9yZXNldCBhdCB0aGUgZW5kIG9mIHNsaWNl LgotCSAqCi0JICogTm93IGFzIHBlciB0aGUgc3BlYywgZHVyaW5nIG9uZSBQUFMgc2Vzc2lvbiwg cG9zaXRpb24gd2hlcmUKLQkgKiBpY2hfcmVzZXQgaXMgZ2VuZXJhdGVkIHNob3VsZCBub3QgY2hh bmdlLiBOb3cgaWYgZnVsbC1zY3JlZW4gZnJhbWUKLQkgKiBoYXMgbW9yZSB0aGFuIDEgc29mdCBz bGljZSB0aGVuIEhXIHdpbGwgYXV0b21hdGljYWxseSBnZW5lcmF0ZQotCSAqIGljaF9yZXNldCBh dCB0aGUgZW5kIG9mIHNsaWNlX2xpbmUuIEJ1dCBmb3IgdGhlIHNhbWUgcGFuZWwsIGlmCi0JICog cGFydGlhbCBmcmFtZSBpcyBlbmFibGVkIGFuZCBvbmx5IDEgZW5jb2RlciBpcyB1c2VkIHdpdGgg MSBzbGljZSwKLQkgKiB0aGVuIEhXIHdpbGwgZ2VuZXJhdGUgaWNoX3Jlc2V0IGF0IGVuZCBvZiB0 aGUgc2xpY2UuIFRoaXMgaXMgYQotCSAqIG1pc21hdGNoLiBQcmV2ZW50IHRoaXMgYnkgb3ZlcnJp ZGluZyBIVydzIGRlY2lzaW9uLgotCSAqLwotCXJldHVybiBwdV9lbiAmJiBkc2MgJiYgKGRzYy0+ ZnVsbF9mcmFtZV9zbGljZXMgPiAxKSAmJgotCQkoZHNjLT5zbGljZV93aWR0aCA9PSBkc2MtPnBp Y193aWR0aCk7Ci19Ci0KLXN0YXRpYyB2b2lkIF9kcHVfZW5jb2Rlcl9kc2NfcGlwZV9jZmcoc3Ry dWN0IGRwdV9od19kc2MgKmh3X2RzYywKLQkJc3RydWN0IGRwdV9od19waW5ncG9uZyAqaHdfcHAs IHN0cnVjdCBtc21fZGlzcGxheV9kc2NfaW5mbyAqZHNjLAotCQl1MzIgY29tbW9uX21vZGUsIGJv b2wgaWNoX3Jlc2V0KQotewotCWlmIChod19kc2MtPm9wcy5kc2NfY29uZmlnKQotCQlod19kc2Mt Pm9wcy5kc2NfY29uZmlnKGh3X2RzYywgZHNjLCBjb21tb25fbW9kZSwgaWNoX3Jlc2V0KTsKLQot CWlmIChod19kc2MtPm9wcy5kc2NfY29uZmlnX3RocmVzaCkKLQkJaHdfZHNjLT5vcHMuZHNjX2Nv bmZpZ190aHJlc2goaHdfZHNjLCBkc2MpOwotCi0JaWYgKGh3X3BwLT5vcHMuc2V0dXBfZHNjKQot CQlod19wcC0+b3BzLnNldHVwX2RzYyhod19wcCk7Ci0KLQlpZiAoaHdfcHAtPm9wcy5lbmFibGVf ZHNjKQotCQlod19wcC0+b3BzLmVuYWJsZV9kc2MoaHdfcHApOwotfQotCi1zdGF0aWMgaW50IF9k cHVfZW5jb2Rlcl9kc2Nfbl9sbV8xX2VuY18xX2ludGYoc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQg KmRwdV9lbmMpCi17Ci0JaW50IHRoaXNfZnJhbWVfc2xpY2VzOwotCWludCBpbnRmX2lwX3csIGVu Y19pcF93OwotCWludCBpY2hfcmVzLCBkc2NfY29tbW9uX21vZGUgPSAwOwotCWludCByYyA9IDA7 Ci0KLQlzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICpod19wcCA9IGRwdV9lbmMtPmh3X3BwWzBdOwot CXN0cnVjdCBkcHVfaHdfZHNjICpod19kc2MgPSBkcHVfZW5jLT5od19kc2NbMF07Ci0Jc3RydWN0 IGRwdV9lbmNvZGVyX3BoeXMgKmVuY19tYXN0ZXIgPSBkcHVfZW5jLT5jdXJfbWFzdGVyOwotCXN0 cnVjdCBtc21fZGlzcGxheV9kc2NfaW5mbyAqZHNjID0KLQkJJmRwdV9lbmMtPm1vZGVfaW5mby5j b21wX2luZm8uZHNjX2luZm87Ci0KLQlyYyA9IF9kcHVfZW5jb2Rlcl9kc2NfdXBkYXRlX3BpY19k aW0oZHNjLCBkc2MtPnBpY193aWR0aCwKLQkJCWRzYy0+cGljX2hlaWdodCk7Ci0JaWYgKHJjKSB7 Ci0JCURQVV9FUlJPUl9FTkMoZHB1X2VuYywgImZhaWxlZCB0byB1cGRhdGUgRFNDIHBpYyBkaW1c biIpOwotCQlyZXR1cm4gcmM7Ci0JfQotCi0JdGhpc19mcmFtZV9zbGljZXMgPSBkc2MtPnBpY193 aWR0aCAvIGRzYy0+c2xpY2Vfd2lkdGg7Ci0JaW50Zl9pcF93ID0gdGhpc19mcmFtZV9zbGljZXMg KiBkc2MtPnNsaWNlX3dpZHRoOwotCV9kcHVfZW5jb2Rlcl9kc2NfcGNsa19wYXJhbV9jYWxjKGRz YywgaW50Zl9pcF93KTsKLQotCWVuY19pcF93ID0gaW50Zl9pcF93OwotCV9kcHVfZW5jb2Rlcl9k c2NfaW5pdGlhbF9saW5lX2NhbGMoZHNjLCBlbmNfaXBfdyk7Ci0KLQlpY2hfcmVzID0gX2RwdV9l bmNvZGVyX2RzY19pY2hfcmVzZXRfb3ZlcnJpZGVfbmVlZGVkKGZhbHNlLCBkc2MpOwotCi0JaWYg KGVuY19tYXN0ZXItPmludGZfbW9kZSA9PSBJTlRGX01PREVfVklERU8pCi0JCWRzY19jb21tb25f bW9kZSA9IERTQ19NT0RFX1ZJREVPOwotCi0JRFBVX0RFQlVHX0VOQyhkcHVfZW5jLCAicGljX3c6 ICVkIHBpY19oOiAlZCBtb2RlOiVkXG4iLAotCQlkc2MtPnBpY193aWR0aCwgZHNjLT5waWNfaGVp Z2h0LCBkc2NfY29tbW9uX21vZGUpOwotCURQVV9FVlQzMihEUk1JRCgmZHB1X2VuYy0+YmFzZSks IGRzYy0+cGljX3dpZHRoLCBkc2MtPnBpY19oZWlnaHQsCi0JCQlkc2NfY29tbW9uX21vZGUpOwot Ci0JX2RwdV9lbmNvZGVyX2RzY19waXBlX2NmZyhod19kc2MsIGh3X3BwLCBkc2MsIGRzY19jb21t b25fbW9kZSwKLQkJCWljaF9yZXMpOwotCi0JcmV0dXJuIDA7Ci19Ci1zdGF0aWMgaW50IF9kcHVf ZW5jb2Rlcl9kc2NfMl9sbV8yX2VuY18yX2ludGYoc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRw dV9lbmMpCi17Ci0JaW50IHRoaXNfZnJhbWVfc2xpY2VzOwotCWludCBpbnRmX2lwX3csIGVuY19p cF93OwotCWludCBpY2hfcmVzLCBkc2NfY29tbW9uX21vZGU7Ci0JaW50IHJjID0gMDsKLQotCXN0 cnVjdCBkcHVfZW5jb2Rlcl9waHlzICplbmNfbWFzdGVyID0gZHB1X2VuYy0+Y3VyX21hc3RlcjsK LQlzdHJ1Y3QgZHB1X2h3X2RzYyAqbF9od19kc2MgPSBkcHVfZW5jLT5od19kc2NbMF07Ci0Jc3Ry dWN0IGRwdV9od19kc2MgKnJfaHdfZHNjID0gZHB1X2VuYy0+aHdfZHNjWzFdOwotCXN0cnVjdCBk cHVfaHdfcGluZ3BvbmcgKmxfaHdfcHAgPSBkcHVfZW5jLT5od19wcFswXTsKLQlzdHJ1Y3QgZHB1 X2h3X3Bpbmdwb25nICpyX2h3X3BwID0gZHB1X2VuYy0+aHdfcHBbMV07Ci0Jc3RydWN0IG1zbV9k aXNwbGF5X2RzY19pbmZvICpkc2MgPQotCQkmZHB1X2VuYy0+bW9kZV9pbmZvLmNvbXBfaW5mby5k c2NfaW5mbzsKLQotCXJjID0gX2RwdV9lbmNvZGVyX2RzY191cGRhdGVfcGljX2RpbShkc2MsCi0J CQlkc2MtPnBpY193aWR0aCAqIGRwdV9lbmMtPmRpc3BsYXlfbnVtX29mX2hfdGlsZXMsCi0JCQlk c2MtPnBpY19oZWlnaHQpOwotCWlmIChyYykgewotCQlEUFVfRVJST1JfRU5DKGRwdV9lbmMsICJm YWlsZWQgdG8gdXBkYXRlIERTQyBwaWMgZGltXG4iKTsKLQkJcmV0dXJuIHJjOwotCX0KLQotCi0J dGhpc19mcmFtZV9zbGljZXMgPSBkc2MtPnBpY193aWR0aCAvIGRzYy0+c2xpY2Vfd2lkdGg7Ci0J aW50Zl9pcF93ID0gdGhpc19mcmFtZV9zbGljZXMgKiBkc2MtPnNsaWNlX3dpZHRoOwotCi0JaW50 Zl9pcF93IC89IDI7Ci0JX2RwdV9lbmNvZGVyX2RzY19wY2xrX3BhcmFtX2NhbGMoZHNjLCBpbnRm X2lwX3cpOwotCi0JZW5jX2lwX3cgPSBpbnRmX2lwX3c7Ci0JX2RwdV9lbmNvZGVyX2RzY19pbml0 aWFsX2xpbmVfY2FsYyhkc2MsIGVuY19pcF93KTsKLQotCWljaF9yZXMgPSBfZHB1X2VuY29kZXJf ZHNjX2ljaF9yZXNldF9vdmVycmlkZV9uZWVkZWQoZmFsc2UsIGRzYyk7Ci0KLQlkc2NfY29tbW9u X21vZGUgPSBEU0NfTU9ERV9TUExJVF9QQU5FTDsKLQlpZiAoZW5jX21hc3Rlci0+aW50Zl9tb2Rl ID09IElOVEZfTU9ERV9WSURFTykKLQkJZHNjX2NvbW1vbl9tb2RlIHw9IERTQ19NT0RFX1ZJREVP OwotCi0JRFBVX0RFQlVHX0VOQyhkcHVfZW5jLCAicGljX3c6ICVkIHBpY19oOiAlZCBtb2RlOiVk XG4iLAotCQlkc2MtPnBpY193aWR0aCwgZHNjLT5waWNfaGVpZ2h0LCBkc2NfY29tbW9uX21vZGUp OwotCURQVV9FVlQzMihEUk1JRCgmZHB1X2VuYy0+YmFzZSksIGRzYy0+cGljX3dpZHRoLCBkc2Mt PnBpY19oZWlnaHQsCi0JCQlkc2NfY29tbW9uX21vZGUpOwotCi0JX2RwdV9lbmNvZGVyX2RzY19w aXBlX2NmZyhsX2h3X2RzYywgbF9od19wcCwgZHNjLCBkc2NfY29tbW9uX21vZGUsCi0JCQlpY2hf cmVzKTsKLQlfZHB1X2VuY29kZXJfZHNjX3BpcGVfY2ZnKHJfaHdfZHNjLCByX2h3X3BwLCBkc2Ms IGRzY19jb21tb25fbW9kZSwKLQkJCWljaF9yZXMpOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRp YyBpbnQgX2RwdV9lbmNvZGVyX2RzY18yX2xtXzJfZW5jXzFfaW50ZihzdHJ1Y3QgZHB1X2VuY29k ZXJfdmlydCAqZHB1X2VuYykKLXsKLQlpbnQgdGhpc19mcmFtZV9zbGljZXM7Ci0JaW50IGludGZf aXBfdywgZW5jX2lwX3c7Ci0JaW50IGljaF9yZXMsIGRzY19jb21tb25fbW9kZTsKLQlpbnQgcmMg PSAwOwotCi0Jc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKmVuY19tYXN0ZXIgPSBkcHVfZW5jLT5j dXJfbWFzdGVyOwotCXN0cnVjdCBkcHVfaHdfZHNjICpsX2h3X2RzYyA9IGRwdV9lbmMtPmh3X2Rz Y1swXTsKLQlzdHJ1Y3QgZHB1X2h3X2RzYyAqcl9od19kc2MgPSBkcHVfZW5jLT5od19kc2NbMV07 Ci0Jc3RydWN0IGRwdV9od19waW5ncG9uZyAqbF9od19wcCA9IGRwdV9lbmMtPmh3X3BwWzBdOwot CXN0cnVjdCBkcHVfaHdfcGluZ3BvbmcgKnJfaHdfcHAgPSBkcHVfZW5jLT5od19wcFsxXTsKLQlz dHJ1Y3QgbXNtX2Rpc3BsYXlfZHNjX2luZm8gKmRzYyA9Ci0JCSZkcHVfZW5jLT5tb2RlX2luZm8u Y29tcF9pbmZvLmRzY19pbmZvOwotCi0JcmMgPSBfZHB1X2VuY29kZXJfZHNjX3VwZGF0ZV9waWNf ZGltKGRzYywgZHNjLT5waWNfd2lkdGgsCi0JCQlkc2MtPnBpY19oZWlnaHQpOwotCWlmIChyYykg ewotCQlEUFVfRVJST1JfRU5DKGRwdV9lbmMsICJmYWlsZWQgdG8gdXBkYXRlIERTQyBwaWMgZGlt XG4iKTsKLQkJcmV0dXJuIHJjOwotCX0KLQotCXRoaXNfZnJhbWVfc2xpY2VzID0gZHNjLT5waWNf d2lkdGggLyBkc2MtPnNsaWNlX3dpZHRoOwotCWludGZfaXBfdyA9IHRoaXNfZnJhbWVfc2xpY2Vz ICogZHNjLT5zbGljZV93aWR0aDsKLQlfZHB1X2VuY29kZXJfZHNjX3BjbGtfcGFyYW1fY2FsYyhk c2MsIGludGZfaXBfdyk7Ci0KLQkvKgotCSAqIHdoZW4gdXNpbmcgMiBlbmNvZGVycyBmb3IgdGhl IHNhbWUgc3RyZWFtLCBuby4gb2Ygc2xpY2VzCi0JICogbmVlZCB0byBiZSBzYW1lIG9uIGJvdGgg dGhlIGVuY29kZXJzLgotCSAqLwotCWVuY19pcF93ID0gaW50Zl9pcF93IC8gMjsKLQlfZHB1X2Vu Y29kZXJfZHNjX2luaXRpYWxfbGluZV9jYWxjKGRzYywgZW5jX2lwX3cpOwotCi0JaWNoX3JlcyA9 IF9kcHVfZW5jb2Rlcl9kc2NfaWNoX3Jlc2V0X292ZXJyaWRlX25lZWRlZChmYWxzZSwgZHNjKTsK LQotCWRzY19jb21tb25fbW9kZSA9IERTQ19NT0RFX01VTFRJUExFWCB8IERTQ19NT0RFX1NQTElU X1BBTkVMOwotCWlmIChlbmNfbWFzdGVyLT5pbnRmX21vZGUgPT0gSU5URl9NT0RFX1ZJREVPKQot CQlkc2NfY29tbW9uX21vZGUgfD0gRFNDX01PREVfVklERU87Ci0KLQlEUFVfREVCVUdfRU5DKGRw dV9lbmMsICJwaWNfdzogJWQgcGljX2g6ICVkIG1vZGU6JWRcbiIsCi0JCWRzYy0+cGljX3dpZHRo LCBkc2MtPnBpY19oZWlnaHQsIGRzY19jb21tb25fbW9kZSk7Ci0JRFBVX0VWVDMyKERSTUlEKCZk cHVfZW5jLT5iYXNlKSwgZHNjLT5waWNfd2lkdGgsIGRzYy0+cGljX2hlaWdodCwKLQkJCWRzY19j b21tb25fbW9kZSk7Ci0KLQlfZHB1X2VuY29kZXJfZHNjX3BpcGVfY2ZnKGxfaHdfZHNjLCBsX2h3 X3BwLCBkc2MsIGRzY19jb21tb25fbW9kZSwKLQkJCWljaF9yZXMpOwotCV9kcHVfZW5jb2Rlcl9k c2NfcGlwZV9jZmcocl9od19kc2MsIHJfaHdfcHAsIGRzYywgZHNjX2NvbW1vbl9tb2RlLAotCQkJ aWNoX3Jlcyk7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCBfZHB1X2VuY29kZXJfZHNj X3NldHVwKHN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5jKQotewotCWVudW0gZHB1X3Jt X3RvcG9sb2d5X25hbWUgdG9wb2xvZ3k7Ci0Jc3RydWN0IGRybV9jb25uZWN0b3IgKmRybV9jb25u OwotCWludCByZXQgPSAwOwotCi0JaWYgKCFkcHVfZW5jKQotCQlyZXR1cm4gLUVJTlZBTDsKLQot CWRybV9jb25uID0gZHB1X2VuYy0+cGh5c19lbmNzWzBdLT5jb25uZWN0b3I7Ci0KLQl0b3BvbG9n eSA9IGRwdV9jb25uZWN0b3JfZ2V0X3RvcG9sb2d5X25hbWUoZHJtX2Nvbm4pOwotCWlmICh0b3Bv bG9neSA9PSBEUFVfUk1fVE9QT0xPR1lfTk9ORSkgewotCQlEUFVfRVJST1JfRU5DKGRwdV9lbmMs ICJ0b3BvbG9neSBub3Qgc2V0IHlldFxuIik7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCURQ VV9ERUJVR19FTkMoZHB1X2VuYywgInRvcG9sb2d5OiVkXG4iLCB0b3BvbG9neSk7Ci0JRFBVX0VW VDMyKERSTUlEKCZkcHVfZW5jLT5iYXNlKSk7Ci0KLQlzd2l0Y2ggKHRvcG9sb2d5KSB7Ci0JY2Fz ZSBEUFVfUk1fVE9QT0xPR1lfU0lOR0xFUElQRV9EU0M6Ci0JY2FzZSBEUFVfUk1fVE9QT0xPR1lf RFVBTFBJUEVfM0RNRVJHRV9EU0M6Ci0JCXJldCA9IF9kcHVfZW5jb2Rlcl9kc2Nfbl9sbV8xX2Vu Y18xX2ludGYoZHB1X2VuYyk7Ci0JCWJyZWFrOwotCWNhc2UgRFBVX1JNX1RPUE9MT0dZX0RVQUxQ SVBFX0RTQ01FUkdFOgotCQlyZXQgPSBfZHB1X2VuY29kZXJfZHNjXzJfbG1fMl9lbmNfMV9pbnRm KGRwdV9lbmMpOwotCQlicmVhazsKLQljYXNlIERQVV9STV9UT1BPTE9HWV9EVUFMUElQRV9EU0M6 Ci0JCXJldCA9IF9kcHVfZW5jb2Rlcl9kc2NfMl9sbV8yX2VuY18yX2ludGYoZHB1X2VuYyk7Ci0J CWJyZWFrOwotCWRlZmF1bHQ6Ci0JCURQVV9FUlJPUl9FTkMoZHB1X2VuYywgIk5vIERTQyBzdXBw b3J0IGZvciB0b3BvbG9neSAlZCIsCi0JCQkJdG9wb2xvZ3kpOwotCQlyZXR1cm4gLUVJTlZBTDsK LQl9OwotCi0JcmV0dXJuIHJldDsKLX0KLQogc3RhdGljIHZvaWQgX2RwdV9lbmNvZGVyX3VwZGF0 ZV92c3luY19zb3VyY2Uoc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmMsCiAJCQlzdHJ1 Y3QgbXNtX2Rpc3BsYXlfaW5mbyAqZGlzcF9pbmZvKQogewpAQCAtMTEwOSwxMDIgKzc2MSw4IEBA IHN0YXRpYyB2b2lkIF9kcHVfZW5jb2Rlcl91cGRhdGVfdnN5bmNfc291cmNlKHN0cnVjdCBkcHVf ZW5jb2Rlcl92aXJ0ICpkcHVfZW5jLAogCiAJCWh3X21kcHRvcC0+b3BzLnNldHVwX3ZzeW5jX3Nv dXJjZShod19tZHB0b3AsICZ2c3luY19jZmcpOwogCX0KLX0KLQotc3RhdGljIGludCBfZHB1X2Vu Y29kZXJfZHNjX2Rpc2FibGUoc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmMpCi17Ci0J ZW51bSBkcHVfcm1fdG9wb2xvZ3lfbmFtZSB0b3BvbG9neTsKLQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqZHJtX2Nvbm47Ci0JaW50IGksIHJldCA9IDA7Ci0Jc3RydWN0IGRwdV9od19waW5ncG9uZyAq aHdfcHBbTUFYX0NIQU5ORUxTX1BFUl9FTkNdOwotCXN0cnVjdCBkcHVfaHdfZHNjICpod19kc2Nb TUFYX0NIQU5ORUxTX1BFUl9FTkNdID0ge05VTEx9OwotCWludCBwcF9jb3VudCA9IDA7Ci0JaW50 IGRzY19jb3VudCA9IDA7Ci0KLQlpZiAoIWRwdV9lbmMgfHwgIWRwdV9lbmMtPnBoeXNfZW5jc1sw XSB8fAotCQkJIWRwdV9lbmMtPnBoeXNfZW5jc1swXS0+Y29ubmVjdG9yKSB7Ci0JCURQVV9FUlJP UigiaW52YWxpZCBwYXJhbXMgJWQgJWRcbiIsCi0JCQkhZHB1X2VuYywgZHB1X2VuYyA/ICFkcHVf ZW5jLT5waHlzX2VuY3NbMF0gOiAtMSk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCWRybV9j b25uID0gZHB1X2VuYy0+cGh5c19lbmNzWzBdLT5jb25uZWN0b3I7Ci0KLQl0b3BvbG9neSA9IGRw dV9jb25uZWN0b3JfZ2V0X3RvcG9sb2d5X25hbWUoZHJtX2Nvbm4pOwotCWlmICh0b3BvbG9neSA9 PSBEUFVfUk1fVE9QT0xPR1lfTk9ORSkgewotCQlEUFVfRVJST1JfRU5DKGRwdV9lbmMsICJ0b3Bv bG9neSBub3Qgc2V0IHlldFxuIik7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCXN3aXRjaCAo dG9wb2xvZ3kpIHsKLQljYXNlIERQVV9STV9UT1BPTE9HWV9TSU5HTEVQSVBFOgotCWNhc2UgRFBV X1JNX1RPUE9MT0dZX1NJTkdMRVBJUEVfRFNDOgotCQkvKiBzaW5nbGUgUFAgKi8KLQkJaHdfcHBb MF0gPSBkcHVfZW5jLT5od19wcFswXTsKLQkJaHdfZHNjWzBdID0gZHB1X2VuYy0+aHdfZHNjWzBd OwotCQlwcF9jb3VudCA9IDE7Ci0JCWRzY19jb3VudCA9IDE7Ci0JCWJyZWFrOwotCWNhc2UgRFBV X1JNX1RPUE9MT0dZX0RVQUxQSVBFX0RTQzoKLQljYXNlIERQVV9STV9UT1BPTE9HWV9EVUFMUElQ RV8zRE1FUkdFX0RTQzoKLQljYXNlIERQVV9STV9UT1BPTE9HWV9EVUFMUElQRV9EU0NNRVJHRToK LQkJLyogZHVhbCBkc2MgKi8KLQkJZm9yIChpID0gMDsgaSA8IE1BWF9DSEFOTkVMU19QRVJfRU5D OyBpKyspIHsKLQkJCWh3X2RzY1tpXSA9IGRwdV9lbmMtPmh3X2RzY1tpXTsKLQkJCWlmIChod19k c2NbaV0pCi0JCQkJZHNjX2NvdW50Kys7Ci0JCX0KLQkJLyogZmFsbCB0aHJvdWdoICovCi0JY2Fz ZSBEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEU6Ci0JY2FzZSBEUFVfUk1fVE9QT0xPR1lfRFVBTFBJ UEVfM0RNRVJHRToKLQkJLyogZHVhbCBwcCAqLwotCQlmb3IgKGkgPSAwOyBpIDwgTUFYX0NIQU5O RUxTX1BFUl9FTkM7IGkrKykgewotCQkJaHdfcHBbaV0gPSBkcHVfZW5jLT5od19wcFtpXTsKLQkJ CWlmIChod19wcFtpXSkKLQkJCQlwcF9jb3VudCsrOwotCQl9Ci0JCWJyZWFrOwotCWRlZmF1bHQ6 Ci0JCURQVV9ERUJVR19FTkMoZHB1X2VuYywgIlVuZXhwZWN0ZWQgdG9wb2xvZ3k6JWRcbiIsIHRv cG9sb2d5KTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfTsKLQotCURQVV9FVlQzMihEUk1JRCgmZHB1 X2VuYy0+YmFzZSksIHRvcG9sb2d5LCBwcF9jb3VudCwgZHNjX2NvdW50KTsKLQotCWlmIChwcF9j b3VudCA+IE1BWF9DSEFOTkVMU19QRVJfRU5DIHx8Ci0JCWRzY19jb3VudCA+IE1BWF9DSEFOTkVM U19QRVJfRU5DKSB7Ci0JCURQVV9FUlJPUl9FTkMoZHB1X2VuYywgIldyb25nIGNvdW50IHBwOiVk IGRzYzolZCB0b3A6JWRcbiIsCi0JCQkJcHBfY291bnQsIGRzY19jb3VudCwgdG9wb2xvZ3kpOwot CQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQkvKiBEaXNhYmxlIERTQyBmb3IgYWxsIHRoZSBwcCdz IHByZXNlbnQgaW4gdGhpcyB0b3BvbG9neSAqLwotCWZvciAoaSA9IDA7IGkgPCBwcF9jb3VudDsg aSsrKSB7Ci0KLQkJaWYgKCFod19wcFtpXSkgewotCQkJRFBVX0VSUk9SX0VOQyhkcHVfZW5jLCAi bnVsbCBwcDolZCB0b3A6JWQgY250OiVkXG4iLAotCQkJCQlpLCB0b3BvbG9neSwgcHBfY291bnQp OwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlpZiAoaHdfcHBbaV0tPm9wcy5kaXNhYmxl X2RzYykKLQkJCWh3X3BwW2ldLT5vcHMuZGlzYWJsZV9kc2MoaHdfcHBbaV0pOwotCX0KLQotCS8q IERpc2FibGUgRFNDIEhXICovCi0JZm9yIChpID0gMDsgaSA8IGRzY19jb3VudDsgaSsrKSB7Ci0K LQkJaWYgKCFod19kc2NbaV0pIHsKLQkJCURQVV9FUlJPUl9FTkMoZHB1X2VuYywgIm51bGwgZHNj OiVkIHRvcDolZCBjbnQ6JWRcbiIsCi0JCQkJCWksIHRvcG9sb2d5LCBkc2NfY291bnQpOwotCQkJ cmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlpZiAoaHdfZHNjW2ldLT5vcHMuZHNjX2Rpc2FibGUp Ci0JCQlod19kc2NbaV0tPm9wcy5kc2NfZGlzYWJsZShod19kc2NbaV0pOwotCX0KIAotCXJldHVy biByZXQ7CisJcmV0dXJuOwogfQogCiBzdGF0aWMgdm9pZCBfZHB1X2VuY29kZXJfaXJxX2NvbnRy b2woc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jLCBib29sIGVuYWJsZSkKQEAgLTE2MDcsNyAr MTE2NSw3IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3ZpcnRfbW9kZV9zZXQoc3RydWN0IGRy bV9lbmNvZGVyICpkcm1fZW5jLAogCXN0cnVjdCBsaXN0X2hlYWQgKmNvbm5lY3Rvcl9saXN0Owog CXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uID0gTlVMTCwgKmNvbm5faXRlcjsKIAlzdHJ1Y3Qg ZHB1X2Nvbm5lY3RvciAqZHB1X2Nvbm4gPSBOVUxMOwotCXN0cnVjdCBkcHVfcm1faHdfaXRlciBk c2NfaXRlciwgcHBfaXRlcjsKKwlzdHJ1Y3QgZHB1X3JtX2h3X2l0ZXIgcHBfaXRlcjsKIAlpbnQg aSA9IDAsIHJldDsKIAogCWlmICghZHJtX2VuYykgewpAQCAtMTY1OCwxMiArMTIxNiw2IEBAIHN0 YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3ZpcnRfbW9kZV9zZXQoc3RydWN0IGRybV9lbmNvZGVyICpk cm1fZW5jLAogCQkJCQlyZXQpOwogCQkJcmV0dXJuOwogCQl9Ci0KLQkJLyoKLQkJICogRGlzYWJs ZSBkc2MgYmVmb3JlIHN3aXRjaCB0aGUgbW9kZSBhbmQgYWZ0ZXIgcHJlX21vZGVzZXQsCi0JCSAq IHRvIGd1YXJhbnRlZSB0aGF0IHByZXZpb3VzIGtpY2tvZmYgZmluaXNoZWQuCi0JCSAqLwotCQlf ZHB1X2VuY29kZXJfZHNjX2Rpc2FibGUoZHB1X2VuYyk7CiAJfQogCiAJLyogUmVzZXJ2ZSBkeW5h bWljIHJlc291cmNlcyBub3cuIEluZGljYXRpbmcgbm9uLUF0b21pY1Rlc3QgcGhhc2UgKi8KQEAg LTE2ODMsMTQgKzEyMzUsNiBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl92aXJ0X21vZGVfc2V0 KHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYywKIAkJZHB1X2VuYy0+aHdfcHBbaV0gPSAoc3Ry dWN0IGRwdV9od19waW5ncG9uZyAqKSBwcF9pdGVyLmh3OwogCX0KIAotCWRwdV9ybV9pbml0X2h3 X2l0ZXIoJmRzY19pdGVyLCBkcm1fZW5jLT5iYXNlLmlkLCBEUFVfSFdfQkxLX0RTQyk7Ci0JZm9y IChpID0gMDsgaSA8IE1BWF9DSEFOTkVMU19QRVJfRU5DOyBpKyspIHsKLQkJZHB1X2VuYy0+aHdf ZHNjW2ldID0gTlVMTDsKLQkJaWYgKCFkcHVfcm1fZ2V0X2h3KCZkcHVfa21zLT5ybSwgJmRzY19p dGVyKSkKLQkJCWJyZWFrOwotCQlkcHVfZW5jLT5od19kc2NbaV0gPSAoc3RydWN0IGRwdV9od19k c2MgKikgZHNjX2l0ZXIuaHc7Ci0JfQotCiAJZm9yIChpID0gMDsgaSA8IGRwdV9lbmMtPm51bV9w aHlzX2VuY3M7IGkrKykgewogCQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5cyA9IGRwdV9l bmMtPnBoeXNfZW5jc1tpXTsKIApAQCAtMTc4Miw3ICsxMzI2LDYgQEAgc3RhdGljIHZvaWQgZHB1 X2VuY29kZXJfdmlydF9lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jKQogewogCXN0 cnVjdCBkcHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5jID0gTlVMTDsKIAlpbnQgaSwgcmV0ID0gMDsK LQlzdHJ1Y3QgbXNtX2NvbXByZXNzaW9uX2luZm8gKmNvbXBfaW5mbyA9IE5VTEw7CiAJc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKmN1cl9tb2RlID0gTlVMTDsKIAogCWlmICghZHJtX2VuYykgewpA QCAtMTc5MCw3ICsxMzMzLDYgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfdmlydF9lbmFibGUo c3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jKQogCQlyZXR1cm47CiAJfQogCWRwdV9lbmMgPSB0 b19kcHVfZW5jb2Rlcl92aXJ0KGRybV9lbmMpOwotCWNvbXBfaW5mbyA9ICZkcHVfZW5jLT5tb2Rl X2luZm8uY29tcF9pbmZvOwogCWN1cl9tb2RlID0gJmRwdV9lbmMtPmJhc2UuY3J0Yy0+c3RhdGUt PmFkanVzdGVkX21vZGU7CiAKIAlEUFVfREVCVUdfRU5DKGRwdV9lbmMsICJcbiIpOwpAQCAtMTgy NSw3ICsxMzY3LDYgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfdmlydF9lbmFibGUoc3RydWN0 IGRybV9lbmNvZGVyICpkcm1fZW5jKQogCQlpZiAoIXBoeXMpCiAJCQljb250aW51ZTsKIAotCQlw aHlzLT5jb21wX3R5cGUgPSBjb21wX2luZm8tPmNvbXBfdHlwZTsKIAkJaWYgKHBoeXMgIT0gZHB1 X2VuYy0+Y3VyX21hc3RlcikgewogCQkJLyoqCiAJCQkgKiBvbiBETVMgcmVxdWVzdCwgdGhlIGVu Y29kZXIgd2lsbCBiZSBlbmFibGVkCkBAIC0xOTAwLDEzICsxNDQxLDYgQEAgc3RhdGljIHZvaWQg ZHB1X2VuY29kZXJfdmlydF9kaXNhYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYykKIAkJ CXBoeXMtPm9wcy5kaXNhYmxlKHBoeXMpOwogCX0KIAotCS8qCi0JICogZGlzYWJsZSBkc2MgYWZ0 ZXIgdGhlIHRyYW5zZmVyIGlzIGNvbXBsZXRlIChmb3IgY29tbWFuZCBtb2RlKQotCSAqIGFuZCBh ZnRlciBwaHlzaWNhbCBlbmNvZGVyIGlzIGRpc2FibGVkLCB0byBtYWtlIHN1cmUgdGltaW5nCi0J ICogZW5naW5lIGlzIGFscmVhZHkgZGlzYWJsZWQgKGZvciB2aWRlbyBtb2RlKS4KLQkgKi8KLQlf ZHB1X2VuY29kZXJfZHNjX2Rpc2FibGUoZHB1X2VuYyk7Ci0KIAkvKiBhZnRlciBwaHlzIHdhaXRz IGZvciBmcmFtZS1kb25lLCBzaG91bGQgYmUgbm8gbW9yZSBmcmFtZXMgcGVuZGluZyAqLwogCWlm IChhdG9taWNfeGNoZygmZHB1X2VuYy0+ZnJhbWVfZG9uZV90aW1lb3V0LCAwKSkgewogCQlEUFVf RVJST1IoImVuYyVkIHRpbWVvdXQgcGVuZGluZ1xuIiwgZHJtX2VuYy0+YmFzZS5pZCk7CkBAIC0y NzQyLDEyICsyMjc2LDYgQEAgdm9pZCBkcHVfZW5jb2Rlcl9wcmVwYXJlX2Zvcl9raWNrb2ZmKHN0 cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYywKIAkJCQkJZHB1X2VuYy0+Y3VyX21hc3Rlci0+Y29u bmVjdG9yLT5iYXNlLmlkLAogCQkJCQlyYyk7CiAJfQotCi0JaWYgKGRwdV9lbmNvZGVyX2lzX2Rz Y19lbmFibGVkKGRybV9lbmMpKSB7Ci0JCXJjID0gX2RwdV9lbmNvZGVyX2RzY19zZXR1cChkcHVf ZW5jKTsKLQkJaWYgKHJjKQotCQkJRFBVX0VSUk9SX0VOQyhkcHVfZW5jLCAiZmFpbGVkIHRvIHNl dHVwIERTQzogJWRcbiIsIHJjKTsKLQl9CiB9CiAKIHZvaWQgZHB1X2VuY29kZXJfa2lja29mZihz dHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2VuY29kZXIuaAppbmRleCBlODVlNWE0Li5iMjU2MTlkIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmgKQEAgLTE0NSwyMCArMTQ1LDYgQEAgaW50 IGRwdV9lbmNvZGVyX3dhaXRfZm9yX2V2ZW50KHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuY29k ZXIsCiB2b2lkIGRwdV9lbmNvZGVyX3ZpcnRfcmVzdG9yZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXIpOwogCiAvKioKLSAqIGRwdV9lbmNvZGVyX2lzX2RzY19lbmFibGVkIC0gY2hlY2sgaWYg ZW5jb2RlciBpcyBpbiBEU0MgbW9kZQotICogQGRybV9lbmM6IFBvaW50ZXIgdG8gZHJtIGVuY29k ZXIgb2JqZWN0Ci0gKiBAUmV0dXJuOiB0cnVlIGlmIGVuY29kZXIgaXMgaW4gRFNDIG1vZGUKLSAq LwotYm9vbCBkcHVfZW5jb2Rlcl9pc19kc2NfZW5hYmxlZChzdHJ1Y3QgZHJtX2VuY29kZXIgKmRy bV9lbmMpOwotCi0vKioKLSAqIGRwdV9lbmNvZGVyX2lzX2RzY19tZXJnZSAtIGNoZWNrIGlmIGVu Y29kZXIgaXMgaW4gRFNDIG1lcmdlIG1vZGUKLSAqIEBkcm1fZW5jOiBQb2ludGVyIHRvIGRybSBl bmNvZGVyIG9iamVjdAotICogQFJldHVybjogdHJ1ZSBpZiBlbmNvZGVyIGlzIGluIERTQyBtZXJn ZSBtb2RlCi0gKi8KLWJvb2wgZHB1X2VuY29kZXJfaXNfZHNjX21lcmdlKHN0cnVjdCBkcm1fZW5j b2RlciAqZHJtX2VuYyk7Ci0KLS8qKgogICogZHB1X2VuY29kZXJfY2hlY2tfbW9kZSAtIGNoZWNr IGlmIGdpdmVuIG1vZGUgaXMgc3VwcG9ydGVkIG9yIG5vdAogICogQGRybV9lbmM6IFBvaW50ZXIg dG8gZHJtIGVuY29kZXIgb2JqZWN0CiAgKiBAbW9kZTogTW9kZSB0byBiZSBjaGVja2VkCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzLmgg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzLmgKaW5kZXgg OWJiZjMzOWIuLjRlMmU2YzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9lbmNvZGVyX3BoeXMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfZW5jb2Rlcl9waHlzLmgKQEAgLTIzMiw3ICsyMzIsNiBAQCBzdHJ1Y3QgZHB1X2VuY29k ZXJfaXJxIHsKICAqIEBzcGxpdF9yb2xlOgkJUm9sZSB0byBwbGF5IGluIGEgc3BsaXQtcGFuZWwg Y29uZmlndXJhdGlvbgogICogQGludGZfbW9kZToJCUludGVyZmFjZSBtb2RlCiAgKiBAaW50Zl9p ZHg6CQlJbnRlcmZhY2UgaW5kZXggb24gZHB1IGhhcmR3YXJlCi0gKiBAY29tcF90eXBlOiAgICAg IFR5cGUgb2YgY29tcHJlc3Npb24gc3VwcG9ydGVkCiAgKiBAZW5jX3NwaW5sb2NrOglWaXJ0dWFs LUVuY29kZXItV2lkZSBTcGluIExvY2sgZm9yIElSUSBwdXJwb3NlcwogICogQGVuYWJsZV9zdGF0 ZToJRW5hYmxlIHN0YXRlIHRyYWNraW5nCiAgKiBAdmJsYW5rX3JlZmNvdW50OglSZWZlcmVuY2Ug Y291bnQgb2YgdmJsYW5rIHJlcXVlc3QKQEAgLTI2Miw3ICsyNjEsNiBAQCBzdHJ1Y3QgZHB1X2Vu Y29kZXJfcGh5cyB7CiAJZW51bSBkcHVfZW5jX3NwbGl0X3JvbGUgc3BsaXRfcm9sZTsKIAllbnVt IGRwdV9pbnRmX21vZGUgaW50Zl9tb2RlOwogCWVudW0gZHB1X2ludGYgaW50Zl9pZHg7Ci0JZW51 bSBtc21fZGlzcGxheV9jb21wcmVzc2lvbl90eXBlIGNvbXBfdHlwZTsKIAlzcGlubG9ja190ICpl bmNfc3BpbmxvY2s7CiAJZW51bSBkcHVfZW5jX2VuYWJsZV9zdGF0ZSBlbmFibGVfc3RhdGU7CiAJ YXRvbWljX3QgdmJsYW5rX3JlZmNvdW50OwpAQCAtMzg0LDcgKzM4Miw2IEBAIHN0cnVjdCBkcHVf ZW5jb2Rlcl9waHlzX3diIHsKICAqIEBzcGxpdF9yb2xlOgkJUm9sZSB0byBwbGF5IGluIGEgc3Bs aXQtcGFuZWwgY29uZmlndXJhdGlvbgogICogQGludGZfaWR4OgkJSW50ZXJmYWNlIGluZGV4IHRo aXMgcGh5c19lbmMgd2lsbCBjb250cm9sCiAgKiBAd2JfaWR4OgkJV3JpdGViYWNrIGluZGV4IHRo aXMgcGh5c19lbmMgd2lsbCBjb250cm9sCi0gKiBAY29tcF90eXBlOiAgICAgIFR5cGUgb2YgY29t cHJlc3Npb24gc3VwcG9ydGVkCiAgKiBAZW5jX3NwaW5sb2NrOglWaXJ0dWFsLUVuY29kZXItV2lk ZSBTcGluIExvY2sgZm9yIElSUSBwdXJwb3NlcwogICovCiBzdHJ1Y3QgZHB1X2VuY19waHlzX2lu aXRfcGFyYW1zIHsKQEAgLTM5NCw3ICszOTEsNiBAQCBzdHJ1Y3QgZHB1X2VuY19waHlzX2luaXRf cGFyYW1zIHsKIAllbnVtIGRwdV9lbmNfc3BsaXRfcm9sZSBzcGxpdF9yb2xlOwogCWVudW0gZHB1 X2ludGYgaW50Zl9pZHg7CiAJZW51bSBkcHVfd2Igd2JfaWR4OwotCWVudW0gbXNtX2Rpc3BsYXlf Y29tcHJlc3Npb25fdHlwZSBjb21wX3R5cGU7CiAJc3BpbmxvY2tfdCAqZW5jX3NwaW5sb2NrOwog fTsKIApAQCAtNDc5LDggKzQ3NSw3IEBAIHN0YXRpYyBpbmxpbmUgZW51bSBkcHVfM2RfYmxlbmRf bW9kZSBkcHVfZW5jb2Rlcl9oZWxwZXJfZ2V0XzNkX2JsZW5kX21vZGUoCiAKIAl0b3BvbG9neSA9 IGRwdV9jb25uZWN0b3JfZ2V0X3RvcG9sb2d5X25hbWUocGh5c19lbmMtPmNvbm5lY3Rvcik7CiAJ aWYgKHBoeXNfZW5jLT5zcGxpdF9yb2xlID09IEVOQ19ST0xFX1NPTE8gJiYKLQkJCSh0b3BvbG9n eSA9PSBEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVfM0RNRVJHRSB8fAotCQkJIHRvcG9sb2d5ID09 IERQVV9STV9UT1BPTE9HWV9EVUFMUElQRV8zRE1FUkdFX0RTQykpCisJCXRvcG9sb2d5ID09IERQ VV9STV9UT1BPTE9HWV9EVUFMUElQRV8zRE1FUkdFKQogCQlyZXR1cm4gQkxFTkRfM0RfSF9ST1df SU5UOwogCiAJcmV0dXJuIEJMRU5EXzNEX05PTkU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX2NtZC5jIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c19jbWQuYwppbmRleCA2Y2NmMzc4Li43MWUy ZTVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rl cl9waHlzX2NtZC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNv ZGVyX3BoeXNfY21kLmMKQEAgLTEyMzcsNyArMTIzNyw2IEBAIHN0cnVjdCBkcHVfZW5jb2Rlcl9w aHlzICpkcHVfZW5jb2Rlcl9waHlzX2NtZF9pbml0KAogCXBoeXNfZW5jLT5lbmNfc3BpbmxvY2sg PSBwLT5lbmNfc3BpbmxvY2s7CiAJY21kX2VuYy0+c3RyZWFtX3NlbCA9IDA7CiAJcGh5c19lbmMt PmVuYWJsZV9zdGF0ZSA9IERQVV9FTkNfRElTQUJMRUQ7Ci0JcGh5c19lbmMtPmNvbXBfdHlwZSA9 IHAtPmNvbXBfdHlwZTsKIAlmb3IgKGkgPSAwOyBpIDwgSU5UUl9JRFhfTUFYOyBpKyspIHsKIAkJ aXJxID0gJnBoeXNfZW5jLT5pcnFbaV07CiAJCUlOSVRfTElTVF9IRUFEKCZpcnEtPmNiLmxpc3Qp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJf cGh5c192aWQuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3Bo eXNfdmlkLmMKaW5kZXggMjdlYTJiMS4uZDZiNzJhMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c192aWQuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5jCkBAIC03Nyw5ICs3Nyw2 IEBAIHN0YXRpYyB2b2lkIGRybV9tb2RlX3RvX2ludGZfdGltaW5nX3BhcmFtcygKIAkgKiA8LS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBbaHZddG90YWwgLS0tLS0tLS0tLS0tLT4KIAkgKi8K IAl0aW1pbmctPndpZHRoID0gbW9kZS0+aGRpc3BsYXk7CS8qIGFjdGl2ZSB3aWR0aCAqLwotCWlm ICh2aWRfZW5jLT5iYXNlLmNvbXBfdHlwZSA9PSBNU01fRElTUExBWV9DT01QUkVTU0lPTl9EU0Mp Ci0JCXRpbWluZy0+d2lkdGggPSBESVZfUk9VTkRfVVAodGltaW5nLT53aWR0aCwgMyk7Ci0KIAl0 aW1pbmctPmhlaWdodCA9IG1vZGUtPnZkaXNwbGF5OwkvKiBhY3RpdmUgaGVpZ2h0ICovCiAJdGlt aW5nLT54cmVzID0gdGltaW5nLT53aWR0aDsKIAl0aW1pbmctPnlyZXMgPSB0aW1pbmctPmhlaWdo dDsKQEAgLTM3OSw4ICszNzYsNyBAQCBzdGF0aWMgYm9vbCBfZHB1X2VuY29kZXJfcGh5c19pc19k dWFsX2N0bChzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpCiAJCXJldHVybiBmYWxz ZTsKIAogCXRvcG9sb2d5ID0gZHB1X2Nvbm5lY3Rvcl9nZXRfdG9wb2xvZ3lfbmFtZShwaHlzX2Vu Yy0+Y29ubmVjdG9yKTsKLQlpZiAoKHRvcG9sb2d5ID09IERQVV9STV9UT1BPTE9HWV9EVUFMUElQ RV9EU0MpIHx8Ci0JCSh0b3BvbG9neSA9PSBEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEUpKQorCWlm ICh0b3BvbG9neSA9PSBEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEUpCiAJCXJldHVybiB0cnVlOwog CiAJcmV0dXJuIGZhbHNlOwpAQCAtOTE1LDcgKzkxMSw2IEBAIHN0cnVjdCBkcHVfZW5jb2Rlcl9w aHlzICpkcHVfZW5jb2Rlcl9waHlzX3ZpZF9pbml0KAogCXBoeXNfZW5jLT5zcGxpdF9yb2xlID0g cC0+c3BsaXRfcm9sZTsKIAlwaHlzX2VuYy0+aW50Zl9tb2RlID0gSU5URl9NT0RFX1ZJREVPOwog CXBoeXNfZW5jLT5lbmNfc3BpbmxvY2sgPSBwLT5lbmNfc3BpbmxvY2s7Ci0JcGh5c19lbmMtPmNv bXBfdHlwZSA9IHAtPmNvbXBfdHlwZTsKIAlmb3IgKGkgPSAwOyBpIDwgSU5UUl9JRFhfTUFYOyBp KyspIHsKIAkJaXJxID0gJnBoeXNfZW5jLT5pcnFbaV07CiAJCUlOSVRfTElTVF9IRUFEKCZpcnEt PmNiLmxpc3QpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2h3X2NhdGFsb2cuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRh bG9nLmMKaW5kZXggZGY3MzE0OC4uMTRlNjZjYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5jCkBAIC0zODAsMjkgKzM4MCw2IEBACiB9OwogCiAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgotICogRFNDIHN1YiBibG9ja3MgY29uZmlnCi0gKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotc3RhdGljIHN0cnVjdCBk cHVfZHNjX2NmZyBzZG04NDVfZHNjW10gPSB7Ci0JewotCS5uYW1lID0gImRzY18wIiwgLmlkID0g RFNDXzAsCi0JLmJhc2UgPSAweDgxMDAwLCAubGVuID0gMHgxNDAKLQl9LAotCXsKLQkubmFtZSA9 ICJkc2NfMSIsIC5pZCA9IERTQ18xLAotCS5iYXNlID0gMHg4MTQwMCwgLmxlbiA9IDB4MTQwCi0J fSwKLQl7Ci0JLm5hbWUgPSAiZHNjXzIiLCAuaWQgPSBEU0NfMiwKLQkuYmFzZSA9IDB4ODE4MDAs IC5sZW4gPSAweDE0MAotCX0sCi0JewotCS5uYW1lID0gImRzY18zIiwgLmlkID0gRFNDXzMsCi0J LmJhc2UgPSAweDgxYzAwLCAubGVuID0gMHgxNDAKLQl9LAotfTsKLQotLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIElOVEYg c3ViIGJsb2NrcyBjb25maWcKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLwogI2RlZmluZSBJTlRGX0JMSyhfbmFtZSwgX2lkLCBf YmFzZSwgX3R5cGUsIF9jdHJsX2lkKSBcCkBAIC01OTEsOCArNTY4LDYgQEAgdm9pZCBzZG04NDVf Y2ZnX2luaXQoc3RydWN0IGRwdV9tZHNzX2NmZyAqZHB1X2NmZykKIAkJLmRzID0gc2RtODQ1X2Rz LAogCQkucGluZ3BvbmdfY291bnQgPSBBUlJBWV9TSVpFKHNkbTg0NV9wcCksCiAJCS5waW5ncG9u ZyA9IHNkbTg0NV9wcCwKLQkJLmRzY19jb3VudCA9IEFSUkFZX1NJWkUoc2RtODQ1X2RzYyksCi0J CS5kc2MgPSBzZG04NDVfZHNjLAogCQkuY2RtX2NvdW50ID0gQVJSQVlfU0laRShzZG04NDVfY2Rt KSwKIAkJLmNkbSA9IHNkbTg0NV9jZG0sCiAJCS5pbnRmX2NvdW50ID0gQVJSQVlfU0laRShzZG04 NDVfaW50ZiksCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf aHdfY2F0YWxvZy5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFs b2cuaAppbmRleCA0MGQ5MGMzLi5jZWZmM2I3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmgKQEAgLTE5OSw3ICsxOTksNiBAQCBlbnVtIHsKICAq IEBEUFVfUElOR1BPTkdfVEUyICAgICAgICBBZGRpdGlvbmFsIHRlYXIgY2hlY2sgYmxvY2sgZm9y IHNwbGl0IHBpcGVzCiAgKiBARFBVX1BJTkdQT05HX1NQTElUICAgICAgUFAgYmxvY2sgc3VwcG9y dHMgc3BsaXQgZmlmbwogICogQERQVV9QSU5HUE9OR19TTEFWRSAgICAgIFBQIGJsb2NrIGlzIGEg c3VpdGFibGUgc2xhdmUgZm9yIHNwbGl0IGZpZm8KLSAqIEBEUFVfUElOR1BPTkdfRFNDLCAgICAg ICBEaXNwbGF5IHN0cmVhbSBjb21wcmVzc2lvbiBibG9ja3MKICAqIEBEUFVfUElOR1BPTkdfRElU SEVSLCAgICBEaXRoZXIgYmxvY2tzCiAgKiBARFBVX1BJTkdQT05HX01BWAogICovCkBAIC0yMDgs NyArMjA3LDYgQEAgZW51bSB7CiAJRFBVX1BJTkdQT05HX1RFMiwKIAlEUFVfUElOR1BPTkdfU1BM SVQsCiAJRFBVX1BJTkdQT05HX1NMQVZFLAotCURQVV9QSU5HUE9OR19EU0MsCiAJRFBVX1BJTkdQ T05HX0RJVEhFUiwKIAlEUFVfUElOR1BPTkdfTUFYCiB9OwpAQCAtNDg5LDcgKzQ4Nyw2IEBAIHN0 cnVjdCBkcHVfZHNwcF9zdWJfYmxrcyB7CiBzdHJ1Y3QgZHB1X3Bpbmdwb25nX3N1Yl9ibGtzIHsK IAlzdHJ1Y3QgZHB1X3BwX2JsayB0ZTsKIAlzdHJ1Y3QgZHB1X3BwX2JsayB0ZTI7Ci0Jc3RydWN0 IGRwdV9wcF9ibGsgZHNjOwogCXN0cnVjdCBkcHVfcHBfYmxrIGRpdGhlcjsKIH07CiAKQEAgLTY3 MSwxNiArNjY4LDYgQEAgc3RydWN0IGRwdV9waW5ncG9uZ19jZmcgIHsKIH07CiAKIC8qKgotICog c3RydWN0IGRwdV9kc2NfY2ZnIC0gaW5mb3JtYXRpb24gb2YgRFNDIGJsb2NrcwotICogQGlkICAg ICAgICAgICAgICAgICBlbnVtIGlkZW50aWZ5aW5nIHRoaXMgYmxvY2sKLSAqIEBiYXNlICAgICAg ICAgICAgICAgcmVnaXN0ZXIgb2Zmc2V0IG9mIHRoaXMgYmxvY2sKLSAqIEBmZWF0dXJlcyAgICAg ICAgICAgYml0IG1hc2sgaWRlbnRpZnlpbmcgc3ViLWJsb2Nrcy9mZWF0dXJlcwotICovCi1zdHJ1 Y3QgZHB1X2RzY19jZmcgewotCURQVV9IV19CTEtfSU5GTzsKLX07Ci0KLS8qKgogICogc3RydWN0 IGRwdV9jZG1fY2ZnIC0gaW5mb3JtYXRpb24gb2YgY2hyb21hIGRvd24gYmxvY2tzCiAgKiBAaWQg ICAgICAgICAgICAgICAgIGVudW0gaWRlbnRpZnlpbmcgdGhpcyBibG9jawogICogQGJhc2UgICAg ICAgICAgICAgICByZWdpc3RlciBvZmZzZXQgb2YgdGhpcyBibG9jawpAQCAtOTE2LDkgKzkwMyw2 IEBAIHN0cnVjdCBkcHVfbWRzc19jZmcgewogCXUzMiBwaW5ncG9uZ19jb3VudDsKIAlzdHJ1Y3Qg ZHB1X3Bpbmdwb25nX2NmZyAqcGluZ3Bvbmc7CiAKLQl1MzIgZHNjX2NvdW50OwotCXN0cnVjdCBk cHVfZHNjX2NmZyAqZHNjOwotCiAJdTMyIGNkbV9jb3VudDsKIAlzdHJ1Y3QgZHB1X2NkbV9jZmcg KmNkbTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3 X2RzYy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2RzYy5jCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzNjMzBlLi4wMDAwMDAwCi0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19kc2MuYworKysgL2Rldi9udWxsCkBAIC0xLDI1 MiArMCwwIEBACi0vKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAxOCwgVGhlIExpbnV4IEZvdW5kYXRp b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSAqIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFu ZAotICogb25seSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICogR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqLwotCi0jaW5jbHVkZSAiZHB1 X2h3X21kc3MuaCIKLSNpbmNsdWRlICJkcHVfaHdpby5oIgotI2luY2x1ZGUgImRwdV9od19jYXRh bG9nLmgiCi0jaW5jbHVkZSAiZHB1X2h3X2RzYy5oIgotI2luY2x1ZGUgImRwdV9od19waW5ncG9u Zy5oIgotI2luY2x1ZGUgImRwdV9kYmcuaCIKLSNpbmNsdWRlICJkcHVfa21zLmgiCi0KLSNkZWZp bmUgRFNDX0NPTU1PTl9NT0RFCSAgICAgICAgICAgICAgICAweDAwMAotI2RlZmluZSBEU0NfRU5D ICAgICAgICAgICAgICAgICAgICAgICAgIDBYMDA0Ci0jZGVmaW5lIERTQ19QSUNUVVJFICAgICAg ICAgICAgICAgICAgICAgMHgwMDgKLSNkZWZpbmUgRFNDX1NMSUNFICAgICAgICAgICAgICAgICAg ICAgICAweDAwQwotI2RlZmluZSBEU0NfQ0hVTktfU0laRSAgICAgICAgICAgICAgICAgIDB4MDEw Ci0jZGVmaW5lIERTQ19ERUxBWSAgICAgICAgICAgICAgICAgICAgICAgMHgwMTQKLSNkZWZpbmUg RFNDX1NDQUxFX0lOSVRJQUwgICAgICAgICAgICAgICAweDAxOAotI2RlZmluZSBEU0NfU0NBTEVf REVDX0lOVEVSVkFMICAgICAgICAgIDB4MDFDCi0jZGVmaW5lIERTQ19TQ0FMRV9JTkNfSU5URVJW QUwgICAgICAgICAgMHgwMjAKLSNkZWZpbmUgRFNDX0ZJUlNUX0xJTkVfQlBHX09GRlNFVCAgICAg ICAweDAyNAotI2RlZmluZSBEU0NfQlBHX09GRlNFVCAgICAgICAgICAgICAgICAgIDB4MDI4Ci0j ZGVmaW5lIERTQ19EU0NfT0ZGU0VUICAgICAgICAgICAgICAgICAgMHgwMkMKLSNkZWZpbmUgRFND X0ZMQVRORVNTICAgICAgICAgICAgICAgICAgICAweDAzMAotI2RlZmluZSBEU0NfUkNfTU9ERUxf U0laRSAgICAgICAgICAgICAgIDB4MDM0Ci0jZGVmaW5lIERTQ19SQyAgICAgICAgICAgICAgICAg ICAgICAgICAgMHgwMzgKLSNkZWZpbmUgRFNDX1JDX0JVRl9USFJFU0ggICAgICAgICAgICAgICAw eDAzQwotI2RlZmluZSBEU0NfUkFOR0VfTUlOX1FQICAgICAgICAgICAgICAgIDB4MDc0Ci0jZGVm aW5lIERTQ19SQU5HRV9NQVhfUVAgICAgICAgICAgICAgICAgMHgwQjAKLSNkZWZpbmUgRFNDX1JB TkdFX0JQR19PRkZTRVQgICAgICAgICAgICAweDBFQwotCi1zdGF0aWMgdm9pZCBkcHVfaHdfZHNj X2Rpc2FibGUoc3RydWN0IGRwdV9od19kc2MgKmRzYykKLXsKLQlzdHJ1Y3QgZHB1X2h3X2Jsa19y ZWdfbWFwICpkc2NfYyA9ICZkc2MtPmh3OwotCi0JRFBVX1JFR19XUklURShkc2NfYywgRFNDX0NP TU1PTl9NT0RFLCAwKTsKLX0KLQotc3RhdGljIHZvaWQgZHB1X2h3X2RzY19jb25maWcoc3RydWN0 IGRwdV9od19kc2MgKmh3X2RzYywKLQkJc3RydWN0IG1zbV9kaXNwbGF5X2RzY19pbmZvICpkc2Ms IHUzMiBtb2RlLAotCQlib29sIGljaF9yZXNldF9vdmVycmlkZSkKLXsKLQl1MzIgZGF0YTsKLQlp bnQgYnBwLCBsc2I7Ci0JdTMyIGluaXRpYWxfbGluZXMgPSBkc2MtPmluaXRpYWxfbGluZXM7Ci0J Ym9vbCBpc19jbWRfbW9kZSA9ICEobW9kZSAmIEJJVCgyKSk7Ci0Jc3RydWN0IGRwdV9od19ibGtf cmVnX21hcCAqZHNjX2MgPSAmaHdfZHNjLT5odzsKLQotCURQVV9SRUdfV1JJVEUoZHNjX2MsIERT Q19DT01NT05fTU9ERSwgbW9kZSk7Ci0KLQlkYXRhID0gMDsKLQlpZiAoaWNoX3Jlc2V0X292ZXJy aWRlKQotCQlkYXRhID0gMyA8PCAyODsKLQotCWlmIChpc19jbWRfbW9kZSkKLQkJaW5pdGlhbF9s aW5lcyArPSAxOwotCi0JZGF0YSB8PSAoaW5pdGlhbF9saW5lcyA8PCAyMCk7Ci0JZGF0YSB8PSAo KGRzYy0+c2xpY2VfbGFzdF9ncm91cF9zaXplIC0gMSkgPDwgMTgpOwotCS8qIGJwcCBpcyA2LjQg Zm9ybWF0LCA0IExTQnMgYml0cyBhcmUgZm9yIGZyYWN0aW9uYWwgcGFydCAqLwotCWxzYiA9IGRz Yy0+YnBwICUgNDsKLQlicHAgPSBkc2MtPmJwcCAvIDQ7Ci0JYnBwICo9IDQ7CS8qIGVpdGhlciA4 IG9yIDEyICovCi0JYnBwIDw8PSA0OwotCWJwcCB8PSBsc2I7Ci0JZGF0YSB8PSAoYnBwIDw8IDgp OwotCWRhdGEgfD0gKGRzYy0+YmxvY2tfcHJlZF9lbmFibGUgPDwgNyk7Ci0JZGF0YSB8PSAoZHNj LT5saW5lX2J1Zl9kZXB0aCA8PCAzKTsKLQlkYXRhIHw9IChkc2MtPmVuYWJsZV80MjIgPDwgMik7 Ci0JZGF0YSB8PSAoZHNjLT5jb252ZXJ0X3JnYiA8PCAxKTsKLQlkYXRhIHw9IGRzYy0+aW5wdXRf MTBfYml0czsKLQotCURQVV9SRUdfV1JJVEUoZHNjX2MsIERTQ19FTkMsIGRhdGEpOwotCi0JZGF0 YSA9IGRzYy0+cGljX3dpZHRoIDw8IDE2OwotCWRhdGEgfD0gZHNjLT5waWNfaGVpZ2h0OwotCURQ VV9SRUdfV1JJVEUoZHNjX2MsIERTQ19QSUNUVVJFLCBkYXRhKTsKLQotCWRhdGEgPSBkc2MtPnNs aWNlX3dpZHRoIDw8IDE2OwotCWRhdGEgfD0gZHNjLT5zbGljZV9oZWlnaHQ7Ci0JRFBVX1JFR19X UklURShkc2NfYywgRFNDX1NMSUNFLCBkYXRhKTsKLQotCWRhdGEgPSBkc2MtPmNodW5rX3NpemUg PDwgMTY7Ci0JRFBVX1JFR19XUklURShkc2NfYywgRFNDX0NIVU5LX1NJWkUsIGRhdGEpOwotCi0J ZGF0YSA9IGRzYy0+aW5pdGlhbF9kZWNfZGVsYXkgPDwgMTY7Ci0JZGF0YSB8PSBkc2MtPmluaXRp YWxfeG1pdF9kZWxheTsKLQlEUFVfUkVHX1dSSVRFKGRzY19jLCBEU0NfREVMQVksIGRhdGEpOwot Ci0JZGF0YSA9IGRzYy0+aW5pdGlhbF9zY2FsZV92YWx1ZTsKLQlEUFVfUkVHX1dSSVRFKGRzY19j LCBEU0NfU0NBTEVfSU5JVElBTCwgZGF0YSk7Ci0KLQlkYXRhID0gZHNjLT5zY2FsZV9kZWNyZW1l bnRfaW50ZXJ2YWw7Ci0JRFBVX1JFR19XUklURShkc2NfYywgRFNDX1NDQUxFX0RFQ19JTlRFUlZB TCwgZGF0YSk7Ci0KLQlkYXRhID0gZHNjLT5zY2FsZV9pbmNyZW1lbnRfaW50ZXJ2YWw7Ci0JRFBV X1JFR19XUklURShkc2NfYywgRFNDX1NDQUxFX0lOQ19JTlRFUlZBTCwgZGF0YSk7Ci0KLQlkYXRh ID0gZHNjLT5maXJzdF9saW5lX2JwZ19vZmZzZXQ7Ci0JRFBVX1JFR19XUklURShkc2NfYywgRFND X0ZJUlNUX0xJTkVfQlBHX09GRlNFVCwgZGF0YSk7Ci0KLQlkYXRhID0gZHNjLT5uZmxfYnBnX29m ZnNldCA8PCAxNjsKLQlkYXRhIHw9IGRzYy0+c2xpY2VfYnBnX29mZnNldDsKLQlEUFVfUkVHX1dS SVRFKGRzY19jLCBEU0NfQlBHX09GRlNFVCwgZGF0YSk7Ci0KLQlkYXRhID0gZHNjLT5pbml0aWFs X29mZnNldCA8PCAxNjsKLQlkYXRhIHw9IGRzYy0+ZmluYWxfb2Zmc2V0OwotCURQVV9SRUdfV1JJ VEUoZHNjX2MsIERTQ19EU0NfT0ZGU0VULCBkYXRhKTsKLQotCWRhdGEgPSBkc2MtPmRldF90aHJl c2hfZmxhdG5lc3MgPDwgMTA7Ci0JZGF0YSB8PSBkc2MtPm1heF9xcF9mbGF0bmVzcyA8PCA1Owot CWRhdGEgfD0gZHNjLT5taW5fcXBfZmxhdG5lc3M7Ci0JRFBVX1JFR19XUklURShkc2NfYywgRFND X0ZMQVRORVNTLCBkYXRhKTsKLQotCWRhdGEgPSBkc2MtPnJjX21vZGVsX3NpemU7Ci0JRFBVX1JF R19XUklURShkc2NfYywgRFNDX1JDX01PREVMX1NJWkUsIGRhdGEpOwotCi0JZGF0YSA9IGRzYy0+ dGd0X29mZnNldF9sbyA8PCAxODsKLQlkYXRhIHw9IGRzYy0+dGd0X29mZnNldF9oaSA8PCAxNDsK LQlkYXRhIHw9IGRzYy0+cXVhbnRfaW5jcl9saW1pdDEgPDwgOTsKLQlkYXRhIHw9IGRzYy0+cXVh bnRfaW5jcl9saW1pdDAgPDwgNDsKLQlkYXRhIHw9IGRzYy0+ZWRnZV9mYWN0b3I7Ci0JRFBVX1JF R19XUklURShkc2NfYywgRFNDX1JDLCBkYXRhKTsKLX0KLQotc3RhdGljIHZvaWQgZHB1X2h3X2Rz Y19jb25maWdfdGhyZXNoKHN0cnVjdCBkcHVfaHdfZHNjICpod19kc2MsCi0JCXN0cnVjdCBtc21f ZGlzcGxheV9kc2NfaW5mbyAqZHNjKQotewotCXUzMiAqbHA7Ci0JY2hhciAqY3A7Ci0JaW50IGk7 Ci0KLQlzdHJ1Y3QgZHB1X2h3X2Jsa19yZWdfbWFwICpkc2NfYyA9ICZod19kc2MtPmh3OwotCXUz MiBvZmYgPSAweDA7Ci0KLQlscCA9IGRzYy0+YnVmX3RocmVzaDsKLQlvZmYgPSBEU0NfUkNfQlVG X1RIUkVTSDsKLQlmb3IgKGkgPSAwOyBpIDwgMTQ7IGkrKykgewotCQlEUFVfUkVHX1dSSVRFKGRz Y19jLCBvZmYsICpscCsrKTsKLQkJb2ZmICs9IDQ7Ci0JfQotCi0JY3AgPSBkc2MtPnJhbmdlX21p bl9xcDsKLQlvZmYgPSBEU0NfUkFOR0VfTUlOX1FQOwotCWZvciAoaSA9IDA7IGkgPCAxNTsgaSsr KSB7Ci0JCURQVV9SRUdfV1JJVEUoZHNjX2MsIG9mZiwgKmNwKyspOwotCQlvZmYgKz0gNDsKLQl9 Ci0KLQljcCA9IGRzYy0+cmFuZ2VfbWF4X3FwOwotCW9mZiA9IERTQ19SQU5HRV9NQVhfUVA7Ci0J Zm9yIChpID0gMDsgaSA8IDE1OyBpKyspIHsKLQkJRFBVX1JFR19XUklURShkc2NfYywgb2ZmLCAq Y3ArKyk7Ci0JCW9mZiArPSA0OwotCX0KLQotCWNwID0gZHNjLT5yYW5nZV9icGdfb2Zmc2V0Owot CW9mZiA9IERTQ19SQU5HRV9CUEdfT0ZGU0VUOwotCWZvciAoaSA9IDA7IGkgPCAxNTsgaSsrKSB7 Ci0JCURQVV9SRUdfV1JJVEUoZHNjX2MsIG9mZiwgKmNwKyspOwotCQlvZmYgKz0gNDsKLQl9Ci19 Ci0KLXN0YXRpYyBzdHJ1Y3QgZHB1X2RzY19jZmcgKl9kc2Nfb2Zmc2V0KGVudW0gZHB1X2RzYyBk c2MsCi0JCXN0cnVjdCBkcHVfbWRzc19jZmcgKm0sCi0JCXZvaWQgX19pb21lbSAqYWRkciwKLQkJ c3RydWN0IGRwdV9od19ibGtfcmVnX21hcCAqYikKLXsKLQlpbnQgaTsKLQotCWZvciAoaSA9IDA7 IGkgPCBtLT5kc2NfY291bnQ7IGkrKykgewotCQlpZiAoZHNjID09IG0tPmRzY1tpXS5pZCkgewot CQkJYi0+YmFzZV9vZmYgPSBhZGRyOwotCQkJYi0+YmxrX29mZiA9IG0tPmRzY1tpXS5iYXNlOwot CQkJYi0+bGVuZ3RoID0gbS0+ZHNjW2ldLmxlbjsKLQkJCWItPmh3dmVyc2lvbiA9IG0tPmh3dmVy c2lvbjsKLQkJCWItPmxvZ19tYXNrID0gRFBVX0RCR19NQVNLX0RTQzsKLQkJCXJldHVybiAmbS0+ ZHNjW2ldOwotCQl9Ci0JfQotCi0JcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyB2b2lkIF9zZXR1 cF9kc2Nfb3BzKHN0cnVjdCBkcHVfaHdfZHNjX29wcyAqb3BzLAotCQl1bnNpZ25lZCBsb25nIGNh cCkKLXsKLQlvcHMtPmRzY19kaXNhYmxlID0gZHB1X2h3X2RzY19kaXNhYmxlOwotCW9wcy0+ZHNj X2NvbmZpZyA9IGRwdV9od19kc2NfY29uZmlnOwotCW9wcy0+ZHNjX2NvbmZpZ190aHJlc2ggPSBk cHVfaHdfZHNjX2NvbmZpZ190aHJlc2g7Ci19OwotCi1zdGF0aWMgc3RydWN0IGRwdV9od19ibGtf b3BzIGRwdV9od19vcHMgPSB7Ci0JLnN0YXJ0ID0gTlVMTCwKLQkuc3RvcCA9IE5VTEwsCi19Owot Ci1zdHJ1Y3QgZHB1X2h3X2RzYyAqZHB1X2h3X2RzY19pbml0KGVudW0gZHB1X2RzYyBpZHgsCi0J CXZvaWQgX19pb21lbSAqYWRkciwKLQkJc3RydWN0IGRwdV9tZHNzX2NmZyAqbSkKLXsKLQlzdHJ1 Y3QgZHB1X2h3X2RzYyAqYzsKLQlzdHJ1Y3QgZHB1X2RzY19jZmcgKmNmZzsKLQlpbnQgcmM7Ci0K LQljID0ga3phbGxvYyhzaXplb2YoKmMpLCBHRlBfS0VSTkVMKTsKLQlpZiAoIWMpCi0JCXJldHVy biBFUlJfUFRSKC1FTk9NRU0pOwotCi0JY2ZnID0gX2RzY19vZmZzZXQoaWR4LCBtLCBhZGRyLCAm Yy0+aHcpOwotCWlmIChJU19FUlJfT1JfTlVMTChjZmcpKSB7Ci0JCWtmcmVlKGMpOwotCQlyZXR1 cm4gRVJSX1BUUigtRUlOVkFMKTsKLQl9Ci0KLQljLT5pZHggPSBpZHg7Ci0JYy0+Y2FwcyA9IGNm ZzsKLQlfc2V0dXBfZHNjX29wcygmYy0+b3BzLCBjLT5jYXBzLT5mZWF0dXJlcyk7Ci0KLQlyYyA9 IGRwdV9od19ibGtfaW5pdCgmYy0+YmFzZSwgRFBVX0hXX0JMS19EU0MsIGlkeCwgJmRwdV9od19v cHMpOwotCWlmIChyYykgewotCQlEUFVfRVJST1IoImZhaWxlZCB0byBpbml0IGh3IGJsayAlZFxu IiwgcmMpOwotCQlnb3RvIGJsa19pbml0X2Vycm9yOwotCX0KLQotCWRwdV9kYmdfcmVnX3JlZ2lz dGVyX2R1bXBfcmFuZ2UoRFBVX0RCR19OQU1FLCBjZmctPm5hbWUsIGMtPmh3LmJsa19vZmYsCi0J CWMtPmh3LmJsa19vZmYgKyBjLT5ody5sZW5ndGgsIGMtPmh3Lnhpbl9pZCk7Ci0KLQlyZXR1cm4g YzsKLQotYmxrX2luaXRfZXJyb3I6Ci0Ja3pmcmVlKGMpOwotCi0JcmV0dXJuIEVSUl9QVFIocmMp OwotfQotCi12b2lkIGRwdV9od19kc2NfZGVzdHJveShzdHJ1Y3QgZHB1X2h3X2RzYyAqZHNjKQot ewotCWlmIChkc2MpCi0JCWRwdV9od19ibGtfZGVzdHJveSgmZHNjLT5iYXNlKTsKLQlrZnJlZShk c2MpOwotfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3 X2RzYy5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2RzYy5oCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmFiOTIwLi4wMDAwMDAwCi0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19kc2MuaAorKysgL2Rldi9udWxsCkBAIC0xLDEw MCArMCwwIEBACi0vKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAxOCwgVGhlIExpbnV4IEZvdW5kYXRp b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSAqIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFu ZAotICogb25seSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICogR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqLwotCi0jaWZuZGVmIF9EUFVf SFdfRFNDX0gKLSNkZWZpbmUgX0RQVV9IV19EU0NfSAotCi0jaW5jbHVkZSAiZHB1X2h3X2NhdGFs b2cuaCIKLSNpbmNsdWRlICJkcHVfaHdfbWRzcy5oIgotI2luY2x1ZGUgImRwdV9od191dGlsLmgi Ci0jaW5jbHVkZSAiZHB1X2h3X2Jsay5oIgotCi1zdHJ1Y3QgZHB1X2h3X2RzYzsKLXN0cnVjdCBt c21fZGlzcGxheV9kc2NfaW5mbzsKLQotI2RlZmluZSBEU0NfTU9ERV9TUExJVF9QQU5FTCAgICAg ICAgICAgIEJJVCgwKQotI2RlZmluZSBEU0NfTU9ERV9NVUxUSVBMRVggICAgICAgICAgICAgIEJJ VCgxKQotI2RlZmluZSBEU0NfTU9ERV9WSURFTyAgICAgICAgICAgICAgICAgIEJJVCgyKQotCi0v KioKLSAqIHN0cnVjdCBkcHVfaHdfZHNjX29wcyAtIGludGVyZmFjZSB0byB0aGUgZHNjIGhhcmR3 YXJlIGRyaXZlciBmdW5jdGlvbnMKLSAqIEFzc3VtcHRpb24gaXMgdGhlc2UgZnVuY3Rpb25zIHdp bGwgYmUgY2FsbGVkIGFmdGVyIGNsb2NrcyBhcmUgZW5hYmxlZAotICovCi1zdHJ1Y3QgZHB1X2h3 X2RzY19vcHMgewotCS8qKgotCSAqIGRzY19kaXNhYmxlIC0gZGlzYWJsZSBkc2MKLQkgKiBAaHdf ZHNjOiBQb2ludGVyIHRvIGRzYyBjb250ZXh0Ci0JICovCi0Jdm9pZCAoKmRzY19kaXNhYmxlKShz dHJ1Y3QgZHB1X2h3X2RzYyAqaHdfZHNjKTsKLQotCS8qKgotCSAqIGRzY19jb25maWcgLSBjb25m aWd1cmVzIGRzYyBlbmNvZGVyCi0JICogQGh3X2RzYzogUG9pbnRlciB0byBkc2MgY29udGV4dAot CSAqIEBkc2M6IHBhbmVsIGRzYyBwYXJhbWV0ZXJzCi0JICogQG1vZGU6IGRzYyB0b3BvbG9neSBt b2RlIHRvIGJlIHNldAotCSAqIEBpY2hfcmVzZXRfb3ZlcnJpZGU6IG9wdGlvbiB0byByZXNldCBp Y2gKLQkgKi8KLQl2b2lkICgqZHNjX2NvbmZpZykoc3RydWN0IGRwdV9od19kc2MgKmh3X2RzYywK LQkJCXN0cnVjdCBtc21fZGlzcGxheV9kc2NfaW5mbyAqZHNjLAotCQkJdTMyIG1vZGUsIGJvb2wg aWNoX3Jlc2V0X292ZXJyaWRlKTsKLQotCS8qKgotCSAqIGRzY19jb25maWdfdGhyZXNoIC0gcHJv Z3JhbXMgcGFuZWwgdGhyZXNob2xkcwotCSAqIEBod19kc2M6IFBvaW50ZXIgdG8gZHNjIGNvbnRl eHQKLQkgKiBAZHNjOiBwYW5lbCBkc2MgcGFyYW1ldGVycwotCSAqLwotCXZvaWQgKCpkc2NfY29u ZmlnX3RocmVzaCkoc3RydWN0IGRwdV9od19kc2MgKmh3X2RzYywKLQkJCXN0cnVjdCBtc21fZGlz cGxheV9kc2NfaW5mbyAqZHNjKTsKLX07Ci0KLXN0cnVjdCBkcHVfaHdfZHNjIHsKLQlzdHJ1Y3Qg ZHB1X2h3X2JsayBiYXNlOwotCXN0cnVjdCBkcHVfaHdfYmxrX3JlZ19tYXAgaHc7Ci0KLQkvKiBk c2MgKi8KLQllbnVtIGRwdV9kc2MgaWR4OwotCWNvbnN0IHN0cnVjdCBkcHVfZHNjX2NmZyAqY2Fw czsKLQotCS8qIG9wcyAqLwotCXN0cnVjdCBkcHVfaHdfZHNjX29wcyBvcHM7Ci19OwotCi0vKioK LSAqIGRwdV9od19kc2MgLSBjb252ZXJ0IGJhc2Ugb2JqZWN0IGRwdV9od19iYXNlIHRvIGNvbnRh aW5lcgotICogQGh3OiBQb2ludGVyIHRvIGJhc2UgaGFyZHdhcmUgYmxvY2sKLSAqIHJldHVybjog UG9pbnRlciB0byBoYXJkd2FyZSBibG9jayBjb250YWluZXIKLSAqLwotc3RhdGljIGlubGluZSBz dHJ1Y3QgZHB1X2h3X2RzYyAqdG9fZHB1X2h3X2RzYyhzdHJ1Y3QgZHB1X2h3X2JsayAqaHcpCi17 Ci0JcmV0dXJuIGNvbnRhaW5lcl9vZihodywgc3RydWN0IGRwdV9od19kc2MsIGJhc2UpOwotfQot Ci0vKioKLSAqIGRwdV9od19kc2NfaW5pdCAtIGluaXRpYWxpemVzIHRoZSBkc2MgYmxvY2sgZm9y IHRoZSBwYXNzZWQKLSAqICAgICAgICAgICAgICAgICAgIGRzYyBpZHguCi0gKiBAaWR4OiAgRFND IGluZGV4IGZvciB3aGljaCBkcml2ZXIgb2JqZWN0IGlzIHJlcXVpcmVkCi0gKiBAYWRkcjogTWFw cGVkIHJlZ2lzdGVyIGlvIGFkZHJlc3Mgb2YgTURQCi0gKiBAbTogICAgUG9pbnRlciB0byBtZHNz IGNhdGFsb2cgZGF0YQotICogUmV0dXJuczogRXJyb3IgY29kZSBvciBhbGxvY2F0ZWQgZHB1X2h3 X2RzYyBjb250ZXh0Ci0gKi8KLXN0cnVjdCBkcHVfaHdfZHNjICpkcHVfaHdfZHNjX2luaXQoZW51 bSBkcHVfZHNjIGlkeCwKLQkJdm9pZCBfX2lvbWVtICphZGRyLAotCQlzdHJ1Y3QgZHB1X21kc3Nf Y2ZnICptKTsKLQotLyoqCi0gKiBkcHVfaHdfZHNjX2Rlc3Ryb3kgLSBkZXN0cm95cyBkc2MgZHJp dmVyIGNvbnRleHQKLSAqICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCBiZSBjYWxsZWQgdG8g ZnJlZSB0aGUgY29udGV4dAotICogQGRzYzogICBQb2ludGVyIHRvIGRzYyBkcml2ZXIgY29udGV4 dCByZXR1cm5lZCBieSBkcHVfaHdfZHNjX2luaXQKLSAqLwotdm9pZCBkcHVfaHdfZHNjX2Rlc3Ry b3koc3RydWN0IGRwdV9od19kc2MgKmRzYyk7Ci0KLSNlbmRpZiAvKl9EUFVfSFdfRFNDX0ggKi8K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19tZHNzLmgg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfbWRzcy5oCmluZGV4IDVlZGUy YjUuLjcwZDU3YzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9od19tZHNzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X21k c3MuaApAQCAtMTA2LDcgKzEwNiw2IEBAIGVudW0gZHB1X2h3X2Jsa190eXBlIHsKIAlEUFVfSFdf QkxLX1BJTkdQT05HLAogCURQVV9IV19CTEtfSU5URiwKIAlEUFVfSFdfQkxLX1dCLAotCURQVV9I V19CTEtfRFNDLAogCURQVV9IV19CTEtfTUFYLAogfTsKIApAQCAtMjA4LDE3ICsyMDcsNiBAQCBl bnVtIGRwdV9waW5ncG9uZyB7CiAJUElOR1BPTkdfTUFYCiB9OwogCi1lbnVtIGRwdV9kc2Mgewot CURTQ19OT05FID0gMCwKLQlEU0NfMCwKLQlEU0NfMSwKLQlEU0NfMiwKLQlEU0NfMywKLQlEU0Nf NCwKLQlEU0NfNSwKLQlEU0NfTUFYCi19OwotCiBlbnVtIGRwdV9pbnRmIHsKIAlJTlRGXzAgPSAx LAogCUlOVEZfMSwKQEAgLTQ4Miw5ICs0NzAsOCBAQCBzdHJ1Y3QgZHB1X21kc3NfY29sb3Igewog I2RlZmluZSBEUFVfREJHX01BU0tfV0IgICAgICAgKDEgPDwgOCkKICNkZWZpbmUgRFBVX0RCR19N QVNLX1RPUCAgICAgICgxIDw8IDkpCiAjZGVmaW5lIERQVV9EQkdfTUFTS19WQklGICAgICAoMSA8 PCAxMCkKLSNkZWZpbmUgRFBVX0RCR19NQVNLX0RTQyAgICAgICgxIDw8IDExKQotI2RlZmluZSBE UFVfREJHX01BU0tfUk9UICAgICAgKDEgPDwgMTIpCi0jZGVmaW5lIERQVV9EQkdfTUFTS19EUyAg ICAgICAoMSA8PCAxMykKKyNkZWZpbmUgRFBVX0RCR19NQVNLX1JPVCAgICAgICgxIDw8IDExKQor I2RlZmluZSBEUFVfREJHX01BU0tfRFMgICAgICAgKDEgPDwgMTIpCiAKIC8qKgogICogc3RydWN0 IGRwdV9od19jcF9jZmc6IGhhcmR3YXJlIGRzcHAvbG0gZmVhdHVyZSBwYXlsb2FkLgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3Bpbmdwb25nLmMgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfcGluZ3BvbmcuYwppbmRleCBlMjkz ZDZlLi45MzA4ZjVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfaHdfcGluZ3BvbmcuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf aHdfcGluZ3BvbmcuYwpAQCAtMzYsOSArMzYsNiBAQAogI2RlZmluZSBQUF9GQkNfTU9ERSAgICAg ICAgICAgICAgICAgICAgIDB4MDM0CiAjZGVmaW5lIFBQX0ZCQ19CVURHRVRfQ1RMICAgICAgICAg ICAgICAgMHgwMzgKICNkZWZpbmUgUFBfRkJDX0xPU1NZX01PREUgICAgICAgICAgICAgICAweDAz QwotI2RlZmluZSBQUF9EU0NfTU9ERSAgICAgICAgICAgICAgICAgICAgIDB4MGEwCi0jZGVmaW5l IFBQX0RDRV9EQVRBX0lOX1NXQVAgICAgICAgICAgICAgMHgwYWMKLSNkZWZpbmUgUFBfRENFX0RB VEFfT1VUX1NXQVAgICAgICAgICAgICAweDBjOAogCiAjZGVmaW5lIERJVEhFUl9ERVBUSF9NQVBf SU5ERVggOQogc3RhdGljIHUzMiBkaXRoZXJfZGVwdGhfbWFwW0RJVEhFUl9ERVBUSF9NQVBfSU5E RVhdID0gewpAQCAtMTUxLDQ4ICsxNDgsNiBAQCBzdGF0aWMgaW50IGRwdV9od19wcF9wb2xsX3Rp bWVvdXRfd3JfcHRyKHN0cnVjdCBkcHVfaHdfcGluZ3BvbmcgKnBwLAogCXJldHVybiByYzsKIH0K IAotc3RhdGljIHZvaWQgZHB1X2h3X3BwX2RzY19lbmFibGUoc3RydWN0IGRwdV9od19waW5ncG9u ZyAqcHApCi17Ci0Jc3RydWN0IGRwdV9od19ibGtfcmVnX21hcCAqYzsKLQotCWlmICghcHApCi0J CXJldHVybjsKLQljID0gJnBwLT5odzsKLQotCURQVV9SRUdfV1JJVEUoYywgUFBfRFNDX01PREUs IDEpOwotfQotCi1zdGF0aWMgdm9pZCBkcHVfaHdfcHBfZHNjX2Rpc2FibGUoc3RydWN0IGRwdV9o d19waW5ncG9uZyAqcHApCi17Ci0Jc3RydWN0IGRwdV9od19ibGtfcmVnX21hcCAqYzsKLQl1MzIg ZGF0YTsKLQotCWlmICghcHApCi0JCXJldHVybjsKLQljID0gJnBwLT5odzsKLQotCWRhdGEgPSBE UFVfUkVHX1JFQUQoYywgUFBfRENFX0RBVEFfT1VUX1NXQVApOwotCWRhdGEgJj0gfkJJVCgxOCk7 IC8qIGRpc2FibGUgZW5kaWFuIGZsaXAgKi8KLQlEUFVfUkVHX1dSSVRFKGMsIFBQX0RDRV9EQVRB X09VVF9TV0FQLCBkYXRhKTsKLQotCURQVV9SRUdfV1JJVEUoYywgUFBfRFNDX01PREUsIDApOwot fQotCi1zdGF0aWMgaW50IGRwdV9od19wcF9zZXR1cF9kc2Moc3RydWN0IGRwdV9od19waW5ncG9u ZyAqcHApCi17Ci0Jc3RydWN0IGRwdV9od19ibGtfcmVnX21hcCAqYzsKLQlpbnQgZGF0YTsKLQot CWlmICghcHApCi0JCXJldHVybiAtRUlOVkFMOwotCWMgPSAmcHAtPmh3OwotCi0JZGF0YSA9IERQ VV9SRUdfUkVBRChjLCBQUF9EQ0VfREFUQV9PVVRfU1dBUCk7Ci0JZGF0YSB8PSBCSVQoMTgpOyAv KiBlbmRpYW4gZmxpcCAqLwotCURQVV9SRUdfV1JJVEUoYywgUFBfRENFX0RBVEFfT1VUX1NXQVAs IGRhdGEpOwotCXJldHVybiAwOwotfQotCiBzdGF0aWMgaW50IGRwdV9od19wcF9zZXR1cF9kaXRo ZXJfdjEoc3RydWN0IGRwdV9od19waW5ncG9uZyAqcHAsCiAJCQkJCXZvaWQgKmNmZywgc2l6ZV90 IGxlbikKIHsKQEAgLTMzOSw5ICsyOTQsNiBAQCBzdGF0aWMgdm9pZCBfc2V0dXBfcGluZ3Bvbmdf b3BzKHN0cnVjdCBkcHVfaHdfcGluZ3Bvbmdfb3BzICpvcHMsCiAJb3BzLT5jb25uZWN0X2V4dGVy bmFsX3RlID0gZHB1X2h3X3BwX2Nvbm5lY3RfZXh0ZXJuYWxfdGU7CiAJb3BzLT5nZXRfdnN5bmNf aW5mbyA9IGRwdV9od19wcF9nZXRfdnN5bmNfaW5mbzsKIAlvcHMtPnNldHVwX2F1dG9yZWZyZXNo ID0gZHB1X2h3X3BwX3NldHVwX2F1dG9yZWZyZXNoX2NvbmZpZzsKLQlvcHMtPnNldHVwX2RzYyA9 IGRwdV9od19wcF9zZXR1cF9kc2M7Ci0Jb3BzLT5lbmFibGVfZHNjID0gZHB1X2h3X3BwX2RzY19l bmFibGU7Ci0Jb3BzLT5kaXNhYmxlX2RzYyA9IGRwdV9od19wcF9kc2NfZGlzYWJsZTsKIAlvcHMt PmdldF9hdXRvcmVmcmVzaCA9IGRwdV9od19wcF9nZXRfYXV0b3JlZnJlc2hfY29uZmlnOwogCW9w cy0+cG9sbF90aW1lb3V0X3dyX3B0ciA9IGRwdV9od19wcF9wb2xsX3RpbWVvdXRfd3JfcHRyOwog CW9wcy0+Z2V0X2xpbmVfY291bnQgPSBkcHVfaHdfcHBfZ2V0X2xpbmVfY291bnQ7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfcGluZ3BvbmcuaCBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19waW5ncG9uZy5oCmluZGV4IDc5ODdl ZTYuLjkzZDAzY2NlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfaHdfcGluZ3BvbmcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf aHdfcGluZ3BvbmcuaApAQCAtNDgsMTAgKzQ4LDYgQEAgc3RydWN0IGRwdV9od19wcF92c3luY19p bmZvIHsKIAl1MzIgd3JfcHRyX2xpbmVfY291bnQ7CS8qIGN1cnJlbnQgbGluZSB3aXRoaW4gcHAg ZmlmbyAod3IgcHRyKSAqLwogfTsKIAotc3RydWN0IGRwdV9od19kc2NfY2ZnIHsKLQl1OCBlbmFi bGU7Ci19OwotCiAvKioKICAqCiAgKiBzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nX29wcyA6IEludGVy ZmFjZSB0byB0aGUgcGluZ3BvbmcgSHcgZHJpdmVyIGZ1bmN0aW9ucwpAQCAtNjAsOSArNTYsNiBA QCBzdHJ1Y3QgZHB1X2h3X2RzY19jZmcgewogICogIEBlbmFibGVfdGVhcmNoZWNrIDogZW5hYmxl cyB0ZWFyIGNoZWNrCiAgKiAgQGdldF92c3luY19pbmZvIDogcmV0cmllcyB0aW1pbmcgaW5mbyBv ZiB0aGUgcGFuZWwKICAqICBAc2V0dXBfYXV0b3JlZnJlc2ggOiBwcm9ncmFtIGF1dG8gcmVmcmVz aAotICogIEBzZXR1cF9kc2MgOiBwcm9ncmFtIERTQyBibG9jayB3aXRoIGVuY29kaW5nIGRldGFp bHMKLSAqICBAZW5hYmxlX2RzYyA6IGVuYWJsZXMgRFNDIGVuY29kZXIKLSAqICBAZGlzYWJsZV9k c2MgOiBkaXNhYmxlcyBEU0MgZW5jb2RlcgogICogIEBzZXR1cF9kaXRoZXIgOiBmdW5jdGlvbiB0 byBwcm9ncmFtIHRoZSBkaXRoZXIgaHcgYmxvY2sKICAqICBAZ2V0X2xpbmVfY291bnQ6IG9idGFp biBjdXJyZW50IHZlcnRpY2FsIGxpbmUgY291bnRlcgogICovCkBAIC0xMTMsMjEgKzEwNiw2IEBA IHN0cnVjdCBkcHVfaHdfcGluZ3Bvbmdfb3BzIHsKIAlpbnQgKCpwb2xsX3RpbWVvdXRfd3JfcHRy KShzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICpwcCwgdTMyIHRpbWVvdXRfdXMpOwogCiAJLyoqCi0J ICogUHJvZ3JhbSB0aGUgZHNjIGNvbXByZXNzaW9uIGJsb2NrCi0JICovCi0JaW50ICgqc2V0dXBf ZHNjKShzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICpwcCk7Ci0KLQkvKioKLQkgKiBFbmFibGVzIERT QyBlbmNvZGVyCi0JICovCi0Jdm9pZCAoKmVuYWJsZV9kc2MpKHN0cnVjdCBkcHVfaHdfcGluZ3Bv bmcgKnBwKTsKLQotCS8qKgotCSAqIERpc2FibGVzIERTQyBlbmNvZGVyCi0JICovCi0Jdm9pZCAo KmRpc2FibGVfZHNjKShzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICpwcCk7Ci0KLQkvKioKIAkgKiBQ cm9ncmFtIHRoZSBkaXRoZXIgaHcgYmxvY2sKIAkgKi8KIAlpbnQgKCpzZXR1cF9kaXRoZXIpKHN0 cnVjdCBkcHVfaHdfcGluZ3BvbmcgKnBwLCB2b2lkICpjZmcsIHNpemVfdCBsZW4pOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3RvcC5jIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3RvcC5jCmluZGV4IDY4MTYzYTEuLjYwZTRi ZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od190b3Au YworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfdG9wLmMKQEAgLTMx NywxOCArMzE3LDYgQEAgc3RhdGljIHZvaWQgZHB1X2h3X2dldF9zYWZlX3N0YXR1cyhzdHJ1Y3Qg ZHB1X2h3X21kcCAqbWRwLAogCXN0YXR1cy0+d2JbV0JfM10gPSAwOwogfQogCi1zdGF0aWMgdm9p ZCBkcHVfaHdfc2V0dXBfZGNlKHN0cnVjdCBkcHVfaHdfbWRwICptZHAsIHUzMiBkY2Vfc2VsKQot ewotCXN0cnVjdCBkcHVfaHdfYmxrX3JlZ19tYXAgKmM7Ci0KLQlpZiAoIW1kcCkKLQkJcmV0dXJu OwotCi0JYyA9ICZtZHAtPmh3OwotCi0JRFBVX1JFR19XUklURShjLCBEQ0VfU0VMLCBkY2Vfc2Vs KTsKLX0KLQogdm9pZCBkcHVfaHdfcmVzZXRfdWJ3YyhzdHJ1Y3QgZHB1X2h3X21kcCAqbWRwLCBz dHJ1Y3QgZHB1X21kc3NfY2ZnICptKQogewogCXN0cnVjdCBkcHVfaHdfYmxrX3JlZ19tYXAgYzsK QEAgLTM2Nyw3ICszNTUsNiBAQCBzdGF0aWMgdm9pZCBfc2V0dXBfbWRwX29wcyhzdHJ1Y3QgZHB1 X2h3X21kcF9vcHMgKm9wcywKIAlvcHMtPmdldF9kYW5nZXJfc3RhdHVzID0gZHB1X2h3X2dldF9k YW5nZXJfc3RhdHVzOwogCW9wcy0+c2V0dXBfdnN5bmNfc291cmNlID0gZHB1X2h3X3NldHVwX3Zz eW5jX3NvdXJjZTsKIAlvcHMtPmdldF9zYWZlX3N0YXR1cyA9IGRwdV9od19nZXRfc2FmZV9zdGF0 dXM7Ci0Jb3BzLT5zZXR1cF9kY2UgPSBkcHVfaHdfc2V0dXBfZGNlOwogCW9wcy0+cmVzZXRfdWJ3 YyA9IGRwdV9od19yZXNldF91YndjOwogCW9wcy0+aW50Zl9hdWRpb19zZWxlY3QgPSBkcHVfaHdf aW50Zl9hdWRpb19zZWxlY3Q7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfaHdfdG9wLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf aHdfdG9wLmgKaW5kZXggMzc1Y2I3Yy4uMTQ3MGQwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3RvcC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9od190b3AuaApAQCAtMTQzLDEzICsxNDMsNiBAQCBzdHJ1Y3QgZHB1X2h3 X21kcF9vcHMgewogCQkJZW51bSBkcHVfY2xrX2N0cmxfdHlwZSBjbGtfY3RybCwgYm9vbCBlbmFi bGUpOwogCiAJLyoqCi0JICogc2V0dXBfZGNlIC0gc2V0IERDRSBtdXggZm9yIERTQyBjdHJsIHBh dGgKLQkgKiBAbWRwOiBtZHAgdG9wIGNvbnRleHQgZHJpdmVyCi0JICogQGRjZV9zZWw6IGRjZV9t dXggdmFsdWUKLQkgKi8KLQl2b2lkICgqc2V0dXBfZGNlKShzdHJ1Y3QgZHB1X2h3X21kcCAqbWRw LCB1MzIgZGNlX3NlbCk7Ci0KLQkvKioKIAkgKiBnZXRfZGFuZ2VyX3N0YXR1cyAtIGdldCBkYW5n ZXIgc3RhdHVzCiAJICogQG1kcDogbWRwIHRvcCBjb250ZXh0IGRyaXZlcgogCSAqIEBzdGF0dXM6 IFBvaW50ZXIgdG8gZGFuZ2VyIHNhZmUgc3RhdHVzCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9ybS5jCmluZGV4IDFkODFiMWIuLjEzZWZiZWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9ybS5jCkBAIC0yNCw3ICsyNCw2IEBACiAjaW5jbHVkZSAiZHB1X2h3X3diLmgi CiAjaW5jbHVkZSAiZHB1X2VuY29kZXIuaCIKICNpbmNsdWRlICJkcHVfY29ubmVjdG9yLmgiCi0j aW5jbHVkZSAiZHB1X2h3X2RzYy5oIgogCiAjZGVmaW5lIFJFU0VSVkVEX0JZX09USEVSKGgsIHIp IFwKIAkoKGgpLT5yc3ZwICYmICgoaCktPnJzdnAtPmVuY19pZCAhPSAociktPmVuY19pZCkpCkBA IC00OSwxMiArNDgsOCBAQCBzdHJ1Y3QgZHB1X3JtX3RvcG9sb2d5X2RlZiB7CiBzdGF0aWMgY29u c3Qgc3RydWN0IGRwdV9ybV90b3BvbG9neV9kZWYgZ190b3BfdGFibGVbXSA9IHsKIAl7ICAgRFBV X1JNX1RPUE9MT0dZX05PTkUsICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCBmYWxzZSB9LAog CXsgICBEUFVfUk1fVE9QT0xPR1lfU0lOR0xFUElQRSwgICAgICAgICAgIDEsIDAsIDEsIDEsIGZh bHNlIH0sCi0JeyAgIERQVV9STV9UT1BPTE9HWV9TSU5HTEVQSVBFX0RTQywgICAgICAgMSwgMSwg MSwgMSwgZmFsc2UgfSwKIAl7ICAgRFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFLCAgICAgICAgICAg ICAyLCAwLCAyLCAyLCB0cnVlICB9LAotCXsgICBEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVfRFND LCAgICAgICAgIDIsIDIsIDIsIDIsIHRydWUgIH0sCiAJeyAgIERQVV9STV9UT1BPTE9HWV9EVUFM UElQRV8zRE1FUkdFLCAgICAgMiwgMCwgMSwgMSwgZmFsc2UgfSwKLQl7ICAgRFBVX1JNX1RPUE9M T0dZX0RVQUxQSVBFXzNETUVSR0VfRFNDLCAyLCAxLCAxLCAxLCBmYWxzZSB9LAotCXsgICBEUFVf Uk1fVE9QT0xPR1lfRFVBTFBJUEVfRFNDTUVSR0UsICAgIDIsIDIsIDEsIDEsIGZhbHNlIH0sCiAJ eyAgIERQVV9STV9UT1BPTE9HWV9QUFNQTElULCAgICAgICAgICAgICAgMSwgMCwgMiwgMSwgdHJ1 ZSAgfSwKIH07CiAKQEAgLTI1Myw5ICsyNDgsNiBAQCBzdGF0aWMgdm9pZCBfZHB1X3JtX2h3X2Rl c3Ryb3koZW51bSBkcHVfaHdfYmxrX3R5cGUgdHlwZSwgdm9pZCAqaHcpCiAJY2FzZSBEUFVfSFdf QkxLX1dCOgogCQlkcHVfaHdfd2JfZGVzdHJveShodyk7CiAJCWJyZWFrOwotCWNhc2UgRFBVX0hX X0JMS19EU0M6Ci0JCWRwdV9od19kc2NfZGVzdHJveShodyk7Ci0JCWJyZWFrOwogCWNhc2UgRFBV X0hXX0JMS19TU1BQOgogCQkvKiBTU1BQcyBhcmUgbm90IG1hbmFnZWQgYnkgdGhlIHJlc291cmNl IG1hbmFnZXIgKi8KIAljYXNlIERQVV9IV19CTEtfVE9QOgpAQCAtMzQxLDkgKzMzMyw2IEBAIHN0 YXRpYyBpbnQgX2RwdV9ybV9od19ibGtfY3JlYXRlKAogCWNhc2UgRFBVX0hXX0JMS19XQjoKIAkJ aHcgPSBkcHVfaHdfd2JfaW5pdChpZCwgbW1pbywgY2F0LCBod19tZHApOwogCQlicmVhazsKLQlj YXNlIERQVV9IV19CTEtfRFNDOgotCQlodyA9IGRwdV9od19kc2NfaW5pdChpZCwgbW1pbywgY2F0 KTsKLQkJYnJlYWs7CiAJY2FzZSBEUFVfSFdfQkxLX1NTUFA6CiAJCS8qIFNTUFBzIGFyZSBub3Qg bWFuYWdlZCBieSB0aGUgcmVzb3VyY2UgbWFuYWdlciAqLwogCWNhc2UgRFBVX0hXX0JMS19UT1A6 CkBAIC00NjUsMTUgKzQ1NCw2IEBAIGludCBkcHVfcm1faW5pdChzdHJ1Y3QgZHB1X3JtICpybSwK IAkJfQogCX0KIAotCWZvciAoaSA9IDA7IGkgPCBjYXQtPmRzY19jb3VudDsgaSsrKSB7Ci0JCXJj ID0gX2RwdV9ybV9od19ibGtfY3JlYXRlKHJtLCBjYXQsIG1taW8sIERQVV9IV19CTEtfRFNDLAot CQkJY2F0LT5kc2NbaV0uaWQsICZjYXQtPmRzY1tpXSk7Ci0JCWlmIChyYykgewotCQkJRFBVX0VS Uk9SKCJmYWlsZWQ6IGRzYyBodyBub3QgYXZhaWxhYmxlXG4iKTsKLQkJCWdvdG8gZmFpbDsKLQkJ fQotCX0KLQogCWZvciAoaSA9IDA7IGkgPCBjYXQtPmludGZfY291bnQ7IGkrKykgewogCQlpZiAo Y2F0LT5pbnRmW2ldLnR5cGUgPT0gSU5URl9OT05FKSB7CiAJCQlEUFVfREVCVUcoInNraXAgaW50 ZiAlZCB3aXRoIHR5cGUgbm9uZVxuIiwgaSk7CkBAIC04MzQsMzcgKzgxNCw2IEBAIHN0YXRpYyBp bnQgX2RwdV9ybV9yZXNlcnZlX2N0bHMoCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgX2Rw dV9ybV9yZXNlcnZlX2RzYygKLQkJc3RydWN0IGRwdV9ybSAqcm0sCi0JCXN0cnVjdCBkcHVfcm1f cnN2cCAqcnN2cCwKLQkJY29uc3Qgc3RydWN0IGRwdV9ybV90b3BvbG9neV9kZWYgKnRvcCkKLXsK LQlzdHJ1Y3QgZHB1X3JtX2h3X2l0ZXIgaXRlcjsKLQlpbnQgYWxsb2NfY291bnQgPSAwOwotCWlu dCBudW1fZHNjX2VuYyA9IHRvcC0+bnVtX2xtOwotCi0JaWYgKCF0b3AtPm51bV9jb21wX2VuYykK LQkJcmV0dXJuIDA7Ci0KLQlkcHVfcm1faW5pdF9od19pdGVyKCZpdGVyLCAwLCBEUFVfSFdfQkxL X0RTQyk7Ci0KLQl3aGlsZSAoX2RwdV9ybV9nZXRfaHdfbG9ja2VkKHJtLCAmaXRlcikpIHsKLQkJ aWYgKFJFU0VSVkVEX0JZX09USEVSKGl0ZXIuYmxrLCByc3ZwKSkKLQkJCWNvbnRpbnVlOwotCi0J CWl0ZXIuYmxrLT5yc3ZwX254dCA9IHJzdnA7Ci0JCURQVV9FVlQzMihpdGVyLmJsay0+dHlwZSwg cnN2cC0+ZW5jX2lkLCBpdGVyLmJsay0+aWQpOwotCi0JCWlmICgrK2FsbG9jX2NvdW50ID09IG51 bV9kc2NfZW5jKQotCQkJcmV0dXJuIDA7Ci0JfQotCi0JRFBVX0VSUk9SKCJjb3VsZG4ndCByZXNl cnZlICVkIGRzYyBibG9ja3MgZm9yIGVuYyBpZCAlZFxuIiwKLQkJbnVtX2RzY19lbmMsIHJzdnAt PmVuY19pZCk7Ci0KLQlyZXR1cm4gLUVOQVZBSUw7Ci19Ci0KIHN0YXRpYyBpbnQgX2RwdV9ybV9y ZXNlcnZlX2NkbSgKIAkJc3RydWN0IGRwdV9ybSAqcm0sCiAJCXN0cnVjdCBkcHVfcm1fcnN2cCAq cnN2cCwKQEAgLTEwMzIsMTAgKzk4MSw2IEBAIHN0YXRpYyBpbnQgX2RwdV9ybV9tYWtlX25leHRf cnN2cCgKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcmV0ID0gX2RwdV9ybV9yZXNlcnZl X2RzYyhybSwgcnN2cCwgcmVxcy0+dG9wb2xvZ3kpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7 Ci0KIAlyZXR1cm4gcmV0OwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfcm0uaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5o CmluZGV4IDIyYTY4MWMuLjNkYjYxYjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9ybS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9ybS5oCkBAIC0yNCwyMyArMjQsMTUgQEAKICAqIGVudW0gZHB1X3JtX3RvcG9sb2d5X25hbWUg LSBIVyByZXNvdXJjZSB1c2UgY2FzZSBpbiB1c2UgYnkgY29ubmVjdG9yCiAgKiBARFBVX1JNX1RP UE9MT0dZX05PTkU6ICAgICAgICAgICAgICAgICBObyB0b3BvbG9neSBpbiB1c2UgY3VycmVudGx5 CiAgKiBARFBVX1JNX1RPUE9MT0dZX1NJTkdMRVBJUEU6ICAgICAgICAgICAxIExNLCAxIFBQLCAx IElOVEYvV0IKLSAqIEBEUFVfUk1fVE9QT0xPR1lfU0lOR0xFUElQRV9EU0M6ICAgICAgIDEgTE0s IDEgRFNDLCAxIFBQLCAxIElOVEYvV0IKICAqIEBEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEU6ICAg ICAgICAgICAgIDIgTE0sIDIgUFAsIDIgSU5URi9XQgotICogQERQVV9STV9UT1BPTE9HWV9EVUFM UElQRV9EU0M6ICAgICAgICAgMiBMTSwgMiBEU0MsIDIgUFAsIDIgSU5URi9XQgogICogQERQVV9S TV9UT1BPTE9HWV9EVUFMUElQRV8zRE1FUkdFOiAgICAgMiBMTSwgMiBQUCwgM0RNdXgsIDEgSU5U Ri9XQgotICogQERQVV9STV9UT1BPTE9HWV9EVUFMUElQRV8zRE1FUkdFX0RTQzogMiBMTSwgMiBQ UCwgM0RNdXgsIDEgRFNDLCAxIElOVEYvV0IKLSAqIEBEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVf RFNDTUVSR0U6ICAgIDIgTE0sIDIgUFAsIDIgRFNDIE1lcmdlLCAxIElOVEYvV0IKICAqIEBEUFVf Uk1fVE9QT0xPR1lfUFBTUExJVDogICAgICAgICAgICAgIDEgTE0sIDIgUFBzLCAyIElOVEYvV0IK ICAqLwogZW51bSBkcHVfcm1fdG9wb2xvZ3lfbmFtZSB7CiAJRFBVX1JNX1RPUE9MT0dZX05PTkUg PSAwLAogCURQVV9STV9UT1BPTE9HWV9TSU5HTEVQSVBFLAotCURQVV9STV9UT1BPTE9HWV9TSU5H TEVQSVBFX0RTQywKIAlEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEUsCi0JRFBVX1JNX1RPUE9MT0dZ X0RVQUxQSVBFX0RTQywKIAlEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVfM0RNRVJHRSwKLQlEUFVf Uk1fVE9QT0xPR1lfRFVBTFBJUEVfM0RNRVJHRV9EU0MsCi0JRFBVX1JNX1RPUE9MT0dZX0RVQUxQ SVBFX0RTQ01FUkdFLAogCURQVV9STV9UT1BPTE9HWV9QUFNQTElULAogCURQVV9STV9UT1BPTE9H WV9NQVgsCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmggYi9k cml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaAppbmRleCA0ZWU0MGY4Li5mOThjNGVmIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vbXNtL21zbV9kcnYuaApAQCAtMzE5LDIwICszMTksNiBAQCBzdHJ1Y3QgbXNtX2Rpc3BsYXlf ZHNjX2luZm8gewogfTsKIAogLyoqCi0gKiBzdHJ1Y3QgbXNtX2NvbXByZXNzaW9uX2luZm8gLSBk ZWZpbmVkIHBhbmVsIGNvbXByZXNzaW9uCi0gKiBAY29tcF90eXBlOiAgICAgICAgdHlwZSBvZiBj b21wcmVzc2lvbiBzdXBwb3J0ZWQKLSAqIEBkc2NfaW5mbzogICAgICAgICBkc2MgY29uZmlndXJh dGlvbiBpZiB0aGUgY29tcHJlc3Npb24KLSAqICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQg aXMgRFNDCi0gKi8KLXN0cnVjdCBtc21fY29tcHJlc3Npb25faW5mbyB7Ci0JZW51bSBtc21fZGlz cGxheV9jb21wcmVzc2lvbl90eXBlIGNvbXBfdHlwZTsKLQotCXVuaW9uewotCQlzdHJ1Y3QgbXNt X2Rpc3BsYXlfZHNjX2luZm8gZHNjX2luZm87Ci0JfTsKLX07Ci0KLS8qKgogICogc3RydWN0IG1z bV9kaXNwbGF5X3RvcG9sb2d5IC0gZGVmaW5lcyBhIGRpc3BsYXkgdG9wb2xvZ3kgcGlwZWxpbmUK ICAqIEBudW1fbG06ICAgICAgIG51bWJlciBvZiBsYXllciBtaXhlcnMgdXNlZAogICogQG51bV9l bmM6ICAgICAgbnVtYmVyIG9mIGNvbXByZXNzaW9uIGVuY29kZXIgYmxvY2tzIHVzZWQKQEAgLTM1 Miw3ICszMzgsNiBAQCBzdHJ1Y3QgbXNtX2Rpc3BsYXlfdG9wb2xvZ3kgewogICogQGppdHRlcl9u dW1lcjoJZGlzcGxheSBwYW5lbCBqaXR0ZXIgbnVtZXJhdG9yIGNvbmZpZ3VyYXRpb24KICAqIEBq aXR0ZXJfZGVub206CWRpc3BsYXkgcGFuZWwgaml0dGVyIGRlbm9taW5hdG9yIGNvbmZpZ3VyYXRp b24KICAqIEB0b3BvbG9neTogICAgICAgIHN1cHBvcnRlZCB0b3BvbG9neSBmb3IgdGhlIG1vZGUK LSAqIEBjb21wX2luZm86ICAgICAgIGNvbXByZXNzaW9uIGluZm8gc3VwcG9ydGVkCiAgKi8KIHN0 cnVjdCBtc21fbW9kZV9pbmZvIHsKIAl1aW50MzJfdCBmcmFtZV9yYXRlOwpAQCAtMzYxLDcgKzM0 Niw2IEBAIHN0cnVjdCBtc21fbW9kZV9pbmZvIHsKIAl1aW50MzJfdCBqaXR0ZXJfbnVtZXI7CiAJ dWludDMyX3Qgaml0dGVyX2Rlbm9tOwogCXN0cnVjdCBtc21fZGlzcGxheV90b3BvbG9neSB0b3Bv bG9neTsKLQlzdHJ1Y3QgbXNtX2NvbXByZXNzaW9uX2luZm8gY29tcF9pbmZvOwogfTsKIAogLyoq Ci0tIApUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2Yg dGhlIENvZGUgQXVyb3JhIEZvcnVtLAphIExpbnV4IEZvdW5kYXRpb24gQ29sbGFib3JhdGl2ZSBQ cm9qZWN0CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpG cmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K