From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: [DPU PATCH v4 2/6] drm/msm: remove support for ping pong split topology Date: Fri, 1 Jun 2018 10:45:49 -0700 Message-ID: <1527875153-27446-3-git-send-email-jsanka@codeaurora.org> References: <1527875153-27446-1-git-send-email-jsanka@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1527875153-27446-1-git-send-email-jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: hoegsberg-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, Jeykumar Sankaran , seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, Rajesh Yadav List-Id: linux-arm-msm@vger.kernel.org cGluZyBwb25nIHNwbGl0IHRvcG9sb2d5IHdhcyBtZWFudCBmb3IgbG93IGVuZCBzb2MncyB3aGlj aApkb2Vzbid0IGhhdmUgZW5vdWdoIGxheWVyIG1peGVycyB0byBzdXBwb3J0IHNwbGl0IHBhbmVs cy4KQ29uc2lkZXJpbmcgaG93IHVuY29tbW9uIHRoZSB0b3BvbG9neSBpcyBmb3IgY3VycmVudCBj aGlwc2V0J3MgYW5kCmFsc28gdG8gc2ltcGx5IHRoZSBkcml2ZXIgcHJvZ3JhbW1pbmcsIHN0cmlw aW5nIG9mZiB0aGUgc3VwcG9ydApmb3IgU0RNODQ1LgoKY2hhbmdlcyBpbiB2MjoKCS0gbm9uZQpj aGFuZ2VzIGluIHYzOgoJLSBub25lCmNoYW5nZXMgaW4gdjQ6CgktIG5vbmUKClJldmlld2VkLWJ5 OiBTZWFuIFBhdWwgPHNlYW5wYXVsQGNocm9taXVtLm9yZz4KU2lnbmVkLW9mZi1ieTogSmV5a3Vt YXIgU2Fua2FyYW4gPGpzYW5rYUBjb2RlYXVyb3JhLm9yZz4KU2lnbmVkLW9mZi1ieTogU2VhbiBQ YXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+ClNpZ25lZC1vZmYtYnk6IFJhamVzaCBZYWRhdiA8 cnlhZGF2QGNvZGVhdXJvcmEub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9jb25uZWN0b3IuYyAgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfY3J0Yy5jICAgICAgICAgICB8ICAxOSAtLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMgICAgICAgIHwgMTc5ICstLS0tLS0tLS0tLS0tLS0tLS0t LQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5cy5oICAgfCAg IDUgLQogLi4uL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX2NtZC5jICAg fCAxMTAgKy0tLS0tLS0tLS0tLQogLi4uL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rl cl9waHlzX3ZpZC5jICAgfCAgMjEgKy0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfaHdfY2F0YWxvZy5jICAgICB8ICAgNSArLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2h3X2NhdGFsb2cuaCAgICAgfCAgIDIgLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2h3X3RvcC5jICAgICAgICAgfCAgMzMgLS0tLQogZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2h3X3RvcC5oICAgICAgICAgfCAgMTEgLS0KIGRyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9od2lvLmggICAgICAgICAgIHwgICA0IC0KIGRyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jICAgICAgICAgICAgIHwgIDM3ICstLS0tCiBkcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uaCAgICAgICAgICAgICB8ICAgMiAtCiAx MyBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCA0MTUgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Nvbm5lY3Rvci5jIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Nvbm5lY3Rvci5jCmluZGV4IDVmM2Vm ZTUuLmE4OTM5MmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9jb25uZWN0b3IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29u bmVjdG9yLmMKQEAgLTM4LDggKzM4LDggQEAKIAl7RFBVX1JNX1RPUE9MT0dZX1NJTkdMRVBJUEUs CSJkcHVfc2luZ2xlcGlwZSJ9LAogCXtEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEUsCSJkcHVfZHVh bHBpcGUifSwKIAl7RFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFXzNETUVSR0UsCSJkcHVfZHVhbHBp cGVtZXJnZSJ9LAotCXtEUFVfUk1fVE9QT0xPR1lfUFBTUExJVCwJImRwdV9wcHNwbGl0In0sCiB9 OworCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wcm9wX2VudW1fbGlzdCBlX3RvcG9sb2d5X2Nv bnRyb2xbXSA9IHsKIAl7RFBVX1JNX1RPUENUTF9SRVNFUlZFX0xPQ0ssCSJyZXNlcnZlX2xvY2si fSwKIAl7RFBVX1JNX1RPUENUTF9SRVNFUlZFX0NMRUFSLAkicmVzZXJ2ZV9jbGVhciJ9LApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMKaW5kZXggMjRkMTU4Mi4uZDU3MWFm MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jCkBAIC0xOTE0LDIz ICsxOTE0LDYgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX3NldHVwX21peGVycyhzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCiAJbXV0ZXhfdW5sb2NrKCZkcHVfY3J0Yy0+Y3J0Y19sb2NrKTsKIH0KIAot c3RhdGljIHZvaWQgX2RwdV9jcnRjX3NldHVwX2lzX3Bwc3BsaXQoc3RydWN0IGRybV9jcnRjX3N0 YXRlICpzdGF0ZSkKLXsKLQlpbnQgaTsKLQlzdHJ1Y3QgZHB1X2NydGNfc3RhdGUgKmNzdGF0ZTsK LQotCWNzdGF0ZSA9IHRvX2RwdV9jcnRjX3N0YXRlKHN0YXRlKTsKLQotCWNzdGF0ZS0+aXNfcHBz cGxpdCA9IGZhbHNlOwotCWZvciAoaSA9IDA7IGkgPCBjc3RhdGUtPm51bV9jb25uZWN0b3JzOyBp KyspIHsKLQkJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm4gPSBjc3RhdGUtPmNvbm5lY3RvcnNb aV07Ci0KLQkJaWYgKGRwdV9jb25uZWN0b3JfZ2V0X3RvcG9sb2d5X25hbWUoY29ubikgPT0KLQkJ CQlEUFVfUk1fVE9QT0xPR1lfUFBTUExJVCkKLQkJCWNzdGF0ZS0+aXNfcHBzcGxpdCA9IHRydWU7 Ci0JfQotfQotCiBzdGF0aWMgdm9pZCBfZHB1X2NydGNfc2V0dXBfbG1fYm91bmRzKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKIAkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSkKIHsKQEAgLTE5 OTMsNyArMTk3Niw2IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2F0b21pY19iZWdpbihzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCiAKIAlpZiAoIWRwdV9jcnRjLT5udW1fbWl4ZXJzKSB7CiAJCV9kcHVf Y3J0Y19zZXR1cF9taXhlcnMoY3J0Yyk7Ci0JCV9kcHVfY3J0Y19zZXR1cF9pc19wcHNwbGl0KGNy dGMtPnN0YXRlKTsKIAkJX2RwdV9jcnRjX3NldHVwX2xtX2JvdW5kcyhjcnRjLCBjcnRjLT5zdGF0 ZSk7CiAJfQogCkBAIC0yODk5LDcgKzI4ODEsNiBAQCBzdGF0aWMgaW50IGRwdV9jcnRjX2F0b21p Y19jaGVjayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAKIAltaXhlcl93aWR0aCA9IGRwdV9jcnRj X2dldF9taXhlcl93aWR0aChkcHVfY3J0YywgY3N0YXRlLCBtb2RlKTsKIAotCV9kcHVfY3J0Y19z ZXR1cF9pc19wcHNwbGl0KHN0YXRlKTsKIAlfZHB1X2NydGNfc2V0dXBfbG1fYm91bmRzKGNydGMs IHN0YXRlKTsKIAogCSAvKiBnZXQgcGxhbmUgc3RhdGUgZm9yIGFsbCBkcm0gcGxhbmVzIGFzc29j aWF0ZWQgd2l0aCBjcnRjIHN0YXRlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2VuY29kZXIuYwppbmRleCAxNTE4ODliLi5kMDQwOTViIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMKQEAgLTU0NSw3ICs1NDUsNiBAQCB2b2lkIGRw dV9lbmNvZGVyX2hlbHBlcl9zcGxpdF9jb25maWcoCiAJc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQg KmRwdV9lbmM7CiAJc3RydWN0IHNwbGl0X3BpcGVfY2ZnIGNmZyA9IHsgMCB9OwogCXN0cnVjdCBk cHVfaHdfbWRwICpod19tZHB0b3A7Ci0JZW51bSBkcHVfcm1fdG9wb2xvZ3lfbmFtZSB0b3BvbG9n eTsKIAlzdHJ1Y3QgbXNtX2Rpc3BsYXlfaW5mbyAqZGlzcF9pbmZvOwogCiAJaWYgKCFwaHlzX2Vu YyB8fCAhcGh5c19lbmMtPmh3X21kcHRvcCB8fCAhcGh5c19lbmMtPnBhcmVudCkgewpAQCAtNTY5 LDggKzU2OCw2IEBAIHZvaWQgZHB1X2VuY29kZXJfaGVscGVyX3NwbGl0X2NvbmZpZygKIAlpZiAo cGh5c19lbmMtPnNwbGl0X3JvbGUgPT0gRU5DX1JPTEVfU09MTykgewogCQlpZiAoaHdfbWRwdG9w LT5vcHMuc2V0dXBfc3BsaXRfcGlwZSkKIAkJCWh3X21kcHRvcC0+b3BzLnNldHVwX3NwbGl0X3Bp cGUoaHdfbWRwdG9wLCAmY2ZnKTsKLQkJaWYgKGh3X21kcHRvcC0+b3BzLnNldHVwX3BwX3NwbGl0 KQotCQkJaHdfbWRwdG9wLT5vcHMuc2V0dXBfcHBfc3BsaXQoaHdfbWRwdG9wLCAmY2ZnKTsKIAkJ cmV0dXJuOwogCX0KIApAQCAtNTgyLDI5ICs1NzksMTEgQEAgdm9pZCBkcHVfZW5jb2Rlcl9oZWxw ZXJfc3BsaXRfY29uZmlnKAogCQkJcGh5c19lbmMtPm9wcy5uZWVkc19zaW5nbGVfZmx1c2gocGh5 c19lbmMpKQogCQljZmcuc3BsaXRfZmx1c2hfZW4gPSB0cnVlOwogCi0JdG9wb2xvZ3kgPSBkcHVf Y29ubmVjdG9yX2dldF90b3BvbG9neV9uYW1lKHBoeXNfZW5jLT5jb25uZWN0b3IpOwotCWlmICh0 b3BvbG9neSA9PSBEUFVfUk1fVE9QT0xPR1lfUFBTUExJVCkKLQkJY2ZnLnBwX3NwbGl0X3NsYXZl ID0gY2ZnLmludGY7Ci0JZWxzZQotCQljZmcucHBfc3BsaXRfc2xhdmUgPSBJTlRGX01BWDsKLQog CWlmIChwaHlzX2VuYy0+c3BsaXRfcm9sZSA9PSBFTkNfUk9MRV9NQVNURVIpIHsKIAkJRFBVX0RF QlVHX0VOQyhkcHVfZW5jLCAiZW5hYmxlICVkXG4iLCBjZmcuZW4pOwogCiAJCWlmIChod19tZHB0 b3AtPm9wcy5zZXR1cF9zcGxpdF9waXBlKQogCQkJaHdfbWRwdG9wLT5vcHMuc2V0dXBfc3BsaXRf cGlwZShod19tZHB0b3AsICZjZmcpOwotCX0gZWxzZSBpZiAoZHB1X2VuYy0+aHdfcHBbMF0pIHsK LQkJLyoKLQkJICogc2xhdmUgZW5jb2RlcgotCQkgKiAtIGRldGVybWluZSBzcGxpdCBpbmRleCBm cm9tIG1hc3RlciBpbmRleCwKLQkJICogICBhc3N1bWUgbWFzdGVyIGlzIGZpcnN0IHBwCi0JCSAq LwotCQljZmcucHBfc3BsaXRfaW5kZXggPSBkcHVfZW5jLT5od19wcFswXS0+aWR4IC0gUElOR1BP TkdfMDsKLQkJRFBVX0RFQlVHX0VOQyhkcHVfZW5jLCAibWFzdGVyIHVzaW5nIHBwJWRcbiIsCi0J CQkJY2ZnLnBwX3NwbGl0X2luZGV4KTsKLQotCQlpZiAoaHdfbWRwdG9wLT5vcHMuc2V0dXBfcHBf c3BsaXQpCi0JCQlod19tZHB0b3AtPm9wcy5zZXR1cF9wcF9zcGxpdChod19tZHB0b3AsICZjZmcp OwogCX0KIH0KIApAQCAtMTY2MywxNCArMTY0Miw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZHB1 X2VuY29kZXJfdHJpZ2dlcl9mbHVzaChzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMsCiAJCXJl dHVybjsKIAl9CiAKLQlpZiAocGh5cy0+c3BsaXRfcm9sZSA9PSBFTkNfUk9MRV9TS0lQKSB7Ci0J CURQVV9ERUJVR19FTkModG9fZHB1X2VuY29kZXJfdmlydChwaHlzLT5wYXJlbnQpLAotCQkJCSJz a2lwIGZsdXNoIHBwJWQgY3RsJWRcbiIsCi0JCQkJcGh5cy0+aHdfcHAtPmlkeCAtIFBJTkdQT05H XzAsCi0JCQkJY3RsLT5pZHggLSBDVExfMCk7Ci0JCXJldHVybjsKLQl9Ci0KIAlwZW5kaW5nX2tp Y2tvZmZfY250ID0gZHB1X2VuY29kZXJfcGh5c19pbmNfcGVuZGluZyhwaHlzKTsKIAogCWlmIChl eHRyYV9mbHVzaF9iaXRzICYmIGN0bC0+b3BzLnVwZGF0ZV9wZW5kaW5nX2ZsdXNoKQpAQCAtMTY5 Miw4ICsxNjYzLDYgQEAgc3RhdGljIGlubGluZSB2b2lkIF9kcHVfZW5jb2Rlcl90cmlnZ2VyX2Zs dXNoKHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYywKICAqLwogc3RhdGljIGlubGluZSB2b2lk IF9kcHVfZW5jb2Rlcl90cmlnZ2VyX3N0YXJ0KHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlz KQogewotCXN0cnVjdCBkcHVfaHdfY3RsICpjdGw7Ci0KIAlpZiAoIXBoeXMpIHsKIAkJRFBVX0VS Uk9SKCJpbnZhbGlkIGFyZ3VtZW50KHMpXG4iKTsKIAkJcmV0dXJuOwpAQCAtMTcwNCwxNCArMTY3 Myw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZHB1X2VuY29kZXJfdHJpZ2dlcl9zdGFydChzdHJ1 Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5cykKIAkJcmV0dXJuOwogCX0KIAotCWN0bCA9IHBoeXMt Pmh3X2N0bDsKLQlpZiAocGh5cy0+c3BsaXRfcm9sZSA9PSBFTkNfUk9MRV9TS0lQKSB7Ci0JCURQ VV9ERUJVR19FTkModG9fZHB1X2VuY29kZXJfdmlydChwaHlzLT5wYXJlbnQpLAotCQkJCSJza2lw IHN0YXJ0IHBwJWQgY3RsJWRcbiIsCi0JCQkJcGh5cy0+aHdfcHAtPmlkeCAtIFBJTkdQT05HXzAs Ci0JCQkJY3RsLT5pZHggLSBDVExfMCk7Ci0JCXJldHVybjsKLQl9CiAJaWYgKHBoeXMtPm9wcy50 cmlnZ2VyX3N0YXJ0ICYmIHBoeXMtPmVuYWJsZV9zdGF0ZSAhPSBEUFVfRU5DX0RJU0FCTEVEKQog CQlwaHlzLT5vcHMudHJpZ2dlcl9zdGFydChwaHlzKTsKIH0KQEAgLTE4MzAsNyArMTc5MSw2IEBA IHN0YXRpYyB2b2lkIF9kcHVfZW5jb2Rlcl9raWNrb2ZmX3BoeXMoc3RydWN0IGRwdV9lbmNvZGVy X3ZpcnQgKmRwdV9lbmMpCiAJLyogZG9uJ3QgcGVyZm9ybSBmbHVzaC9zdGFydCBvcGVyYXRpb25z IGZvciBzbGF2ZSBlbmNvZGVycyAqLwogCWZvciAoaSA9IDA7IGkgPCBkcHVfZW5jLT5udW1fcGh5 c19lbmNzOyBpKyspIHsKIAkJc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXMgPSBkcHVfZW5j LT5waHlzX2VuY3NbaV07Ci0JCWVudW0gZHB1X3JtX3RvcG9sb2d5X25hbWUgdG9wb2xvZ3kgPSBE UFVfUk1fVE9QT0xPR1lfTk9ORTsKIAogCQlpZiAoIXBoeXMgfHwgcGh5cy0+ZW5hYmxlX3N0YXRl ID09IERQVV9FTkNfRElTQUJMRUQpCiAJCQljb250aW51ZTsKQEAgLTE4MzksMTcgKzE3OTksNyBA QCBzdGF0aWMgdm9pZCBfZHB1X2VuY29kZXJfa2lja29mZl9waHlzKHN0cnVjdCBkcHVfZW5jb2Rl cl92aXJ0ICpkcHVfZW5jKQogCQlpZiAoIWN0bCkKIAkJCWNvbnRpbnVlOwogCi0JCWlmIChwaHlz LT5jb25uZWN0b3IpCi0JCQl0b3BvbG9neSA9IGRwdV9jb25uZWN0b3JfZ2V0X3RvcG9sb2d5X25h bWUoCi0JCQkJCXBoeXMtPmNvbm5lY3Rvcik7Ci0KLQkJLyoKLQkJICogZG9uJ3Qgd2FpdCBvbiBw cHNwbGl0IHNsYXZlcyBvciBza2lwcGVkIGVuY29kZXJzIGJlY2F1c2UKLQkJICogdGhleSBkb250 IHJlY2VpdmUgaXJxcwotCQkgKi8KLQkJaWYgKCEodG9wb2xvZ3kgPT0gRFBVX1JNX1RPUE9MT0dZ X1BQU1BMSVQgJiYKLQkJCQlwaHlzLT5zcGxpdF9yb2xlID09IEVOQ19ST0xFX1NMQVZFKSAmJgot CQkJCXBoeXMtPnNwbGl0X3JvbGUgIT0gRU5DX1JPTEVfU0tJUCkKKwkJaWYgKHBoeXMtPnNwbGl0 X3JvbGUgIT0gRU5DX1JPTEVfU0xBVkUpCiAJCQlzZXRfYml0KGksIGRwdV9lbmMtPmZyYW1lX2J1 c3lfbWFzayk7CiAJCWlmIChwaHlzLT5od19jdGwtPm9wcy5yZWdfZG1hX2ZsdXNoKQogCQkJcGh5 cy0+aHdfY3RsLT5vcHMucmVnX2RtYV9mbHVzaChwaHlzLT5od19jdGwpOwpAQCAtMTg3MywxMjYg KzE4MjMsNiBAQCBzdGF0aWMgdm9pZCBfZHB1X2VuY29kZXJfa2lja29mZl9waHlzKHN0cnVjdCBk cHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5jKQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRwdV9l bmMtPmVuY19zcGlubG9jaywgbG9ja19mbGFncyk7CiB9CiAKLXN0YXRpYyB2b2lkIF9kcHVfZW5j b2Rlcl9wcHNwbGl0X3N3YXBfaW50Zl9mb3JfcmlnaHRfb25seV91cGRhdGUoCi0JCXN0cnVjdCBk cm1fZW5jb2RlciAqZHJtX2VuYywKLQkJdW5zaWduZWQgbG9uZyAqYWZmZWN0ZWRfZGlzcGxheXMs Ci0JCWludCBudW1fYWN0aXZlX3BoeXMpCi17Ci0Jc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRw dV9lbmM7Ci0Jc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKm1hc3RlcjsKLQllbnVtIGRwdV9ybV90 b3BvbG9neV9uYW1lIHRvcG9sb2d5OwotCWJvb2wgaXNfcmlnaHRfb25seTsKLQotCWlmICghZHJt X2VuYyB8fCAhYWZmZWN0ZWRfZGlzcGxheXMpCi0JCXJldHVybjsKLQotCWRwdV9lbmMgPSB0b19k cHVfZW5jb2Rlcl92aXJ0KGRybV9lbmMpOwotCW1hc3RlciA9IGRwdV9lbmMtPmN1cl9tYXN0ZXI7 Ci0JaWYgKCFtYXN0ZXIgfHwgIW1hc3Rlci0+Y29ubmVjdG9yKQotCQlyZXR1cm47Ci0KLQl0b3Bv bG9neSA9IGRwdV9jb25uZWN0b3JfZ2V0X3RvcG9sb2d5X25hbWUobWFzdGVyLT5jb25uZWN0b3Ip OwotCWlmICh0b3BvbG9neSAhPSBEUFVfUk1fVE9QT0xPR1lfUFBTUExJVCkKLQkJcmV0dXJuOwot Ci0JLyoKLQkgKiBGb3IgcGluZ3Bvbmcgc3BsaXQsIHRoZSBzbGF2ZSBwaW5ncG9uZyB3b24ndCBn ZW5lcmF0ZSBJUlFzLiBGb3IKLQkgKiByaWdodC1vbmx5IHVwZGF0ZXMsIHdlIGNhbid0IHN3YXAg cGluZ3BvbmdzLCBvciBzaW1wbHkgc3dhcCB0aGUKLQkgKiBtYXN0ZXIvc2xhdmUgYXNzaWdubWVu dCwgd2UgYWN0dWFsbHkgaGF2ZSB0byBzd2FwIHRoZSBpbnRlcmZhY2VzCi0JICogc28gdGhhdCB0 aGUgbWFzdGVyIHBoeXNpY2FsIGVuY29kZXIgd2lsbCB1c2UgYSBwaW5ncG9uZy9pbnRlcmZhY2UK LQkgKiB0aGF0IGdlbmVyYXRlcyBpcnFzIG9uIHdoaWNoIHRvIHdhaXQuCi0JICovCi0JaXNfcmln aHRfb25seSA9ICF0ZXN0X2JpdCgwLCBhZmZlY3RlZF9kaXNwbGF5cykgJiYKLQkJCXRlc3RfYml0 KDEsIGFmZmVjdGVkX2Rpc3BsYXlzKTsKLQotCWlmIChpc19yaWdodF9vbmx5ICYmICFkcHVfZW5j LT5pbnRmc19zd2FwcGVkKSB7Ci0JCS8qIHJpZ2h0LW9ubHkgdXBkYXRlIHN3YXAgaW50ZXJmYWNl cyAqLwotCQlzd2FwKGRwdV9lbmMtPnBoeXNfZW5jc1swXS0+aW50Zl9pZHgsCi0JCQkJZHB1X2Vu Yy0+cGh5c19lbmNzWzFdLT5pbnRmX2lkeCk7Ci0JCWRwdV9lbmMtPmludGZzX3N3YXBwZWQgPSB0 cnVlOwotCX0gZWxzZSBpZiAoIWlzX3JpZ2h0X29ubHkgJiYgZHB1X2VuYy0+aW50ZnNfc3dhcHBl ZCkgewotCQkvKiBsZWZ0LW9ubHkgb3IgZnVsbCB1cGRhdGUsIHN3YXAgYmFjayAqLwotCQlzd2Fw KGRwdV9lbmMtPnBoeXNfZW5jc1swXS0+aW50Zl9pZHgsCi0JCQkJZHB1X2VuYy0+cGh5c19lbmNz WzFdLT5pbnRmX2lkeCk7Ci0JCWRwdV9lbmMtPmludGZzX3N3YXBwZWQgPSBmYWxzZTsKLQl9Ci0K LQlEUFVfREVCVUdfRU5DKGRwdV9lbmMsCi0JCQkicmlnaHRfb25seSAlZCBzd2FwcGVkICVkIHBo eXMwLT5pbnRmJWQsIHBoeXMxLT5pbnRmJWRcbiIsCi0JCQlpc19yaWdodF9vbmx5LCBkcHVfZW5j LT5pbnRmc19zd2FwcGVkLAotCQkJZHB1X2VuYy0+cGh5c19lbmNzWzBdLT5pbnRmX2lkeCAtIElO VEZfMCwKLQkJCWRwdV9lbmMtPnBoeXNfZW5jc1sxXS0+aW50Zl9pZHggLSBJTlRGXzApOwotCURQ VV9FVlQzMihEUk1JRChkcm1fZW5jKSwgaXNfcmlnaHRfb25seSwgZHB1X2VuYy0+aW50ZnNfc3dh cHBlZCwKLQkJCWRwdV9lbmMtPnBoeXNfZW5jc1swXS0+aW50Zl9pZHggLSBJTlRGXzAsCi0JCQlk cHVfZW5jLT5waHlzX2VuY3NbMV0tPmludGZfaWR4IC0gSU5URl8wLAotCQkJKmFmZmVjdGVkX2Rp c3BsYXlzKTsKLQotCS8qIHBwc3BsaXQgYWx3YXlzIHVzZXMgbWFzdGVyIHNpbmNlIHBwc2xhdmUg aW52YWxpZCBmb3IgaXJxcyovCi0JaWYgKG51bV9hY3RpdmVfcGh5cyA9PSAxKQotCQkqYWZmZWN0 ZWRfZGlzcGxheXMgPSBCSVQoMCk7Ci19Ci0KLXN0YXRpYyB2b2lkIF9kcHVfZW5jb2Rlcl91cGRh dGVfbWFzdGVyKHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYywKLQkJc3RydWN0IGRwdV9lbmNv ZGVyX2tpY2tvZmZfcGFyYW1zICpwYXJhbXMpCi17Ci0Jc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQg KmRwdV9lbmM7Ci0Jc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXM7Ci0JaW50IGksIG51bV9h Y3RpdmVfcGh5czsKLQlib29sIG1hc3Rlcl9hc3NpZ25lZCA9IGZhbHNlOwotCi0JaWYgKCFkcm1f ZW5jIHx8ICFwYXJhbXMpCi0JCXJldHVybjsKLQotCWRwdV9lbmMgPSB0b19kcHVfZW5jb2Rlcl92 aXJ0KGRybV9lbmMpOwotCi0JaWYgKGRwdV9lbmMtPm51bV9waHlzX2VuY3MgPD0gMSkKLQkJcmV0 dXJuOwotCi0JLyogY291bnQgYml0cyBzZXQgKi8KLQludW1fYWN0aXZlX3BoeXMgPSBod2VpZ2h0 X2xvbmcocGFyYW1zLT5hZmZlY3RlZF9kaXNwbGF5cyk7Ci0KLQlEUFVfREVCVUdfRU5DKGRwdV9l bmMsICJhZmZlY3RlZF9kaXNwbGF5cyAweCVseCBudW1fYWN0aXZlX3BoeXMgJWRcbiIsCi0JCQlw YXJhbXMtPmFmZmVjdGVkX2Rpc3BsYXlzLCBudW1fYWN0aXZlX3BoeXMpOwotCi0JLyogZm9yIGxl ZnQvcmlnaHQgb25seSB1cGRhdGUsIHBwc3BsaXQgbWFzdGVyIHN3aXRjaGVzIGludGVyZmFjZSAq LwotCV9kcHVfZW5jb2Rlcl9wcHNwbGl0X3N3YXBfaW50Zl9mb3JfcmlnaHRfb25seV91cGRhdGUo ZHJtX2VuYywKLQkJCSZwYXJhbXMtPmFmZmVjdGVkX2Rpc3BsYXlzLCBudW1fYWN0aXZlX3BoeXMp OwotCi0JZm9yIChpID0gMDsgaSA8IGRwdV9lbmMtPm51bV9waHlzX2VuY3M7IGkrKykgewotCQll bnVtIGRwdV9lbmNfc3BsaXRfcm9sZSBwcnZfcm9sZSwgbmV3X3JvbGU7Ci0JCWJvb2wgYWN0aXZl OwotCi0JCXBoeXMgPSBkcHVfZW5jLT5waHlzX2VuY3NbaV07Ci0JCWlmICghcGh5cyB8fCAhcGh5 cy0+b3BzLnVwZGF0ZV9zcGxpdF9yb2xlIHx8ICFwaHlzLT5od19wcCkKLQkJCWNvbnRpbnVlOwot Ci0JCWFjdGl2ZSA9IHRlc3RfYml0KGksICZwYXJhbXMtPmFmZmVjdGVkX2Rpc3BsYXlzKTsKLQkJ cHJ2X3JvbGUgPSBwaHlzLT5zcGxpdF9yb2xlOwotCi0JCWlmIChhY3RpdmUgJiYgbnVtX2FjdGl2 ZV9waHlzID09IDEpCi0JCQluZXdfcm9sZSA9IEVOQ19ST0xFX1NPTE87Ci0JCWVsc2UgaWYgKGFj dGl2ZSAmJiAhbWFzdGVyX2Fzc2lnbmVkKQotCQkJbmV3X3JvbGUgPSBFTkNfUk9MRV9NQVNURVI7 Ci0JCWVsc2UgaWYgKGFjdGl2ZSkKLQkJCW5ld19yb2xlID0gRU5DX1JPTEVfU0xBVkU7Ci0JCWVs c2UKLQkJCW5ld19yb2xlID0gRU5DX1JPTEVfU0tJUDsKLQotCQlwaHlzLT5vcHMudXBkYXRlX3Nw bGl0X3JvbGUocGh5cywgbmV3X3JvbGUpOwotCQlpZiAobmV3X3JvbGUgPT0gRU5DX1JPTEVfU09M TyB8fCBuZXdfcm9sZSA9PSBFTkNfUk9MRV9NQVNURVIpIHsKLQkJCWRwdV9lbmMtPmN1cl9tYXN0 ZXIgPSBwaHlzOwotCQkJbWFzdGVyX2Fzc2lnbmVkID0gdHJ1ZTsKLQkJfQotCi0JCURQVV9ERUJV R19FTkMoZHB1X2VuYywgInBwICVkIHJvbGUgcHJ2ICVkIG5ldyAlZCBhY3RpdmUgJWRcbiIsCi0J CQkJcGh5cy0+aHdfcHAtPmlkeCAtIFBJTkdQT05HXzAsIHBydl9yb2xlLAotCQkJCXBoeXMtPnNw bGl0X3JvbGUsIGFjdGl2ZSk7Ci0JCURQVV9FVlQzMihEUk1JRChkcm1fZW5jKSwgcGFyYW1zLT5h ZmZlY3RlZF9kaXNwbGF5cywKLQkJCQlwaHlzLT5od19wcC0+aWR4IC0gUElOR1BPTkdfMCwgcHJ2 X3JvbGUsCi0JCQkJcGh5cy0+c3BsaXRfcm9sZSwgYWN0aXZlLCBudW1fYWN0aXZlX3BoeXMpOwot CX0KLX0KLQogYm9vbCBkcHVfZW5jb2Rlcl9jaGVja19tb2RlKHN0cnVjdCBkcm1fZW5jb2RlciAq ZHJtX2VuYywgdTMyIG1vZGUpCiB7CiAJc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmM7 CkBAIC0yMDQ2LDE1ICsxODc2LDEwIEBAIHN0YXRpYyB2b2lkIF9kcHVfZW5jb2Rlcl9zZXR1cF9k aXRoZXIoc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXMpCiAJdm9pZCAqZGl0aGVyX2NmZzsK IAlpbnQgcmV0ID0gMDsKIAlzaXplX3QgbGVuID0gMDsKLQllbnVtIGRwdV9ybV90b3BvbG9neV9u YW1lIHRvcG9sb2d5OwogCiAJaWYgKCFwaHlzIHx8ICFwaHlzLT5jb25uZWN0b3IgfHwgIXBoeXMt Pmh3X3BwIHx8CiAJCQkhcGh5cy0+aHdfcHAtPm9wcy5zZXR1cF9kaXRoZXIpCiAJCXJldHVybjsK LQl0b3BvbG9neSA9IGRwdV9jb25uZWN0b3JfZ2V0X3RvcG9sb2d5X25hbWUocGh5cy0+Y29ubmVj dG9yKTsKLQlpZiAoKHRvcG9sb2d5ID09IERQVV9STV9UT1BPTE9HWV9QUFNQTElUKSAmJgotCQkJ KHBoeXMtPnNwbGl0X3JvbGUgPT0gRU5DX1JPTEVfU0xBVkUpKQotCQlyZXR1cm47CiAKIAlyZXQg PSBkcHVfY29ubmVjdG9yX2dldF9kaXRoZXJfY2ZnKHBoeXMtPmNvbm5lY3RvciwKIAkJCQlwaHlz LT5jb25uZWN0b3ItPnN0YXRlLCAmZGl0aGVyX2NmZywgJmxlbik7CkBAIC0yMjY1LDggKzIwOTAs NiBAQCB2b2lkIGRwdV9lbmNvZGVyX3ByZXBhcmVfZm9yX2tpY2tvZmYoc3RydWN0IGRybV9lbmNv ZGVyICpkcm1fZW5jLAogCQl9CiAJfQogCi0JX2RwdV9lbmNvZGVyX3VwZGF0ZV9tYXN0ZXIoZHJt X2VuYywgcGFyYW1zKTsKLQogCWlmIChkcHVfZW5jLT5jdXJfbWFzdGVyICYmIGRwdV9lbmMtPmN1 cl9tYXN0ZXItPmNvbm5lY3RvcikgewogCQlyYyA9IGRwdV9jb25uZWN0b3JfcHJlX2tpY2tvZmYo ZHB1X2VuYy0+Y3VyX21hc3Rlci0+Y29ubmVjdG9yKTsKIAkJaWYgKHJjKQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5cy5oIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5cy5oCmluZGV4IGI1N2Y2MTku LjkxMWFjNmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9l bmNvZGVyX3BoeXMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5j b2Rlcl9waHlzLmgKQEAgLTQwLDEzICs0MCwxMSBAQAogICogQEVOQ19ST0xFX1NPTE86CVRoaXMg aXMgdGhlIG9uZSBhbmQgb25seSBwYW5lbC4gVGhpcyBlbmNvZGVyIGlzIG1hc3Rlci4KICAqIEBF TkNfUk9MRV9NQVNURVI6CVRoaXMgZW5jb2RlciBpcyB0aGUgbWFzdGVyIG9mIGEgc3BsaXQgcGFu ZWwgY29uZmlnLgogICogQEVOQ19ST0xFX1NMQVZFOglUaGlzIGVuY29kZXIgaXMgbm90IHRoZSBt YXN0ZXIgb2YgYSBzcGxpdCBwYW5lbCBjb25maWcuCi0gKiBARU5DX1JPTEVfU0tJUDoJVGhpcyBl bmNvZGVyIGlzIG5vdCBwYXJ0aWNpcGF0aW5nIGluIGtpY2tvZmZzCiAgKi8KIGVudW0gZHB1X2Vu Y19zcGxpdF9yb2xlIHsKIAlFTkNfUk9MRV9TT0xPLAogCUVOQ19ST0xFX01BU1RFUiwKIAlFTkNf Uk9MRV9TTEFWRSwKLQlFTkNfUk9MRV9TS0lQCiB9OwogCiAvKioKQEAgLTEyMyw3ICsxMjEsNiBA QCBzdHJ1Y3QgZHB1X2VuY29kZXJfdmlydF9vcHMgewogICogQGh3X3Jlc2V0OgkJCUlzc3VlIEhX IHJlY292ZXJ5IHN1Y2ggYXMgQ1RMIHJlc2V0IGFuZCBjbGVhcgogICoJCQkJRFBVX0VOQ19FUlJf TkVFRFNfSFdfUkVTRVQgc3RhdGUKICAqIEBpcnFfY29udHJvbDoJCUhhbmRsZXIgdG8gZW5hYmxl L2Rpc2FibGUgYWxsIHRoZSBlbmNvZGVyIElSUXMKLSAqIEB1cGRhdGVfc3BsaXRfcm9sZToJCVVw ZGF0ZSB0aGUgc3BsaXQgcm9sZSBvZiB0aGUgcGh5cyBlbmMKICAqIEBwcmVwYXJlX2lkbGVfcGM6 CQlwaHlzIGVuY29kZXIgY2FuIHVwZGF0ZSB0aGUgdnN5bmNfZW5hYmxlIHN0YXR1cwogICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBvbiBpZGxlIHBvd2VyIGNvbGxhcHNlIHByZXBhcmUK ICAqIEByZXN0b3JlOgkJCVJlc3RvcmUgYWxsIHRoZSBlbmNvZGVyIGNvbmZpZ3MuCkBAIC0xNjcs OCArMTY0LDYgQEAgc3RydWN0IGRwdV9lbmNvZGVyX3BoeXNfb3BzIHsKIAl1MzIgKCpjb2xsZWN0 X21pc3IpKHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYyk7CiAJdm9pZCAoKmh3X3Jl c2V0KShzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpOwogCXZvaWQgKCppcnFfY29u dHJvbCkoc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXMsIGJvb2wgZW5hYmxlKTsKLQl2b2lk ICgqdXBkYXRlX3NwbGl0X3JvbGUpKHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYywK LQkJCWVudW0gZHB1X2VuY19zcGxpdF9yb2xlIHJvbGUpOwogCXZvaWQgKCpwcmVwYXJlX2lkbGVf cGMpKHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYyk7CiAJdm9pZCAoKnJlc3RvcmUp KHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzKTsKIAlib29sICgqaXNfYXV0b3JlZnJlc2hf ZW5hYmxlZCkoc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXMpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c19jbWQuYyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfY21kLmMKaW5kZXggNzFl MmU1YS4uMzQzNjc4OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2VuY29kZXJfcGh5c19jbWQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfZW5jb2Rlcl9waHlzX2NtZC5jCkBAIC0xMTQsMjkgKzExNCw2IEBAIHN0YXRpYyB2b2lk IF9kcHVfZW5jb2Rlcl9waHlzX2NtZF9jb25maWdfYXV0b3JlZnJlc2goCiAJCWh3X3BwLT5vcHMu c2V0dXBfYXV0b3JlZnJlc2goaHdfcHAsIGNmZ19jdXIpOwogfQogCi1zdGF0aWMgdm9pZCBfZHB1 X2VuY29kZXJfcGh5c19jbWRfdXBkYXRlX2ZsdXNoX21hc2soCi0JCXN0cnVjdCBkcHVfZW5jb2Rl cl9waHlzICpwaHlzX2VuYykKLXsKLQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5c19jbWQgKmNtZF9l bmMgPQotCQkJdG9fZHB1X2VuY29kZXJfcGh5c19jbWQocGh5c19lbmMpOwotCXN0cnVjdCBkcHVf aHdfY3RsICpjdGw7Ci0JdTMyIGZsdXNoX21hc2sgPSAwOwotCi0JaWYgKCFwaHlzX2VuYykKLQkJ cmV0dXJuOwotCi0JY3RsID0gcGh5c19lbmMtPmh3X2N0bDsKLQlpZiAoIWN0bCB8fCAhY3RsLT5v cHMuZ2V0X2JpdG1hc2tfaW50ZiB8fAotCQkJIWN0bC0+b3BzLnVwZGF0ZV9wZW5kaW5nX2ZsdXNo KQotCQlyZXR1cm47Ci0KLQljdGwtPm9wcy5nZXRfYml0bWFza19pbnRmKGN0bCwgJmZsdXNoX21h c2ssIHBoeXNfZW5jLT5pbnRmX2lkeCk7Ci0JY3RsLT5vcHMudXBkYXRlX3BlbmRpbmdfZmx1c2go Y3RsLCBmbHVzaF9tYXNrKTsKLQotCURQVV9ERUJVR19DTURFTkMoY21kX2VuYywgInVwZGF0ZSBw ZW5kaW5nIGZsdXNoIGN0bCAlZCBmbHVzaF9tYXNrICV4XG4iLAotCQkJY3RsLT5pZHggLSBDVExf MCwgZmx1c2hfbWFzayk7Ci19Ci0KIHN0YXRpYyB2b2lkIF9kcHVfZW5jb2Rlcl9waHlzX2NtZF91 cGRhdGVfaW50Zl9jZmcoCiAJCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYykKIHsK QEAgLTMyNCwyMCArMzAxLDYgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c19jbWRfbW9k ZV9zZXQoCiAJX2RwdV9lbmNvZGVyX3BoeXNfY21kX3NldHVwX2lycV9od19pZHgocGh5c19lbmMp OwogfQogCi1zdGF0aWMgYm9vbCBfZHB1X2VuY29kZXJfcGh5c19pc19wcHNwbGl0KHN0cnVjdCBk cHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYykKLXsKLQllbnVtIGRwdV9ybV90b3BvbG9neV9uYW1l IHRvcG9sb2d5OwotCi0JaWYgKCFwaHlzX2VuYykKLQkJcmV0dXJuIGZhbHNlOwotCi0JdG9wb2xv Z3kgPSBkcHVfY29ubmVjdG9yX2dldF90b3BvbG9neV9uYW1lKHBoeXNfZW5jLT5jb25uZWN0b3Ip OwotCWlmICh0b3BvbG9neSA9PSBEUFVfUk1fVE9QT0xPR1lfUFBTUExJVCkKLQkJcmV0dXJuIHRy dWU7Ci0KLQlyZXR1cm4gZmFsc2U7Ci19Ci0KIHN0YXRpYyBpbnQgX2RwdV9lbmNvZGVyX3BoeXNf Y21kX2hhbmRsZV9wcGRvbmVfdGltZW91dCgKIAkJc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBo eXNfZW5jKQogewpAQCAtMzg5LDE2ICszNTIsNiBAQCBzdGF0aWMgaW50IF9kcHVfZW5jb2Rlcl9w aHlzX2NtZF9oYW5kbGVfcHBkb25lX3RpbWVvdXQoCiAJcmV0dXJuIC1FVElNRURPVVQ7CiB9CiAK LXN0YXRpYyBib29sIF9kcHVfZW5jb2Rlcl9waHlzX2lzX3Bwc3BsaXRfc2xhdmUoCi0JCXN0cnVj dCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYykKLXsKLQlpZiAoIXBoeXNfZW5jKQotCQlyZXR1 cm4gZmFsc2U7Ci0KLQlyZXR1cm4gX2RwdV9lbmNvZGVyX3BoeXNfaXNfcHBzcGxpdChwaHlzX2Vu YykgJiYKLQkJCXBoeXNfZW5jLT5zcGxpdF9yb2xlID09IEVOQ19ST0xFX1NMQVZFOwotfQotCiBz dGF0aWMgaW50IF9kcHVfZW5jb2Rlcl9waHlzX2NtZF9wb2xsX3dyaXRlX3BvaW50ZXJfc3RhcnRl ZCgKIAkJc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQogewpAQCAtNDgzLDEwICs0 MzYsNiBAQCBzdGF0aWMgaW50IF9kcHVfZW5jb2Rlcl9waHlzX2NtZF93YWl0X2Zvcl9pZGxlKAog CXdhaXRfaW5mby5hdG9taWNfY250ID0gJnBoeXNfZW5jLT5wZW5kaW5nX2tpY2tvZmZfY250Owog CXdhaXRfaW5mby50aW1lb3V0X21zID0gS0lDS09GRl9USU1FT1VUX01TOwogCi0JLyogc2xhdmUg ZW5jb2RlciBkb2Vzbid0IGVuYWJsZSBmb3IgcHBzcGxpdCAqLwotCWlmIChfZHB1X2VuY29kZXJf cGh5c19pc19wcHNwbGl0X3NsYXZlKHBoeXNfZW5jKSkKLQkJcmV0dXJuIDA7Ci0KIAlyZXQgPSBk cHVfZW5jb2Rlcl9oZWxwZXJfd2FpdF9mb3JfaXJxKHBoeXNfZW5jLCBJTlRSX0lEWF9QSU5HUE9O RywKIAkJCSZ3YWl0X2luZm8pOwogCWlmIChyZXQgPT0gLUVUSU1FRE9VVCkKQEAgLTU4OCw3ICs1 MzcsNyBAQCB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfY21kX2lycV9jb250cm9sKHN0cnVjdCBkcHVf ZW5jb2Rlcl9waHlzICpwaHlzX2VuYywKIHsKIAlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5c19jbWQg KmNtZF9lbmM7CiAKLQlpZiAoIXBoeXNfZW5jIHx8IF9kcHVfZW5jb2Rlcl9waHlzX2lzX3Bwc3Bs aXRfc2xhdmUocGh5c19lbmMpKQorCWlmICghcGh5c19lbmMpCiAJCXJldHVybjsKIAogCWNtZF9l bmMgPSB0b19kcHVfZW5jb2Rlcl9waHlzX2NtZChwaHlzX2VuYyk7CkBAIC03MjYsMTggKzY3NSwx OCBAQCBzdGF0aWMgdm9pZCBfZHB1X2VuY29kZXJfcGh5c19jbWRfcGluZ3BvbmdfY29uZmlnKAog CQkJcGh5c19lbmMtPmh3X3BwLT5pZHggLSBQSU5HUE9OR18wKTsKIAlkcm1fbW9kZV9kZWJ1Z19w cmludG1vZGVsaW5lKCZwaHlzX2VuYy0+Y2FjaGVkX21vZGUpOwogCi0JaWYgKCFfZHB1X2VuY29k ZXJfcGh5c19pc19wcHNwbGl0X3NsYXZlKHBoeXNfZW5jKSkKLQkJX2RwdV9lbmNvZGVyX3BoeXNf Y21kX3VwZGF0ZV9pbnRmX2NmZyhwaHlzX2VuYyk7CisJX2RwdV9lbmNvZGVyX3BoeXNfY21kX3Vw ZGF0ZV9pbnRmX2NmZyhwaHlzX2VuYyk7CiAJZHB1X2VuY29kZXJfcGh5c19jbWRfdGVhcmNoZWNr X2NvbmZpZyhwaHlzX2VuYyk7CiB9CiAKIHN0YXRpYyBib29sIGRwdV9lbmNvZGVyX3BoeXNfY21k X25lZWRzX3NpbmdsZV9mbHVzaCgKIAkJc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5j KQogewotCWlmICghcGh5c19lbmMpCi0JCXJldHVybiBmYWxzZTsKLQotCXJldHVybiBfZHB1X2Vu Y29kZXJfcGh5c19pc19wcHNwbGl0KHBoeXNfZW5jKTsKKwkvKioKKwkgKiB3ZSBkbyBzZXBhcmF0 ZSBmbHVzaCBmb3IgZWFjaCBDVEwgYW5kIGxldAorCSAqIENUTF9TVEFSVCBzeW5jaHJvbml6ZSB0 aGVtCisJICovCisJcmV0dXJuIGZhbHNlOwogfQogCiBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9w aHlzX2NtZF9lbmFibGVfaGVscGVyKApAQCAtNzU1LDEyICs3MDQsNyBAQCBzdGF0aWMgdm9pZCBk cHVfZW5jb2Rlcl9waHlzX2NtZF9lbmFibGVfaGVscGVyKAogCiAJX2RwdV9lbmNvZGVyX3BoeXNf Y21kX3Bpbmdwb25nX2NvbmZpZyhwaHlzX2VuYyk7CiAKLQkvKgotCSAqIEZvciBwcC1zcGxpdCwg c2tpcCBzZXR0aW5nIHRoZSBmbHVzaCBiaXQgZm9yIHRoZSBzbGF2ZSBpbnRmLCBzaW5jZQotCSAq IGJvdGggaW50ZnMgdXNlIHNhbWUgY3RsIGFuZCBIVyB3aWxsIG9ubHkgZmx1c2ggdGhlIG1hc3Rl ci4KLQkgKi8KLQlpZiAoX2RwdV9lbmNvZGVyX3BoeXNfaXNfcHBzcGxpdChwaHlzX2VuYykgJiYK LQkJIWRwdV9lbmNvZGVyX3BoeXNfY21kX2lzX21hc3RlcihwaHlzX2VuYykpCisJaWYgKCFkcHVf ZW5jb2Rlcl9waHlzX2NtZF9pc19tYXN0ZXIocGh5c19lbmMpKQogCQlnb3RvIHNraXBfZmx1c2g7 CiAKIAljdGwgPSBwaHlzX2VuYy0+aHdfY3RsOwpAQCAtOTYzLDEwICs5MDcsNiBAQCBzdGF0aWMg aW50IF9kcHVfZW5jb2Rlcl9waHlzX2NtZF93YWl0X2Zvcl9jdGxfc3RhcnQoCiAJd2FpdF9pbmZv LmF0b21pY19jbnQgPSAmcGh5c19lbmMtPnBlbmRpbmdfY3Rsc3RhcnRfY250OwogCXdhaXRfaW5m by50aW1lb3V0X21zID0gS0lDS09GRl9USU1FT1VUX01TOwogCi0JLyogc2xhdmUgZW5jb2RlciBk b2Vzbid0IGVuYWJsZSBmb3IgcHBzcGxpdCAqLwotCWlmIChfZHB1X2VuY29kZXJfcGh5c19pc19w cHNwbGl0X3NsYXZlKHBoeXNfZW5jKSkKLQkJcmV0dXJuIDA7Ci0KIAlyZXQgPSBkcHVfZW5jb2Rl cl9oZWxwZXJfd2FpdF9mb3JfaXJxKHBoeXNfZW5jLCBJTlRSX0lEWF9DVExfU1RBUlQsCiAJCQkm d2FpdF9pbmZvKTsKIAlpZiAocmV0ID09IC1FVElNRURPVVQpIHsKQEAgLTEwNTMsMzkgKzk5Myw2 IEBAIHN0YXRpYyBpbnQgZHB1X2VuY29kZXJfcGh5c19jbWRfd2FpdF9mb3JfdmJsYW5rKAogCXJl dHVybiByYzsKIH0KIAotc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c19jbWRfdXBkYXRlX3Nw bGl0X3JvbGUoCi0JCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYywKLQkJZW51bSBk cHVfZW5jX3NwbGl0X3JvbGUgcm9sZSkKLXsKLQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5c19jbWQg KmNtZF9lbmM7Ci0JZW51bSBkcHVfZW5jX3NwbGl0X3JvbGUgb2xkX3JvbGU7Ci0JYm9vbCBpc19w cHNwbGl0OwotCi0JaWYgKCFwaHlzX2VuYykKLQkJcmV0dXJuOwotCi0JY21kX2VuYyA9IHRvX2Rw dV9lbmNvZGVyX3BoeXNfY21kKHBoeXNfZW5jKTsKLQlvbGRfcm9sZSA9IHBoeXNfZW5jLT5zcGxp dF9yb2xlOwotCWlzX3Bwc3BsaXQgPSBfZHB1X2VuY29kZXJfcGh5c19pc19wcHNwbGl0KHBoeXNf ZW5jKTsKLQotCXBoeXNfZW5jLT5zcGxpdF9yb2xlID0gcm9sZTsKLQotCURQVV9ERUJVR19DTURF TkMoY21kX2VuYywgIm9sZCByb2xlICVkIG5ldyByb2xlICVkXG4iLAotCQkJb2xkX3JvbGUsIHJv bGUpOwotCi0JLyoKLQkgKiBwcHNwbGl0IHNvbG8gbmVlZHMgdG8gcmVwcm9ncmFtIGJlY2F1c2Ug aW50ZiBtYXkgaGF2ZSBzd2FwcGVkIHdpdGhvdXQKLQkgKiByb2xlIGNoYW5naW5nIG9uIGxlZnQt b25seSwgcmlnaHQtb25seSBiYWNrLXRvLWJhY2sgY29tbWl0cwotCSAqLwotCWlmICghKGlzX3Bw c3BsaXQgJiYgcm9sZSA9PSBFTkNfUk9MRV9TT0xPKSAmJgotCQkJKHJvbGUgPT0gb2xkX3JvbGUg fHwgcm9sZSA9PSBFTkNfUk9MRV9TS0lQKSkKLQkJcmV0dXJuOwotCi0JZHB1X2VuY29kZXJfaGVs cGVyX3NwbGl0X2NvbmZpZyhwaHlzX2VuYywgcGh5c19lbmMtPmludGZfaWR4KTsKLQlfZHB1X2Vu Y29kZXJfcGh5c19jbWRfcGluZ3BvbmdfY29uZmlnKHBoeXNfZW5jKTsKLQlfZHB1X2VuY29kZXJf cGh5c19jbWRfdXBkYXRlX2ZsdXNoX21hc2socGh5c19lbmMpOwotfQotCiBzdGF0aWMgdm9pZCBk cHVfZW5jb2Rlcl9waHlzX2NtZF9wcmVwYXJlX2NvbW1pdCgKIAkJc3RydWN0IGRwdV9lbmNvZGVy X3BoeXMgKnBoeXNfZW5jKQogewpAQCAtMTE5MSw3ICsxMDk4LDYgQEAgc3RhdGljIHZvaWQgZHB1 X2VuY29kZXJfcGh5c19jbWRfaW5pdF9vcHMoCiAJb3BzLT5uZWVkc19zaW5nbGVfZmx1c2ggPSBk cHVfZW5jb2Rlcl9waHlzX2NtZF9uZWVkc19zaW5nbGVfZmx1c2g7CiAJb3BzLT5od19yZXNldCA9 IGRwdV9lbmNvZGVyX2hlbHBlcl9od19yZXNldDsKIAlvcHMtPmlycV9jb250cm9sID0gZHB1X2Vu Y29kZXJfcGh5c19jbWRfaXJxX2NvbnRyb2w7Ci0Jb3BzLT51cGRhdGVfc3BsaXRfcm9sZSA9IGRw dV9lbmNvZGVyX3BoeXNfY21kX3VwZGF0ZV9zcGxpdF9yb2xlOwogCW9wcy0+cmVzdG9yZSA9IGRw dV9lbmNvZGVyX3BoeXNfY21kX2VuYWJsZV9oZWxwZXI7CiAJb3BzLT5wcmVwYXJlX2lkbGVfcGMg PSBkcHVfZW5jb2Rlcl9waHlzX2NtZF9wcmVwYXJlX2lkbGVfcGM7CiAJb3BzLT5pc19hdXRvcmVm cmVzaF9lbmFibGVkID0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9lbmNvZGVyX3BoeXNfdmlkLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfZW5jb2Rlcl9waHlzX3ZpZC5jCmluZGV4IGQ2YjcyYTMuLmI2ODA3MTggMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfdmlkLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c192aWQuYwpA QCAtMzU0LDIwICszNTQsNiBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX3ZpZF91bmRl cnJ1bl9pcnEodm9pZCAqYXJnLCBpbnQgaXJxX2lkeCkKIAkJCXBoeXNfZW5jKTsKIH0KIAotc3Rh dGljIGJvb2wgX2RwdV9lbmNvZGVyX3BoeXNfaXNfcHBzcGxpdChzdHJ1Y3QgZHB1X2VuY29kZXJf cGh5cyAqcGh5c19lbmMpCi17Ci0JZW51bSBkcHVfcm1fdG9wb2xvZ3lfbmFtZSB0b3BvbG9neTsK LQotCWlmICghcGh5c19lbmMpCi0JCXJldHVybiBmYWxzZTsKLQotCXRvcG9sb2d5ID0gZHB1X2Nv bm5lY3Rvcl9nZXRfdG9wb2xvZ3lfbmFtZShwaHlzX2VuYy0+Y29ubmVjdG9yKTsKLQlpZiAodG9w b2xvZ3kgPT0gRFBVX1JNX1RPUE9MT0dZX1BQU1BMSVQpCi0JCXJldHVybiB0cnVlOwotCi0JcmV0 dXJuIGZhbHNlOwotfQotCiBzdGF0aWMgYm9vbCBfZHB1X2VuY29kZXJfcGh5c19pc19kdWFsX2N0 bChzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpCiB7CiAJZW51bSBkcHVfcm1fdG9w b2xvZ3lfbmFtZSB0b3BvbG9neTsKQEAgLTM4NSw4ICszNzEsNyBAQCBzdGF0aWMgYm9vbCBfZHB1 X2VuY29kZXJfcGh5c19pc19kdWFsX2N0bChzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19l bmMpCiBzdGF0aWMgYm9vbCBkcHVfZW5jb2Rlcl9waHlzX3ZpZF9uZWVkc19zaW5nbGVfZmx1c2go CiAJCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYykKIHsKLQlyZXR1cm4gcGh5c19l bmMgJiYgKF9kcHVfZW5jb2Rlcl9waHlzX2lzX3Bwc3BsaXQocGh5c19lbmMpIHx8Ci0JCV9kcHVf ZW5jb2Rlcl9waHlzX2lzX2R1YWxfY3RsKHBoeXNfZW5jKSk7CisJcmV0dXJuIChwaHlzX2VuYyAm JiBfZHB1X2VuY29kZXJfcGh5c19pc19kdWFsX2N0bChwaHlzX2VuYykpOwogfQogCiBzdGF0aWMg dm9pZCBfZHB1X2VuY29kZXJfcGh5c192aWRfc2V0dXBfaXJxX2h3X2lkeCgKQEAgLTYwOSw5ICs1 OTQsNyBAQCBzdGF0aWMgaW50IF9kcHVfZW5jb2Rlcl9waHlzX3ZpZF93YWl0X2Zvcl92Ymxhbmso CiAJd2FpdF9pbmZvLnRpbWVvdXRfbXMgPSBLSUNLT0ZGX1RJTUVPVVRfTVM7CiAKIAlpZiAoIWRw dV9lbmNvZGVyX3BoeXNfdmlkX2lzX21hc3RlcihwaHlzX2VuYykpIHsKLQkJLyogc2lnbmFsIGRv bmUgZm9yIHNsYXZlIHZpZGVvIGVuY29kZXIsIHVubGVzcyBpdCBpcyBwcC1zcGxpdCAqLwotCQlp ZiAoIV9kcHVfZW5jb2Rlcl9waHlzX2lzX3Bwc3BsaXQocGh5c19lbmMpICYmCi0JCQlub3RpZnkg JiYgcGh5c19lbmMtPnBhcmVudF9vcHMuaGFuZGxlX2ZyYW1lX2RvbmUpCisJCWlmIChub3RpZnkg JiYgcGh5c19lbmMtPnBhcmVudF9vcHMuaGFuZGxlX2ZyYW1lX2RvbmUpCiAJCQlwaHlzX2VuYy0+ cGFyZW50X29wcy5oYW5kbGVfZnJhbWVfZG9uZSgKIAkJCQkJcGh5c19lbmMtPnBhcmVudCwgcGh5 c19lbmMsCiAJCQkJCURQVV9FTkNPREVSX0ZSQU1FX0VWRU5UX0RPTkUpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuYyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmMKaW5kZXggMTRlNjZjYS4uOGU3 NzljMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2Nh dGFsb2cuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxv Zy5jCkBAIC00Myw3ICs0Myw3IEBACiAjZGVmaW5lIFBJTkdQT05HX1NETTg0NV9NQVNLIEJJVChE UFVfUElOR1BPTkdfRElUSEVSKQogCiAjZGVmaW5lIFBJTkdQT05HX1NETTg0NV9TUExJVF9NQVNL IFwKLQkoUElOR1BPTkdfU0RNODQ1X01BU0sgfCBCSVQoRFBVX1BJTkdQT05HX1NQTElUKSB8IEJJ VChEUFVfUElOR1BPTkdfVEUyKSkKKwkoUElOR1BPTkdfU0RNODQ1X01BU0sgfCBCSVQoRFBVX1BJ TkdQT05HX1RFMikpCiAKICNkZWZpbmUgV0IyX1NETTg0NV9NQVNLIFwKIAkoQklUKERQVV9XQl9M SU5FX01PREUpIHwgQklUKERQVV9XQl9UUkFGRklDX1NIQVBFUikgfCBCSVQoRFBVX1dCX0NEUCkg fFwKQEAgLTExOSw4ICsxMTksNyBAQAogCXsKIAkubmFtZSA9ICJjdGxfMCIsIC5pZCA9IENUTF8w LAogCS5iYXNlID0gMHgyMDAwLCAubGVuID0gMHhFNCwKLQkuZmVhdHVyZXMgPSBCSVQoRFBVX0NU TF9TUExJVF9ESVNQTEFZKSB8Ci0JCUJJVChEUFVfQ1RMX1BJTkdQT05HX1NQTElUKQorCS5mZWF0 dXJlcyA9IEJJVChEUFVfQ1RMX1NQTElUX0RJU1BMQVkpCiAJfSwKIAl7CiAJLm5hbWUgPSAiY3Rs XzEiLCAuaWQgPSBDVExfMSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9k cHUxL2RwdV9od19jYXRhbG9nLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf aHdfY2F0YWxvZy5oCmluZGV4IGNlZmYzYjcuLjM5YmVjMGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuaApAQCAtMjE0LDEyICsyMTQsMTAgQEAg ZW51bSB7CiAvKioKICAqIENUTCBzdWItYmxvY2tzCiAgKiBARFBVX0NUTF9TUExJVF9ESVNQTEFZ ICAgICAgIENUTCBzdXBwb3J0cyB2aWRlbyBtb2RlIHNwbGl0IGRpc3BsYXkKLSAqIEBEUFVfQ1RM X1BJTkdQT05HX1NQTElUICAgICAgQ1RMIHN1cHBvcnRzIHBpbmdwb25nIHNwbGl0CiAgKiBARFBV X0NUTF9NQVgKICAqLwogZW51bSB7CiAJRFBVX0NUTF9TUExJVF9ESVNQTEFZID0gMHgxLAotCURQ VV9DVExfUElOR1BPTkdfU1BMSVQsCiAJRFBVX0NUTF9NQVgKIH07CiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od190b3AuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9od190b3AuYwppbmRleCA2MGU0YmVmLi44ZjdmOTMyIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfdG9wLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3RvcC5jCkBAIC04MCwxMSArODAs NiBAQCBzdGF0aWMgdm9pZCBkcHVfaHdfc2V0dXBfc3BsaXRfcGlwZShzdHJ1Y3QgZHB1X2h3X21k cCAqbWRwLAogCQkJCWxvd2VyX3BpcGUgfD0gRkxEX0lOVEZfMV9TV19UUkdfTVVYOwogCQkJZWxz ZQogCQkJCWxvd2VyX3BpcGUgfD0gRkxEX0lOVEZfMl9TV19UUkdfTVVYOwotCi0JCQkvKiBmcmVl IHJ1biAqLwotCQkJaWYgKGNmZy0+cHBfc3BsaXRfc2xhdmUgIT0gSU5URl9NQVgpCi0JCQkJbG93 ZXJfcGlwZSA9IEZMRF9TTUFSVF9QQU5FTF9GUkVFX1JVTjsKLQogCQkJdXBwZXJfcGlwZSA9IGxv d2VyX3BpcGU7CiAJCX0gZWxzZSB7CiAJCQlpZiAoY2ZnLT5pbnRmID09IElOVEZfMikgewpAQCAt MTAzLDMzICs5OCw2IEBAIHN0YXRpYyB2b2lkIGRwdV9od19zZXR1cF9zcGxpdF9waXBlKHN0cnVj dCBkcHVfaHdfbWRwICptZHAsCiAJRFBVX1JFR19XUklURShjLCBTUExJVF9ESVNQTEFZX0VOLCBj ZmctPmVuICYgMHgxKTsKIH0KIAotc3RhdGljIHZvaWQgZHB1X2h3X3NldHVwX3BwX3NwbGl0KHN0 cnVjdCBkcHVfaHdfbWRwICptZHAsCi0JCXN0cnVjdCBzcGxpdF9waXBlX2NmZyAqY2ZnKQotewot CXUzMiBwcGJfY29uZmlnID0gMHgwOwotCXUzMiBwcGJfY29udHJvbCA9IDB4MDsKLQotCWlmICgh bWRwIHx8ICFjZmcpCi0JCXJldHVybjsKLQotCWlmIChjZmctPmVuICYmIGNmZy0+cHBfc3BsaXRf c2xhdmUgIT0gSU5URl9NQVgpIHsKLQkJcHBiX2NvbmZpZyB8PSAoY2ZnLT5wcF9zcGxpdF9zbGF2 ZSAtIElOVEZfMCArIDEpIDw8IDIwOwotCQlwcGJfY29uZmlnIHw9IEJJVCgxNik7IC8qIHNwbGl0 IGVuYWJsZSAqLwotCQlwcGJfY29udHJvbCA9IEJJVCg1KTsgLyogaG9yeiBzcGxpdCovCi0JfQot CWlmIChjZmctPnBwX3NwbGl0X2luZGV4KSB7Ci0JCURQVV9SRUdfV1JJVEUoJm1kcC0+aHcsIFBQ QjBfQ09ORklHLCAweDApOwotCQlEUFVfUkVHX1dSSVRFKCZtZHAtPmh3LCBQUEIwX0NOVEwsIDB4 MCk7Ci0JCURQVV9SRUdfV1JJVEUoJm1kcC0+aHcsIFBQQjFfQ09ORklHLCBwcGJfY29uZmlnKTsK LQkJRFBVX1JFR19XUklURSgmbWRwLT5odywgUFBCMV9DTlRMLCBwcGJfY29udHJvbCk7Ci0JfSBl bHNlIHsKLQkJRFBVX1JFR19XUklURSgmbWRwLT5odywgUFBCMF9DT05GSUcsIHBwYl9jb25maWcp OwotCQlEUFVfUkVHX1dSSVRFKCZtZHAtPmh3LCBQUEIwX0NOVEwsIHBwYl9jb250cm9sKTsKLQkJ RFBVX1JFR19XUklURSgmbWRwLT5odywgUFBCMV9DT05GSUcsIDB4MCk7Ci0JCURQVV9SRUdfV1JJ VEUoJm1kcC0+aHcsIFBQQjFfQ05UTCwgMHgwKTsKLQl9Ci19Ci0KIHN0YXRpYyB2b2lkIGRwdV9o d19zZXR1cF9jZG1fb3V0cHV0KHN0cnVjdCBkcHVfaHdfbWRwICptZHAsCiAJCXN0cnVjdCBjZG1f b3V0cHV0X2NmZyAqY2ZnKQogewpAQCAtMzQ5LDcgKzMxNyw2IEBAIHN0YXRpYyB2b2lkIF9zZXR1 cF9tZHBfb3BzKHN0cnVjdCBkcHVfaHdfbWRwX29wcyAqb3BzLAogCQl1bnNpZ25lZCBsb25nIGNh cCkKIHsKIAlvcHMtPnNldHVwX3NwbGl0X3BpcGUgPSBkcHVfaHdfc2V0dXBfc3BsaXRfcGlwZTsK LQlvcHMtPnNldHVwX3BwX3NwbGl0ID0gZHB1X2h3X3NldHVwX3BwX3NwbGl0OwogCW9wcy0+c2V0 dXBfY2RtX291dHB1dCA9IGRwdV9od19zZXR1cF9jZG1fb3V0cHV0OwogCW9wcy0+c2V0dXBfY2xr X2ZvcmNlX2N0cmwgPSBkcHVfaHdfc2V0dXBfY2xrX2ZvcmNlX2N0cmw7CiAJb3BzLT5nZXRfZGFu Z2VyX3N0YXR1cyA9IGRwdV9od19nZXRfZGFuZ2VyX3N0YXR1czsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od190b3AuaCBiL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9od190b3AuaAppbmRleCAxNDcwZDBmLi41NDI5Y2Q1IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfdG9wLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3RvcC5oCkBAIC00MSw4ICs0MSw2IEBA IHN0cnVjdCB0cmFmZmljX3NoYXBlcl9jZmcgewogICogQGVuICAgICAgICA6IEVuYWJsZS9kaXNh YmxlIGR1YWwgcGlwZSBjb25mZ3VyYXRpb24KICAqIEBtb2RlICAgICAgOiBQYW5lbCBpbnRlcmZh Y2UgbW9kZQogICogQGludGYgICAgICA6IEludGVyZmFjZSBpZCBmb3IgbWFpbiBjb250cm9sIHBh dGgKLSAqIEBwcF9zcGxpdF9zbGF2ZTogU2xhdmUgaW50ZXJmYWNlIGZvciBwaW5nIHBvbmcgc3Bs aXQsIElOVEZfTUFYIHRvIGRpc2FibGUKLSAqIEBwcF9zcGxpdF9pZHg6ICAgUGluZyBwb25nIGlu ZGV4IGZvciBwaW5nIHBvbmcgc3BsaXQKICAqIEBzcGxpdF9mbHVzaF9lbjogQWxsb3dzIGJvdGgg dGhlIHBhdGhzIHRvIGJlIGZsdXNoZWQgd2hlbiBtYXN0ZXIgcGF0aCBpcwogICogICAgICAgICAg ICAgIGZsdXNoZWQKICAqLwpAQCAtNTAsOCArNDgsNiBAQCBzdHJ1Y3Qgc3BsaXRfcGlwZV9jZmcg ewogCWJvb2wgZW47CiAJZW51bSBkcHVfaW50Zl9tb2RlIG1vZGU7CiAJZW51bSBkcHVfaW50ZiBp bnRmOwotCWVudW0gZHB1X2ludGYgcHBfc3BsaXRfc2xhdmU7Ci0JdTMyIHBwX3NwbGl0X2luZGV4 OwogCWJvb2wgc3BsaXRfZmx1c2hfZW47CiB9OwogCkBAIC0xMDksMTMgKzEwNSw2IEBAIHN0cnVj dCBkcHVfaHdfbWRwX29wcyB7CiAJdm9pZCAoKnNldHVwX3NwbGl0X3BpcGUpKHN0cnVjdCBkcHVf aHdfbWRwICptZHAsCiAJCQlzdHJ1Y3Qgc3BsaXRfcGlwZV9jZmcgKnApOwogCi0JLyoqIHNldHVw X3BwX3NwbGl0KCkgOiBDb25maWd1cmUgcHAgc3BsaXQgcmVsYXRlZCByZWdpc3RlcnMKLQkgKiBA bWRwICA6IG1kcCB0b3AgY29udGV4dCBkcml2ZXIKLQkgKiBAY2ZnICA6IHVwcGVyIGFuZCBsb3dl ciBwYXJ0IG9mIHBpcGUgY29uZmlndXJhdGlvbgotCSAqLwotCXZvaWQgKCpzZXR1cF9wcF9zcGxp dCkoc3RydWN0IGRwdV9od19tZHAgKm1kcCwKLQkJCXN0cnVjdCBzcGxpdF9waXBlX2NmZyAqY2Zn KTsKLQogCS8qKgogCSAqIHNldHVwX2NkbV9vdXRwdXQoKSA6IFNldHVwIHNlbGVjdGlvbiBjb250 cm9sIG9mIHRoZSBjZG0gZGF0YSBwYXRoCiAJICogQG1kcCAgOiBtZHAgdG9wIGNvbnRleHQgZHJp dmVyCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdpby5o IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3aW8uaAppbmRleCBiODg3MDgy Li41YjJiYzliIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf aHdpby5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od2lvLmgKQEAg LTM2LDEwICszNiw2IEBACiAjZGVmaW5lIERTUFBfSUdDX0NPTE9SMF9SQU1fTFVUTiAgICAgICAg MHgzMDAKICNkZWZpbmUgRFNQUF9JR0NfQ09MT1IxX1JBTV9MVVROICAgICAgICAweDMwNAogI2Rl ZmluZSBEU1BQX0lHQ19DT0xPUjJfUkFNX0xVVE4gICAgICAgIDB4MzA4Ci0jZGVmaW5lIFBQQjBf Q05UTCAgICAgICAgICAgICAgICAgICAgICAgMHgzMzAKLSNkZWZpbmUgUFBCMF9DT05GSUcgICAg ICAgICAgICAgICAgICAgICAweDMzNAotI2RlZmluZSBQUEIxX0NOVEwgICAgICAgICAgICAgICAg ICAgICAgIDB4MzM4Ci0jZGVmaW5lIFBQQjFfQ09ORklHICAgICAgICAgICAgICAgICAgICAgMHgz M0MKICNkZWZpbmUgSFdfRVZFTlRTX0NUTCAgICAgICAgICAgICAgICAgICAweDM3QwogI2RlZmlu ZSBDTEtfQ1RSTDMgICAgICAgICAgICAgICAgICAgICAgIDB4M0E4CiAjZGVmaW5lIENMS19TVEFU VVMzICAgICAgICAgICAgICAgICAgICAgMHgzQUMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X3JtLmMKaW5kZXggMTNlZmJlYi4uYzhjMTJkMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X3JtLmMKQEAgLTUwLDcgKzUwLDYgQEAgc3RydWN0IGRwdV9ybV90b3BvbG9neV9k ZWYgewogCXsgICBEUFVfUk1fVE9QT0xPR1lfU0lOR0xFUElQRSwgICAgICAgICAgIDEsIDAsIDEs IDEsIGZhbHNlIH0sCiAJeyAgIERQVV9STV9UT1BPTE9HWV9EVUFMUElQRSwgICAgICAgICAgICAg MiwgMCwgMiwgMiwgdHJ1ZSAgfSwKIAl7ICAgRFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFXzNETUVS R0UsICAgICAyLCAwLCAxLCAxLCBmYWxzZSB9LAotCXsgICBEUFVfUk1fVE9QT0xPR1lfUFBTUExJ VCwgICAgICAgICAgICAgIDEsIDAsIDIsIDEsIHRydWUgIH0sCiB9OwogCiAvKioKQEAgLTUzMSw3 ICs1MzAsNiBAQCBzdGF0aWMgYm9vbCBfZHB1X3JtX2NoZWNrX2xtX2FuZF9nZXRfY29ubmVjdGVk X2Jsa3MoCiAJCXN0cnVjdCBkcHVfcm1faHdfYmxrICpwcmltYXJ5X2xtKQogewogCWNvbnN0IHN0 cnVjdCBkcHVfbG1fY2ZnICpsbV9jZmcgPSB0b19kcHVfaHdfbWl4ZXIobG0tPmh3KS0+Y2FwOwot CWNvbnN0IHN0cnVjdCBkcHVfcGluZ3BvbmdfY2ZnICpwcF9jZmc7CiAJc3RydWN0IGRwdV9ybV9o d19pdGVyIGl0ZXI7CiAJYm9vbCBpc192YWxpZF9kc3BwLCBpc192YWxpZF9kcywgcmV0OwogCkBA IC02NTAsMTUgKzY0OCw2IEBAIHN0YXRpYyBib29sIF9kcHVfcm1fY2hlY2tfbG1fYW5kX2dldF9j b25uZWN0ZWRfYmxrcygKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAotCXBwX2NmZyA9IHRvX2RwdV9o d19waW5ncG9uZygoKnBwKS0+aHcpLT5jYXBzOwotCWlmICgocmVxcy0+dG9wb2xvZ3ktPnRvcF9u YW1lID09IERQVV9STV9UT1BPTE9HWV9QUFNQTElUKSAmJgotCQkJISh0ZXN0X2JpdChEUFVfUElO R1BPTkdfU1BMSVQsICZwcF9jZmctPmZlYXR1cmVzKSkpIHsKLQkJRFBVX0RFQlVHKCJwcCAlZCBk b2Vzbid0IHN1cHBvcnQgcHBzcGxpdFxuIiwgcHBfY2ZnLT5pZCk7Ci0JCSpkc3BwID0gTlVMTDsK LQkJKmRzID0gTlVMTDsKLQkJcmV0dXJuIGZhbHNlOwotCX0KLQogCXJldHVybiB0cnVlOwogfQog CkBAIC03NDIsMjYgKzczMSw2IEBAIHN0YXRpYyBpbnQgX2RwdV9ybV9yZXNlcnZlX2xtcygKIAkJ CQlkc1tpXSA/IGRzW2ldLT5pZCA6IDApOwogCX0KIAotCWlmIChyZXFzLT50b3BvbG9neS0+dG9w X25hbWUgPT0gRFBVX1JNX1RPUE9MT0dZX1BQU1BMSVQpIHsKLQkJLyogcmVzZXJ2ZSBhIGZyZWUg UElOR1BPTkdfU0xBVkUgYmxvY2sgKi8KLQkJcmMgPSAtRU5BVkFJTDsKLQkJZHB1X3JtX2luaXRf aHdfaXRlcigmaXRlcl9pLCAwLCBEUFVfSFdfQkxLX1BJTkdQT05HKTsKLQkJd2hpbGUgKF9kcHVf cm1fZ2V0X2h3X2xvY2tlZChybSwgJml0ZXJfaSkpIHsKLQkJCWNvbnN0IHN0cnVjdCBkcHVfaHdf cGluZ3BvbmcgKnBwID0KLQkJCQkJdG9fZHB1X2h3X3Bpbmdwb25nKGl0ZXJfaS5ibGstPmh3KTsK LQkJCWNvbnN0IHN0cnVjdCBkcHVfcGluZ3BvbmdfY2ZnICpwcF9jZmcgPSBwcC0+Y2FwczsKLQot CQkJaWYgKCEodGVzdF9iaXQoRFBVX1BJTkdQT05HX1NMQVZFLCAmcHBfY2ZnLT5mZWF0dXJlcykp KQotCQkJCWNvbnRpbnVlOwotCQkJaWYgKFJFU0VSVkVEX0JZX09USEVSKGl0ZXJfaS5ibGssIHJz dnApKQotCQkJCWNvbnRpbnVlOwotCi0JCQlpdGVyX2kuYmxrLT5yc3ZwX254dCA9IHJzdnA7Ci0J CQlyYyA9IDA7Ci0JCQlicmVhazsKLQkJfQotCX0KLQogCXJldHVybiByYzsKIH0KIApAQCAtNzgw LDIyICs3NDksMTggQEAgc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVfY3RscygKIAl3aGlsZSAo X2RwdV9ybV9nZXRfaHdfbG9ja2VkKHJtLCAmaXRlcikpIHsKIAkJY29uc3Qgc3RydWN0IGRwdV9o d19jdGwgKmN0bCA9IHRvX2RwdV9od19jdGwoaXRlci5ibGstPmh3KTsKIAkJdW5zaWduZWQgbG9u ZyBmZWF0dXJlcyA9IGN0bC0+Y2Fwcy0+ZmVhdHVyZXM7Ci0JCWJvb2wgaGFzX3NwbGl0X2Rpc3Bs YXksIGhhc19wcHNwbGl0OworCQlib29sIGhhc19zcGxpdF9kaXNwbGF5OwogCiAJCWlmIChSRVNF UlZFRF9CWV9PVEhFUihpdGVyLmJsaywgcnN2cCkpCiAJCQljb250aW51ZTsKIAogCQloYXNfc3Bs aXRfZGlzcGxheSA9IEJJVChEUFVfQ1RMX1NQTElUX0RJU1BMQVkpICYgZmVhdHVyZXM7Ci0JCWhh c19wcHNwbGl0ID0gQklUKERQVV9DVExfUElOR1BPTkdfU1BMSVQpICYgZmVhdHVyZXM7CiAKIAkJ RFBVX0RFQlVHKCJjdGwgJWQgY2FwcyAweCVsWFxuIiwgaXRlci5ibGstPmlkLCBmZWF0dXJlcyk7 CiAKIAkJaWYgKHRvcC0+bmVlZHNfc3BsaXRfZGlzcGxheSAhPSBoYXNfc3BsaXRfZGlzcGxheSkK IAkJCWNvbnRpbnVlOwogCi0JCWlmICh0b3AtPnRvcF9uYW1lID09IERQVV9STV9UT1BPTE9HWV9Q UFNQTElUICYmICFoYXNfcHBzcGxpdCkKLQkJCWNvbnRpbnVlOwotCiAJCWN0bHNbaV0gPSBpdGVy LmJsazsKIAkJRFBVX0RFQlVHKCJjdGwgJWQgbWF0Y2hcbiIsIGl0ZXIuYmxrLT5pZCk7CiAKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5oIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmgKaW5kZXggM2RiNjFiNS4uOGE2Y2JjZiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmgKQEAgLTI2LDE0ICsyNiwxMiBA QAogICogQERQVV9STV9UT1BPTE9HWV9TSU5HTEVQSVBFOiAgICAgICAgICAgMSBMTSwgMSBQUCwg MSBJTlRGL1dCCiAgKiBARFBVX1JNX1RPUE9MT0dZX0RVQUxQSVBFOiAgICAgICAgICAgICAyIExN LCAyIFBQLCAyIElOVEYvV0IKICAqIEBEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVfM0RNRVJHRTog ICAgIDIgTE0sIDIgUFAsIDNETXV4LCAxIElOVEYvV0IKLSAqIEBEUFVfUk1fVE9QT0xPR1lfUFBT UExJVDogICAgICAgICAgICAgIDEgTE0sIDIgUFBzLCAyIElOVEYvV0IKICAqLwogZW51bSBkcHVf cm1fdG9wb2xvZ3lfbmFtZSB7CiAJRFBVX1JNX1RPUE9MT0dZX05PTkUgPSAwLAogCURQVV9STV9U T1BPTE9HWV9TSU5HTEVQSVBFLAogCURQVV9STV9UT1BPTE9HWV9EVUFMUElQRSwKIAlEUFVfUk1f VE9QT0xPR1lfRFVBTFBJUEVfM0RNRVJHRSwKLQlEUFVfUk1fVE9QT0xPR1lfUFBTUExJVCwKIAlE UFVfUk1fVE9QT0xPR1lfTUFYLAogfTsKIAotLSAKVGhlIFF1YWxjb21tIElubm92YXRpb24gQ2Vu dGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9mIHRoZSBDb2RlIEF1cm9yYSBGb3J1bSwKYSBMaW51eCBG b3VuZGF0aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdAoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5vIG1haWxpbmcgbGlzdApGcmVlZHJlbm9A bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vZnJlZWRyZW5vCg==