From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: [DPU PATCH v3 2/6] drm/msm: remove support for ping pong split topology Date: Fri, 25 May 2018 14:26:03 -0700 Message-ID: <1527283567-6546-3-git-send-email-jsanka@codeaurora.org> References: <1527283567-6546-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: <1527283567-6546-1-git-send-email-jsanka@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-arm-msm@vger.kernel.org Cc: hoegsberg@google.com, Rajesh Yadav List-Id: linux-arm-msm@vger.kernel.org cGluZyBwb25nIHNwbGl0IHRvcG9sb2d5IHdhcyBtZWFudCBmb3IgbG93IGVuZCBzb2MncyB3aGlj aApkb2Vzbid0IGhhdmUgZW5vdWdoIGxheWVyIG1peGVycyB0byBzdXBwb3J0IHNwbGl0IHBhbmVs cy4KQ29uc2lkZXJpbmcgaG93IHVuY29tbW9uIHRoZSB0b3BvbG9neSBpcyBmb3IgY3VycmVudCBj aGlwc2V0J3MgYW5kCmFsc28gdG8gc2ltcGx5IHRoZSBkcml2ZXIgcHJvZ3JhbW1pbmcsIHN0cmlw aW5nIG9mZiB0aGUgc3VwcG9ydApmb3IgU0RNODQ1LgoKY2hhbmdlcyBpbiB2MjoKCS0gbm9uZQpj aGFuZ2VzIGluIHYzOgoJLSBub25lCgpSZXZpZXdlZC1ieTogU2VhbiBQYXVsIDxzZWFucGF1bEBj aHJvbWl1bS5vcmc+ClNpZ25lZC1vZmYtYnk6IEpleWt1bWFyIFNhbmthcmFuIDxqc2Fua2FAY29k ZWF1cm9yYS5vcmc+ClNpZ25lZC1vZmYtYnk6IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0u b3JnPgpTaWduZWQtb2ZmLWJ5OiBSYWplc2ggWWFkYXYgPHJ5YWRhdkBjb2RlYXVyb3JhLm9yZz4K LS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29ubmVjdG9yLmMgICAgICB8 ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYyAgICAgICAg ICAgfCAgMTkgLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5j ICAgICAgICB8IDE3OSArLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXMuaCAgIHwgICA1IC0KIC4uLi9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c19jbWQuYyAgIHwgMTEwICstLS0tLS0tLS0tLS0KIC4u Li9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c192aWQuYyAgIHwgIDIxICst LQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuYyAgICAgfCAg IDUgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmggICAg IHwgICAyIC0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od190b3AuYyAgICAg ICAgIHwgIDMzIC0tLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od190b3Au aCAgICAgICAgIHwgIDExIC0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdp by5oICAgICAgICAgICB8ICAgNCAtCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf cm0uYyAgICAgICAgICAgICB8ICAzNyArLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X3JtLmggICAgICAgICAgICAgfCAgIDIgLQogMTMgZmlsZXMgY2hhbmdlZCwgMTUgaW5z ZXJ0aW9ucygrKSwgNDE1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9jb25uZWN0b3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9jb25uZWN0b3IuYwppbmRleCA1ZjNlZmU1Li5hODkzOTJlIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29ubmVjdG9yLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Nvbm5lY3Rvci5jCkBAIC0zOCw4ICszOCw4 IEBACiAJe0RQVV9STV9UT1BPTE9HWV9TSU5HTEVQSVBFLAkiZHB1X3NpbmdsZXBpcGUifSwKIAl7 RFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFLAkiZHB1X2R1YWxwaXBlIn0sCiAJe0RQVV9STV9UT1BP TE9HWV9EVUFMUElQRV8zRE1FUkdFLAkiZHB1X2R1YWxwaXBlbWVyZ2UifSwKLQl7RFBVX1JNX1RP UE9MT0dZX1BQU1BMSVQsCSJkcHVfcHBzcGxpdCJ9LAogfTsKKwogc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1fcHJvcF9lbnVtX2xpc3QgZV90b3BvbG9neV9jb250cm9sW10gPSB7CiAJe0RQVV9STV9U T1BDVExfUkVTRVJWRV9MT0NLLAkicmVzZXJ2ZV9sb2NrIn0sCiAJe0RQVV9STV9UT1BDVExfUkVT RVJWRV9DTEVBUiwJInJlc2VydmVfY2xlYXIifSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfY3J0Yy5jCmluZGV4IDI0ZDE1ODIuLmQ1NzFhZjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2NydGMuYwpAQCAtMTkxNCwyMyArMTkxNCw2IEBAIHN0YXRpYyB2b2lk IF9kcHVfY3J0Y19zZXR1cF9taXhlcnMoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCW11dGV4X3Vu bG9jaygmZHB1X2NydGMtPmNydGNfbG9jayk7CiB9CiAKLXN0YXRpYyB2b2lkIF9kcHVfY3J0Y19z ZXR1cF9pc19wcHNwbGl0KHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCi17Ci0JaW50IGk7 Ci0Jc3RydWN0IGRwdV9jcnRjX3N0YXRlICpjc3RhdGU7Ci0KLQljc3RhdGUgPSB0b19kcHVfY3J0 Y19zdGF0ZShzdGF0ZSk7Ci0KLQljc3RhdGUtPmlzX3Bwc3BsaXQgPSBmYWxzZTsKLQlmb3IgKGkg PSAwOyBpIDwgY3N0YXRlLT5udW1fY29ubmVjdG9yczsgaSsrKSB7Ci0JCXN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uID0gY3N0YXRlLT5jb25uZWN0b3JzW2ldOwotCi0JCWlmIChkcHVfY29ubmVj dG9yX2dldF90b3BvbG9neV9uYW1lKGNvbm4pID09Ci0JCQkJRFBVX1JNX1RPUE9MT0dZX1BQU1BM SVQpCi0JCQljc3RhdGUtPmlzX3Bwc3BsaXQgPSB0cnVlOwotCX0KLX0KLQogc3RhdGljIHZvaWQg X2RwdV9jcnRjX3NldHVwX2xtX2JvdW5kcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCXN0cnVj dCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGUpCiB7CkBAIC0xOTkzLDcgKzE5NzYsNiBAQCBzdGF0aWMg dm9pZCBkcHVfY3J0Y19hdG9taWNfYmVnaW4oc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJaWYg KCFkcHVfY3J0Yy0+bnVtX21peGVycykgewogCQlfZHB1X2NydGNfc2V0dXBfbWl4ZXJzKGNydGMp OwotCQlfZHB1X2NydGNfc2V0dXBfaXNfcHBzcGxpdChjcnRjLT5zdGF0ZSk7CiAJCV9kcHVfY3J0 Y19zZXR1cF9sbV9ib3VuZHMoY3J0YywgY3J0Yy0+c3RhdGUpOwogCX0KIApAQCAtMjg5OSw3ICsy ODgxLDYgQEAgc3RhdGljIGludCBkcHVfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRj ICpjcnRjLAogCiAJbWl4ZXJfd2lkdGggPSBkcHVfY3J0Y19nZXRfbWl4ZXJfd2lkdGgoZHB1X2Ny dGMsIGNzdGF0ZSwgbW9kZSk7CiAKLQlfZHB1X2NydGNfc2V0dXBfaXNfcHBzcGxpdChzdGF0ZSk7 CiAJX2RwdV9jcnRjX3NldHVwX2xtX2JvdW5kcyhjcnRjLCBzdGF0ZSk7CiAKIAkgLyogZ2V0IHBs YW5lIHN0YXRlIGZvciBhbGwgZHJtIHBsYW5lcyBhc3NvY2lhdGVkIHdpdGggY3J0YyBzdGF0ZSAq LwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIu YyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMKaW5kZXggMTUx ODg5Yi4uZDA0MDk1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2VuY29kZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5j b2Rlci5jCkBAIC01NDUsNyArNTQ1LDYgQEAgdm9pZCBkcHVfZW5jb2Rlcl9oZWxwZXJfc3BsaXRf Y29uZmlnKAogCXN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5jOwogCXN0cnVjdCBzcGxp dF9waXBlX2NmZyBjZmcgPSB7IDAgfTsKIAlzdHJ1Y3QgZHB1X2h3X21kcCAqaHdfbWRwdG9wOwot CWVudW0gZHB1X3JtX3RvcG9sb2d5X25hbWUgdG9wb2xvZ3k7CiAJc3RydWN0IG1zbV9kaXNwbGF5 X2luZm8gKmRpc3BfaW5mbzsKIAogCWlmICghcGh5c19lbmMgfHwgIXBoeXNfZW5jLT5od19tZHB0 b3AgfHwgIXBoeXNfZW5jLT5wYXJlbnQpIHsKQEAgLTU2OSw4ICs1NjgsNiBAQCB2b2lkIGRwdV9l bmNvZGVyX2hlbHBlcl9zcGxpdF9jb25maWcoCiAJaWYgKHBoeXNfZW5jLT5zcGxpdF9yb2xlID09 IEVOQ19ST0xFX1NPTE8pIHsKIAkJaWYgKGh3X21kcHRvcC0+b3BzLnNldHVwX3NwbGl0X3BpcGUp CiAJCQlod19tZHB0b3AtPm9wcy5zZXR1cF9zcGxpdF9waXBlKGh3X21kcHRvcCwgJmNmZyk7Ci0J CWlmIChod19tZHB0b3AtPm9wcy5zZXR1cF9wcF9zcGxpdCkKLQkJCWh3X21kcHRvcC0+b3BzLnNl dHVwX3BwX3NwbGl0KGh3X21kcHRvcCwgJmNmZyk7CiAJCXJldHVybjsKIAl9CiAKQEAgLTU4Miwy OSArNTc5LDExIEBAIHZvaWQgZHB1X2VuY29kZXJfaGVscGVyX3NwbGl0X2NvbmZpZygKIAkJCXBo eXNfZW5jLT5vcHMubmVlZHNfc2luZ2xlX2ZsdXNoKHBoeXNfZW5jKSkKIAkJY2ZnLnNwbGl0X2Zs dXNoX2VuID0gdHJ1ZTsKIAotCXRvcG9sb2d5ID0gZHB1X2Nvbm5lY3Rvcl9nZXRfdG9wb2xvZ3lf bmFtZShwaHlzX2VuYy0+Y29ubmVjdG9yKTsKLQlpZiAodG9wb2xvZ3kgPT0gRFBVX1JNX1RPUE9M T0dZX1BQU1BMSVQpCi0JCWNmZy5wcF9zcGxpdF9zbGF2ZSA9IGNmZy5pbnRmOwotCWVsc2UKLQkJ Y2ZnLnBwX3NwbGl0X3NsYXZlID0gSU5URl9NQVg7Ci0KIAlpZiAocGh5c19lbmMtPnNwbGl0X3Jv bGUgPT0gRU5DX1JPTEVfTUFTVEVSKSB7CiAJCURQVV9ERUJVR19FTkMoZHB1X2VuYywgImVuYWJs ZSAlZFxuIiwgY2ZnLmVuKTsKIAogCQlpZiAoaHdfbWRwdG9wLT5vcHMuc2V0dXBfc3BsaXRfcGlw ZSkKIAkJCWh3X21kcHRvcC0+b3BzLnNldHVwX3NwbGl0X3BpcGUoaHdfbWRwdG9wLCAmY2ZnKTsK LQl9IGVsc2UgaWYgKGRwdV9lbmMtPmh3X3BwWzBdKSB7Ci0JCS8qCi0JCSAqIHNsYXZlIGVuY29k ZXIKLQkJICogLSBkZXRlcm1pbmUgc3BsaXQgaW5kZXggZnJvbSBtYXN0ZXIgaW5kZXgsCi0JCSAq ICAgYXNzdW1lIG1hc3RlciBpcyBmaXJzdCBwcAotCQkgKi8KLQkJY2ZnLnBwX3NwbGl0X2luZGV4 ID0gZHB1X2VuYy0+aHdfcHBbMF0tPmlkeCAtIFBJTkdQT05HXzA7Ci0JCURQVV9ERUJVR19FTkMo ZHB1X2VuYywgIm1hc3RlciB1c2luZyBwcCVkXG4iLAotCQkJCWNmZy5wcF9zcGxpdF9pbmRleCk7 Ci0KLQkJaWYgKGh3X21kcHRvcC0+b3BzLnNldHVwX3BwX3NwbGl0KQotCQkJaHdfbWRwdG9wLT5v cHMuc2V0dXBfcHBfc3BsaXQoaHdfbWRwdG9wLCAmY2ZnKTsKIAl9CiB9CiAKQEAgLTE2NjMsMTQg KzE2NDIsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2RwdV9lbmNvZGVyX3RyaWdnZXJfZmx1c2go c3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jLAogCQlyZXR1cm47CiAJfQogCi0JaWYgKHBoeXMt PnNwbGl0X3JvbGUgPT0gRU5DX1JPTEVfU0tJUCkgewotCQlEUFVfREVCVUdfRU5DKHRvX2RwdV9l bmNvZGVyX3ZpcnQocGh5cy0+cGFyZW50KSwKLQkJCQkic2tpcCBmbHVzaCBwcCVkIGN0bCVkXG4i LAotCQkJCXBoeXMtPmh3X3BwLT5pZHggLSBQSU5HUE9OR18wLAotCQkJCWN0bC0+aWR4IC0gQ1RM XzApOwotCQlyZXR1cm47Ci0JfQotCiAJcGVuZGluZ19raWNrb2ZmX2NudCA9IGRwdV9lbmNvZGVy X3BoeXNfaW5jX3BlbmRpbmcocGh5cyk7CiAKIAlpZiAoZXh0cmFfZmx1c2hfYml0cyAmJiBjdGwt Pm9wcy51cGRhdGVfcGVuZGluZ19mbHVzaCkKQEAgLTE2OTIsOCArMTY2Myw2IEBAIHN0YXRpYyBp bmxpbmUgdm9pZCBfZHB1X2VuY29kZXJfdHJpZ2dlcl9mbHVzaChzdHJ1Y3QgZHJtX2VuY29kZXIg KmRybV9lbmMsCiAgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZCBfZHB1X2VuY29kZXJfdHJpZ2dlcl9z dGFydChzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5cykKIHsKLQlzdHJ1Y3QgZHB1X2h3X2N0 bCAqY3RsOwotCiAJaWYgKCFwaHlzKSB7CiAJCURQVV9FUlJPUigiaW52YWxpZCBhcmd1bWVudChz KVxuIik7CiAJCXJldHVybjsKQEAgLTE3MDQsMTQgKzE2NzMsNiBAQCBzdGF0aWMgaW5saW5lIHZv aWQgX2RwdV9lbmNvZGVyX3RyaWdnZXJfc3RhcnQoc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBo eXMpCiAJCXJldHVybjsKIAl9CiAKLQljdGwgPSBwaHlzLT5od19jdGw7Ci0JaWYgKHBoeXMtPnNw bGl0X3JvbGUgPT0gRU5DX1JPTEVfU0tJUCkgewotCQlEUFVfREVCVUdfRU5DKHRvX2RwdV9lbmNv ZGVyX3ZpcnQocGh5cy0+cGFyZW50KSwKLQkJCQkic2tpcCBzdGFydCBwcCVkIGN0bCVkXG4iLAot CQkJCXBoeXMtPmh3X3BwLT5pZHggLSBQSU5HUE9OR18wLAotCQkJCWN0bC0+aWR4IC0gQ1RMXzAp OwotCQlyZXR1cm47Ci0JfQogCWlmIChwaHlzLT5vcHMudHJpZ2dlcl9zdGFydCAmJiBwaHlzLT5l bmFibGVfc3RhdGUgIT0gRFBVX0VOQ19ESVNBQkxFRCkKIAkJcGh5cy0+b3BzLnRyaWdnZXJfc3Rh cnQocGh5cyk7CiB9CkBAIC0xODMwLDcgKzE3OTEsNiBAQCBzdGF0aWMgdm9pZCBfZHB1X2VuY29k ZXJfa2lja29mZl9waHlzKHN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5jKQogCS8qIGRv bid0IHBlcmZvcm0gZmx1c2gvc3RhcnQgb3BlcmF0aW9ucyBmb3Igc2xhdmUgZW5jb2RlcnMgKi8K IAlmb3IgKGkgPSAwOyBpIDwgZHB1X2VuYy0+bnVtX3BoeXNfZW5jczsgaSsrKSB7CiAJCXN0cnVj dCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzID0gZHB1X2VuYy0+cGh5c19lbmNzW2ldOwotCQllbnVt IGRwdV9ybV90b3BvbG9neV9uYW1lIHRvcG9sb2d5ID0gRFBVX1JNX1RPUE9MT0dZX05PTkU7CiAK IAkJaWYgKCFwaHlzIHx8IHBoeXMtPmVuYWJsZV9zdGF0ZSA9PSBEUFVfRU5DX0RJU0FCTEVEKQog CQkJY29udGludWU7CkBAIC0xODM5LDE3ICsxNzk5LDcgQEAgc3RhdGljIHZvaWQgX2RwdV9lbmNv ZGVyX2tpY2tvZmZfcGh5cyhzdHJ1Y3QgZHB1X2VuY29kZXJfdmlydCAqZHB1X2VuYykKIAkJaWYg KCFjdGwpCiAJCQljb250aW51ZTsKIAotCQlpZiAocGh5cy0+Y29ubmVjdG9yKQotCQkJdG9wb2xv Z3kgPSBkcHVfY29ubmVjdG9yX2dldF90b3BvbG9neV9uYW1lKAotCQkJCQlwaHlzLT5jb25uZWN0 b3IpOwotCi0JCS8qCi0JCSAqIGRvbid0IHdhaXQgb24gcHBzcGxpdCBzbGF2ZXMgb3Igc2tpcHBl ZCBlbmNvZGVycyBiZWNhdXNlCi0JCSAqIHRoZXkgZG9udCByZWNlaXZlIGlycXMKLQkJICovCi0J CWlmICghKHRvcG9sb2d5ID09IERQVV9STV9UT1BPTE9HWV9QUFNQTElUICYmCi0JCQkJcGh5cy0+ c3BsaXRfcm9sZSA9PSBFTkNfUk9MRV9TTEFWRSkgJiYKLQkJCQlwaHlzLT5zcGxpdF9yb2xlICE9 IEVOQ19ST0xFX1NLSVApCisJCWlmIChwaHlzLT5zcGxpdF9yb2xlICE9IEVOQ19ST0xFX1NMQVZF KQogCQkJc2V0X2JpdChpLCBkcHVfZW5jLT5mcmFtZV9idXN5X21hc2spOwogCQlpZiAocGh5cy0+ aHdfY3RsLT5vcHMucmVnX2RtYV9mbHVzaCkKIAkJCXBoeXMtPmh3X2N0bC0+b3BzLnJlZ19kbWFf Zmx1c2gocGh5cy0+aHdfY3RsKTsKQEAgLTE4NzMsMTI2ICsxODIzLDYgQEAgc3RhdGljIHZvaWQg X2RwdV9lbmNvZGVyX2tpY2tvZmZfcGh5cyhzdHJ1Y3QgZHB1X2VuY29kZXJfdmlydCAqZHB1X2Vu YykKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkcHVfZW5jLT5lbmNfc3BpbmxvY2ssIGxvY2tf ZmxhZ3MpOwogfQogCi1zdGF0aWMgdm9pZCBfZHB1X2VuY29kZXJfcHBzcGxpdF9zd2FwX2ludGZf Zm9yX3JpZ2h0X29ubHlfdXBkYXRlKAotCQlzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMsCi0J CXVuc2lnbmVkIGxvbmcgKmFmZmVjdGVkX2Rpc3BsYXlzLAotCQlpbnQgbnVtX2FjdGl2ZV9waHlz KQotewotCXN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5jOwotCXN0cnVjdCBkcHVfZW5j b2Rlcl9waHlzICptYXN0ZXI7Ci0JZW51bSBkcHVfcm1fdG9wb2xvZ3lfbmFtZSB0b3BvbG9neTsK LQlib29sIGlzX3JpZ2h0X29ubHk7Ci0KLQlpZiAoIWRybV9lbmMgfHwgIWFmZmVjdGVkX2Rpc3Bs YXlzKQotCQlyZXR1cm47Ci0KLQlkcHVfZW5jID0gdG9fZHB1X2VuY29kZXJfdmlydChkcm1fZW5j KTsKLQltYXN0ZXIgPSBkcHVfZW5jLT5jdXJfbWFzdGVyOwotCWlmICghbWFzdGVyIHx8ICFtYXN0 ZXItPmNvbm5lY3RvcikKLQkJcmV0dXJuOwotCi0JdG9wb2xvZ3kgPSBkcHVfY29ubmVjdG9yX2dl dF90b3BvbG9neV9uYW1lKG1hc3Rlci0+Y29ubmVjdG9yKTsKLQlpZiAodG9wb2xvZ3kgIT0gRFBV X1JNX1RPUE9MT0dZX1BQU1BMSVQpCi0JCXJldHVybjsKLQotCS8qCi0JICogRm9yIHBpbmdwb25n IHNwbGl0LCB0aGUgc2xhdmUgcGluZ3Bvbmcgd29uJ3QgZ2VuZXJhdGUgSVJRcy4gRm9yCi0JICog cmlnaHQtb25seSB1cGRhdGVzLCB3ZSBjYW4ndCBzd2FwIHBpbmdwb25ncywgb3Igc2ltcGx5IHN3 YXAgdGhlCi0JICogbWFzdGVyL3NsYXZlIGFzc2lnbm1lbnQsIHdlIGFjdHVhbGx5IGhhdmUgdG8g c3dhcCB0aGUgaW50ZXJmYWNlcwotCSAqIHNvIHRoYXQgdGhlIG1hc3RlciBwaHlzaWNhbCBlbmNv ZGVyIHdpbGwgdXNlIGEgcGluZ3BvbmcvaW50ZXJmYWNlCi0JICogdGhhdCBnZW5lcmF0ZXMgaXJx cyBvbiB3aGljaCB0byB3YWl0LgotCSAqLwotCWlzX3JpZ2h0X29ubHkgPSAhdGVzdF9iaXQoMCwg YWZmZWN0ZWRfZGlzcGxheXMpICYmCi0JCQl0ZXN0X2JpdCgxLCBhZmZlY3RlZF9kaXNwbGF5cyk7 Ci0KLQlpZiAoaXNfcmlnaHRfb25seSAmJiAhZHB1X2VuYy0+aW50ZnNfc3dhcHBlZCkgewotCQkv KiByaWdodC1vbmx5IHVwZGF0ZSBzd2FwIGludGVyZmFjZXMgKi8KLQkJc3dhcChkcHVfZW5jLT5w aHlzX2VuY3NbMF0tPmludGZfaWR4LAotCQkJCWRwdV9lbmMtPnBoeXNfZW5jc1sxXS0+aW50Zl9p ZHgpOwotCQlkcHVfZW5jLT5pbnRmc19zd2FwcGVkID0gdHJ1ZTsKLQl9IGVsc2UgaWYgKCFpc19y aWdodF9vbmx5ICYmIGRwdV9lbmMtPmludGZzX3N3YXBwZWQpIHsKLQkJLyogbGVmdC1vbmx5IG9y IGZ1bGwgdXBkYXRlLCBzd2FwIGJhY2sgKi8KLQkJc3dhcChkcHVfZW5jLT5waHlzX2VuY3NbMF0t PmludGZfaWR4LAotCQkJCWRwdV9lbmMtPnBoeXNfZW5jc1sxXS0+aW50Zl9pZHgpOwotCQlkcHVf ZW5jLT5pbnRmc19zd2FwcGVkID0gZmFsc2U7Ci0JfQotCi0JRFBVX0RFQlVHX0VOQyhkcHVfZW5j LAotCQkJInJpZ2h0X29ubHkgJWQgc3dhcHBlZCAlZCBwaHlzMC0+aW50ZiVkLCBwaHlzMS0+aW50 ZiVkXG4iLAotCQkJaXNfcmlnaHRfb25seSwgZHB1X2VuYy0+aW50ZnNfc3dhcHBlZCwKLQkJCWRw dV9lbmMtPnBoeXNfZW5jc1swXS0+aW50Zl9pZHggLSBJTlRGXzAsCi0JCQlkcHVfZW5jLT5waHlz X2VuY3NbMV0tPmludGZfaWR4IC0gSU5URl8wKTsKLQlEUFVfRVZUMzIoRFJNSUQoZHJtX2VuYyks IGlzX3JpZ2h0X29ubHksIGRwdV9lbmMtPmludGZzX3N3YXBwZWQsCi0JCQlkcHVfZW5jLT5waHlz X2VuY3NbMF0tPmludGZfaWR4IC0gSU5URl8wLAotCQkJZHB1X2VuYy0+cGh5c19lbmNzWzFdLT5p bnRmX2lkeCAtIElOVEZfMCwKLQkJCSphZmZlY3RlZF9kaXNwbGF5cyk7Ci0KLQkvKiBwcHNwbGl0 IGFsd2F5cyB1c2VzIG1hc3RlciBzaW5jZSBwcHNsYXZlIGludmFsaWQgZm9yIGlycXMqLwotCWlm IChudW1fYWN0aXZlX3BoeXMgPT0gMSkKLQkJKmFmZmVjdGVkX2Rpc3BsYXlzID0gQklUKDApOwot fQotCi1zdGF0aWMgdm9pZCBfZHB1X2VuY29kZXJfdXBkYXRlX21hc3RlcihzdHJ1Y3QgZHJtX2Vu Y29kZXIgKmRybV9lbmMsCi0JCXN0cnVjdCBkcHVfZW5jb2Rlcl9raWNrb2ZmX3BhcmFtcyAqcGFy YW1zKQotewotCXN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5jOwotCXN0cnVjdCBkcHVf ZW5jb2Rlcl9waHlzICpwaHlzOwotCWludCBpLCBudW1fYWN0aXZlX3BoeXM7Ci0JYm9vbCBtYXN0 ZXJfYXNzaWduZWQgPSBmYWxzZTsKLQotCWlmICghZHJtX2VuYyB8fCAhcGFyYW1zKQotCQlyZXR1 cm47Ci0KLQlkcHVfZW5jID0gdG9fZHB1X2VuY29kZXJfdmlydChkcm1fZW5jKTsKLQotCWlmIChk cHVfZW5jLT5udW1fcGh5c19lbmNzIDw9IDEpCi0JCXJldHVybjsKLQotCS8qIGNvdW50IGJpdHMg c2V0ICovCi0JbnVtX2FjdGl2ZV9waHlzID0gaHdlaWdodF9sb25nKHBhcmFtcy0+YWZmZWN0ZWRf ZGlzcGxheXMpOwotCi0JRFBVX0RFQlVHX0VOQyhkcHVfZW5jLCAiYWZmZWN0ZWRfZGlzcGxheXMg MHglbHggbnVtX2FjdGl2ZV9waHlzICVkXG4iLAotCQkJcGFyYW1zLT5hZmZlY3RlZF9kaXNwbGF5 cywgbnVtX2FjdGl2ZV9waHlzKTsKLQotCS8qIGZvciBsZWZ0L3JpZ2h0IG9ubHkgdXBkYXRlLCBw cHNwbGl0IG1hc3RlciBzd2l0Y2hlcyBpbnRlcmZhY2UgKi8KLQlfZHB1X2VuY29kZXJfcHBzcGxp dF9zd2FwX2ludGZfZm9yX3JpZ2h0X29ubHlfdXBkYXRlKGRybV9lbmMsCi0JCQkmcGFyYW1zLT5h ZmZlY3RlZF9kaXNwbGF5cywgbnVtX2FjdGl2ZV9waHlzKTsKLQotCWZvciAoaSA9IDA7IGkgPCBk cHVfZW5jLT5udW1fcGh5c19lbmNzOyBpKyspIHsKLQkJZW51bSBkcHVfZW5jX3NwbGl0X3JvbGUg cHJ2X3JvbGUsIG5ld19yb2xlOwotCQlib29sIGFjdGl2ZTsKLQotCQlwaHlzID0gZHB1X2VuYy0+ cGh5c19lbmNzW2ldOwotCQlpZiAoIXBoeXMgfHwgIXBoeXMtPm9wcy51cGRhdGVfc3BsaXRfcm9s ZSB8fCAhcGh5cy0+aHdfcHApCi0JCQljb250aW51ZTsKLQotCQlhY3RpdmUgPSB0ZXN0X2JpdChp LCAmcGFyYW1zLT5hZmZlY3RlZF9kaXNwbGF5cyk7Ci0JCXBydl9yb2xlID0gcGh5cy0+c3BsaXRf cm9sZTsKLQotCQlpZiAoYWN0aXZlICYmIG51bV9hY3RpdmVfcGh5cyA9PSAxKQotCQkJbmV3X3Jv bGUgPSBFTkNfUk9MRV9TT0xPOwotCQllbHNlIGlmIChhY3RpdmUgJiYgIW1hc3Rlcl9hc3NpZ25l ZCkKLQkJCW5ld19yb2xlID0gRU5DX1JPTEVfTUFTVEVSOwotCQllbHNlIGlmIChhY3RpdmUpCi0J CQluZXdfcm9sZSA9IEVOQ19ST0xFX1NMQVZFOwotCQllbHNlCi0JCQluZXdfcm9sZSA9IEVOQ19S T0xFX1NLSVA7Ci0KLQkJcGh5cy0+b3BzLnVwZGF0ZV9zcGxpdF9yb2xlKHBoeXMsIG5ld19yb2xl KTsKLQkJaWYgKG5ld19yb2xlID09IEVOQ19ST0xFX1NPTE8gfHwgbmV3X3JvbGUgPT0gRU5DX1JP TEVfTUFTVEVSKSB7Ci0JCQlkcHVfZW5jLT5jdXJfbWFzdGVyID0gcGh5czsKLQkJCW1hc3Rlcl9h c3NpZ25lZCA9IHRydWU7Ci0JCX0KLQotCQlEUFVfREVCVUdfRU5DKGRwdV9lbmMsICJwcCAlZCBy b2xlIHBydiAlZCBuZXcgJWQgYWN0aXZlICVkXG4iLAotCQkJCXBoeXMtPmh3X3BwLT5pZHggLSBQ SU5HUE9OR18wLCBwcnZfcm9sZSwKLQkJCQlwaHlzLT5zcGxpdF9yb2xlLCBhY3RpdmUpOwotCQlE UFVfRVZUMzIoRFJNSUQoZHJtX2VuYyksIHBhcmFtcy0+YWZmZWN0ZWRfZGlzcGxheXMsCi0JCQkJ cGh5cy0+aHdfcHAtPmlkeCAtIFBJTkdQT05HXzAsIHBydl9yb2xlLAotCQkJCXBoeXMtPnNwbGl0 X3JvbGUsIGFjdGl2ZSwgbnVtX2FjdGl2ZV9waHlzKTsKLQl9Ci19Ci0KIGJvb2wgZHB1X2VuY29k ZXJfY2hlY2tfbW9kZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMsIHUzMiBtb2RlKQogewog CXN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5jOwpAQCAtMjA0NiwxNSArMTg3NiwxMCBA QCBzdGF0aWMgdm9pZCBfZHB1X2VuY29kZXJfc2V0dXBfZGl0aGVyKHN0cnVjdCBkcHVfZW5jb2Rl cl9waHlzICpwaHlzKQogCXZvaWQgKmRpdGhlcl9jZmc7CiAJaW50IHJldCA9IDA7CiAJc2l6ZV90 IGxlbiA9IDA7Ci0JZW51bSBkcHVfcm1fdG9wb2xvZ3lfbmFtZSB0b3BvbG9neTsKIAogCWlmICgh cGh5cyB8fCAhcGh5cy0+Y29ubmVjdG9yIHx8ICFwaHlzLT5od19wcCB8fAogCQkJIXBoeXMtPmh3 X3BwLT5vcHMuc2V0dXBfZGl0aGVyKQogCQlyZXR1cm47Ci0JdG9wb2xvZ3kgPSBkcHVfY29ubmVj dG9yX2dldF90b3BvbG9neV9uYW1lKHBoeXMtPmNvbm5lY3Rvcik7Ci0JaWYgKCh0b3BvbG9neSA9 PSBEUFVfUk1fVE9QT0xPR1lfUFBTUExJVCkgJiYKLQkJCShwaHlzLT5zcGxpdF9yb2xlID09IEVO Q19ST0xFX1NMQVZFKSkKLQkJcmV0dXJuOwogCiAJcmV0ID0gZHB1X2Nvbm5lY3Rvcl9nZXRfZGl0 aGVyX2NmZyhwaHlzLT5jb25uZWN0b3IsCiAJCQkJcGh5cy0+Y29ubmVjdG9yLT5zdGF0ZSwgJmRp dGhlcl9jZmcsICZsZW4pOwpAQCAtMjI2NSw4ICsyMDkwLDYgQEAgdm9pZCBkcHVfZW5jb2Rlcl9w cmVwYXJlX2Zvcl9raWNrb2ZmKHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYywKIAkJfQogCX0K IAotCV9kcHVfZW5jb2Rlcl91cGRhdGVfbWFzdGVyKGRybV9lbmMsIHBhcmFtcyk7Ci0KIAlpZiAo ZHB1X2VuYy0+Y3VyX21hc3RlciAmJiBkcHVfZW5jLT5jdXJfbWFzdGVyLT5jb25uZWN0b3IpIHsK IAkJcmMgPSBkcHVfY29ubmVjdG9yX3ByZV9raWNrb2ZmKGRwdV9lbmMtPmN1cl9tYXN0ZXItPmNv bm5lY3Rvcik7CiAJCWlmIChyYykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9lbmNvZGVyX3BoeXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9lbmNvZGVyX3BoeXMuaAppbmRleCBiNTdmNjE5Li45MTFhYzZkIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5cy5oCkBAIC00MCwxMyAr NDAsMTEgQEAKICAqIEBFTkNfUk9MRV9TT0xPOglUaGlzIGlzIHRoZSBvbmUgYW5kIG9ubHkgcGFu ZWwuIFRoaXMgZW5jb2RlciBpcyBtYXN0ZXIuCiAgKiBARU5DX1JPTEVfTUFTVEVSOglUaGlzIGVu Y29kZXIgaXMgdGhlIG1hc3RlciBvZiBhIHNwbGl0IHBhbmVsIGNvbmZpZy4KICAqIEBFTkNfUk9M RV9TTEFWRToJVGhpcyBlbmNvZGVyIGlzIG5vdCB0aGUgbWFzdGVyIG9mIGEgc3BsaXQgcGFuZWwg Y29uZmlnLgotICogQEVOQ19ST0xFX1NLSVA6CVRoaXMgZW5jb2RlciBpcyBub3QgcGFydGljaXBh dGluZyBpbiBraWNrb2ZmcwogICovCiBlbnVtIGRwdV9lbmNfc3BsaXRfcm9sZSB7CiAJRU5DX1JP TEVfU09MTywKIAlFTkNfUk9MRV9NQVNURVIsCiAJRU5DX1JPTEVfU0xBVkUsCi0JRU5DX1JPTEVf U0tJUAogfTsKIAogLyoqCkBAIC0xMjMsNyArMTIxLDYgQEAgc3RydWN0IGRwdV9lbmNvZGVyX3Zp cnRfb3BzIHsKICAqIEBod19yZXNldDoJCQlJc3N1ZSBIVyByZWNvdmVyeSBzdWNoIGFzIENUTCBy ZXNldCBhbmQgY2xlYXIKICAqCQkJCURQVV9FTkNfRVJSX05FRURTX0hXX1JFU0VUIHN0YXRlCiAg KiBAaXJxX2NvbnRyb2w6CQlIYW5kbGVyIHRvIGVuYWJsZS9kaXNhYmxlIGFsbCB0aGUgZW5jb2Rl ciBJUlFzCi0gKiBAdXBkYXRlX3NwbGl0X3JvbGU6CQlVcGRhdGUgdGhlIHNwbGl0IHJvbGUgb2Yg dGhlIHBoeXMgZW5jCiAgKiBAcHJlcGFyZV9pZGxlX3BjOgkJcGh5cyBlbmNvZGVyIGNhbiB1cGRh dGUgdGhlIHZzeW5jX2VuYWJsZSBzdGF0dXMKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgb24gaWRsZSBwb3dlciBjb2xsYXBzZSBwcmVwYXJlCiAgKiBAcmVzdG9yZToJCQlSZXN0b3Jl IGFsbCB0aGUgZW5jb2RlciBjb25maWdzLgpAQCAtMTY3LDggKzE2NCw2IEBAIHN0cnVjdCBkcHVf ZW5jb2Rlcl9waHlzX29wcyB7CiAJdTMyICgqY29sbGVjdF9taXNyKShzdHJ1Y3QgZHB1X2VuY29k ZXJfcGh5cyAqcGh5c19lbmMpOwogCXZvaWQgKCpod19yZXNldCkoc3RydWN0IGRwdV9lbmNvZGVy X3BoeXMgKnBoeXNfZW5jKTsKIAl2b2lkICgqaXJxX2NvbnRyb2wpKHN0cnVjdCBkcHVfZW5jb2Rl cl9waHlzICpwaHlzLCBib29sIGVuYWJsZSk7Ci0Jdm9pZCAoKnVwZGF0ZV9zcGxpdF9yb2xlKShz dHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMsCi0JCQllbnVtIGRwdV9lbmNfc3BsaXRf cm9sZSByb2xlKTsKIAl2b2lkICgqcHJlcGFyZV9pZGxlX3BjKShzdHJ1Y3QgZHB1X2VuY29kZXJf cGh5cyAqcGh5c19lbmMpOwogCXZvaWQgKCpyZXN0b3JlKShzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5 cyAqcGh5cyk7CiAJYm9vbCAoKmlzX2F1dG9yZWZyZXNoX2VuYWJsZWQpKHN0cnVjdCBkcHVfZW5j b2Rlcl9waHlzICpwaHlzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9lbmNvZGVyX3BoeXNfY21kLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfZW5jb2Rlcl9waHlzX2NtZC5jCmluZGV4IDcxZTJlNWEuLjM0MzY3ODggMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfY21kLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c19jbWQu YwpAQCAtMTE0LDI5ICsxMTQsNiBAQCBzdGF0aWMgdm9pZCBfZHB1X2VuY29kZXJfcGh5c19jbWRf Y29uZmlnX2F1dG9yZWZyZXNoKAogCQlod19wcC0+b3BzLnNldHVwX2F1dG9yZWZyZXNoKGh3X3Bw LCBjZmdfY3VyKTsKIH0KIAotc3RhdGljIHZvaWQgX2RwdV9lbmNvZGVyX3BoeXNfY21kX3VwZGF0 ZV9mbHVzaF9tYXNrKAotCQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpCi17Ci0J c3RydWN0IGRwdV9lbmNvZGVyX3BoeXNfY21kICpjbWRfZW5jID0KLQkJCXRvX2RwdV9lbmNvZGVy X3BoeXNfY21kKHBoeXNfZW5jKTsKLQlzdHJ1Y3QgZHB1X2h3X2N0bCAqY3RsOwotCXUzMiBmbHVz aF9tYXNrID0gMDsKLQotCWlmICghcGh5c19lbmMpCi0JCXJldHVybjsKLQotCWN0bCA9IHBoeXNf ZW5jLT5od19jdGw7Ci0JaWYgKCFjdGwgfHwgIWN0bC0+b3BzLmdldF9iaXRtYXNrX2ludGYgfHwK LQkJCSFjdGwtPm9wcy51cGRhdGVfcGVuZGluZ19mbHVzaCkKLQkJcmV0dXJuOwotCi0JY3RsLT5v cHMuZ2V0X2JpdG1hc2tfaW50ZihjdGwsICZmbHVzaF9tYXNrLCBwaHlzX2VuYy0+aW50Zl9pZHgp OwotCWN0bC0+b3BzLnVwZGF0ZV9wZW5kaW5nX2ZsdXNoKGN0bCwgZmx1c2hfbWFzayk7Ci0KLQlE UFVfREVCVUdfQ01ERU5DKGNtZF9lbmMsICJ1cGRhdGUgcGVuZGluZyBmbHVzaCBjdGwgJWQgZmx1 c2hfbWFzayAleFxuIiwKLQkJCWN0bC0+aWR4IC0gQ1RMXzAsIGZsdXNoX21hc2spOwotfQotCiBz dGF0aWMgdm9pZCBfZHB1X2VuY29kZXJfcGh5c19jbWRfdXBkYXRlX2ludGZfY2ZnKAogCQlzdHJ1 Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpCiB7CkBAIC0zMjQsMjAgKzMwMSw2IEBAIHN0 YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfY21kX21vZGVfc2V0KAogCV9kcHVfZW5jb2Rlcl9w aHlzX2NtZF9zZXR1cF9pcnFfaHdfaWR4KHBoeXNfZW5jKTsKIH0KIAotc3RhdGljIGJvb2wgX2Rw dV9lbmNvZGVyX3BoeXNfaXNfcHBzcGxpdChzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19l bmMpCi17Ci0JZW51bSBkcHVfcm1fdG9wb2xvZ3lfbmFtZSB0b3BvbG9neTsKLQotCWlmICghcGh5 c19lbmMpCi0JCXJldHVybiBmYWxzZTsKLQotCXRvcG9sb2d5ID0gZHB1X2Nvbm5lY3Rvcl9nZXRf dG9wb2xvZ3lfbmFtZShwaHlzX2VuYy0+Y29ubmVjdG9yKTsKLQlpZiAodG9wb2xvZ3kgPT0gRFBV X1JNX1RPUE9MT0dZX1BQU1BMSVQpCi0JCXJldHVybiB0cnVlOwotCi0JcmV0dXJuIGZhbHNlOwot fQotCiBzdGF0aWMgaW50IF9kcHVfZW5jb2Rlcl9waHlzX2NtZF9oYW5kbGVfcHBkb25lX3RpbWVv dXQoCiAJCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYykKIHsKQEAgLTM4OSwxNiAr MzUyLDYgQEAgc3RhdGljIGludCBfZHB1X2VuY29kZXJfcGh5c19jbWRfaGFuZGxlX3BwZG9uZV90 aW1lb3V0KAogCXJldHVybiAtRVRJTUVET1VUOwogfQogCi1zdGF0aWMgYm9vbCBfZHB1X2VuY29k ZXJfcGh5c19pc19wcHNwbGl0X3NsYXZlKAotCQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5 c19lbmMpCi17Ci0JaWYgKCFwaHlzX2VuYykKLQkJcmV0dXJuIGZhbHNlOwotCi0JcmV0dXJuIF9k cHVfZW5jb2Rlcl9waHlzX2lzX3Bwc3BsaXQocGh5c19lbmMpICYmCi0JCQlwaHlzX2VuYy0+c3Bs aXRfcm9sZSA9PSBFTkNfUk9MRV9TTEFWRTsKLX0KLQogc3RhdGljIGludCBfZHB1X2VuY29kZXJf cGh5c19jbWRfcG9sbF93cml0ZV9wb2ludGVyX3N0YXJ0ZWQoCiAJCXN0cnVjdCBkcHVfZW5jb2Rl cl9waHlzICpwaHlzX2VuYykKIHsKQEAgLTQ4MywxMCArNDM2LDYgQEAgc3RhdGljIGludCBfZHB1 X2VuY29kZXJfcGh5c19jbWRfd2FpdF9mb3JfaWRsZSgKIAl3YWl0X2luZm8uYXRvbWljX2NudCA9 ICZwaHlzX2VuYy0+cGVuZGluZ19raWNrb2ZmX2NudDsKIAl3YWl0X2luZm8udGltZW91dF9tcyA9 IEtJQ0tPRkZfVElNRU9VVF9NUzsKIAotCS8qIHNsYXZlIGVuY29kZXIgZG9lc24ndCBlbmFibGUg Zm9yIHBwc3BsaXQgKi8KLQlpZiAoX2RwdV9lbmNvZGVyX3BoeXNfaXNfcHBzcGxpdF9zbGF2ZShw aHlzX2VuYykpCi0JCXJldHVybiAwOwotCiAJcmV0ID0gZHB1X2VuY29kZXJfaGVscGVyX3dhaXRf Zm9yX2lycShwaHlzX2VuYywgSU5UUl9JRFhfUElOR1BPTkcsCiAJCQkmd2FpdF9pbmZvKTsKIAlp ZiAocmV0ID09IC1FVElNRURPVVQpCkBAIC01ODgsNyArNTM3LDcgQEAgdm9pZCBkcHVfZW5jb2Rl cl9waHlzX2NtZF9pcnFfY29udHJvbChzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMs CiB7CiAJc3RydWN0IGRwdV9lbmNvZGVyX3BoeXNfY21kICpjbWRfZW5jOwogCi0JaWYgKCFwaHlz X2VuYyB8fCBfZHB1X2VuY29kZXJfcGh5c19pc19wcHNwbGl0X3NsYXZlKHBoeXNfZW5jKSkKKwlp ZiAoIXBoeXNfZW5jKQogCQlyZXR1cm47CiAKIAljbWRfZW5jID0gdG9fZHB1X2VuY29kZXJfcGh5 c19jbWQocGh5c19lbmMpOwpAQCAtNzI2LDE4ICs2NzUsMTggQEAgc3RhdGljIHZvaWQgX2RwdV9l bmNvZGVyX3BoeXNfY21kX3Bpbmdwb25nX2NvbmZpZygKIAkJCXBoeXNfZW5jLT5od19wcC0+aWR4 IC0gUElOR1BPTkdfMCk7CiAJZHJtX21vZGVfZGVidWdfcHJpbnRtb2RlbGluZSgmcGh5c19lbmMt PmNhY2hlZF9tb2RlKTsKIAotCWlmICghX2RwdV9lbmNvZGVyX3BoeXNfaXNfcHBzcGxpdF9zbGF2 ZShwaHlzX2VuYykpCi0JCV9kcHVfZW5jb2Rlcl9waHlzX2NtZF91cGRhdGVfaW50Zl9jZmcocGh5 c19lbmMpOworCV9kcHVfZW5jb2Rlcl9waHlzX2NtZF91cGRhdGVfaW50Zl9jZmcocGh5c19lbmMp OwogCWRwdV9lbmNvZGVyX3BoeXNfY21kX3RlYXJjaGVja19jb25maWcocGh5c19lbmMpOwogfQog CiBzdGF0aWMgYm9vbCBkcHVfZW5jb2Rlcl9waHlzX2NtZF9uZWVkc19zaW5nbGVfZmx1c2goCiAJ CXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYykKIHsKLQlpZiAoIXBoeXNfZW5jKQot CQlyZXR1cm4gZmFsc2U7Ci0KLQlyZXR1cm4gX2RwdV9lbmNvZGVyX3BoeXNfaXNfcHBzcGxpdChw aHlzX2VuYyk7CisJLyoqCisJICogd2UgZG8gc2VwYXJhdGUgZmx1c2ggZm9yIGVhY2ggQ1RMIGFu ZCBsZXQKKwkgKiBDVExfU1RBUlQgc3luY2hyb25pemUgdGhlbQorCSAqLworCXJldHVybiBmYWxz ZTsKIH0KIAogc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c19jbWRfZW5hYmxlX2hlbHBlcigK QEAgLTc1NSwxMiArNzA0LDcgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c19jbWRfZW5h YmxlX2hlbHBlcigKIAogCV9kcHVfZW5jb2Rlcl9waHlzX2NtZF9waW5ncG9uZ19jb25maWcocGh5 c19lbmMpOwogCi0JLyoKLQkgKiBGb3IgcHAtc3BsaXQsIHNraXAgc2V0dGluZyB0aGUgZmx1c2gg Yml0IGZvciB0aGUgc2xhdmUgaW50Ziwgc2luY2UKLQkgKiBib3RoIGludGZzIHVzZSBzYW1lIGN0 bCBhbmQgSFcgd2lsbCBvbmx5IGZsdXNoIHRoZSBtYXN0ZXIuCi0JICovCi0JaWYgKF9kcHVfZW5j b2Rlcl9waHlzX2lzX3Bwc3BsaXQocGh5c19lbmMpICYmCi0JCSFkcHVfZW5jb2Rlcl9waHlzX2Nt ZF9pc19tYXN0ZXIocGh5c19lbmMpKQorCWlmICghZHB1X2VuY29kZXJfcGh5c19jbWRfaXNfbWFz dGVyKHBoeXNfZW5jKSkKIAkJZ290byBza2lwX2ZsdXNoOwogCiAJY3RsID0gcGh5c19lbmMtPmh3 X2N0bDsKQEAgLTk2MywxMCArOTA3LDYgQEAgc3RhdGljIGludCBfZHB1X2VuY29kZXJfcGh5c19j bWRfd2FpdF9mb3JfY3RsX3N0YXJ0KAogCXdhaXRfaW5mby5hdG9taWNfY250ID0gJnBoeXNfZW5j LT5wZW5kaW5nX2N0bHN0YXJ0X2NudDsKIAl3YWl0X2luZm8udGltZW91dF9tcyA9IEtJQ0tPRkZf VElNRU9VVF9NUzsKIAotCS8qIHNsYXZlIGVuY29kZXIgZG9lc24ndCBlbmFibGUgZm9yIHBwc3Bs aXQgKi8KLQlpZiAoX2RwdV9lbmNvZGVyX3BoeXNfaXNfcHBzcGxpdF9zbGF2ZShwaHlzX2VuYykp Ci0JCXJldHVybiAwOwotCiAJcmV0ID0gZHB1X2VuY29kZXJfaGVscGVyX3dhaXRfZm9yX2lycShw aHlzX2VuYywgSU5UUl9JRFhfQ1RMX1NUQVJULAogCQkJJndhaXRfaW5mbyk7CiAJaWYgKHJldCA9 PSAtRVRJTUVET1VUKSB7CkBAIC0xMDUzLDM5ICs5OTMsNiBAQCBzdGF0aWMgaW50IGRwdV9lbmNv ZGVyX3BoeXNfY21kX3dhaXRfZm9yX3ZibGFuaygKIAlyZXR1cm4gcmM7CiB9CiAKLXN0YXRpYyB2 b2lkIGRwdV9lbmNvZGVyX3BoeXNfY21kX3VwZGF0ZV9zcGxpdF9yb2xlKAotCQlzdHJ1Y3QgZHB1 X2VuY29kZXJfcGh5cyAqcGh5c19lbmMsCi0JCWVudW0gZHB1X2VuY19zcGxpdF9yb2xlIHJvbGUp Ci17Ci0Jc3RydWN0IGRwdV9lbmNvZGVyX3BoeXNfY21kICpjbWRfZW5jOwotCWVudW0gZHB1X2Vu Y19zcGxpdF9yb2xlIG9sZF9yb2xlOwotCWJvb2wgaXNfcHBzcGxpdDsKLQotCWlmICghcGh5c19l bmMpCi0JCXJldHVybjsKLQotCWNtZF9lbmMgPSB0b19kcHVfZW5jb2Rlcl9waHlzX2NtZChwaHlz X2VuYyk7Ci0Jb2xkX3JvbGUgPSBwaHlzX2VuYy0+c3BsaXRfcm9sZTsKLQlpc19wcHNwbGl0ID0g X2RwdV9lbmNvZGVyX3BoeXNfaXNfcHBzcGxpdChwaHlzX2VuYyk7Ci0KLQlwaHlzX2VuYy0+c3Bs aXRfcm9sZSA9IHJvbGU7Ci0KLQlEUFVfREVCVUdfQ01ERU5DKGNtZF9lbmMsICJvbGQgcm9sZSAl ZCBuZXcgcm9sZSAlZFxuIiwKLQkJCW9sZF9yb2xlLCByb2xlKTsKLQotCS8qCi0JICogcHBzcGxp dCBzb2xvIG5lZWRzIHRvIHJlcHJvZ3JhbSBiZWNhdXNlIGludGYgbWF5IGhhdmUgc3dhcHBlZCB3 aXRob3V0Ci0JICogcm9sZSBjaGFuZ2luZyBvbiBsZWZ0LW9ubHksIHJpZ2h0LW9ubHkgYmFjay10 by1iYWNrIGNvbW1pdHMKLQkgKi8KLQlpZiAoIShpc19wcHNwbGl0ICYmIHJvbGUgPT0gRU5DX1JP TEVfU09MTykgJiYKLQkJCShyb2xlID09IG9sZF9yb2xlIHx8IHJvbGUgPT0gRU5DX1JPTEVfU0tJ UCkpCi0JCXJldHVybjsKLQotCWRwdV9lbmNvZGVyX2hlbHBlcl9zcGxpdF9jb25maWcocGh5c19l bmMsIHBoeXNfZW5jLT5pbnRmX2lkeCk7Ci0JX2RwdV9lbmNvZGVyX3BoeXNfY21kX3Bpbmdwb25n X2NvbmZpZyhwaHlzX2VuYyk7Ci0JX2RwdV9lbmNvZGVyX3BoeXNfY21kX3VwZGF0ZV9mbHVzaF9t YXNrKHBoeXNfZW5jKTsKLX0KLQogc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c19jbWRfcHJl cGFyZV9jb21taXQoCiAJCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYykKIHsKQEAg LTExOTEsNyArMTA5OCw2IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfY21kX2luaXRf b3BzKAogCW9wcy0+bmVlZHNfc2luZ2xlX2ZsdXNoID0gZHB1X2VuY29kZXJfcGh5c19jbWRfbmVl ZHNfc2luZ2xlX2ZsdXNoOwogCW9wcy0+aHdfcmVzZXQgPSBkcHVfZW5jb2Rlcl9oZWxwZXJfaHdf cmVzZXQ7CiAJb3BzLT5pcnFfY29udHJvbCA9IGRwdV9lbmNvZGVyX3BoeXNfY21kX2lycV9jb250 cm9sOwotCW9wcy0+dXBkYXRlX3NwbGl0X3JvbGUgPSBkcHVfZW5jb2Rlcl9waHlzX2NtZF91cGRh dGVfc3BsaXRfcm9sZTsKIAlvcHMtPnJlc3RvcmUgPSBkcHVfZW5jb2Rlcl9waHlzX2NtZF9lbmFi bGVfaGVscGVyOwogCW9wcy0+cHJlcGFyZV9pZGxlX3BjID0gZHB1X2VuY29kZXJfcGh5c19jbWRf cHJlcGFyZV9pZGxlX3BjOwogCW9wcy0+aXNfYXV0b3JlZnJlc2hfZW5hYmxlZCA9CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5j IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c192aWQuYwpp bmRleCBkNmI3MmEzLi5iNjgwNzE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfdmlkLmMKQEAgLTM1NCwyMCArMzU0LDYgQEAgc3Rh dGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c192aWRfdW5kZXJydW5faXJxKHZvaWQgKmFyZywgaW50 IGlycV9pZHgpCiAJCQlwaHlzX2VuYyk7CiB9CiAKLXN0YXRpYyBib29sIF9kcHVfZW5jb2Rlcl9w aHlzX2lzX3Bwc3BsaXQoc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQotewotCWVu dW0gZHB1X3JtX3RvcG9sb2d5X25hbWUgdG9wb2xvZ3k7Ci0KLQlpZiAoIXBoeXNfZW5jKQotCQly ZXR1cm4gZmFsc2U7Ci0KLQl0b3BvbG9neSA9IGRwdV9jb25uZWN0b3JfZ2V0X3RvcG9sb2d5X25h bWUocGh5c19lbmMtPmNvbm5lY3Rvcik7Ci0JaWYgKHRvcG9sb2d5ID09IERQVV9STV9UT1BPTE9H WV9QUFNQTElUKQotCQlyZXR1cm4gdHJ1ZTsKLQotCXJldHVybiBmYWxzZTsKLX0KLQogc3RhdGlj IGJvb2wgX2RwdV9lbmNvZGVyX3BoeXNfaXNfZHVhbF9jdGwoc3RydWN0IGRwdV9lbmNvZGVyX3Bo eXMgKnBoeXNfZW5jKQogewogCWVudW0gZHB1X3JtX3RvcG9sb2d5X25hbWUgdG9wb2xvZ3k7CkBA IC0zODUsOCArMzcxLDcgQEAgc3RhdGljIGJvb2wgX2RwdV9lbmNvZGVyX3BoeXNfaXNfZHVhbF9j dGwoc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQogc3RhdGljIGJvb2wgZHB1X2Vu Y29kZXJfcGh5c192aWRfbmVlZHNfc2luZ2xlX2ZsdXNoKAogCQlzdHJ1Y3QgZHB1X2VuY29kZXJf cGh5cyAqcGh5c19lbmMpCiB7Ci0JcmV0dXJuIHBoeXNfZW5jICYmIChfZHB1X2VuY29kZXJfcGh5 c19pc19wcHNwbGl0KHBoeXNfZW5jKSB8fAotCQlfZHB1X2VuY29kZXJfcGh5c19pc19kdWFsX2N0 bChwaHlzX2VuYykpOworCXJldHVybiAocGh5c19lbmMgJiYgX2RwdV9lbmNvZGVyX3BoeXNfaXNf ZHVhbF9jdGwocGh5c19lbmMpKTsKIH0KIAogc3RhdGljIHZvaWQgX2RwdV9lbmNvZGVyX3BoeXNf dmlkX3NldHVwX2lycV9od19pZHgoCkBAIC02MDksOSArNTk0LDcgQEAgc3RhdGljIGludCBfZHB1 X2VuY29kZXJfcGh5c192aWRfd2FpdF9mb3JfdmJsYW5rKAogCXdhaXRfaW5mby50aW1lb3V0X21z ID0gS0lDS09GRl9USU1FT1VUX01TOwogCiAJaWYgKCFkcHVfZW5jb2Rlcl9waHlzX3ZpZF9pc19t YXN0ZXIocGh5c19lbmMpKSB7Ci0JCS8qIHNpZ25hbCBkb25lIGZvciBzbGF2ZSB2aWRlbyBlbmNv ZGVyLCB1bmxlc3MgaXQgaXMgcHAtc3BsaXQgKi8KLQkJaWYgKCFfZHB1X2VuY29kZXJfcGh5c19p c19wcHNwbGl0KHBoeXNfZW5jKSAmJgotCQkJbm90aWZ5ICYmIHBoeXNfZW5jLT5wYXJlbnRfb3Bz LmhhbmRsZV9mcmFtZV9kb25lKQorCQlpZiAobm90aWZ5ICYmIHBoeXNfZW5jLT5wYXJlbnRfb3Bz LmhhbmRsZV9mcmFtZV9kb25lKQogCQkJcGh5c19lbmMtPnBhcmVudF9vcHMuaGFuZGxlX2ZyYW1l X2RvbmUoCiAJCQkJCXBoeXNfZW5jLT5wYXJlbnQsIHBoeXNfZW5jLAogCQkJCQlEUFVfRU5DT0RF Ul9GUkFNRV9FVkVOVF9ET05FKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9od19jYXRhbG9nLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfaHdfY2F0YWxvZy5jCmluZGV4IDE0ZTY2Y2EuLjhlNzc5YzAgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuYwpAQCAtNDMsNyArNDMsNyBAQAog I2RlZmluZSBQSU5HUE9OR19TRE04NDVfTUFTSyBCSVQoRFBVX1BJTkdQT05HX0RJVEhFUikKIAog I2RlZmluZSBQSU5HUE9OR19TRE04NDVfU1BMSVRfTUFTSyBcCi0JKFBJTkdQT05HX1NETTg0NV9N QVNLIHwgQklUKERQVV9QSU5HUE9OR19TUExJVCkgfCBCSVQoRFBVX1BJTkdQT05HX1RFMikpCisJ KFBJTkdQT05HX1NETTg0NV9NQVNLIHwgQklUKERQVV9QSU5HUE9OR19URTIpKQogCiAjZGVmaW5l IFdCMl9TRE04NDVfTUFTSyBcCiAJKEJJVChEUFVfV0JfTElORV9NT0RFKSB8IEJJVChEUFVfV0Jf VFJBRkZJQ19TSEFQRVIpIHwgQklUKERQVV9XQl9DRFApIHxcCkBAIC0xMTksOCArMTE5LDcgQEAK IAl7CiAJLm5hbWUgPSAiY3RsXzAiLCAuaWQgPSBDVExfMCwKIAkuYmFzZSA9IDB4MjAwMCwgLmxl biA9IDB4RTQsCi0JLmZlYXR1cmVzID0gQklUKERQVV9DVExfU1BMSVRfRElTUExBWSkgfAotCQlC SVQoRFBVX0NUTF9QSU5HUE9OR19TUExJVCkKKwkuZmVhdHVyZXMgPSBCSVQoRFBVX0NUTF9TUExJ VF9ESVNQTEFZKQogCX0sCiAJewogCS5uYW1lID0gImN0bF8xIiwgLmlkID0gQ1RMXzEsCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5oIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuaAppbmRleCBjZWZm M2I3Li4zOWJlYzBhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfaHdfY2F0YWxvZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9o d19jYXRhbG9nLmgKQEAgLTIxNCwxMiArMjE0LDEwIEBAIGVudW0gewogLyoqCiAgKiBDVEwgc3Vi LWJsb2NrcwogICogQERQVV9DVExfU1BMSVRfRElTUExBWSAgICAgICBDVEwgc3VwcG9ydHMgdmlk ZW8gbW9kZSBzcGxpdCBkaXNwbGF5Ci0gKiBARFBVX0NUTF9QSU5HUE9OR19TUExJVCAgICAgIENU TCBzdXBwb3J0cyBwaW5ncG9uZyBzcGxpdAogICogQERQVV9DVExfTUFYCiAgKi8KIGVudW0gewog CURQVV9DVExfU1BMSVRfRElTUExBWSA9IDB4MSwKLQlEUFVfQ1RMX1BJTkdQT05HX1NQTElULAog CURQVV9DVExfTUFYCiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfaHdfdG9wLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdf dG9wLmMKaW5kZXggNjBlNGJlZi4uOGY3ZjkzMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2h3X3RvcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9od190b3AuYwpAQCAtODAsMTEgKzgwLDYgQEAgc3RhdGljIHZvaWQgZHB1X2h3 X3NldHVwX3NwbGl0X3BpcGUoc3RydWN0IGRwdV9od19tZHAgKm1kcCwKIAkJCQlsb3dlcl9waXBl IHw9IEZMRF9JTlRGXzFfU1dfVFJHX01VWDsKIAkJCWVsc2UKIAkJCQlsb3dlcl9waXBlIHw9IEZM RF9JTlRGXzJfU1dfVFJHX01VWDsKLQotCQkJLyogZnJlZSBydW4gKi8KLQkJCWlmIChjZmctPnBw X3NwbGl0X3NsYXZlICE9IElOVEZfTUFYKQotCQkJCWxvd2VyX3BpcGUgPSBGTERfU01BUlRfUEFO RUxfRlJFRV9SVU47Ci0KIAkJCXVwcGVyX3BpcGUgPSBsb3dlcl9waXBlOwogCQl9IGVsc2Ugewog CQkJaWYgKGNmZy0+aW50ZiA9PSBJTlRGXzIpIHsKQEAgLTEwMywzMyArOTgsNiBAQCBzdGF0aWMg dm9pZCBkcHVfaHdfc2V0dXBfc3BsaXRfcGlwZShzdHJ1Y3QgZHB1X2h3X21kcCAqbWRwLAogCURQ VV9SRUdfV1JJVEUoYywgU1BMSVRfRElTUExBWV9FTiwgY2ZnLT5lbiAmIDB4MSk7CiB9CiAKLXN0 YXRpYyB2b2lkIGRwdV9od19zZXR1cF9wcF9zcGxpdChzdHJ1Y3QgZHB1X2h3X21kcCAqbWRwLAot CQlzdHJ1Y3Qgc3BsaXRfcGlwZV9jZmcgKmNmZykKLXsKLQl1MzIgcHBiX2NvbmZpZyA9IDB4MDsK LQl1MzIgcHBiX2NvbnRyb2wgPSAweDA7Ci0KLQlpZiAoIW1kcCB8fCAhY2ZnKQotCQlyZXR1cm47 Ci0KLQlpZiAoY2ZnLT5lbiAmJiBjZmctPnBwX3NwbGl0X3NsYXZlICE9IElOVEZfTUFYKSB7Ci0J CXBwYl9jb25maWcgfD0gKGNmZy0+cHBfc3BsaXRfc2xhdmUgLSBJTlRGXzAgKyAxKSA8PCAyMDsK LQkJcHBiX2NvbmZpZyB8PSBCSVQoMTYpOyAvKiBzcGxpdCBlbmFibGUgKi8KLQkJcHBiX2NvbnRy b2wgPSBCSVQoNSk7IC8qIGhvcnogc3BsaXQqLwotCX0KLQlpZiAoY2ZnLT5wcF9zcGxpdF9pbmRl eCkgewotCQlEUFVfUkVHX1dSSVRFKCZtZHAtPmh3LCBQUEIwX0NPTkZJRywgMHgwKTsKLQkJRFBV X1JFR19XUklURSgmbWRwLT5odywgUFBCMF9DTlRMLCAweDApOwotCQlEUFVfUkVHX1dSSVRFKCZt ZHAtPmh3LCBQUEIxX0NPTkZJRywgcHBiX2NvbmZpZyk7Ci0JCURQVV9SRUdfV1JJVEUoJm1kcC0+ aHcsIFBQQjFfQ05UTCwgcHBiX2NvbnRyb2wpOwotCX0gZWxzZSB7Ci0JCURQVV9SRUdfV1JJVEUo Jm1kcC0+aHcsIFBQQjBfQ09ORklHLCBwcGJfY29uZmlnKTsKLQkJRFBVX1JFR19XUklURSgmbWRw LT5odywgUFBCMF9DTlRMLCBwcGJfY29udHJvbCk7Ci0JCURQVV9SRUdfV1JJVEUoJm1kcC0+aHcs IFBQQjFfQ09ORklHLCAweDApOwotCQlEUFVfUkVHX1dSSVRFKCZtZHAtPmh3LCBQUEIxX0NOVEws IDB4MCk7Ci0JfQotfQotCiBzdGF0aWMgdm9pZCBkcHVfaHdfc2V0dXBfY2RtX291dHB1dChzdHJ1 Y3QgZHB1X2h3X21kcCAqbWRwLAogCQlzdHJ1Y3QgY2RtX291dHB1dF9jZmcgKmNmZykKIHsKQEAg LTM0OSw3ICszMTcsNiBAQCBzdGF0aWMgdm9pZCBfc2V0dXBfbWRwX29wcyhzdHJ1Y3QgZHB1X2h3 X21kcF9vcHMgKm9wcywKIAkJdW5zaWduZWQgbG9uZyBjYXApCiB7CiAJb3BzLT5zZXR1cF9zcGxp dF9waXBlID0gZHB1X2h3X3NldHVwX3NwbGl0X3BpcGU7Ci0Jb3BzLT5zZXR1cF9wcF9zcGxpdCA9 IGRwdV9od19zZXR1cF9wcF9zcGxpdDsKIAlvcHMtPnNldHVwX2NkbV9vdXRwdXQgPSBkcHVfaHdf c2V0dXBfY2RtX291dHB1dDsKIAlvcHMtPnNldHVwX2Nsa19mb3JjZV9jdHJsID0gZHB1X2h3X3Nl dHVwX2Nsa19mb3JjZV9jdHJsOwogCW9wcy0+Z2V0X2Rhbmdlcl9zdGF0dXMgPSBkcHVfaHdfZ2V0 X2Rhbmdlcl9zdGF0dXM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfaHdfdG9wLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfdG9w LmgKaW5kZXggMTQ3MGQwZi4uNTQyOWNkNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2h3X3RvcC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9od190b3AuaApAQCAtNDEsOCArNDEsNiBAQCBzdHJ1Y3QgdHJhZmZpY19zaGFwZXJf Y2ZnIHsKICAqIEBlbiAgICAgICAgOiBFbmFibGUvZGlzYWJsZSBkdWFsIHBpcGUgY29uZmd1cmF0 aW9uCiAgKiBAbW9kZSAgICAgIDogUGFuZWwgaW50ZXJmYWNlIG1vZGUKICAqIEBpbnRmICAgICAg OiBJbnRlcmZhY2UgaWQgZm9yIG1haW4gY29udHJvbCBwYXRoCi0gKiBAcHBfc3BsaXRfc2xhdmU6 IFNsYXZlIGludGVyZmFjZSBmb3IgcGluZyBwb25nIHNwbGl0LCBJTlRGX01BWCB0byBkaXNhYmxl Ci0gKiBAcHBfc3BsaXRfaWR4OiAgIFBpbmcgcG9uZyBpbmRleCBmb3IgcGluZyBwb25nIHNwbGl0 CiAgKiBAc3BsaXRfZmx1c2hfZW46IEFsbG93cyBib3RoIHRoZSBwYXRocyB0byBiZSBmbHVzaGVk IHdoZW4gbWFzdGVyIHBhdGggaXMKICAqICAgICAgICAgICAgICBmbHVzaGVkCiAgKi8KQEAgLTUw LDggKzQ4LDYgQEAgc3RydWN0IHNwbGl0X3BpcGVfY2ZnIHsKIAlib29sIGVuOwogCWVudW0gZHB1 X2ludGZfbW9kZSBtb2RlOwogCWVudW0gZHB1X2ludGYgaW50ZjsKLQllbnVtIGRwdV9pbnRmIHBw X3NwbGl0X3NsYXZlOwotCXUzMiBwcF9zcGxpdF9pbmRleDsKIAlib29sIHNwbGl0X2ZsdXNoX2Vu OwogfTsKIApAQCAtMTA5LDEzICsxMDUsNiBAQCBzdHJ1Y3QgZHB1X2h3X21kcF9vcHMgewogCXZv aWQgKCpzZXR1cF9zcGxpdF9waXBlKShzdHJ1Y3QgZHB1X2h3X21kcCAqbWRwLAogCQkJc3RydWN0 IHNwbGl0X3BpcGVfY2ZnICpwKTsKIAotCS8qKiBzZXR1cF9wcF9zcGxpdCgpIDogQ29uZmlndXJl IHBwIHNwbGl0IHJlbGF0ZWQgcmVnaXN0ZXJzCi0JICogQG1kcCAgOiBtZHAgdG9wIGNvbnRleHQg ZHJpdmVyCi0JICogQGNmZyAgOiB1cHBlciBhbmQgbG93ZXIgcGFydCBvZiBwaXBlIGNvbmZpZ3Vy YXRpb24KLQkgKi8KLQl2b2lkICgqc2V0dXBfcHBfc3BsaXQpKHN0cnVjdCBkcHVfaHdfbWRwICpt ZHAsCi0JCQlzdHJ1Y3Qgc3BsaXRfcGlwZV9jZmcgKmNmZyk7Ci0KIAkvKioKIAkgKiBzZXR1cF9j ZG1fb3V0cHV0KCkgOiBTZXR1cCBzZWxlY3Rpb24gY29udHJvbCBvZiB0aGUgY2RtIGRhdGEgcGF0 aAogCSAqIEBtZHAgIDogbWRwIHRvcCBjb250ZXh0IGRyaXZlcgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3aW8uaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9od2lvLmgKaW5kZXggYjg4NzA4Mi4uNWIyYmM5YiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3aW8uaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdpby5oCkBAIC0zNiwxMCArMzYsNiBAQAogI2RlZmlu ZSBEU1BQX0lHQ19DT0xPUjBfUkFNX0xVVE4gICAgICAgIDB4MzAwCiAjZGVmaW5lIERTUFBfSUdD X0NPTE9SMV9SQU1fTFVUTiAgICAgICAgMHgzMDQKICNkZWZpbmUgRFNQUF9JR0NfQ09MT1IyX1JB TV9MVVROICAgICAgICAweDMwOAotI2RlZmluZSBQUEIwX0NOVEwgICAgICAgICAgICAgICAgICAg ICAgIDB4MzMwCi0jZGVmaW5lIFBQQjBfQ09ORklHICAgICAgICAgICAgICAgICAgICAgMHgzMzQK LSNkZWZpbmUgUFBCMV9DTlRMICAgICAgICAgICAgICAgICAgICAgICAweDMzOAotI2RlZmluZSBQ UEIxX0NPTkZJRyAgICAgICAgICAgICAgICAgICAgIDB4MzNDCiAjZGVmaW5lIEhXX0VWRU5UU19D VEwgICAgICAgICAgICAgICAgICAgMHgzN0MKICNkZWZpbmUgQ0xLX0NUUkwzICAgICAgICAgICAg ICAgICAgICAgICAweDNBOAogI2RlZmluZSBDTEtfU1RBVFVTMyAgICAgICAgICAgICAgICAgICAg IDB4M0FDCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0u YyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCmluZGV4IDEzZWZiZWIu LmM4YzEyZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9y bS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCkBAIC01MCw3 ICs1MCw2IEBAIHN0cnVjdCBkcHVfcm1fdG9wb2xvZ3lfZGVmIHsKIAl7ICAgRFBVX1JNX1RPUE9M T0dZX1NJTkdMRVBJUEUsICAgICAgICAgICAxLCAwLCAxLCAxLCBmYWxzZSB9LAogCXsgICBEUFVf Uk1fVE9QT0xPR1lfRFVBTFBJUEUsICAgICAgICAgICAgIDIsIDAsIDIsIDIsIHRydWUgIH0sCiAJ eyAgIERQVV9STV9UT1BPTE9HWV9EVUFMUElQRV8zRE1FUkdFLCAgICAgMiwgMCwgMSwgMSwgZmFs c2UgfSwKLQl7ICAgRFBVX1JNX1RPUE9MT0dZX1BQU1BMSVQsICAgICAgICAgICAgICAxLCAwLCAy LCAxLCB0cnVlICB9LAogfTsKIAogLyoqCkBAIC01MzEsNyArNTMwLDYgQEAgc3RhdGljIGJvb2wg X2RwdV9ybV9jaGVja19sbV9hbmRfZ2V0X2Nvbm5lY3RlZF9ibGtzKAogCQlzdHJ1Y3QgZHB1X3Jt X2h3X2JsayAqcHJpbWFyeV9sbSkKIHsKIAljb25zdCBzdHJ1Y3QgZHB1X2xtX2NmZyAqbG1fY2Zn ID0gdG9fZHB1X2h3X21peGVyKGxtLT5odyktPmNhcDsKLQljb25zdCBzdHJ1Y3QgZHB1X3Bpbmdw b25nX2NmZyAqcHBfY2ZnOwogCXN0cnVjdCBkcHVfcm1faHdfaXRlciBpdGVyOwogCWJvb2wgaXNf dmFsaWRfZHNwcCwgaXNfdmFsaWRfZHMsIHJldDsKIApAQCAtNjUwLDE1ICs2NDgsNiBAQCBzdGF0 aWMgYm9vbCBfZHB1X3JtX2NoZWNrX2xtX2FuZF9nZXRfY29ubmVjdGVkX2Jsa3MoCiAJCXJldHVy biBmYWxzZTsKIAl9CiAKLQlwcF9jZmcgPSB0b19kcHVfaHdfcGluZ3BvbmcoKCpwcCktPmh3KS0+ Y2FwczsKLQlpZiAoKHJlcXMtPnRvcG9sb2d5LT50b3BfbmFtZSA9PSBEUFVfUk1fVE9QT0xPR1lf UFBTUExJVCkgJiYKLQkJCSEodGVzdF9iaXQoRFBVX1BJTkdQT05HX1NQTElULCAmcHBfY2ZnLT5m ZWF0dXJlcykpKSB7Ci0JCURQVV9ERUJVRygicHAgJWQgZG9lc24ndCBzdXBwb3J0IHBwc3BsaXRc biIsIHBwX2NmZy0+aWQpOwotCQkqZHNwcCA9IE5VTEw7Ci0JCSpkcyA9IE5VTEw7Ci0JCXJldHVy biBmYWxzZTsKLQl9Ci0KIAlyZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNzQyLDI2ICs3MzEsNiBAQCBz dGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9sbXMoCiAJCQkJZHNbaV0gPyBkc1tpXS0+aWQgOiAw KTsKIAl9CiAKLQlpZiAocmVxcy0+dG9wb2xvZ3ktPnRvcF9uYW1lID09IERQVV9STV9UT1BPTE9H WV9QUFNQTElUKSB7Ci0JCS8qIHJlc2VydmUgYSBmcmVlIFBJTkdQT05HX1NMQVZFIGJsb2NrICov Ci0JCXJjID0gLUVOQVZBSUw7Ci0JCWRwdV9ybV9pbml0X2h3X2l0ZXIoJml0ZXJfaSwgMCwgRFBV X0hXX0JMS19QSU5HUE9ORyk7Ci0JCXdoaWxlIChfZHB1X3JtX2dldF9od19sb2NrZWQocm0sICZp dGVyX2kpKSB7Ci0JCQljb25zdCBzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICpwcCA9Ci0JCQkJCXRv X2RwdV9od19waW5ncG9uZyhpdGVyX2kuYmxrLT5odyk7Ci0JCQljb25zdCBzdHJ1Y3QgZHB1X3Bp bmdwb25nX2NmZyAqcHBfY2ZnID0gcHAtPmNhcHM7Ci0KLQkJCWlmICghKHRlc3RfYml0KERQVV9Q SU5HUE9OR19TTEFWRSwgJnBwX2NmZy0+ZmVhdHVyZXMpKSkKLQkJCQljb250aW51ZTsKLQkJCWlm IChSRVNFUlZFRF9CWV9PVEhFUihpdGVyX2kuYmxrLCByc3ZwKSkKLQkJCQljb250aW51ZTsKLQot CQkJaXRlcl9pLmJsay0+cnN2cF9ueHQgPSByc3ZwOwotCQkJcmMgPSAwOwotCQkJYnJlYWs7Ci0J CX0KLQl9Ci0KIAlyZXR1cm4gcmM7CiB9CiAKQEAgLTc4MCwyMiArNzQ5LDE4IEBAIHN0YXRpYyBp bnQgX2RwdV9ybV9yZXNlcnZlX2N0bHMoCiAJd2hpbGUgKF9kcHVfcm1fZ2V0X2h3X2xvY2tlZChy bSwgJml0ZXIpKSB7CiAJCWNvbnN0IHN0cnVjdCBkcHVfaHdfY3RsICpjdGwgPSB0b19kcHVfaHdf Y3RsKGl0ZXIuYmxrLT5odyk7CiAJCXVuc2lnbmVkIGxvbmcgZmVhdHVyZXMgPSBjdGwtPmNhcHMt PmZlYXR1cmVzOwotCQlib29sIGhhc19zcGxpdF9kaXNwbGF5LCBoYXNfcHBzcGxpdDsKKwkJYm9v bCBoYXNfc3BsaXRfZGlzcGxheTsKIAogCQlpZiAoUkVTRVJWRURfQllfT1RIRVIoaXRlci5ibGss IHJzdnApKQogCQkJY29udGludWU7CiAKIAkJaGFzX3NwbGl0X2Rpc3BsYXkgPSBCSVQoRFBVX0NU TF9TUExJVF9ESVNQTEFZKSAmIGZlYXR1cmVzOwotCQloYXNfcHBzcGxpdCA9IEJJVChEUFVfQ1RM X1BJTkdQT05HX1NQTElUKSAmIGZlYXR1cmVzOwogCiAJCURQVV9ERUJVRygiY3RsICVkIGNhcHMg MHglbFhcbiIsIGl0ZXIuYmxrLT5pZCwgZmVhdHVyZXMpOwogCiAJCWlmICh0b3AtPm5lZWRzX3Nw bGl0X2Rpc3BsYXkgIT0gaGFzX3NwbGl0X2Rpc3BsYXkpCiAJCQljb250aW51ZTsKIAotCQlpZiAo dG9wLT50b3BfbmFtZSA9PSBEUFVfUk1fVE9QT0xPR1lfUFBTUExJVCAmJiAhaGFzX3Bwc3BsaXQp Ci0JCQljb250aW51ZTsKLQogCQljdGxzW2ldID0gaXRlci5ibGs7CiAJCURQVV9ERUJVRygiY3Rs ICVkIG1hdGNoXG4iLCBpdGVyLmJsay0+aWQpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9ybS5oCmluZGV4IDNkYjYxYjUuLjhhNmNiY2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9ybS5oCkBAIC0yNiwxNCArMjYsMTIgQEAKICAqIEBEUFVfUk1fVE9QT0xPR1lf U0lOR0xFUElQRTogICAgICAgICAgIDEgTE0sIDEgUFAsIDEgSU5URi9XQgogICogQERQVV9STV9U T1BPTE9HWV9EVUFMUElQRTogICAgICAgICAgICAgMiBMTSwgMiBQUCwgMiBJTlRGL1dCCiAgKiBA RFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFXzNETUVSR0U6ICAgICAyIExNLCAyIFBQLCAzRE11eCwg MSBJTlRGL1dCCi0gKiBARFBVX1JNX1RPUE9MT0dZX1BQU1BMSVQ6ICAgICAgICAgICAgICAxIExN LCAyIFBQcywgMiBJTlRGL1dCCiAgKi8KIGVudW0gZHB1X3JtX3RvcG9sb2d5X25hbWUgewogCURQ VV9STV9UT1BPTE9HWV9OT05FID0gMCwKIAlEUFVfUk1fVE9QT0xPR1lfU0lOR0xFUElQRSwKIAlE UFVfUk1fVE9QT0xPR1lfRFVBTFBJUEUsCiAJRFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFXzNETUVS R0UsCi0JRFBVX1JNX1RPUE9MT0dZX1BQU1BMSVQsCiAJRFBVX1JNX1RPUE9MT0dZX01BWCwKIH07 CiAKLS0gClRoZSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBv ZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sCmEgTGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZl IFByb2plY3QKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=