From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: [DPU PATCH 2/6] drm/msm: remove support for ping pong split topology Date: Mon, 16 Apr 2018 11:22:17 -0700 Message-ID: <1523902941-2253-3-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 UGluZyBwb25nIHNwbGl0IHRvcG9sb2d5IHdhcyBtZWFudCBmb3IgbG93IGVuZCBzb2MncyB3aGlj aApkb2Vzbid0IGhhdmUgZW5vdWdoIGxheWVyIG1peGVycyB0byBzdXBwb3J0IHNwbGl0IHBhbmVs cy4KQ29uc2lkZXJpbmcgaG93IHVuY29tbW9uIHRoZSB0b3BvbG9neSBpcyBmb3IgY3VycmVudCBj aGlwc2V0J3MgYW5kCmFsc28gdG8gc2ltcGx5IHRoZSBkcml2ZXIgcHJvZ3JhbW1pbmcsIHN0cmlw aW5nIG9mZiB0aGUgc3VwcG9ydApmb3IgU0RNODQ1LgoKU2lnbmVkLW9mZi1ieTogSmV5a3VtYXIg U2Fua2FyYW4gPGpzYW5rYUBjb2RlYXVyb3JhLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfY29ubmVjdG9yLmMgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYyAgICAgICAgICAgfCAgMTkgLS0tCiBkcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5jICAgICAgICB8IDE3OSArLS0tLS0tLS0t LS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3Bo eXMuaCAgIHwgICA1IC0KIC4uLi9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5 c19jbWQuYyAgIHwgMTEwICstLS0tLS0tLS0tLS0KIC4uLi9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2VuY29kZXJfcGh5c192aWQuYyAgIHwgIDIxICstLQogZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuYyAgICAgfCAgIDUgKy0KIGRyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmggICAgIHwgICAyIC0KIGRyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9od190b3AuYyAgICAgICAgIHwgIDMzIC0tLS0KIGRyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od190b3AuaCAgICAgICAgIHwgIDExIC0tCiBkcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdpby5oICAgICAgICAgICB8ICAgNCAtCiBk cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uYyAgICAgICAgICAgICB8ICAzNyAr LS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmggICAgICAgICAgICAg fCAgIDIgLQogMTMgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgNDE1IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb25u ZWN0b3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb25uZWN0b3IuYwpp bmRleCAxMjM3ZWZjLi5mN2U5Zjc2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfY29ubmVjdG9yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2Nvbm5lY3Rvci5jCkBAIC00MSw4ICs0MSw4IEBACiAJe0RQVV9STV9UT1BPTE9HWV9T SU5HTEVQSVBFLAkiZHB1X3NpbmdsZXBpcGUifSwKIAl7RFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBF LAkiZHB1X2R1YWxwaXBlIn0sCiAJe0RQVV9STV9UT1BPTE9HWV9EVUFMUElQRV8zRE1FUkdFLAki ZHB1X2R1YWxwaXBlbWVyZ2UifSwKLQl7RFBVX1JNX1RPUE9MT0dZX1BQU1BMSVQsCSJkcHVfcHBz cGxpdCJ9LAogfTsKKwogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcHJvcF9lbnVtX2xpc3QgZV90 b3BvbG9neV9jb250cm9sW10gPSB7CiAJe0RQVV9STV9UT1BDVExfUkVTRVJWRV9MT0NLLAkicmVz ZXJ2ZV9sb2NrIn0sCiAJe0RQVV9STV9UT1BDVExfUkVTRVJWRV9DTEVBUiwJInJlc2VydmVfY2xl YXIifSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRj LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jCmluZGV4IDUxNjQ1 OGUuLjhlNDY0ZmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYwpA QCAtMTkxNCwyMyArMTkxNCw2IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19zZXR1cF9taXhlcnMo c3RydWN0IGRybV9jcnRjICpjcnRjKQogCW11dGV4X3VubG9jaygmZHB1X2NydGMtPmNydGNfbG9j ayk7CiB9CiAKLXN0YXRpYyB2b2lkIF9kcHVfY3J0Y19zZXR1cF9pc19wcHNwbGl0KHN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqc3RhdGUpCi17Ci0JaW50IGk7Ci0Jc3RydWN0IGRwdV9jcnRjX3N0YXRl ICpjc3RhdGU7Ci0KLQljc3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZShzdGF0ZSk7Ci0KLQljc3Rh dGUtPmlzX3Bwc3BsaXQgPSBmYWxzZTsKLQlmb3IgKGkgPSAwOyBpIDwgY3N0YXRlLT5udW1fY29u bmVjdG9yczsgaSsrKSB7Ci0JCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uID0gY3N0YXRlLT5j b25uZWN0b3JzW2ldOwotCi0JCWlmIChkcHVfY29ubmVjdG9yX2dldF90b3BvbG9neV9uYW1lKGNv bm4pID09Ci0JCQkJRFBVX1JNX1RPUE9MT0dZX1BQU1BMSVQpCi0JCQljc3RhdGUtPmlzX3Bwc3Bs aXQgPSB0cnVlOwotCX0KLX0KLQogc3RhdGljIHZvaWQgX2RwdV9jcnRjX3NldHVwX2xtX2JvdW5k cyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUp CiB7CkBAIC0xOTkzLDcgKzE5NzYsNiBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19hdG9taWNfYmVn aW4oc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJaWYgKCFkcHVfY3J0Yy0+bnVtX21peGVycykg ewogCQlfZHB1X2NydGNfc2V0dXBfbWl4ZXJzKGNydGMpOwotCQlfZHB1X2NydGNfc2V0dXBfaXNf cHBzcGxpdChjcnRjLT5zdGF0ZSk7CiAJCV9kcHVfY3J0Y19zZXR1cF9sbV9ib3VuZHMoY3J0Yywg Y3J0Yy0+c3RhdGUpOwogCX0KIApAQCAtMjkwMSw3ICsyODgzLDYgQEAgc3RhdGljIGludCBkcHVf Y3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJbWl4ZXJfd2lkdGgg PSBkcHVfY3J0Y19nZXRfbWl4ZXJfd2lkdGgoZHB1X2NydGMsIGNzdGF0ZSwgbW9kZSk7CiAKLQlf ZHB1X2NydGNfc2V0dXBfaXNfcHBzcGxpdChzdGF0ZSk7CiAJX2RwdV9jcnRjX3NldHVwX2xtX2Jv dW5kcyhjcnRjLCBzdGF0ZSk7CiAKIAkgLyogZ2V0IHBsYW5lIHN0YXRlIGZvciBhbGwgZHJtIHBs YW5lcyBhc3NvY2lhdGVkIHdpdGggY3J0YyBzdGF0ZSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMKaW5kZXggNmYxMjM1NS4uMzIzNzViMSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5jCkBAIC01NDUsNyArNTQ1LDYg QEAgdm9pZCBkcHVfZW5jb2Rlcl9oZWxwZXJfc3BsaXRfY29uZmlnKAogCXN0cnVjdCBkcHVfZW5j b2Rlcl92aXJ0ICpkcHVfZW5jOwogCXN0cnVjdCBzcGxpdF9waXBlX2NmZyBjZmcgPSB7IDAgfTsK IAlzdHJ1Y3QgZHB1X2h3X21kcCAqaHdfbWRwdG9wOwotCWVudW0gZHB1X3JtX3RvcG9sb2d5X25h bWUgdG9wb2xvZ3k7CiAJc3RydWN0IG1zbV9kaXNwbGF5X2luZm8gKmRpc3BfaW5mbzsKIAogCWlm ICghcGh5c19lbmMgfHwgIXBoeXNfZW5jLT5od19tZHB0b3AgfHwgIXBoeXNfZW5jLT5wYXJlbnQp IHsKQEAgLTU2OSw4ICs1NjgsNiBAQCB2b2lkIGRwdV9lbmNvZGVyX2hlbHBlcl9zcGxpdF9jb25m aWcoCiAJaWYgKHBoeXNfZW5jLT5zcGxpdF9yb2xlID09IEVOQ19ST0xFX1NPTE8pIHsKIAkJaWYg KGh3X21kcHRvcC0+b3BzLnNldHVwX3NwbGl0X3BpcGUpCiAJCQlod19tZHB0b3AtPm9wcy5zZXR1 cF9zcGxpdF9waXBlKGh3X21kcHRvcCwgJmNmZyk7Ci0JCWlmIChod19tZHB0b3AtPm9wcy5zZXR1 cF9wcF9zcGxpdCkKLQkJCWh3X21kcHRvcC0+b3BzLnNldHVwX3BwX3NwbGl0KGh3X21kcHRvcCwg JmNmZyk7CiAJCXJldHVybjsKIAl9CiAKQEAgLTU4MiwyOSArNTc5LDExIEBAIHZvaWQgZHB1X2Vu Y29kZXJfaGVscGVyX3NwbGl0X2NvbmZpZygKIAkJCXBoeXNfZW5jLT5vcHMubmVlZHNfc2luZ2xl X2ZsdXNoKHBoeXNfZW5jKSkKIAkJY2ZnLnNwbGl0X2ZsdXNoX2VuID0gdHJ1ZTsKIAotCXRvcG9s b2d5ID0gZHB1X2Nvbm5lY3Rvcl9nZXRfdG9wb2xvZ3lfbmFtZShwaHlzX2VuYy0+Y29ubmVjdG9y KTsKLQlpZiAodG9wb2xvZ3kgPT0gRFBVX1JNX1RPUE9MT0dZX1BQU1BMSVQpCi0JCWNmZy5wcF9z cGxpdF9zbGF2ZSA9IGNmZy5pbnRmOwotCWVsc2UKLQkJY2ZnLnBwX3NwbGl0X3NsYXZlID0gSU5U Rl9NQVg7Ci0KIAlpZiAocGh5c19lbmMtPnNwbGl0X3JvbGUgPT0gRU5DX1JPTEVfTUFTVEVSKSB7 CiAJCURQVV9ERUJVR19FTkMoZHB1X2VuYywgImVuYWJsZSAlZFxuIiwgY2ZnLmVuKTsKIAogCQlp ZiAoaHdfbWRwdG9wLT5vcHMuc2V0dXBfc3BsaXRfcGlwZSkKIAkJCWh3X21kcHRvcC0+b3BzLnNl dHVwX3NwbGl0X3BpcGUoaHdfbWRwdG9wLCAmY2ZnKTsKLQl9IGVsc2UgaWYgKGRwdV9lbmMtPmh3 X3BwWzBdKSB7Ci0JCS8qCi0JCSAqIHNsYXZlIGVuY29kZXIKLQkJICogLSBkZXRlcm1pbmUgc3Bs aXQgaW5kZXggZnJvbSBtYXN0ZXIgaW5kZXgsCi0JCSAqICAgYXNzdW1lIG1hc3RlciBpcyBmaXJz dCBwcAotCQkgKi8KLQkJY2ZnLnBwX3NwbGl0X2luZGV4ID0gZHB1X2VuYy0+aHdfcHBbMF0tPmlk eCAtIFBJTkdQT05HXzA7Ci0JCURQVV9ERUJVR19FTkMoZHB1X2VuYywgIm1hc3RlciB1c2luZyBw cCVkXG4iLAotCQkJCWNmZy5wcF9zcGxpdF9pbmRleCk7Ci0KLQkJaWYgKGh3X21kcHRvcC0+b3Bz LnNldHVwX3BwX3NwbGl0KQotCQkJaHdfbWRwdG9wLT5vcHMuc2V0dXBfcHBfc3BsaXQoaHdfbWRw dG9wLCAmY2ZnKTsKIAl9CiB9CiAKQEAgLTE2NjUsMTQgKzE2NDQsNiBAQCBzdGF0aWMgaW5saW5l IHZvaWQgX2RwdV9lbmNvZGVyX3RyaWdnZXJfZmx1c2goc3RydWN0IGRybV9lbmNvZGVyICpkcm1f ZW5jLAogCQlyZXR1cm47CiAJfQogCi0JaWYgKHBoeXMtPnNwbGl0X3JvbGUgPT0gRU5DX1JPTEVf U0tJUCkgewotCQlEUFVfREVCVUdfRU5DKHRvX2RwdV9lbmNvZGVyX3ZpcnQocGh5cy0+cGFyZW50 KSwKLQkJCQkic2tpcCBmbHVzaCBwcCVkIGN0bCVkXG4iLAotCQkJCXBoeXMtPmh3X3BwLT5pZHgg LSBQSU5HUE9OR18wLAotCQkJCWN0bC0+aWR4IC0gQ1RMXzApOwotCQlyZXR1cm47Ci0JfQotCiAJ cGVuZGluZ19raWNrb2ZmX2NudCA9IGRwdV9lbmNvZGVyX3BoeXNfaW5jX3BlbmRpbmcocGh5cyk7 CiAKIAlpZiAoZXh0cmFfZmx1c2hfYml0cyAmJiBjdGwtPm9wcy51cGRhdGVfcGVuZGluZ19mbHVz aCkKQEAgLTE2OTQsOCArMTY2NSw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZHB1X2VuY29kZXJf dHJpZ2dlcl9mbHVzaChzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMsCiAgKi8KIHN0YXRpYyBp bmxpbmUgdm9pZCBfZHB1X2VuY29kZXJfdHJpZ2dlcl9zdGFydChzdHJ1Y3QgZHB1X2VuY29kZXJf cGh5cyAqcGh5cykKIHsKLQlzdHJ1Y3QgZHB1X2h3X2N0bCAqY3RsOwotCiAJaWYgKCFwaHlzKSB7 CiAJCURQVV9FUlJPUigiaW52YWxpZCBhcmd1bWVudChzKVxuIik7CiAJCXJldHVybjsKQEAgLTE3 MDYsMTQgKzE2NzUsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2RwdV9lbmNvZGVyX3RyaWdnZXJf c3RhcnQoc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXMpCiAJCXJldHVybjsKIAl9CiAKLQlj dGwgPSBwaHlzLT5od19jdGw7Ci0JaWYgKHBoeXMtPnNwbGl0X3JvbGUgPT0gRU5DX1JPTEVfU0tJ UCkgewotCQlEUFVfREVCVUdfRU5DKHRvX2RwdV9lbmNvZGVyX3ZpcnQocGh5cy0+cGFyZW50KSwK LQkJCQkic2tpcCBzdGFydCBwcCVkIGN0bCVkXG4iLAotCQkJCXBoeXMtPmh3X3BwLT5pZHggLSBQ SU5HUE9OR18wLAotCQkJCWN0bC0+aWR4IC0gQ1RMXzApOwotCQlyZXR1cm47Ci0JfQogCWlmIChw aHlzLT5vcHMudHJpZ2dlcl9zdGFydCAmJiBwaHlzLT5lbmFibGVfc3RhdGUgIT0gRFBVX0VOQ19E SVNBQkxFRCkKIAkJcGh5cy0+b3BzLnRyaWdnZXJfc3RhcnQocGh5cyk7CiB9CkBAIC0xODMyLDcg KzE3OTMsNiBAQCBzdGF0aWMgdm9pZCBfZHB1X2VuY29kZXJfa2lja29mZl9waHlzKHN0cnVjdCBk cHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5jKQogCS8qIGRvbid0IHBlcmZvcm0gZmx1c2gvc3RhcnQg b3BlcmF0aW9ucyBmb3Igc2xhdmUgZW5jb2RlcnMgKi8KIAlmb3IgKGkgPSAwOyBpIDwgZHB1X2Vu Yy0+bnVtX3BoeXNfZW5jczsgaSsrKSB7CiAJCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlz ID0gZHB1X2VuYy0+cGh5c19lbmNzW2ldOwotCQllbnVtIGRwdV9ybV90b3BvbG9neV9uYW1lIHRv cG9sb2d5ID0gRFBVX1JNX1RPUE9MT0dZX05PTkU7CiAKIAkJaWYgKCFwaHlzIHx8IHBoeXMtPmVu YWJsZV9zdGF0ZSA9PSBEUFVfRU5DX0RJU0FCTEVEKQogCQkJY29udGludWU7CkBAIC0xODQxLDE3 ICsxODAxLDcgQEAgc3RhdGljIHZvaWQgX2RwdV9lbmNvZGVyX2tpY2tvZmZfcGh5cyhzdHJ1Y3Qg ZHB1X2VuY29kZXJfdmlydCAqZHB1X2VuYykKIAkJaWYgKCFjdGwpCiAJCQljb250aW51ZTsKIAot CQlpZiAocGh5cy0+Y29ubmVjdG9yKQotCQkJdG9wb2xvZ3kgPSBkcHVfY29ubmVjdG9yX2dldF90 b3BvbG9neV9uYW1lKAotCQkJCQlwaHlzLT5jb25uZWN0b3IpOwotCi0JCS8qCi0JCSAqIGRvbid0 IHdhaXQgb24gcHBzcGxpdCBzbGF2ZXMgb3Igc2tpcHBlZCBlbmNvZGVycyBiZWNhdXNlCi0JCSAq IHRoZXkgZG9udCByZWNlaXZlIGlycXMKLQkJICovCi0JCWlmICghKHRvcG9sb2d5ID09IERQVV9S TV9UT1BPTE9HWV9QUFNQTElUICYmCi0JCQkJcGh5cy0+c3BsaXRfcm9sZSA9PSBFTkNfUk9MRV9T TEFWRSkgJiYKLQkJCQlwaHlzLT5zcGxpdF9yb2xlICE9IEVOQ19ST0xFX1NLSVApCisJCWlmIChw aHlzLT5zcGxpdF9yb2xlICE9IEVOQ19ST0xFX1NMQVZFKQogCQkJc2V0X2JpdChpLCBkcHVfZW5j LT5mcmFtZV9idXN5X21hc2spOwogCQlpZiAocGh5cy0+aHdfY3RsLT5vcHMucmVnX2RtYV9mbHVz aCkKIAkJCXBoeXMtPmh3X2N0bC0+b3BzLnJlZ19kbWFfZmx1c2gocGh5cy0+aHdfY3RsKTsKQEAg LTE4NzUsMTI2ICsxODI1LDYgQEAgc3RhdGljIHZvaWQgX2RwdV9lbmNvZGVyX2tpY2tvZmZfcGh5 cyhzdHJ1Y3QgZHB1X2VuY29kZXJfdmlydCAqZHB1X2VuYykKIAlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZkcHVfZW5jLT5lbmNfc3BpbmxvY2ssIGxvY2tfZmxhZ3MpOwogfQogCi1zdGF0aWMgdm9p ZCBfZHB1X2VuY29kZXJfcHBzcGxpdF9zd2FwX2ludGZfZm9yX3JpZ2h0X29ubHlfdXBkYXRlKAot CQlzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMsCi0JCXVuc2lnbmVkIGxvbmcgKmFmZmVjdGVk X2Rpc3BsYXlzLAotCQlpbnQgbnVtX2FjdGl2ZV9waHlzKQotewotCXN0cnVjdCBkcHVfZW5jb2Rl cl92aXJ0ICpkcHVfZW5jOwotCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICptYXN0ZXI7Ci0JZW51 bSBkcHVfcm1fdG9wb2xvZ3lfbmFtZSB0b3BvbG9neTsKLQlib29sIGlzX3JpZ2h0X29ubHk7Ci0K LQlpZiAoIWRybV9lbmMgfHwgIWFmZmVjdGVkX2Rpc3BsYXlzKQotCQlyZXR1cm47Ci0KLQlkcHVf ZW5jID0gdG9fZHB1X2VuY29kZXJfdmlydChkcm1fZW5jKTsKLQltYXN0ZXIgPSBkcHVfZW5jLT5j dXJfbWFzdGVyOwotCWlmICghbWFzdGVyIHx8ICFtYXN0ZXItPmNvbm5lY3RvcikKLQkJcmV0dXJu OwotCi0JdG9wb2xvZ3kgPSBkcHVfY29ubmVjdG9yX2dldF90b3BvbG9neV9uYW1lKG1hc3Rlci0+ Y29ubmVjdG9yKTsKLQlpZiAodG9wb2xvZ3kgIT0gRFBVX1JNX1RPUE9MT0dZX1BQU1BMSVQpCi0J CXJldHVybjsKLQotCS8qCi0JICogRm9yIHBpbmdwb25nIHNwbGl0LCB0aGUgc2xhdmUgcGluZ3Bv bmcgd29uJ3QgZ2VuZXJhdGUgSVJRcy4gRm9yCi0JICogcmlnaHQtb25seSB1cGRhdGVzLCB3ZSBj YW4ndCBzd2FwIHBpbmdwb25ncywgb3Igc2ltcGx5IHN3YXAgdGhlCi0JICogbWFzdGVyL3NsYXZl IGFzc2lnbm1lbnQsIHdlIGFjdHVhbGx5IGhhdmUgdG8gc3dhcCB0aGUgaW50ZXJmYWNlcwotCSAq IHNvIHRoYXQgdGhlIG1hc3RlciBwaHlzaWNhbCBlbmNvZGVyIHdpbGwgdXNlIGEgcGluZ3Bvbmcv aW50ZXJmYWNlCi0JICogdGhhdCBnZW5lcmF0ZXMgaXJxcyBvbiB3aGljaCB0byB3YWl0LgotCSAq LwotCWlzX3JpZ2h0X29ubHkgPSAhdGVzdF9iaXQoMCwgYWZmZWN0ZWRfZGlzcGxheXMpICYmCi0J CQl0ZXN0X2JpdCgxLCBhZmZlY3RlZF9kaXNwbGF5cyk7Ci0KLQlpZiAoaXNfcmlnaHRfb25seSAm JiAhZHB1X2VuYy0+aW50ZnNfc3dhcHBlZCkgewotCQkvKiByaWdodC1vbmx5IHVwZGF0ZSBzd2Fw IGludGVyZmFjZXMgKi8KLQkJc3dhcChkcHVfZW5jLT5waHlzX2VuY3NbMF0tPmludGZfaWR4LAot CQkJCWRwdV9lbmMtPnBoeXNfZW5jc1sxXS0+aW50Zl9pZHgpOwotCQlkcHVfZW5jLT5pbnRmc19z d2FwcGVkID0gdHJ1ZTsKLQl9IGVsc2UgaWYgKCFpc19yaWdodF9vbmx5ICYmIGRwdV9lbmMtPmlu dGZzX3N3YXBwZWQpIHsKLQkJLyogbGVmdC1vbmx5IG9yIGZ1bGwgdXBkYXRlLCBzd2FwIGJhY2sg Ki8KLQkJc3dhcChkcHVfZW5jLT5waHlzX2VuY3NbMF0tPmludGZfaWR4LAotCQkJCWRwdV9lbmMt PnBoeXNfZW5jc1sxXS0+aW50Zl9pZHgpOwotCQlkcHVfZW5jLT5pbnRmc19zd2FwcGVkID0gZmFs c2U7Ci0JfQotCi0JRFBVX0RFQlVHX0VOQyhkcHVfZW5jLAotCQkJInJpZ2h0X29ubHkgJWQgc3dh cHBlZCAlZCBwaHlzMC0+aW50ZiVkLCBwaHlzMS0+aW50ZiVkXG4iLAotCQkJaXNfcmlnaHRfb25s eSwgZHB1X2VuYy0+aW50ZnNfc3dhcHBlZCwKLQkJCWRwdV9lbmMtPnBoeXNfZW5jc1swXS0+aW50 Zl9pZHggLSBJTlRGXzAsCi0JCQlkcHVfZW5jLT5waHlzX2VuY3NbMV0tPmludGZfaWR4IC0gSU5U Rl8wKTsKLQlEUFVfRVZUMzIoRFJNSUQoZHJtX2VuYyksIGlzX3JpZ2h0X29ubHksIGRwdV9lbmMt PmludGZzX3N3YXBwZWQsCi0JCQlkcHVfZW5jLT5waHlzX2VuY3NbMF0tPmludGZfaWR4IC0gSU5U Rl8wLAotCQkJZHB1X2VuYy0+cGh5c19lbmNzWzFdLT5pbnRmX2lkeCAtIElOVEZfMCwKLQkJCSph ZmZlY3RlZF9kaXNwbGF5cyk7Ci0KLQkvKiBwcHNwbGl0IGFsd2F5cyB1c2VzIG1hc3RlciBzaW5j ZSBwcHNsYXZlIGludmFsaWQgZm9yIGlycXMqLwotCWlmIChudW1fYWN0aXZlX3BoeXMgPT0gMSkK LQkJKmFmZmVjdGVkX2Rpc3BsYXlzID0gQklUKDApOwotfQotCi1zdGF0aWMgdm9pZCBfZHB1X2Vu Y29kZXJfdXBkYXRlX21hc3RlcihzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMsCi0JCXN0cnVj dCBkcHVfZW5jb2Rlcl9raWNrb2ZmX3BhcmFtcyAqcGFyYW1zKQotewotCXN0cnVjdCBkcHVfZW5j b2Rlcl92aXJ0ICpkcHVfZW5jOwotCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzOwotCWlu dCBpLCBudW1fYWN0aXZlX3BoeXM7Ci0JYm9vbCBtYXN0ZXJfYXNzaWduZWQgPSBmYWxzZTsKLQot CWlmICghZHJtX2VuYyB8fCAhcGFyYW1zKQotCQlyZXR1cm47Ci0KLQlkcHVfZW5jID0gdG9fZHB1 X2VuY29kZXJfdmlydChkcm1fZW5jKTsKLQotCWlmIChkcHVfZW5jLT5udW1fcGh5c19lbmNzIDw9 IDEpCi0JCXJldHVybjsKLQotCS8qIGNvdW50IGJpdHMgc2V0ICovCi0JbnVtX2FjdGl2ZV9waHlz ID0gaHdlaWdodF9sb25nKHBhcmFtcy0+YWZmZWN0ZWRfZGlzcGxheXMpOwotCi0JRFBVX0RFQlVH X0VOQyhkcHVfZW5jLCAiYWZmZWN0ZWRfZGlzcGxheXMgMHglbHggbnVtX2FjdGl2ZV9waHlzICVk XG4iLAotCQkJcGFyYW1zLT5hZmZlY3RlZF9kaXNwbGF5cywgbnVtX2FjdGl2ZV9waHlzKTsKLQot CS8qIGZvciBsZWZ0L3JpZ2h0IG9ubHkgdXBkYXRlLCBwcHNwbGl0IG1hc3RlciBzd2l0Y2hlcyBp bnRlcmZhY2UgKi8KLQlfZHB1X2VuY29kZXJfcHBzcGxpdF9zd2FwX2ludGZfZm9yX3JpZ2h0X29u bHlfdXBkYXRlKGRybV9lbmMsCi0JCQkmcGFyYW1zLT5hZmZlY3RlZF9kaXNwbGF5cywgbnVtX2Fj dGl2ZV9waHlzKTsKLQotCWZvciAoaSA9IDA7IGkgPCBkcHVfZW5jLT5udW1fcGh5c19lbmNzOyBp KyspIHsKLQkJZW51bSBkcHVfZW5jX3NwbGl0X3JvbGUgcHJ2X3JvbGUsIG5ld19yb2xlOwotCQli b29sIGFjdGl2ZTsKLQotCQlwaHlzID0gZHB1X2VuYy0+cGh5c19lbmNzW2ldOwotCQlpZiAoIXBo eXMgfHwgIXBoeXMtPm9wcy51cGRhdGVfc3BsaXRfcm9sZSB8fCAhcGh5cy0+aHdfcHApCi0JCQlj b250aW51ZTsKLQotCQlhY3RpdmUgPSB0ZXN0X2JpdChpLCAmcGFyYW1zLT5hZmZlY3RlZF9kaXNw bGF5cyk7Ci0JCXBydl9yb2xlID0gcGh5cy0+c3BsaXRfcm9sZTsKLQotCQlpZiAoYWN0aXZlICYm IG51bV9hY3RpdmVfcGh5cyA9PSAxKQotCQkJbmV3X3JvbGUgPSBFTkNfUk9MRV9TT0xPOwotCQll bHNlIGlmIChhY3RpdmUgJiYgIW1hc3Rlcl9hc3NpZ25lZCkKLQkJCW5ld19yb2xlID0gRU5DX1JP TEVfTUFTVEVSOwotCQllbHNlIGlmIChhY3RpdmUpCi0JCQluZXdfcm9sZSA9IEVOQ19ST0xFX1NM QVZFOwotCQllbHNlCi0JCQluZXdfcm9sZSA9IEVOQ19ST0xFX1NLSVA7Ci0KLQkJcGh5cy0+b3Bz LnVwZGF0ZV9zcGxpdF9yb2xlKHBoeXMsIG5ld19yb2xlKTsKLQkJaWYgKG5ld19yb2xlID09IEVO Q19ST0xFX1NPTE8gfHwgbmV3X3JvbGUgPT0gRU5DX1JPTEVfTUFTVEVSKSB7Ci0JCQlkcHVfZW5j LT5jdXJfbWFzdGVyID0gcGh5czsKLQkJCW1hc3Rlcl9hc3NpZ25lZCA9IHRydWU7Ci0JCX0KLQot CQlEUFVfREVCVUdfRU5DKGRwdV9lbmMsICJwcCAlZCByb2xlIHBydiAlZCBuZXcgJWQgYWN0aXZl ICVkXG4iLAotCQkJCXBoeXMtPmh3X3BwLT5pZHggLSBQSU5HUE9OR18wLCBwcnZfcm9sZSwKLQkJ CQlwaHlzLT5zcGxpdF9yb2xlLCBhY3RpdmUpOwotCQlEUFVfRVZUMzIoRFJNSUQoZHJtX2VuYyks IHBhcmFtcy0+YWZmZWN0ZWRfZGlzcGxheXMsCi0JCQkJcGh5cy0+aHdfcHAtPmlkeCAtIFBJTkdQ T05HXzAsIHBydl9yb2xlLAotCQkJCXBoeXMtPnNwbGl0X3JvbGUsIGFjdGl2ZSwgbnVtX2FjdGl2 ZV9waHlzKTsKLQl9Ci19Ci0KIGJvb2wgZHB1X2VuY29kZXJfY2hlY2tfbW9kZShzdHJ1Y3QgZHJt X2VuY29kZXIgKmRybV9lbmMsIHUzMiBtb2RlKQogewogCXN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0 ICpkcHVfZW5jOwpAQCAtMjA0OCwxNSArMTg3OCwxMCBAQCBzdGF0aWMgdm9pZCBfZHB1X2VuY29k ZXJfc2V0dXBfZGl0aGVyKHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzKQogCXZvaWQgKmRp dGhlcl9jZmc7CiAJaW50IHJldCA9IDA7CiAJc2l6ZV90IGxlbiA9IDA7Ci0JZW51bSBkcHVfcm1f dG9wb2xvZ3lfbmFtZSB0b3BvbG9neTsKIAogCWlmICghcGh5cyB8fCAhcGh5cy0+Y29ubmVjdG9y IHx8ICFwaHlzLT5od19wcCB8fAogCQkJIXBoeXMtPmh3X3BwLT5vcHMuc2V0dXBfZGl0aGVyKQog CQlyZXR1cm47Ci0JdG9wb2xvZ3kgPSBkcHVfY29ubmVjdG9yX2dldF90b3BvbG9neV9uYW1lKHBo eXMtPmNvbm5lY3Rvcik7Ci0JaWYgKCh0b3BvbG9neSA9PSBEUFVfUk1fVE9QT0xPR1lfUFBTUExJ VCkgJiYKLQkJCShwaHlzLT5zcGxpdF9yb2xlID09IEVOQ19ST0xFX1NMQVZFKSkKLQkJcmV0dXJu OwogCiAJcmV0ID0gZHB1X2Nvbm5lY3Rvcl9nZXRfZGl0aGVyX2NmZyhwaHlzLT5jb25uZWN0b3Is CiAJCQkJcGh5cy0+Y29ubmVjdG9yLT5zdGF0ZSwgJmRpdGhlcl9jZmcsICZsZW4pOwpAQCAtMjI2 Nyw4ICsyMDkyLDYgQEAgdm9pZCBkcHVfZW5jb2Rlcl9wcmVwYXJlX2Zvcl9raWNrb2ZmKHN0cnVj dCBkcm1fZW5jb2RlciAqZHJtX2VuYywKIAkJfQogCX0KIAotCV9kcHVfZW5jb2Rlcl91cGRhdGVf bWFzdGVyKGRybV9lbmMsIHBhcmFtcyk7Ci0KIAlpZiAoZHB1X2VuYy0+Y3VyX21hc3RlciAmJiBk cHVfZW5jLT5jdXJfbWFzdGVyLT5jb25uZWN0b3IpIHsKIAkJcmMgPSBkcHVfY29ubmVjdG9yX3By ZV9raWNrb2ZmKGRwdV9lbmMtPmN1cl9tYXN0ZXItPmNvbm5lY3Rvcik7CiAJCWlmIChyYykKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXMu aCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXMuaAppbmRl eCA0ZTJlNmM2Li42OWVjMmI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfZW5jb2Rlcl9waHlzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2VuY29kZXJfcGh5cy5oCkBAIC00MCwxMyArNDAsMTEgQEAKICAqIEBFTkNfUk9MRV9T T0xPOglUaGlzIGlzIHRoZSBvbmUgYW5kIG9ubHkgcGFuZWwuIFRoaXMgZW5jb2RlciBpcyBtYXN0 ZXIuCiAgKiBARU5DX1JPTEVfTUFTVEVSOglUaGlzIGVuY29kZXIgaXMgdGhlIG1hc3RlciBvZiBh IHNwbGl0IHBhbmVsIGNvbmZpZy4KICAqIEBFTkNfUk9MRV9TTEFWRToJVGhpcyBlbmNvZGVyIGlz IG5vdCB0aGUgbWFzdGVyIG9mIGEgc3BsaXQgcGFuZWwgY29uZmlnLgotICogQEVOQ19ST0xFX1NL SVA6CVRoaXMgZW5jb2RlciBpcyBub3QgcGFydGljaXBhdGluZyBpbiBraWNrb2ZmcwogICovCiBl bnVtIGRwdV9lbmNfc3BsaXRfcm9sZSB7CiAJRU5DX1JPTEVfU09MTywKIAlFTkNfUk9MRV9NQVNU RVIsCiAJRU5DX1JPTEVfU0xBVkUsCi0JRU5DX1JPTEVfU0tJUAogfTsKIAogLyoqCkBAIC0xMjMs NyArMTIxLDYgQEAgc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnRfb3BzIHsKICAqIEBod19yZXNldDoJ CQlJc3N1ZSBIVyByZWNvdmVyeSBzdWNoIGFzIENUTCByZXNldCBhbmQgY2xlYXIKICAqCQkJCURQ VV9FTkNfRVJSX05FRURTX0hXX1JFU0VUIHN0YXRlCiAgKiBAaXJxX2NvbnRyb2w6CQlIYW5kbGVy IHRvIGVuYWJsZS9kaXNhYmxlIGFsbCB0aGUgZW5jb2RlciBJUlFzCi0gKiBAdXBkYXRlX3NwbGl0 X3JvbGU6CQlVcGRhdGUgdGhlIHNwbGl0IHJvbGUgb2YgdGhlIHBoeXMgZW5jCiAgKiBAcHJlcGFy ZV9pZGxlX3BjOgkJcGh5cyBlbmNvZGVyIGNhbiB1cGRhdGUgdGhlIHZzeW5jX2VuYWJsZSBzdGF0 dXMKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gaWRsZSBwb3dlciBjb2xsYXBz ZSBwcmVwYXJlCiAgKiBAcmVzdG9yZToJCQlSZXN0b3JlIGFsbCB0aGUgZW5jb2RlciBjb25maWdz LgpAQCAtMTY3LDggKzE2NCw2IEBAIHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzX29wcyB7CiAJdTMy ICgqY29sbGVjdF9taXNyKShzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpOwogCXZv aWQgKCpod19yZXNldCkoc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKTsKIAl2b2lk ICgqaXJxX2NvbnRyb2wpKHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzLCBib29sIGVuYWJs ZSk7Ci0Jdm9pZCAoKnVwZGF0ZV9zcGxpdF9yb2xlKShzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAq cGh5c19lbmMsCi0JCQllbnVtIGRwdV9lbmNfc3BsaXRfcm9sZSByb2xlKTsKIAl2b2lkICgqcHJl cGFyZV9pZGxlX3BjKShzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpOwogCXZvaWQg KCpyZXN0b3JlKShzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5cyk7CiAJYm9vbCAoKmlzX2F1 dG9yZWZyZXNoX2VuYWJsZWQpKHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzKTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfY21k LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX2NtZC5j CmluZGV4IDcxZTJlNWEuLjM0MzY3ODggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfY21kLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c19jbWQuYwpAQCAtMTE0LDI5ICsxMTQsNiBAQCBz dGF0aWMgdm9pZCBfZHB1X2VuY29kZXJfcGh5c19jbWRfY29uZmlnX2F1dG9yZWZyZXNoKAogCQlo d19wcC0+b3BzLnNldHVwX2F1dG9yZWZyZXNoKGh3X3BwLCBjZmdfY3VyKTsKIH0KIAotc3RhdGlj IHZvaWQgX2RwdV9lbmNvZGVyX3BoeXNfY21kX3VwZGF0ZV9mbHVzaF9tYXNrKAotCQlzdHJ1Y3Qg ZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpCi17Ci0Jc3RydWN0IGRwdV9lbmNvZGVyX3BoeXNf Y21kICpjbWRfZW5jID0KLQkJCXRvX2RwdV9lbmNvZGVyX3BoeXNfY21kKHBoeXNfZW5jKTsKLQlz dHJ1Y3QgZHB1X2h3X2N0bCAqY3RsOwotCXUzMiBmbHVzaF9tYXNrID0gMDsKLQotCWlmICghcGh5 c19lbmMpCi0JCXJldHVybjsKLQotCWN0bCA9IHBoeXNfZW5jLT5od19jdGw7Ci0JaWYgKCFjdGwg fHwgIWN0bC0+b3BzLmdldF9iaXRtYXNrX2ludGYgfHwKLQkJCSFjdGwtPm9wcy51cGRhdGVfcGVu ZGluZ19mbHVzaCkKLQkJcmV0dXJuOwotCi0JY3RsLT5vcHMuZ2V0X2JpdG1hc2tfaW50ZihjdGws ICZmbHVzaF9tYXNrLCBwaHlzX2VuYy0+aW50Zl9pZHgpOwotCWN0bC0+b3BzLnVwZGF0ZV9wZW5k aW5nX2ZsdXNoKGN0bCwgZmx1c2hfbWFzayk7Ci0KLQlEUFVfREVCVUdfQ01ERU5DKGNtZF9lbmMs ICJ1cGRhdGUgcGVuZGluZyBmbHVzaCBjdGwgJWQgZmx1c2hfbWFzayAleFxuIiwKLQkJCWN0bC0+ aWR4IC0gQ1RMXzAsIGZsdXNoX21hc2spOwotfQotCiBzdGF0aWMgdm9pZCBfZHB1X2VuY29kZXJf cGh5c19jbWRfdXBkYXRlX2ludGZfY2ZnKAogCQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5 c19lbmMpCiB7CkBAIC0zMjQsMjAgKzMwMSw2IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3Bo eXNfY21kX21vZGVfc2V0KAogCV9kcHVfZW5jb2Rlcl9waHlzX2NtZF9zZXR1cF9pcnFfaHdfaWR4 KHBoeXNfZW5jKTsKIH0KIAotc3RhdGljIGJvb2wgX2RwdV9lbmNvZGVyX3BoeXNfaXNfcHBzcGxp dChzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpCi17Ci0JZW51bSBkcHVfcm1fdG9w b2xvZ3lfbmFtZSB0b3BvbG9neTsKLQotCWlmICghcGh5c19lbmMpCi0JCXJldHVybiBmYWxzZTsK LQotCXRvcG9sb2d5ID0gZHB1X2Nvbm5lY3Rvcl9nZXRfdG9wb2xvZ3lfbmFtZShwaHlzX2VuYy0+ Y29ubmVjdG9yKTsKLQlpZiAodG9wb2xvZ3kgPT0gRFBVX1JNX1RPUE9MT0dZX1BQU1BMSVQpCi0J CXJldHVybiB0cnVlOwotCi0JcmV0dXJuIGZhbHNlOwotfQotCiBzdGF0aWMgaW50IF9kcHVfZW5j b2Rlcl9waHlzX2NtZF9oYW5kbGVfcHBkb25lX3RpbWVvdXQoCiAJCXN0cnVjdCBkcHVfZW5jb2Rl cl9waHlzICpwaHlzX2VuYykKIHsKQEAgLTM4OSwxNiArMzUyLDYgQEAgc3RhdGljIGludCBfZHB1 X2VuY29kZXJfcGh5c19jbWRfaGFuZGxlX3BwZG9uZV90aW1lb3V0KAogCXJldHVybiAtRVRJTUVE T1VUOwogfQogCi1zdGF0aWMgYm9vbCBfZHB1X2VuY29kZXJfcGh5c19pc19wcHNwbGl0X3NsYXZl KAotCQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpCi17Ci0JaWYgKCFwaHlzX2Vu YykKLQkJcmV0dXJuIGZhbHNlOwotCi0JcmV0dXJuIF9kcHVfZW5jb2Rlcl9waHlzX2lzX3Bwc3Bs aXQocGh5c19lbmMpICYmCi0JCQlwaHlzX2VuYy0+c3BsaXRfcm9sZSA9PSBFTkNfUk9MRV9TTEFW RTsKLX0KLQogc3RhdGljIGludCBfZHB1X2VuY29kZXJfcGh5c19jbWRfcG9sbF93cml0ZV9wb2lu dGVyX3N0YXJ0ZWQoCiAJCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYykKIHsKQEAg LTQ4MywxMCArNDM2LDYgQEAgc3RhdGljIGludCBfZHB1X2VuY29kZXJfcGh5c19jbWRfd2FpdF9m b3JfaWRsZSgKIAl3YWl0X2luZm8uYXRvbWljX2NudCA9ICZwaHlzX2VuYy0+cGVuZGluZ19raWNr b2ZmX2NudDsKIAl3YWl0X2luZm8udGltZW91dF9tcyA9IEtJQ0tPRkZfVElNRU9VVF9NUzsKIAot CS8qIHNsYXZlIGVuY29kZXIgZG9lc24ndCBlbmFibGUgZm9yIHBwc3BsaXQgKi8KLQlpZiAoX2Rw dV9lbmNvZGVyX3BoeXNfaXNfcHBzcGxpdF9zbGF2ZShwaHlzX2VuYykpCi0JCXJldHVybiAwOwot CiAJcmV0ID0gZHB1X2VuY29kZXJfaGVscGVyX3dhaXRfZm9yX2lycShwaHlzX2VuYywgSU5UUl9J RFhfUElOR1BPTkcsCiAJCQkmd2FpdF9pbmZvKTsKIAlpZiAocmV0ID09IC1FVElNRURPVVQpCkBA IC01ODgsNyArNTM3LDcgQEAgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX2NtZF9pcnFfY29udHJvbChz dHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMsCiB7CiAJc3RydWN0IGRwdV9lbmNvZGVy X3BoeXNfY21kICpjbWRfZW5jOwogCi0JaWYgKCFwaHlzX2VuYyB8fCBfZHB1X2VuY29kZXJfcGh5 c19pc19wcHNwbGl0X3NsYXZlKHBoeXNfZW5jKSkKKwlpZiAoIXBoeXNfZW5jKQogCQlyZXR1cm47 CiAKIAljbWRfZW5jID0gdG9fZHB1X2VuY29kZXJfcGh5c19jbWQocGh5c19lbmMpOwpAQCAtNzI2 LDE4ICs2NzUsMTggQEAgc3RhdGljIHZvaWQgX2RwdV9lbmNvZGVyX3BoeXNfY21kX3Bpbmdwb25n X2NvbmZpZygKIAkJCXBoeXNfZW5jLT5od19wcC0+aWR4IC0gUElOR1BPTkdfMCk7CiAJZHJtX21v ZGVfZGVidWdfcHJpbnRtb2RlbGluZSgmcGh5c19lbmMtPmNhY2hlZF9tb2RlKTsKIAotCWlmICgh X2RwdV9lbmNvZGVyX3BoeXNfaXNfcHBzcGxpdF9zbGF2ZShwaHlzX2VuYykpCi0JCV9kcHVfZW5j b2Rlcl9waHlzX2NtZF91cGRhdGVfaW50Zl9jZmcocGh5c19lbmMpOworCV9kcHVfZW5jb2Rlcl9w aHlzX2NtZF91cGRhdGVfaW50Zl9jZmcocGh5c19lbmMpOwogCWRwdV9lbmNvZGVyX3BoeXNfY21k X3RlYXJjaGVja19jb25maWcocGh5c19lbmMpOwogfQogCiBzdGF0aWMgYm9vbCBkcHVfZW5jb2Rl cl9waHlzX2NtZF9uZWVkc19zaW5nbGVfZmx1c2goCiAJCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlz ICpwaHlzX2VuYykKIHsKLQlpZiAoIXBoeXNfZW5jKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQlyZXR1 cm4gX2RwdV9lbmNvZGVyX3BoeXNfaXNfcHBzcGxpdChwaHlzX2VuYyk7CisJLyoqCisJICogd2Ug ZG8gc2VwYXJhdGUgZmx1c2ggZm9yIGVhY2ggQ1RMIGFuZCBsZXQKKwkgKiBDVExfU1RBUlQgc3lu Y2hyb25pemUgdGhlbQorCSAqLworCXJldHVybiBmYWxzZTsKIH0KIAogc3RhdGljIHZvaWQgZHB1 X2VuY29kZXJfcGh5c19jbWRfZW5hYmxlX2hlbHBlcigKQEAgLTc1NSwxMiArNzA0LDcgQEAgc3Rh dGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c19jbWRfZW5hYmxlX2hlbHBlcigKIAogCV9kcHVfZW5j b2Rlcl9waHlzX2NtZF9waW5ncG9uZ19jb25maWcocGh5c19lbmMpOwogCi0JLyoKLQkgKiBGb3Ig cHAtc3BsaXQsIHNraXAgc2V0dGluZyB0aGUgZmx1c2ggYml0IGZvciB0aGUgc2xhdmUgaW50Ziwg c2luY2UKLQkgKiBib3RoIGludGZzIHVzZSBzYW1lIGN0bCBhbmQgSFcgd2lsbCBvbmx5IGZsdXNo IHRoZSBtYXN0ZXIuCi0JICovCi0JaWYgKF9kcHVfZW5jb2Rlcl9waHlzX2lzX3Bwc3BsaXQocGh5 c19lbmMpICYmCi0JCSFkcHVfZW5jb2Rlcl9waHlzX2NtZF9pc19tYXN0ZXIocGh5c19lbmMpKQor CWlmICghZHB1X2VuY29kZXJfcGh5c19jbWRfaXNfbWFzdGVyKHBoeXNfZW5jKSkKIAkJZ290byBz a2lwX2ZsdXNoOwogCiAJY3RsID0gcGh5c19lbmMtPmh3X2N0bDsKQEAgLTk2MywxMCArOTA3LDYg QEAgc3RhdGljIGludCBfZHB1X2VuY29kZXJfcGh5c19jbWRfd2FpdF9mb3JfY3RsX3N0YXJ0KAog CXdhaXRfaW5mby5hdG9taWNfY250ID0gJnBoeXNfZW5jLT5wZW5kaW5nX2N0bHN0YXJ0X2NudDsK IAl3YWl0X2luZm8udGltZW91dF9tcyA9IEtJQ0tPRkZfVElNRU9VVF9NUzsKIAotCS8qIHNsYXZl IGVuY29kZXIgZG9lc24ndCBlbmFibGUgZm9yIHBwc3BsaXQgKi8KLQlpZiAoX2RwdV9lbmNvZGVy X3BoeXNfaXNfcHBzcGxpdF9zbGF2ZShwaHlzX2VuYykpCi0JCXJldHVybiAwOwotCiAJcmV0ID0g ZHB1X2VuY29kZXJfaGVscGVyX3dhaXRfZm9yX2lycShwaHlzX2VuYywgSU5UUl9JRFhfQ1RMX1NU QVJULAogCQkJJndhaXRfaW5mbyk7CiAJaWYgKHJldCA9PSAtRVRJTUVET1VUKSB7CkBAIC0xMDUz LDM5ICs5OTMsNiBAQCBzdGF0aWMgaW50IGRwdV9lbmNvZGVyX3BoeXNfY21kX3dhaXRfZm9yX3Zi bGFuaygKIAlyZXR1cm4gcmM7CiB9CiAKLXN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfY21k X3VwZGF0ZV9zcGxpdF9yb2xlKAotCQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMs Ci0JCWVudW0gZHB1X2VuY19zcGxpdF9yb2xlIHJvbGUpCi17Ci0Jc3RydWN0IGRwdV9lbmNvZGVy X3BoeXNfY21kICpjbWRfZW5jOwotCWVudW0gZHB1X2VuY19zcGxpdF9yb2xlIG9sZF9yb2xlOwot CWJvb2wgaXNfcHBzcGxpdDsKLQotCWlmICghcGh5c19lbmMpCi0JCXJldHVybjsKLQotCWNtZF9l bmMgPSB0b19kcHVfZW5jb2Rlcl9waHlzX2NtZChwaHlzX2VuYyk7Ci0Jb2xkX3JvbGUgPSBwaHlz X2VuYy0+c3BsaXRfcm9sZTsKLQlpc19wcHNwbGl0ID0gX2RwdV9lbmNvZGVyX3BoeXNfaXNfcHBz cGxpdChwaHlzX2VuYyk7Ci0KLQlwaHlzX2VuYy0+c3BsaXRfcm9sZSA9IHJvbGU7Ci0KLQlEUFVf REVCVUdfQ01ERU5DKGNtZF9lbmMsICJvbGQgcm9sZSAlZCBuZXcgcm9sZSAlZFxuIiwKLQkJCW9s ZF9yb2xlLCByb2xlKTsKLQotCS8qCi0JICogcHBzcGxpdCBzb2xvIG5lZWRzIHRvIHJlcHJvZ3Jh bSBiZWNhdXNlIGludGYgbWF5IGhhdmUgc3dhcHBlZCB3aXRob3V0Ci0JICogcm9sZSBjaGFuZ2lu ZyBvbiBsZWZ0LW9ubHksIHJpZ2h0LW9ubHkgYmFjay10by1iYWNrIGNvbW1pdHMKLQkgKi8KLQlp ZiAoIShpc19wcHNwbGl0ICYmIHJvbGUgPT0gRU5DX1JPTEVfU09MTykgJiYKLQkJCShyb2xlID09 IG9sZF9yb2xlIHx8IHJvbGUgPT0gRU5DX1JPTEVfU0tJUCkpCi0JCXJldHVybjsKLQotCWRwdV9l bmNvZGVyX2hlbHBlcl9zcGxpdF9jb25maWcocGh5c19lbmMsIHBoeXNfZW5jLT5pbnRmX2lkeCk7 Ci0JX2RwdV9lbmNvZGVyX3BoeXNfY21kX3Bpbmdwb25nX2NvbmZpZyhwaHlzX2VuYyk7Ci0JX2Rw dV9lbmNvZGVyX3BoeXNfY21kX3VwZGF0ZV9mbHVzaF9tYXNrKHBoeXNfZW5jKTsKLX0KLQogc3Rh dGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c19jbWRfcHJlcGFyZV9jb21taXQoCiAJCXN0cnVjdCBk cHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYykKIHsKQEAgLTExOTEsNyArMTA5OCw2IEBAIHN0YXRp YyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfY21kX2luaXRfb3BzKAogCW9wcy0+bmVlZHNfc2luZ2xl X2ZsdXNoID0gZHB1X2VuY29kZXJfcGh5c19jbWRfbmVlZHNfc2luZ2xlX2ZsdXNoOwogCW9wcy0+ aHdfcmVzZXQgPSBkcHVfZW5jb2Rlcl9oZWxwZXJfaHdfcmVzZXQ7CiAJb3BzLT5pcnFfY29udHJv bCA9IGRwdV9lbmNvZGVyX3BoeXNfY21kX2lycV9jb250cm9sOwotCW9wcy0+dXBkYXRlX3NwbGl0 X3JvbGUgPSBkcHVfZW5jb2Rlcl9waHlzX2NtZF91cGRhdGVfc3BsaXRfcm9sZTsKIAlvcHMtPnJl c3RvcmUgPSBkcHVfZW5jb2Rlcl9waHlzX2NtZF9lbmFibGVfaGVscGVyOwogCW9wcy0+cHJlcGFy ZV9pZGxlX3BjID0gZHB1X2VuY29kZXJfcGh5c19jbWRfcHJlcGFyZV9pZGxlX3BjOwogCW9wcy0+ aXNfYXV0b3JlZnJlc2hfZW5hYmxlZCA9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c192aWQuYwppbmRleCBkNmI3MmEzLi5iNjgwNzE4IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlz X3ZpZC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3Bo eXNfdmlkLmMKQEAgLTM1NCwyMCArMzU0LDYgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5 c192aWRfdW5kZXJydW5faXJxKHZvaWQgKmFyZywgaW50IGlycV9pZHgpCiAJCQlwaHlzX2VuYyk7 CiB9CiAKLXN0YXRpYyBib29sIF9kcHVfZW5jb2Rlcl9waHlzX2lzX3Bwc3BsaXQoc3RydWN0IGRw dV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQotewotCWVudW0gZHB1X3JtX3RvcG9sb2d5X25hbWUg dG9wb2xvZ3k7Ci0KLQlpZiAoIXBoeXNfZW5jKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQl0b3BvbG9n eSA9IGRwdV9jb25uZWN0b3JfZ2V0X3RvcG9sb2d5X25hbWUocGh5c19lbmMtPmNvbm5lY3Rvcik7 Ci0JaWYgKHRvcG9sb2d5ID09IERQVV9STV9UT1BPTE9HWV9QUFNQTElUKQotCQlyZXR1cm4gdHJ1 ZTsKLQotCXJldHVybiBmYWxzZTsKLX0KLQogc3RhdGljIGJvb2wgX2RwdV9lbmNvZGVyX3BoeXNf aXNfZHVhbF9jdGwoc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQogewogCWVudW0g ZHB1X3JtX3RvcG9sb2d5X25hbWUgdG9wb2xvZ3k7CkBAIC0zODUsOCArMzcxLDcgQEAgc3RhdGlj IGJvb2wgX2RwdV9lbmNvZGVyX3BoeXNfaXNfZHVhbF9jdGwoc3RydWN0IGRwdV9lbmNvZGVyX3Bo eXMgKnBoeXNfZW5jKQogc3RhdGljIGJvb2wgZHB1X2VuY29kZXJfcGh5c192aWRfbmVlZHNfc2lu Z2xlX2ZsdXNoKAogCQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpCiB7Ci0JcmV0 dXJuIHBoeXNfZW5jICYmIChfZHB1X2VuY29kZXJfcGh5c19pc19wcHNwbGl0KHBoeXNfZW5jKSB8 fAotCQlfZHB1X2VuY29kZXJfcGh5c19pc19kdWFsX2N0bChwaHlzX2VuYykpOworCXJldHVybiAo cGh5c19lbmMgJiYgX2RwdV9lbmNvZGVyX3BoeXNfaXNfZHVhbF9jdGwocGh5c19lbmMpKTsKIH0K IAogc3RhdGljIHZvaWQgX2RwdV9lbmNvZGVyX3BoeXNfdmlkX3NldHVwX2lycV9od19pZHgoCkBA IC02MDksOSArNTk0LDcgQEAgc3RhdGljIGludCBfZHB1X2VuY29kZXJfcGh5c192aWRfd2FpdF9m b3JfdmJsYW5rKAogCXdhaXRfaW5mby50aW1lb3V0X21zID0gS0lDS09GRl9USU1FT1VUX01TOwog CiAJaWYgKCFkcHVfZW5jb2Rlcl9waHlzX3ZpZF9pc19tYXN0ZXIocGh5c19lbmMpKSB7Ci0JCS8q IHNpZ25hbCBkb25lIGZvciBzbGF2ZSB2aWRlbyBlbmNvZGVyLCB1bmxlc3MgaXQgaXMgcHAtc3Bs aXQgKi8KLQkJaWYgKCFfZHB1X2VuY29kZXJfcGh5c19pc19wcHNwbGl0KHBoeXNfZW5jKSAmJgot CQkJbm90aWZ5ICYmIHBoeXNfZW5jLT5wYXJlbnRfb3BzLmhhbmRsZV9mcmFtZV9kb25lKQorCQlp ZiAobm90aWZ5ICYmIHBoeXNfZW5jLT5wYXJlbnRfb3BzLmhhbmRsZV9mcmFtZV9kb25lKQogCQkJ cGh5c19lbmMtPnBhcmVudF9vcHMuaGFuZGxlX2ZyYW1lX2RvbmUoCiAJCQkJCXBoeXNfZW5jLT5w YXJlbnQsIHBoeXNfZW5jLAogCQkJCQlEUFVfRU5DT0RFUl9GUkFNRV9FVkVOVF9ET05FKTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmMg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5jCmluZGV4IDE0 ZTY2Y2EuLjhlNzc5YzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9od19jYXRhbG9nLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2h3X2NhdGFsb2cuYwpAQCAtNDMsNyArNDMsNyBAQAogI2RlZmluZSBQSU5HUE9OR19TRE04NDVf TUFTSyBCSVQoRFBVX1BJTkdQT05HX0RJVEhFUikKIAogI2RlZmluZSBQSU5HUE9OR19TRE04NDVf U1BMSVRfTUFTSyBcCi0JKFBJTkdQT05HX1NETTg0NV9NQVNLIHwgQklUKERQVV9QSU5HUE9OR19T UExJVCkgfCBCSVQoRFBVX1BJTkdQT05HX1RFMikpCisJKFBJTkdQT05HX1NETTg0NV9NQVNLIHwg QklUKERQVV9QSU5HUE9OR19URTIpKQogCiAjZGVmaW5lIFdCMl9TRE04NDVfTUFTSyBcCiAJKEJJ VChEUFVfV0JfTElORV9NT0RFKSB8IEJJVChEUFVfV0JfVFJBRkZJQ19TSEFQRVIpIHwgQklUKERQ VV9XQl9DRFApIHxcCkBAIC0xMTksOCArMTE5LDcgQEAKIAl7CiAJLm5hbWUgPSAiY3RsXzAiLCAu aWQgPSBDVExfMCwKIAkuYmFzZSA9IDB4MjAwMCwgLmxlbiA9IDB4RTQsCi0JLmZlYXR1cmVzID0g QklUKERQVV9DVExfU1BMSVRfRElTUExBWSkgfAotCQlCSVQoRFBVX0NUTF9QSU5HUE9OR19TUExJ VCkKKwkuZmVhdHVyZXMgPSBCSVQoRFBVX0NUTF9TUExJVF9ESVNQTEFZKQogCX0sCiAJewogCS5u YW1lID0gImN0bF8xIiwgLmlkID0gQ1RMXzEsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2h3X2NhdGFsb2cuaAppbmRleCBjZWZmM2I3Li4zOWJlYzBhIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmgKQEAgLTIxNCwxMiAr MjE0LDEwIEBAIGVudW0gewogLyoqCiAgKiBDVEwgc3ViLWJsb2NrcwogICogQERQVV9DVExfU1BM SVRfRElTUExBWSAgICAgICBDVEwgc3VwcG9ydHMgdmlkZW8gbW9kZSBzcGxpdCBkaXNwbGF5Ci0g KiBARFBVX0NUTF9QSU5HUE9OR19TUExJVCAgICAgIENUTCBzdXBwb3J0cyBwaW5ncG9uZyBzcGxp dAogICogQERQVV9DVExfTUFYCiAgKi8KIGVudW0gewogCURQVV9DVExfU1BMSVRfRElTUExBWSA9 IDB4MSwKLQlEUFVfQ1RMX1BJTkdQT05HX1NQTElULAogCURQVV9DVExfTUFYCiB9OwogCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfdG9wLmMgYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfdG9wLmMKaW5kZXggNjBlNGJlZi4uOGY3 ZjkzMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3Rv cC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od190b3AuYwpAQCAt ODAsMTEgKzgwLDYgQEAgc3RhdGljIHZvaWQgZHB1X2h3X3NldHVwX3NwbGl0X3BpcGUoc3RydWN0 IGRwdV9od19tZHAgKm1kcCwKIAkJCQlsb3dlcl9waXBlIHw9IEZMRF9JTlRGXzFfU1dfVFJHX01V WDsKIAkJCWVsc2UKIAkJCQlsb3dlcl9waXBlIHw9IEZMRF9JTlRGXzJfU1dfVFJHX01VWDsKLQot CQkJLyogZnJlZSBydW4gKi8KLQkJCWlmIChjZmctPnBwX3NwbGl0X3NsYXZlICE9IElOVEZfTUFY KQotCQkJCWxvd2VyX3BpcGUgPSBGTERfU01BUlRfUEFORUxfRlJFRV9SVU47Ci0KIAkJCXVwcGVy X3BpcGUgPSBsb3dlcl9waXBlOwogCQl9IGVsc2UgewogCQkJaWYgKGNmZy0+aW50ZiA9PSBJTlRG XzIpIHsKQEAgLTEwMywzMyArOTgsNiBAQCBzdGF0aWMgdm9pZCBkcHVfaHdfc2V0dXBfc3BsaXRf cGlwZShzdHJ1Y3QgZHB1X2h3X21kcCAqbWRwLAogCURQVV9SRUdfV1JJVEUoYywgU1BMSVRfRElT UExBWV9FTiwgY2ZnLT5lbiAmIDB4MSk7CiB9CiAKLXN0YXRpYyB2b2lkIGRwdV9od19zZXR1cF9w cF9zcGxpdChzdHJ1Y3QgZHB1X2h3X21kcCAqbWRwLAotCQlzdHJ1Y3Qgc3BsaXRfcGlwZV9jZmcg KmNmZykKLXsKLQl1MzIgcHBiX2NvbmZpZyA9IDB4MDsKLQl1MzIgcHBiX2NvbnRyb2wgPSAweDA7 Ci0KLQlpZiAoIW1kcCB8fCAhY2ZnKQotCQlyZXR1cm47Ci0KLQlpZiAoY2ZnLT5lbiAmJiBjZmct PnBwX3NwbGl0X3NsYXZlICE9IElOVEZfTUFYKSB7Ci0JCXBwYl9jb25maWcgfD0gKGNmZy0+cHBf c3BsaXRfc2xhdmUgLSBJTlRGXzAgKyAxKSA8PCAyMDsKLQkJcHBiX2NvbmZpZyB8PSBCSVQoMTYp OyAvKiBzcGxpdCBlbmFibGUgKi8KLQkJcHBiX2NvbnRyb2wgPSBCSVQoNSk7IC8qIGhvcnogc3Bs aXQqLwotCX0KLQlpZiAoY2ZnLT5wcF9zcGxpdF9pbmRleCkgewotCQlEUFVfUkVHX1dSSVRFKCZt ZHAtPmh3LCBQUEIwX0NPTkZJRywgMHgwKTsKLQkJRFBVX1JFR19XUklURSgmbWRwLT5odywgUFBC MF9DTlRMLCAweDApOwotCQlEUFVfUkVHX1dSSVRFKCZtZHAtPmh3LCBQUEIxX0NPTkZJRywgcHBi X2NvbmZpZyk7Ci0JCURQVV9SRUdfV1JJVEUoJm1kcC0+aHcsIFBQQjFfQ05UTCwgcHBiX2NvbnRy b2wpOwotCX0gZWxzZSB7Ci0JCURQVV9SRUdfV1JJVEUoJm1kcC0+aHcsIFBQQjBfQ09ORklHLCBw cGJfY29uZmlnKTsKLQkJRFBVX1JFR19XUklURSgmbWRwLT5odywgUFBCMF9DTlRMLCBwcGJfY29u dHJvbCk7Ci0JCURQVV9SRUdfV1JJVEUoJm1kcC0+aHcsIFBQQjFfQ09ORklHLCAweDApOwotCQlE UFVfUkVHX1dSSVRFKCZtZHAtPmh3LCBQUEIxX0NOVEwsIDB4MCk7Ci0JfQotfQotCiBzdGF0aWMg dm9pZCBkcHVfaHdfc2V0dXBfY2RtX291dHB1dChzdHJ1Y3QgZHB1X2h3X21kcCAqbWRwLAogCQlz dHJ1Y3QgY2RtX291dHB1dF9jZmcgKmNmZykKIHsKQEAgLTM0OSw3ICszMTcsNiBAQCBzdGF0aWMg dm9pZCBfc2V0dXBfbWRwX29wcyhzdHJ1Y3QgZHB1X2h3X21kcF9vcHMgKm9wcywKIAkJdW5zaWdu ZWQgbG9uZyBjYXApCiB7CiAJb3BzLT5zZXR1cF9zcGxpdF9waXBlID0gZHB1X2h3X3NldHVwX3Nw bGl0X3BpcGU7Ci0Jb3BzLT5zZXR1cF9wcF9zcGxpdCA9IGRwdV9od19zZXR1cF9wcF9zcGxpdDsK IAlvcHMtPnNldHVwX2NkbV9vdXRwdXQgPSBkcHVfaHdfc2V0dXBfY2RtX291dHB1dDsKIAlvcHMt PnNldHVwX2Nsa19mb3JjZV9jdHJsID0gZHB1X2h3X3NldHVwX2Nsa19mb3JjZV9jdHJsOwogCW9w cy0+Z2V0X2Rhbmdlcl9zdGF0dXMgPSBkcHVfaHdfZ2V0X2Rhbmdlcl9zdGF0dXM7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfdG9wLmggYi9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfdG9wLmgKaW5kZXggMTQ3MGQwZi4uNTQyOWNk NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3RvcC5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od190b3AuaApAQCAtNDEs OCArNDEsNiBAQCBzdHJ1Y3QgdHJhZmZpY19zaGFwZXJfY2ZnIHsKICAqIEBlbiAgICAgICAgOiBF bmFibGUvZGlzYWJsZSBkdWFsIHBpcGUgY29uZmd1cmF0aW9uCiAgKiBAbW9kZSAgICAgIDogUGFu ZWwgaW50ZXJmYWNlIG1vZGUKICAqIEBpbnRmICAgICAgOiBJbnRlcmZhY2UgaWQgZm9yIG1haW4g Y29udHJvbCBwYXRoCi0gKiBAcHBfc3BsaXRfc2xhdmU6IFNsYXZlIGludGVyZmFjZSBmb3IgcGlu ZyBwb25nIHNwbGl0LCBJTlRGX01BWCB0byBkaXNhYmxlCi0gKiBAcHBfc3BsaXRfaWR4OiAgIFBp bmcgcG9uZyBpbmRleCBmb3IgcGluZyBwb25nIHNwbGl0CiAgKiBAc3BsaXRfZmx1c2hfZW46IEFs bG93cyBib3RoIHRoZSBwYXRocyB0byBiZSBmbHVzaGVkIHdoZW4gbWFzdGVyIHBhdGggaXMKICAq ICAgICAgICAgICAgICBmbHVzaGVkCiAgKi8KQEAgLTUwLDggKzQ4LDYgQEAgc3RydWN0IHNwbGl0 X3BpcGVfY2ZnIHsKIAlib29sIGVuOwogCWVudW0gZHB1X2ludGZfbW9kZSBtb2RlOwogCWVudW0g ZHB1X2ludGYgaW50ZjsKLQllbnVtIGRwdV9pbnRmIHBwX3NwbGl0X3NsYXZlOwotCXUzMiBwcF9z cGxpdF9pbmRleDsKIAlib29sIHNwbGl0X2ZsdXNoX2VuOwogfTsKIApAQCAtMTA5LDEzICsxMDUs NiBAQCBzdHJ1Y3QgZHB1X2h3X21kcF9vcHMgewogCXZvaWQgKCpzZXR1cF9zcGxpdF9waXBlKShz dHJ1Y3QgZHB1X2h3X21kcCAqbWRwLAogCQkJc3RydWN0IHNwbGl0X3BpcGVfY2ZnICpwKTsKIAot CS8qKiBzZXR1cF9wcF9zcGxpdCgpIDogQ29uZmlndXJlIHBwIHNwbGl0IHJlbGF0ZWQgcmVnaXN0 ZXJzCi0JICogQG1kcCAgOiBtZHAgdG9wIGNvbnRleHQgZHJpdmVyCi0JICogQGNmZyAgOiB1cHBl ciBhbmQgbG93ZXIgcGFydCBvZiBwaXBlIGNvbmZpZ3VyYXRpb24KLQkgKi8KLQl2b2lkICgqc2V0 dXBfcHBfc3BsaXQpKHN0cnVjdCBkcHVfaHdfbWRwICptZHAsCi0JCQlzdHJ1Y3Qgc3BsaXRfcGlw ZV9jZmcgKmNmZyk7Ci0KIAkvKioKIAkgKiBzZXR1cF9jZG1fb3V0cHV0KCkgOiBTZXR1cCBzZWxl Y3Rpb24gY29udHJvbCBvZiB0aGUgY2RtIGRhdGEgcGF0aAogCSAqIEBtZHAgIDogbWRwIHRvcCBj b250ZXh0IGRyaXZlcgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2h3aW8uaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od2lvLmgKaW5k ZXggYjg4NzA4Mi4uNWIyYmM5YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2h3aW8uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf aHdpby5oCkBAIC0zNiwxMCArMzYsNiBAQAogI2RlZmluZSBEU1BQX0lHQ19DT0xPUjBfUkFNX0xV VE4gICAgICAgIDB4MzAwCiAjZGVmaW5lIERTUFBfSUdDX0NPTE9SMV9SQU1fTFVUTiAgICAgICAg MHgzMDQKICNkZWZpbmUgRFNQUF9JR0NfQ09MT1IyX1JBTV9MVVROICAgICAgICAweDMwOAotI2Rl ZmluZSBQUEIwX0NOVEwgICAgICAgICAgICAgICAgICAgICAgIDB4MzMwCi0jZGVmaW5lIFBQQjBf Q09ORklHICAgICAgICAgICAgICAgICAgICAgMHgzMzQKLSNkZWZpbmUgUFBCMV9DTlRMICAgICAg ICAgICAgICAgICAgICAgICAweDMzOAotI2RlZmluZSBQUEIxX0NPTkZJRyAgICAgICAgICAgICAg ICAgICAgIDB4MzNDCiAjZGVmaW5lIEhXX0VWRU5UU19DVEwgICAgICAgICAgICAgICAgICAgMHgz N0MKICNkZWZpbmUgQ0xLX0NUUkwzICAgICAgICAgICAgICAgICAgICAgICAweDNBOAogI2RlZmlu ZSBDTEtfU1RBVFVTMyAgICAgICAgICAgICAgICAgICAgIDB4M0FDCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9ybS5jCmluZGV4IDEzZWZiZWIuLmM4YzEyZDMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCkBAIC01MCw3ICs1MCw2IEBAIHN0cnVjdCBkcHVfcm1f dG9wb2xvZ3lfZGVmIHsKIAl7ICAgRFBVX1JNX1RPUE9MT0dZX1NJTkdMRVBJUEUsICAgICAgICAg ICAxLCAwLCAxLCAxLCBmYWxzZSB9LAogCXsgICBEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEUsICAg ICAgICAgICAgIDIsIDAsIDIsIDIsIHRydWUgIH0sCiAJeyAgIERQVV9STV9UT1BPTE9HWV9EVUFM UElQRV8zRE1FUkdFLCAgICAgMiwgMCwgMSwgMSwgZmFsc2UgfSwKLQl7ICAgRFBVX1JNX1RPUE9M T0dZX1BQU1BMSVQsICAgICAgICAgICAgICAxLCAwLCAyLCAxLCB0cnVlICB9LAogfTsKIAogLyoq CkBAIC01MzEsNyArNTMwLDYgQEAgc3RhdGljIGJvb2wgX2RwdV9ybV9jaGVja19sbV9hbmRfZ2V0 X2Nvbm5lY3RlZF9ibGtzKAogCQlzdHJ1Y3QgZHB1X3JtX2h3X2JsayAqcHJpbWFyeV9sbSkKIHsK IAljb25zdCBzdHJ1Y3QgZHB1X2xtX2NmZyAqbG1fY2ZnID0gdG9fZHB1X2h3X21peGVyKGxtLT5o dyktPmNhcDsKLQljb25zdCBzdHJ1Y3QgZHB1X3Bpbmdwb25nX2NmZyAqcHBfY2ZnOwogCXN0cnVj dCBkcHVfcm1faHdfaXRlciBpdGVyOwogCWJvb2wgaXNfdmFsaWRfZHNwcCwgaXNfdmFsaWRfZHMs IHJldDsKIApAQCAtNjUwLDE1ICs2NDgsNiBAQCBzdGF0aWMgYm9vbCBfZHB1X3JtX2NoZWNrX2xt X2FuZF9nZXRfY29ubmVjdGVkX2Jsa3MoCiAJCXJldHVybiBmYWxzZTsKIAl9CiAKLQlwcF9jZmcg PSB0b19kcHVfaHdfcGluZ3BvbmcoKCpwcCktPmh3KS0+Y2FwczsKLQlpZiAoKHJlcXMtPnRvcG9s b2d5LT50b3BfbmFtZSA9PSBEUFVfUk1fVE9QT0xPR1lfUFBTUExJVCkgJiYKLQkJCSEodGVzdF9i aXQoRFBVX1BJTkdQT05HX1NQTElULCAmcHBfY2ZnLT5mZWF0dXJlcykpKSB7Ci0JCURQVV9ERUJV RygicHAgJWQgZG9lc24ndCBzdXBwb3J0IHBwc3BsaXRcbiIsIHBwX2NmZy0+aWQpOwotCQkqZHNw cCA9IE5VTEw7Ci0JCSpkcyA9IE5VTEw7Ci0JCXJldHVybiBmYWxzZTsKLQl9Ci0KIAlyZXR1cm4g dHJ1ZTsKIH0KIApAQCAtNzQyLDI2ICs3MzEsNiBAQCBzdGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2 ZV9sbXMoCiAJCQkJZHNbaV0gPyBkc1tpXS0+aWQgOiAwKTsKIAl9CiAKLQlpZiAocmVxcy0+dG9w b2xvZ3ktPnRvcF9uYW1lID09IERQVV9STV9UT1BPTE9HWV9QUFNQTElUKSB7Ci0JCS8qIHJlc2Vy dmUgYSBmcmVlIFBJTkdQT05HX1NMQVZFIGJsb2NrICovCi0JCXJjID0gLUVOQVZBSUw7Ci0JCWRw dV9ybV9pbml0X2h3X2l0ZXIoJml0ZXJfaSwgMCwgRFBVX0hXX0JMS19QSU5HUE9ORyk7Ci0JCXdo aWxlIChfZHB1X3JtX2dldF9od19sb2NrZWQocm0sICZpdGVyX2kpKSB7Ci0JCQljb25zdCBzdHJ1 Y3QgZHB1X2h3X3Bpbmdwb25nICpwcCA9Ci0JCQkJCXRvX2RwdV9od19waW5ncG9uZyhpdGVyX2ku YmxrLT5odyk7Ci0JCQljb25zdCBzdHJ1Y3QgZHB1X3Bpbmdwb25nX2NmZyAqcHBfY2ZnID0gcHAt PmNhcHM7Ci0KLQkJCWlmICghKHRlc3RfYml0KERQVV9QSU5HUE9OR19TTEFWRSwgJnBwX2NmZy0+ ZmVhdHVyZXMpKSkKLQkJCQljb250aW51ZTsKLQkJCWlmIChSRVNFUlZFRF9CWV9PVEhFUihpdGVy X2kuYmxrLCByc3ZwKSkKLQkJCQljb250aW51ZTsKLQotCQkJaXRlcl9pLmJsay0+cnN2cF9ueHQg PSByc3ZwOwotCQkJcmMgPSAwOwotCQkJYnJlYWs7Ci0JCX0KLQl9Ci0KIAlyZXR1cm4gcmM7CiB9 CiAKQEAgLTc4MCwyMiArNzQ5LDE4IEBAIHN0YXRpYyBpbnQgX2RwdV9ybV9yZXNlcnZlX2N0bHMo CiAJd2hpbGUgKF9kcHVfcm1fZ2V0X2h3X2xvY2tlZChybSwgJml0ZXIpKSB7CiAJCWNvbnN0IHN0 cnVjdCBkcHVfaHdfY3RsICpjdGwgPSB0b19kcHVfaHdfY3RsKGl0ZXIuYmxrLT5odyk7CiAJCXVu c2lnbmVkIGxvbmcgZmVhdHVyZXMgPSBjdGwtPmNhcHMtPmZlYXR1cmVzOwotCQlib29sIGhhc19z cGxpdF9kaXNwbGF5LCBoYXNfcHBzcGxpdDsKKwkJYm9vbCBoYXNfc3BsaXRfZGlzcGxheTsKIAog CQlpZiAoUkVTRVJWRURfQllfT1RIRVIoaXRlci5ibGssIHJzdnApKQogCQkJY29udGludWU7CiAK IAkJaGFzX3NwbGl0X2Rpc3BsYXkgPSBCSVQoRFBVX0NUTF9TUExJVF9ESVNQTEFZKSAmIGZlYXR1 cmVzOwotCQloYXNfcHBzcGxpdCA9IEJJVChEUFVfQ1RMX1BJTkdQT05HX1NQTElUKSAmIGZlYXR1 cmVzOwogCiAJCURQVV9ERUJVRygiY3RsICVkIGNhcHMgMHglbFhcbiIsIGl0ZXIuYmxrLT5pZCwg ZmVhdHVyZXMpOwogCiAJCWlmICh0b3AtPm5lZWRzX3NwbGl0X2Rpc3BsYXkgIT0gaGFzX3NwbGl0 X2Rpc3BsYXkpCiAJCQljb250aW51ZTsKIAotCQlpZiAodG9wLT50b3BfbmFtZSA9PSBEUFVfUk1f VE9QT0xPR1lfUFBTUExJVCAmJiAhaGFzX3Bwc3BsaXQpCi0JCQljb250aW51ZTsKLQogCQljdGxz W2ldID0gaXRlci5ibGs7CiAJCURQVV9ERUJVRygiY3RsICVkIG1hdGNoXG4iLCBpdGVyLmJsay0+ aWQpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0u aCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5oCmluZGV4IDNkYjYxYjUu LjhhNmNiY2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9y bS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5oCkBAIC0yNiwx NCArMjYsMTIgQEAKICAqIEBEUFVfUk1fVE9QT0xPR1lfU0lOR0xFUElQRTogICAgICAgICAgIDEg TE0sIDEgUFAsIDEgSU5URi9XQgogICogQERQVV9STV9UT1BPTE9HWV9EVUFMUElQRTogICAgICAg ICAgICAgMiBMTSwgMiBQUCwgMiBJTlRGL1dCCiAgKiBARFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBF XzNETUVSR0U6ICAgICAyIExNLCAyIFBQLCAzRE11eCwgMSBJTlRGL1dCCi0gKiBARFBVX1JNX1RP UE9MT0dZX1BQU1BMSVQ6ICAgICAgICAgICAgICAxIExNLCAyIFBQcywgMiBJTlRGL1dCCiAgKi8K IGVudW0gZHB1X3JtX3RvcG9sb2d5X25hbWUgewogCURQVV9STV9UT1BPTE9HWV9OT05FID0gMCwK IAlEUFVfUk1fVE9QT0xPR1lfU0lOR0xFUElQRSwKIAlEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEUs CiAJRFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFXzNETUVSR0UsCi0JRFBVX1JNX1RPUE9MT0dZX1BQ U1BMSVQsCiAJRFBVX1JNX1RPUE9MT0dZX01BWCwKIH07CiAKLS0gClRoZSBRdWFsY29tbSBJbm5v dmF0aW9uIENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0s CmEgTGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2plY3QKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QK RnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=