From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: [DPU PATCH v2 2/6] drm/msm: remove support for ping pong split topology Date: Thu, 19 Apr 2018 16:52:00 -0700 Message-ID: <1524181924-9123-3-git-send-email-jsanka@codeaurora.org> References: <1524181924-9123-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: <1524181924-9123-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 cGluZyBwb25nIHNwbGl0IHRvcG9sb2d5IHdhcyBtZWFudCBmb3IgbG93IGVuZCBzb2MncyB3aGlj aApkb2Vzbid0IGhhdmUgZW5vdWdoIGxheWVyIG1peGVycyB0byBzdXBwb3J0IHNwbGl0IHBhbmVs cy4KQ29uc2lkZXJpbmcgaG93IHVuY29tbW9uIHRoZSB0b3BvbG9neSBpcyBmb3IgY3VycmVudCBj aGlwc2V0J3MgYW5kCmFsc28gdG8gc2ltcGx5IHRoZSBkcml2ZXIgcHJvZ3JhbW1pbmcsIHN0cmlw aW5nIG9mZiB0aGUgc3VwcG9ydApmb3IgU0RNODQ1LgoKY2hhbmdlcyBpbiB2MjoKCS0gbm9uZQoK UmV2aWV3ZWQtYnk6IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgpTaWduZWQtb2Zm LWJ5OiBKZXlrdW1hciBTYW5rYXJhbiA8anNhbmthQGNvZGVhdXJvcmEub3JnPgotLS0KIGRyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb25uZWN0b3IuYyAgICAgIHwgICAyICstCiBk cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jICAgICAgICAgICB8ICAxOSAt LS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMgICAgICAgIHwg MTc5ICstLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2VuY29kZXJfcGh5cy5oICAgfCAgIDUgLQogLi4uL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfZW5jb2Rlcl9waHlzX2NtZC5jICAgfCAxMTAgKy0tLS0tLS0tLS0tLQogLi4uL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5jICAgfCAgMjEgKy0tCiBkcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5jICAgICB8ICAgNSArLQogZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuaCAgICAgfCAgIDIgLQog ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3RvcC5jICAgICAgICAgfCAgMzMg LS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X3RvcC5oICAgICAgICAg fCAgMTEgLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od2lvLmggICAgICAg ICAgIHwgICA0IC0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jICAgICAg ICAgICAgIHwgIDM3ICstLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0u aCAgICAgICAgICAgICB8ICAgMiAtCiAxMyBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCsp LCA0MTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2Nvbm5lY3Rvci5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2Nvbm5lY3Rvci5jCmluZGV4IDEyMzdlZmMuLmY3ZTlmNzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb25uZWN0b3IuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29ubmVjdG9yLmMKQEAgLTQxLDggKzQxLDggQEAKIAl7RFBV X1JNX1RPUE9MT0dZX1NJTkdMRVBJUEUsCSJkcHVfc2luZ2xlcGlwZSJ9LAogCXtEUFVfUk1fVE9Q T0xPR1lfRFVBTFBJUEUsCSJkcHVfZHVhbHBpcGUifSwKIAl7RFBVX1JNX1RPUE9MT0dZX0RVQUxQ SVBFXzNETUVSR0UsCSJkcHVfZHVhbHBpcGVtZXJnZSJ9LAotCXtEUFVfUk1fVE9QT0xPR1lfUFBT UExJVCwJImRwdV9wcHNwbGl0In0sCiB9OworCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wcm9w X2VudW1fbGlzdCBlX3RvcG9sb2d5X2NvbnRyb2xbXSA9IHsKIAl7RFBVX1JNX1RPUENUTF9SRVNF UlZFX0xPQ0ssCSJyZXNlcnZlX2xvY2sifSwKIAl7RFBVX1JNX1RPUENUTF9SRVNFUlZFX0NMRUFS LAkicmVzZXJ2ZV9jbGVhciJ9LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRj LmMKaW5kZXggNTE2NDU4ZS4uOGU0NjRmYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2NydGMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfY3J0Yy5jCkBAIC0xOTE0LDIzICsxOTE0LDYgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRj X3NldHVwX21peGVycyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJbXV0ZXhfdW5sb2NrKCZkcHVf Y3J0Yy0+Y3J0Y19sb2NrKTsKIH0KIAotc3RhdGljIHZvaWQgX2RwdV9jcnRjX3NldHVwX2lzX3Bw c3BsaXQoc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSkKLXsKLQlpbnQgaTsKLQlzdHJ1Y3Qg ZHB1X2NydGNfc3RhdGUgKmNzdGF0ZTsKLQotCWNzdGF0ZSA9IHRvX2RwdV9jcnRjX3N0YXRlKHN0 YXRlKTsKLQotCWNzdGF0ZS0+aXNfcHBzcGxpdCA9IGZhbHNlOwotCWZvciAoaSA9IDA7IGkgPCBj c3RhdGUtPm51bV9jb25uZWN0b3JzOyBpKyspIHsKLQkJc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm4gPSBjc3RhdGUtPmNvbm5lY3RvcnNbaV07Ci0KLQkJaWYgKGRwdV9jb25uZWN0b3JfZ2V0X3Rv cG9sb2d5X25hbWUoY29ubikgPT0KLQkJCQlEUFVfUk1fVE9QT0xPR1lfUFBTUExJVCkKLQkJCWNz dGF0ZS0+aXNfcHBzcGxpdCA9IHRydWU7Ci0JfQotfQotCiBzdGF0aWMgdm9pZCBfZHB1X2NydGNf c2V0dXBfbG1fYm91bmRzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJc3RydWN0IGRybV9jcnRj X3N0YXRlICpzdGF0ZSkKIHsKQEAgLTE5OTMsNyArMTk3Niw2IEBAIHN0YXRpYyB2b2lkIGRwdV9j cnRjX2F0b21pY19iZWdpbihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAKIAlpZiAoIWRwdV9jcnRj LT5udW1fbWl4ZXJzKSB7CiAJCV9kcHVfY3J0Y19zZXR1cF9taXhlcnMoY3J0Yyk7Ci0JCV9kcHVf Y3J0Y19zZXR1cF9pc19wcHNwbGl0KGNydGMtPnN0YXRlKTsKIAkJX2RwdV9jcnRjX3NldHVwX2xt X2JvdW5kcyhjcnRjLCBjcnRjLT5zdGF0ZSk7CiAJfQogCkBAIC0yOTAxLDcgKzI4ODMsNiBAQCBz dGF0aWMgaW50IGRwdV9jcnRjX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAK IAltaXhlcl93aWR0aCA9IGRwdV9jcnRjX2dldF9taXhlcl93aWR0aChkcHVfY3J0YywgY3N0YXRl LCBtb2RlKTsKIAotCV9kcHVfY3J0Y19zZXR1cF9pc19wcHNwbGl0KHN0YXRlKTsKIAlfZHB1X2Ny dGNfc2V0dXBfbG1fYm91bmRzKGNydGMsIHN0YXRlKTsKIAogCSAvKiBnZXQgcGxhbmUgc3RhdGUg Zm9yIGFsbCBkcm0gcGxhbmVzIGFzc29jaWF0ZWQgd2l0aCBjcnRjIHN0YXRlICovCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5jIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuYwppbmRleCAxNTE4ODliLi5kMDQw OTViIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rl ci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMKQEAg LTU0NSw3ICs1NDUsNiBAQCB2b2lkIGRwdV9lbmNvZGVyX2hlbHBlcl9zcGxpdF9jb25maWcoCiAJ c3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmM7CiAJc3RydWN0IHNwbGl0X3BpcGVfY2Zn IGNmZyA9IHsgMCB9OwogCXN0cnVjdCBkcHVfaHdfbWRwICpod19tZHB0b3A7Ci0JZW51bSBkcHVf cm1fdG9wb2xvZ3lfbmFtZSB0b3BvbG9neTsKIAlzdHJ1Y3QgbXNtX2Rpc3BsYXlfaW5mbyAqZGlz cF9pbmZvOwogCiAJaWYgKCFwaHlzX2VuYyB8fCAhcGh5c19lbmMtPmh3X21kcHRvcCB8fCAhcGh5 c19lbmMtPnBhcmVudCkgewpAQCAtNTY5LDggKzU2OCw2IEBAIHZvaWQgZHB1X2VuY29kZXJfaGVs cGVyX3NwbGl0X2NvbmZpZygKIAlpZiAocGh5c19lbmMtPnNwbGl0X3JvbGUgPT0gRU5DX1JPTEVf U09MTykgewogCQlpZiAoaHdfbWRwdG9wLT5vcHMuc2V0dXBfc3BsaXRfcGlwZSkKIAkJCWh3X21k cHRvcC0+b3BzLnNldHVwX3NwbGl0X3BpcGUoaHdfbWRwdG9wLCAmY2ZnKTsKLQkJaWYgKGh3X21k cHRvcC0+b3BzLnNldHVwX3BwX3NwbGl0KQotCQkJaHdfbWRwdG9wLT5vcHMuc2V0dXBfcHBfc3Bs aXQoaHdfbWRwdG9wLCAmY2ZnKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtNTgyLDI5ICs1NzksMTEg QEAgdm9pZCBkcHVfZW5jb2Rlcl9oZWxwZXJfc3BsaXRfY29uZmlnKAogCQkJcGh5c19lbmMtPm9w cy5uZWVkc19zaW5nbGVfZmx1c2gocGh5c19lbmMpKQogCQljZmcuc3BsaXRfZmx1c2hfZW4gPSB0 cnVlOwogCi0JdG9wb2xvZ3kgPSBkcHVfY29ubmVjdG9yX2dldF90b3BvbG9neV9uYW1lKHBoeXNf ZW5jLT5jb25uZWN0b3IpOwotCWlmICh0b3BvbG9neSA9PSBEUFVfUk1fVE9QT0xPR1lfUFBTUExJ VCkKLQkJY2ZnLnBwX3NwbGl0X3NsYXZlID0gY2ZnLmludGY7Ci0JZWxzZQotCQljZmcucHBfc3Bs aXRfc2xhdmUgPSBJTlRGX01BWDsKLQogCWlmIChwaHlzX2VuYy0+c3BsaXRfcm9sZSA9PSBFTkNf Uk9MRV9NQVNURVIpIHsKIAkJRFBVX0RFQlVHX0VOQyhkcHVfZW5jLCAiZW5hYmxlICVkXG4iLCBj ZmcuZW4pOwogCiAJCWlmIChod19tZHB0b3AtPm9wcy5zZXR1cF9zcGxpdF9waXBlKQogCQkJaHdf bWRwdG9wLT5vcHMuc2V0dXBfc3BsaXRfcGlwZShod19tZHB0b3AsICZjZmcpOwotCX0gZWxzZSBp ZiAoZHB1X2VuYy0+aHdfcHBbMF0pIHsKLQkJLyoKLQkJICogc2xhdmUgZW5jb2RlcgotCQkgKiAt IGRldGVybWluZSBzcGxpdCBpbmRleCBmcm9tIG1hc3RlciBpbmRleCwKLQkJICogICBhc3N1bWUg bWFzdGVyIGlzIGZpcnN0IHBwCi0JCSAqLwotCQljZmcucHBfc3BsaXRfaW5kZXggPSBkcHVfZW5j LT5od19wcFswXS0+aWR4IC0gUElOR1BPTkdfMDsKLQkJRFBVX0RFQlVHX0VOQyhkcHVfZW5jLCAi bWFzdGVyIHVzaW5nIHBwJWRcbiIsCi0JCQkJY2ZnLnBwX3NwbGl0X2luZGV4KTsKLQotCQlpZiAo aHdfbWRwdG9wLT5vcHMuc2V0dXBfcHBfc3BsaXQpCi0JCQlod19tZHB0b3AtPm9wcy5zZXR1cF9w cF9zcGxpdChod19tZHB0b3AsICZjZmcpOwogCX0KIH0KIApAQCAtMTY2MywxNCArMTY0Miw2IEBA IHN0YXRpYyBpbmxpbmUgdm9pZCBfZHB1X2VuY29kZXJfdHJpZ2dlcl9mbHVzaChzdHJ1Y3QgZHJt X2VuY29kZXIgKmRybV9lbmMsCiAJCXJldHVybjsKIAl9CiAKLQlpZiAocGh5cy0+c3BsaXRfcm9s ZSA9PSBFTkNfUk9MRV9TS0lQKSB7Ci0JCURQVV9ERUJVR19FTkModG9fZHB1X2VuY29kZXJfdmly dChwaHlzLT5wYXJlbnQpLAotCQkJCSJza2lwIGZsdXNoIHBwJWQgY3RsJWRcbiIsCi0JCQkJcGh5 cy0+aHdfcHAtPmlkeCAtIFBJTkdQT05HXzAsCi0JCQkJY3RsLT5pZHggLSBDVExfMCk7Ci0JCXJl dHVybjsKLQl9Ci0KIAlwZW5kaW5nX2tpY2tvZmZfY250ID0gZHB1X2VuY29kZXJfcGh5c19pbmNf cGVuZGluZyhwaHlzKTsKIAogCWlmIChleHRyYV9mbHVzaF9iaXRzICYmIGN0bC0+b3BzLnVwZGF0 ZV9wZW5kaW5nX2ZsdXNoKQpAQCAtMTY5Miw4ICsxNjYzLDYgQEAgc3RhdGljIGlubGluZSB2b2lk IF9kcHVfZW5jb2Rlcl90cmlnZ2VyX2ZsdXNoKHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYywK ICAqLwogc3RhdGljIGlubGluZSB2b2lkIF9kcHVfZW5jb2Rlcl90cmlnZ2VyX3N0YXJ0KHN0cnVj dCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzKQogewotCXN0cnVjdCBkcHVfaHdfY3RsICpjdGw7Ci0K IAlpZiAoIXBoeXMpIHsKIAkJRFBVX0VSUk9SKCJpbnZhbGlkIGFyZ3VtZW50KHMpXG4iKTsKIAkJ cmV0dXJuOwpAQCAtMTcwNCwxNCArMTY3Myw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZHB1X2Vu Y29kZXJfdHJpZ2dlcl9zdGFydChzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5cykKIAkJcmV0 dXJuOwogCX0KIAotCWN0bCA9IHBoeXMtPmh3X2N0bDsKLQlpZiAocGh5cy0+c3BsaXRfcm9sZSA9 PSBFTkNfUk9MRV9TS0lQKSB7Ci0JCURQVV9ERUJVR19FTkModG9fZHB1X2VuY29kZXJfdmlydChw aHlzLT5wYXJlbnQpLAotCQkJCSJza2lwIHN0YXJ0IHBwJWQgY3RsJWRcbiIsCi0JCQkJcGh5cy0+ aHdfcHAtPmlkeCAtIFBJTkdQT05HXzAsCi0JCQkJY3RsLT5pZHggLSBDVExfMCk7Ci0JCXJldHVy bjsKLQl9CiAJaWYgKHBoeXMtPm9wcy50cmlnZ2VyX3N0YXJ0ICYmIHBoeXMtPmVuYWJsZV9zdGF0 ZSAhPSBEUFVfRU5DX0RJU0FCTEVEKQogCQlwaHlzLT5vcHMudHJpZ2dlcl9zdGFydChwaHlzKTsK IH0KQEAgLTE4MzAsNyArMTc5MSw2IEBAIHN0YXRpYyB2b2lkIF9kcHVfZW5jb2Rlcl9raWNrb2Zm X3BoeXMoc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmMpCiAJLyogZG9uJ3QgcGVyZm9y bSBmbHVzaC9zdGFydCBvcGVyYXRpb25zIGZvciBzbGF2ZSBlbmNvZGVycyAqLwogCWZvciAoaSA9 IDA7IGkgPCBkcHVfZW5jLT5udW1fcGh5c19lbmNzOyBpKyspIHsKIAkJc3RydWN0IGRwdV9lbmNv ZGVyX3BoeXMgKnBoeXMgPSBkcHVfZW5jLT5waHlzX2VuY3NbaV07Ci0JCWVudW0gZHB1X3JtX3Rv cG9sb2d5X25hbWUgdG9wb2xvZ3kgPSBEUFVfUk1fVE9QT0xPR1lfTk9ORTsKIAogCQlpZiAoIXBo eXMgfHwgcGh5cy0+ZW5hYmxlX3N0YXRlID09IERQVV9FTkNfRElTQUJMRUQpCiAJCQljb250aW51 ZTsKQEAgLTE4MzksMTcgKzE3OTksNyBAQCBzdGF0aWMgdm9pZCBfZHB1X2VuY29kZXJfa2lja29m Zl9waHlzKHN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5jKQogCQlpZiAoIWN0bCkKIAkJ CWNvbnRpbnVlOwogCi0JCWlmIChwaHlzLT5jb25uZWN0b3IpCi0JCQl0b3BvbG9neSA9IGRwdV9j b25uZWN0b3JfZ2V0X3RvcG9sb2d5X25hbWUoCi0JCQkJCXBoeXMtPmNvbm5lY3Rvcik7Ci0KLQkJ LyoKLQkJICogZG9uJ3Qgd2FpdCBvbiBwcHNwbGl0IHNsYXZlcyBvciBza2lwcGVkIGVuY29kZXJz IGJlY2F1c2UKLQkJICogdGhleSBkb250IHJlY2VpdmUgaXJxcwotCQkgKi8KLQkJaWYgKCEodG9w b2xvZ3kgPT0gRFBVX1JNX1RPUE9MT0dZX1BQU1BMSVQgJiYKLQkJCQlwaHlzLT5zcGxpdF9yb2xl ID09IEVOQ19ST0xFX1NMQVZFKSAmJgotCQkJCXBoeXMtPnNwbGl0X3JvbGUgIT0gRU5DX1JPTEVf U0tJUCkKKwkJaWYgKHBoeXMtPnNwbGl0X3JvbGUgIT0gRU5DX1JPTEVfU0xBVkUpCiAJCQlzZXRf Yml0KGksIGRwdV9lbmMtPmZyYW1lX2J1c3lfbWFzayk7CiAJCWlmIChwaHlzLT5od19jdGwtPm9w cy5yZWdfZG1hX2ZsdXNoKQogCQkJcGh5cy0+aHdfY3RsLT5vcHMucmVnX2RtYV9mbHVzaChwaHlz LT5od19jdGwpOwpAQCAtMTg3MywxMjYgKzE4MjMsNiBAQCBzdGF0aWMgdm9pZCBfZHB1X2VuY29k ZXJfa2lja29mZl9waHlzKHN0cnVjdCBkcHVfZW5jb2Rlcl92aXJ0ICpkcHVfZW5jKQogCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJmRwdV9lbmMtPmVuY19zcGlubG9jaywgbG9ja19mbGFncyk7CiB9 CiAKLXN0YXRpYyB2b2lkIF9kcHVfZW5jb2Rlcl9wcHNwbGl0X3N3YXBfaW50Zl9mb3JfcmlnaHRf b25seV91cGRhdGUoCi0JCXN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYywKLQkJdW5zaWduZWQg bG9uZyAqYWZmZWN0ZWRfZGlzcGxheXMsCi0JCWludCBudW1fYWN0aXZlX3BoeXMpCi17Ci0Jc3Ry dWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmM7Ci0Jc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMg Km1hc3RlcjsKLQllbnVtIGRwdV9ybV90b3BvbG9neV9uYW1lIHRvcG9sb2d5OwotCWJvb2wgaXNf cmlnaHRfb25seTsKLQotCWlmICghZHJtX2VuYyB8fCAhYWZmZWN0ZWRfZGlzcGxheXMpCi0JCXJl dHVybjsKLQotCWRwdV9lbmMgPSB0b19kcHVfZW5jb2Rlcl92aXJ0KGRybV9lbmMpOwotCW1hc3Rl ciA9IGRwdV9lbmMtPmN1cl9tYXN0ZXI7Ci0JaWYgKCFtYXN0ZXIgfHwgIW1hc3Rlci0+Y29ubmVj dG9yKQotCQlyZXR1cm47Ci0KLQl0b3BvbG9neSA9IGRwdV9jb25uZWN0b3JfZ2V0X3RvcG9sb2d5 X25hbWUobWFzdGVyLT5jb25uZWN0b3IpOwotCWlmICh0b3BvbG9neSAhPSBEUFVfUk1fVE9QT0xP R1lfUFBTUExJVCkKLQkJcmV0dXJuOwotCi0JLyoKLQkgKiBGb3IgcGluZ3Bvbmcgc3BsaXQsIHRo ZSBzbGF2ZSBwaW5ncG9uZyB3b24ndCBnZW5lcmF0ZSBJUlFzLiBGb3IKLQkgKiByaWdodC1vbmx5 IHVwZGF0ZXMsIHdlIGNhbid0IHN3YXAgcGluZ3BvbmdzLCBvciBzaW1wbHkgc3dhcCB0aGUKLQkg KiBtYXN0ZXIvc2xhdmUgYXNzaWdubWVudCwgd2UgYWN0dWFsbHkgaGF2ZSB0byBzd2FwIHRoZSBp bnRlcmZhY2VzCi0JICogc28gdGhhdCB0aGUgbWFzdGVyIHBoeXNpY2FsIGVuY29kZXIgd2lsbCB1 c2UgYSBwaW5ncG9uZy9pbnRlcmZhY2UKLQkgKiB0aGF0IGdlbmVyYXRlcyBpcnFzIG9uIHdoaWNo IHRvIHdhaXQuCi0JICovCi0JaXNfcmlnaHRfb25seSA9ICF0ZXN0X2JpdCgwLCBhZmZlY3RlZF9k aXNwbGF5cykgJiYKLQkJCXRlc3RfYml0KDEsIGFmZmVjdGVkX2Rpc3BsYXlzKTsKLQotCWlmIChp c19yaWdodF9vbmx5ICYmICFkcHVfZW5jLT5pbnRmc19zd2FwcGVkKSB7Ci0JCS8qIHJpZ2h0LW9u bHkgdXBkYXRlIHN3YXAgaW50ZXJmYWNlcyAqLwotCQlzd2FwKGRwdV9lbmMtPnBoeXNfZW5jc1sw XS0+aW50Zl9pZHgsCi0JCQkJZHB1X2VuYy0+cGh5c19lbmNzWzFdLT5pbnRmX2lkeCk7Ci0JCWRw dV9lbmMtPmludGZzX3N3YXBwZWQgPSB0cnVlOwotCX0gZWxzZSBpZiAoIWlzX3JpZ2h0X29ubHkg JiYgZHB1X2VuYy0+aW50ZnNfc3dhcHBlZCkgewotCQkvKiBsZWZ0LW9ubHkgb3IgZnVsbCB1cGRh dGUsIHN3YXAgYmFjayAqLwotCQlzd2FwKGRwdV9lbmMtPnBoeXNfZW5jc1swXS0+aW50Zl9pZHgs Ci0JCQkJZHB1X2VuYy0+cGh5c19lbmNzWzFdLT5pbnRmX2lkeCk7Ci0JCWRwdV9lbmMtPmludGZz X3N3YXBwZWQgPSBmYWxzZTsKLQl9Ci0KLQlEUFVfREVCVUdfRU5DKGRwdV9lbmMsCi0JCQkicmln aHRfb25seSAlZCBzd2FwcGVkICVkIHBoeXMwLT5pbnRmJWQsIHBoeXMxLT5pbnRmJWRcbiIsCi0J CQlpc19yaWdodF9vbmx5LCBkcHVfZW5jLT5pbnRmc19zd2FwcGVkLAotCQkJZHB1X2VuYy0+cGh5 c19lbmNzWzBdLT5pbnRmX2lkeCAtIElOVEZfMCwKLQkJCWRwdV9lbmMtPnBoeXNfZW5jc1sxXS0+ aW50Zl9pZHggLSBJTlRGXzApOwotCURQVV9FVlQzMihEUk1JRChkcm1fZW5jKSwgaXNfcmlnaHRf b25seSwgZHB1X2VuYy0+aW50ZnNfc3dhcHBlZCwKLQkJCWRwdV9lbmMtPnBoeXNfZW5jc1swXS0+ aW50Zl9pZHggLSBJTlRGXzAsCi0JCQlkcHVfZW5jLT5waHlzX2VuY3NbMV0tPmludGZfaWR4IC0g SU5URl8wLAotCQkJKmFmZmVjdGVkX2Rpc3BsYXlzKTsKLQotCS8qIHBwc3BsaXQgYWx3YXlzIHVz ZXMgbWFzdGVyIHNpbmNlIHBwc2xhdmUgaW52YWxpZCBmb3IgaXJxcyovCi0JaWYgKG51bV9hY3Rp dmVfcGh5cyA9PSAxKQotCQkqYWZmZWN0ZWRfZGlzcGxheXMgPSBCSVQoMCk7Ci19Ci0KLXN0YXRp YyB2b2lkIF9kcHVfZW5jb2Rlcl91cGRhdGVfbWFzdGVyKHN0cnVjdCBkcm1fZW5jb2RlciAqZHJt X2VuYywKLQkJc3RydWN0IGRwdV9lbmNvZGVyX2tpY2tvZmZfcGFyYW1zICpwYXJhbXMpCi17Ci0J c3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmM7Ci0Jc3RydWN0IGRwdV9lbmNvZGVyX3Bo eXMgKnBoeXM7Ci0JaW50IGksIG51bV9hY3RpdmVfcGh5czsKLQlib29sIG1hc3Rlcl9hc3NpZ25l ZCA9IGZhbHNlOwotCi0JaWYgKCFkcm1fZW5jIHx8ICFwYXJhbXMpCi0JCXJldHVybjsKLQotCWRw dV9lbmMgPSB0b19kcHVfZW5jb2Rlcl92aXJ0KGRybV9lbmMpOwotCi0JaWYgKGRwdV9lbmMtPm51 bV9waHlzX2VuY3MgPD0gMSkKLQkJcmV0dXJuOwotCi0JLyogY291bnQgYml0cyBzZXQgKi8KLQlu dW1fYWN0aXZlX3BoeXMgPSBod2VpZ2h0X2xvbmcocGFyYW1zLT5hZmZlY3RlZF9kaXNwbGF5cyk7 Ci0KLQlEUFVfREVCVUdfRU5DKGRwdV9lbmMsICJhZmZlY3RlZF9kaXNwbGF5cyAweCVseCBudW1f YWN0aXZlX3BoeXMgJWRcbiIsCi0JCQlwYXJhbXMtPmFmZmVjdGVkX2Rpc3BsYXlzLCBudW1fYWN0 aXZlX3BoeXMpOwotCi0JLyogZm9yIGxlZnQvcmlnaHQgb25seSB1cGRhdGUsIHBwc3BsaXQgbWFz dGVyIHN3aXRjaGVzIGludGVyZmFjZSAqLwotCV9kcHVfZW5jb2Rlcl9wcHNwbGl0X3N3YXBfaW50 Zl9mb3JfcmlnaHRfb25seV91cGRhdGUoZHJtX2VuYywKLQkJCSZwYXJhbXMtPmFmZmVjdGVkX2Rp c3BsYXlzLCBudW1fYWN0aXZlX3BoeXMpOwotCi0JZm9yIChpID0gMDsgaSA8IGRwdV9lbmMtPm51 bV9waHlzX2VuY3M7IGkrKykgewotCQllbnVtIGRwdV9lbmNfc3BsaXRfcm9sZSBwcnZfcm9sZSwg bmV3X3JvbGU7Ci0JCWJvb2wgYWN0aXZlOwotCi0JCXBoeXMgPSBkcHVfZW5jLT5waHlzX2VuY3Nb aV07Ci0JCWlmICghcGh5cyB8fCAhcGh5cy0+b3BzLnVwZGF0ZV9zcGxpdF9yb2xlIHx8ICFwaHlz LT5od19wcCkKLQkJCWNvbnRpbnVlOwotCi0JCWFjdGl2ZSA9IHRlc3RfYml0KGksICZwYXJhbXMt PmFmZmVjdGVkX2Rpc3BsYXlzKTsKLQkJcHJ2X3JvbGUgPSBwaHlzLT5zcGxpdF9yb2xlOwotCi0J CWlmIChhY3RpdmUgJiYgbnVtX2FjdGl2ZV9waHlzID09IDEpCi0JCQluZXdfcm9sZSA9IEVOQ19S T0xFX1NPTE87Ci0JCWVsc2UgaWYgKGFjdGl2ZSAmJiAhbWFzdGVyX2Fzc2lnbmVkKQotCQkJbmV3 X3JvbGUgPSBFTkNfUk9MRV9NQVNURVI7Ci0JCWVsc2UgaWYgKGFjdGl2ZSkKLQkJCW5ld19yb2xl ID0gRU5DX1JPTEVfU0xBVkU7Ci0JCWVsc2UKLQkJCW5ld19yb2xlID0gRU5DX1JPTEVfU0tJUDsK LQotCQlwaHlzLT5vcHMudXBkYXRlX3NwbGl0X3JvbGUocGh5cywgbmV3X3JvbGUpOwotCQlpZiAo bmV3X3JvbGUgPT0gRU5DX1JPTEVfU09MTyB8fCBuZXdfcm9sZSA9PSBFTkNfUk9MRV9NQVNURVIp IHsKLQkJCWRwdV9lbmMtPmN1cl9tYXN0ZXIgPSBwaHlzOwotCQkJbWFzdGVyX2Fzc2lnbmVkID0g dHJ1ZTsKLQkJfQotCi0JCURQVV9ERUJVR19FTkMoZHB1X2VuYywgInBwICVkIHJvbGUgcHJ2ICVk IG5ldyAlZCBhY3RpdmUgJWRcbiIsCi0JCQkJcGh5cy0+aHdfcHAtPmlkeCAtIFBJTkdQT05HXzAs IHBydl9yb2xlLAotCQkJCXBoeXMtPnNwbGl0X3JvbGUsIGFjdGl2ZSk7Ci0JCURQVV9FVlQzMihE Uk1JRChkcm1fZW5jKSwgcGFyYW1zLT5hZmZlY3RlZF9kaXNwbGF5cywKLQkJCQlwaHlzLT5od19w cC0+aWR4IC0gUElOR1BPTkdfMCwgcHJ2X3JvbGUsCi0JCQkJcGh5cy0+c3BsaXRfcm9sZSwgYWN0 aXZlLCBudW1fYWN0aXZlX3BoeXMpOwotCX0KLX0KLQogYm9vbCBkcHVfZW5jb2Rlcl9jaGVja19t b2RlKHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYywgdTMyIG1vZGUpCiB7CiAJc3RydWN0IGRw dV9lbmNvZGVyX3ZpcnQgKmRwdV9lbmM7CkBAIC0yMDQ2LDE1ICsxODc2LDEwIEBAIHN0YXRpYyB2 b2lkIF9kcHVfZW5jb2Rlcl9zZXR1cF9kaXRoZXIoc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBo eXMpCiAJdm9pZCAqZGl0aGVyX2NmZzsKIAlpbnQgcmV0ID0gMDsKIAlzaXplX3QgbGVuID0gMDsK LQllbnVtIGRwdV9ybV90b3BvbG9neV9uYW1lIHRvcG9sb2d5OwogCiAJaWYgKCFwaHlzIHx8ICFw aHlzLT5jb25uZWN0b3IgfHwgIXBoeXMtPmh3X3BwIHx8CiAJCQkhcGh5cy0+aHdfcHAtPm9wcy5z ZXR1cF9kaXRoZXIpCiAJCXJldHVybjsKLQl0b3BvbG9neSA9IGRwdV9jb25uZWN0b3JfZ2V0X3Rv cG9sb2d5X25hbWUocGh5cy0+Y29ubmVjdG9yKTsKLQlpZiAoKHRvcG9sb2d5ID09IERQVV9STV9U T1BPTE9HWV9QUFNQTElUKSAmJgotCQkJKHBoeXMtPnNwbGl0X3JvbGUgPT0gRU5DX1JPTEVfU0xB VkUpKQotCQlyZXR1cm47CiAKIAlyZXQgPSBkcHVfY29ubmVjdG9yX2dldF9kaXRoZXJfY2ZnKHBo eXMtPmNvbm5lY3RvciwKIAkJCQlwaHlzLT5jb25uZWN0b3ItPnN0YXRlLCAmZGl0aGVyX2NmZywg Jmxlbik7CkBAIC0yMjY1LDggKzIwOTAsNiBAQCB2b2lkIGRwdV9lbmNvZGVyX3ByZXBhcmVfZm9y X2tpY2tvZmYoc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jLAogCQl9CiAJfQogCi0JX2RwdV9l bmNvZGVyX3VwZGF0ZV9tYXN0ZXIoZHJtX2VuYywgcGFyYW1zKTsKLQogCWlmIChkcHVfZW5jLT5j dXJfbWFzdGVyICYmIGRwdV9lbmMtPmN1cl9tYXN0ZXItPmNvbm5lY3RvcikgewogCQlyYyA9IGRw dV9jb25uZWN0b3JfcHJlX2tpY2tvZmYoZHB1X2VuYy0+Y3VyX21hc3Rlci0+Y29ubmVjdG9yKTsK IAkJaWYgKHJjKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2VuY29kZXJfcGh5cy5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29k ZXJfcGh5cy5oCmluZGV4IGI1N2Y2MTkuLjkxMWFjNmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXMuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzLmgKQEAgLTQwLDEzICs0MCwxMSBAQAog ICogQEVOQ19ST0xFX1NPTE86CVRoaXMgaXMgdGhlIG9uZSBhbmQgb25seSBwYW5lbC4gVGhpcyBl bmNvZGVyIGlzIG1hc3Rlci4KICAqIEBFTkNfUk9MRV9NQVNURVI6CVRoaXMgZW5jb2RlciBpcyB0 aGUgbWFzdGVyIG9mIGEgc3BsaXQgcGFuZWwgY29uZmlnLgogICogQEVOQ19ST0xFX1NMQVZFOglU aGlzIGVuY29kZXIgaXMgbm90IHRoZSBtYXN0ZXIgb2YgYSBzcGxpdCBwYW5lbCBjb25maWcuCi0g KiBARU5DX1JPTEVfU0tJUDoJVGhpcyBlbmNvZGVyIGlzIG5vdCBwYXJ0aWNpcGF0aW5nIGluIGtp Y2tvZmZzCiAgKi8KIGVudW0gZHB1X2VuY19zcGxpdF9yb2xlIHsKIAlFTkNfUk9MRV9TT0xPLAog CUVOQ19ST0xFX01BU1RFUiwKIAlFTkNfUk9MRV9TTEFWRSwKLQlFTkNfUk9MRV9TS0lQCiB9Owog CiAvKioKQEAgLTEyMyw3ICsxMjEsNiBAQCBzdHJ1Y3QgZHB1X2VuY29kZXJfdmlydF9vcHMgewog ICogQGh3X3Jlc2V0OgkJCUlzc3VlIEhXIHJlY292ZXJ5IHN1Y2ggYXMgQ1RMIHJlc2V0IGFuZCBj bGVhcgogICoJCQkJRFBVX0VOQ19FUlJfTkVFRFNfSFdfUkVTRVQgc3RhdGUKICAqIEBpcnFfY29u dHJvbDoJCUhhbmRsZXIgdG8gZW5hYmxlL2Rpc2FibGUgYWxsIHRoZSBlbmNvZGVyIElSUXMKLSAq IEB1cGRhdGVfc3BsaXRfcm9sZToJCVVwZGF0ZSB0aGUgc3BsaXQgcm9sZSBvZiB0aGUgcGh5cyBl bmMKICAqIEBwcmVwYXJlX2lkbGVfcGM6CQlwaHlzIGVuY29kZXIgY2FuIHVwZGF0ZSB0aGUgdnN5 bmNfZW5hYmxlIHN0YXR1cwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiBpZGxl IHBvd2VyIGNvbGxhcHNlIHByZXBhcmUKICAqIEByZXN0b3JlOgkJCVJlc3RvcmUgYWxsIHRoZSBl bmNvZGVyIGNvbmZpZ3MuCkBAIC0xNjcsOCArMTY0LDYgQEAgc3RydWN0IGRwdV9lbmNvZGVyX3Bo eXNfb3BzIHsKIAl1MzIgKCpjb2xsZWN0X21pc3IpKHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpw aHlzX2VuYyk7CiAJdm9pZCAoKmh3X3Jlc2V0KShzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5 c19lbmMpOwogCXZvaWQgKCppcnFfY29udHJvbCkoc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBo eXMsIGJvb2wgZW5hYmxlKTsKLQl2b2lkICgqdXBkYXRlX3NwbGl0X3JvbGUpKHN0cnVjdCBkcHVf ZW5jb2Rlcl9waHlzICpwaHlzX2VuYywKLQkJCWVudW0gZHB1X2VuY19zcGxpdF9yb2xlIHJvbGUp OwogCXZvaWQgKCpwcmVwYXJlX2lkbGVfcGMpKHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlz X2VuYyk7CiAJdm9pZCAoKnJlc3RvcmUpKHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzKTsK IAlib29sICgqaXNfYXV0b3JlZnJlc2hfZW5hYmxlZCkoc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMg KnBoeXMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Vu Y29kZXJfcGh5c19jbWQuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNv ZGVyX3BoeXNfY21kLmMKaW5kZXggNzFlMmU1YS4uMzQzNjc4OCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c19jbWQuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX2NtZC5jCkBAIC0xMTQs MjkgKzExNCw2IEBAIHN0YXRpYyB2b2lkIF9kcHVfZW5jb2Rlcl9waHlzX2NtZF9jb25maWdfYXV0 b3JlZnJlc2goCiAJCWh3X3BwLT5vcHMuc2V0dXBfYXV0b3JlZnJlc2goaHdfcHAsIGNmZ19jdXIp OwogfQogCi1zdGF0aWMgdm9pZCBfZHB1X2VuY29kZXJfcGh5c19jbWRfdXBkYXRlX2ZsdXNoX21h c2soCi0JCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYykKLXsKLQlzdHJ1Y3QgZHB1 X2VuY29kZXJfcGh5c19jbWQgKmNtZF9lbmMgPQotCQkJdG9fZHB1X2VuY29kZXJfcGh5c19jbWQo cGh5c19lbmMpOwotCXN0cnVjdCBkcHVfaHdfY3RsICpjdGw7Ci0JdTMyIGZsdXNoX21hc2sgPSAw OwotCi0JaWYgKCFwaHlzX2VuYykKLQkJcmV0dXJuOwotCi0JY3RsID0gcGh5c19lbmMtPmh3X2N0 bDsKLQlpZiAoIWN0bCB8fCAhY3RsLT5vcHMuZ2V0X2JpdG1hc2tfaW50ZiB8fAotCQkJIWN0bC0+ b3BzLnVwZGF0ZV9wZW5kaW5nX2ZsdXNoKQotCQlyZXR1cm47Ci0KLQljdGwtPm9wcy5nZXRfYml0 bWFza19pbnRmKGN0bCwgJmZsdXNoX21hc2ssIHBoeXNfZW5jLT5pbnRmX2lkeCk7Ci0JY3RsLT5v cHMudXBkYXRlX3BlbmRpbmdfZmx1c2goY3RsLCBmbHVzaF9tYXNrKTsKLQotCURQVV9ERUJVR19D TURFTkMoY21kX2VuYywgInVwZGF0ZSBwZW5kaW5nIGZsdXNoIGN0bCAlZCBmbHVzaF9tYXNrICV4 XG4iLAotCQkJY3RsLT5pZHggLSBDVExfMCwgZmx1c2hfbWFzayk7Ci19Ci0KIHN0YXRpYyB2b2lk IF9kcHVfZW5jb2Rlcl9waHlzX2NtZF91cGRhdGVfaW50Zl9jZmcoCiAJCXN0cnVjdCBkcHVfZW5j b2Rlcl9waHlzICpwaHlzX2VuYykKIHsKQEAgLTMyNCwyMCArMzAxLDYgQEAgc3RhdGljIHZvaWQg ZHB1X2VuY29kZXJfcGh5c19jbWRfbW9kZV9zZXQoCiAJX2RwdV9lbmNvZGVyX3BoeXNfY21kX3Nl dHVwX2lycV9od19pZHgocGh5c19lbmMpOwogfQogCi1zdGF0aWMgYm9vbCBfZHB1X2VuY29kZXJf cGh5c19pc19wcHNwbGl0KHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYykKLXsKLQll bnVtIGRwdV9ybV90b3BvbG9neV9uYW1lIHRvcG9sb2d5OwotCi0JaWYgKCFwaHlzX2VuYykKLQkJ cmV0dXJuIGZhbHNlOwotCi0JdG9wb2xvZ3kgPSBkcHVfY29ubmVjdG9yX2dldF90b3BvbG9neV9u YW1lKHBoeXNfZW5jLT5jb25uZWN0b3IpOwotCWlmICh0b3BvbG9neSA9PSBEUFVfUk1fVE9QT0xP R1lfUFBTUExJVCkKLQkJcmV0dXJuIHRydWU7Ci0KLQlyZXR1cm4gZmFsc2U7Ci19Ci0KIHN0YXRp YyBpbnQgX2RwdV9lbmNvZGVyX3BoeXNfY21kX2hhbmRsZV9wcGRvbmVfdGltZW91dCgKIAkJc3Ry dWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQogewpAQCAtMzg5LDE2ICszNTIsNiBAQCBz dGF0aWMgaW50IF9kcHVfZW5jb2Rlcl9waHlzX2NtZF9oYW5kbGVfcHBkb25lX3RpbWVvdXQoCiAJ cmV0dXJuIC1FVElNRURPVVQ7CiB9CiAKLXN0YXRpYyBib29sIF9kcHVfZW5jb2Rlcl9waHlzX2lz X3Bwc3BsaXRfc2xhdmUoCi0JCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYykKLXsK LQlpZiAoIXBoeXNfZW5jKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQlyZXR1cm4gX2RwdV9lbmNvZGVy X3BoeXNfaXNfcHBzcGxpdChwaHlzX2VuYykgJiYKLQkJCXBoeXNfZW5jLT5zcGxpdF9yb2xlID09 IEVOQ19ST0xFX1NMQVZFOwotfQotCiBzdGF0aWMgaW50IF9kcHVfZW5jb2Rlcl9waHlzX2NtZF9w b2xsX3dyaXRlX3BvaW50ZXJfc3RhcnRlZCgKIAkJc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBo eXNfZW5jKQogewpAQCAtNDgzLDEwICs0MzYsNiBAQCBzdGF0aWMgaW50IF9kcHVfZW5jb2Rlcl9w aHlzX2NtZF93YWl0X2Zvcl9pZGxlKAogCXdhaXRfaW5mby5hdG9taWNfY250ID0gJnBoeXNfZW5j LT5wZW5kaW5nX2tpY2tvZmZfY250OwogCXdhaXRfaW5mby50aW1lb3V0X21zID0gS0lDS09GRl9U SU1FT1VUX01TOwogCi0JLyogc2xhdmUgZW5jb2RlciBkb2Vzbid0IGVuYWJsZSBmb3IgcHBzcGxp dCAqLwotCWlmIChfZHB1X2VuY29kZXJfcGh5c19pc19wcHNwbGl0X3NsYXZlKHBoeXNfZW5jKSkK LQkJcmV0dXJuIDA7Ci0KIAlyZXQgPSBkcHVfZW5jb2Rlcl9oZWxwZXJfd2FpdF9mb3JfaXJxKHBo eXNfZW5jLCBJTlRSX0lEWF9QSU5HUE9ORywKIAkJCSZ3YWl0X2luZm8pOwogCWlmIChyZXQgPT0g LUVUSU1FRE9VVCkKQEAgLTU4OCw3ICs1MzcsNyBAQCB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfY21k X2lycV9jb250cm9sKHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYywKIHsKIAlzdHJ1 Y3QgZHB1X2VuY29kZXJfcGh5c19jbWQgKmNtZF9lbmM7CiAKLQlpZiAoIXBoeXNfZW5jIHx8IF9k cHVfZW5jb2Rlcl9waHlzX2lzX3Bwc3BsaXRfc2xhdmUocGh5c19lbmMpKQorCWlmICghcGh5c19l bmMpCiAJCXJldHVybjsKIAogCWNtZF9lbmMgPSB0b19kcHVfZW5jb2Rlcl9waHlzX2NtZChwaHlz X2VuYyk7CkBAIC03MjYsMTggKzY3NSwxOCBAQCBzdGF0aWMgdm9pZCBfZHB1X2VuY29kZXJfcGh5 c19jbWRfcGluZ3BvbmdfY29uZmlnKAogCQkJcGh5c19lbmMtPmh3X3BwLT5pZHggLSBQSU5HUE9O R18wKTsKIAlkcm1fbW9kZV9kZWJ1Z19wcmludG1vZGVsaW5lKCZwaHlzX2VuYy0+Y2FjaGVkX21v ZGUpOwogCi0JaWYgKCFfZHB1X2VuY29kZXJfcGh5c19pc19wcHNwbGl0X3NsYXZlKHBoeXNfZW5j KSkKLQkJX2RwdV9lbmNvZGVyX3BoeXNfY21kX3VwZGF0ZV9pbnRmX2NmZyhwaHlzX2VuYyk7CisJ X2RwdV9lbmNvZGVyX3BoeXNfY21kX3VwZGF0ZV9pbnRmX2NmZyhwaHlzX2VuYyk7CiAJZHB1X2Vu Y29kZXJfcGh5c19jbWRfdGVhcmNoZWNrX2NvbmZpZyhwaHlzX2VuYyk7CiB9CiAKIHN0YXRpYyBi b29sIGRwdV9lbmNvZGVyX3BoeXNfY21kX25lZWRzX3NpbmdsZV9mbHVzaCgKIAkJc3RydWN0IGRw dV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQogewotCWlmICghcGh5c19lbmMpCi0JCXJldHVybiBm YWxzZTsKLQotCXJldHVybiBfZHB1X2VuY29kZXJfcGh5c19pc19wcHNwbGl0KHBoeXNfZW5jKTsK KwkvKioKKwkgKiB3ZSBkbyBzZXBhcmF0ZSBmbHVzaCBmb3IgZWFjaCBDVEwgYW5kIGxldAorCSAq IENUTF9TVEFSVCBzeW5jaHJvbml6ZSB0aGVtCisJICovCisJcmV0dXJuIGZhbHNlOwogfQogCiBz dGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX2NtZF9lbmFibGVfaGVscGVyKApAQCAtNzU1LDEy ICs3MDQsNyBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX2NtZF9lbmFibGVfaGVscGVy KAogCiAJX2RwdV9lbmNvZGVyX3BoeXNfY21kX3Bpbmdwb25nX2NvbmZpZyhwaHlzX2VuYyk7CiAK LQkvKgotCSAqIEZvciBwcC1zcGxpdCwgc2tpcCBzZXR0aW5nIHRoZSBmbHVzaCBiaXQgZm9yIHRo ZSBzbGF2ZSBpbnRmLCBzaW5jZQotCSAqIGJvdGggaW50ZnMgdXNlIHNhbWUgY3RsIGFuZCBIVyB3 aWxsIG9ubHkgZmx1c2ggdGhlIG1hc3Rlci4KLQkgKi8KLQlpZiAoX2RwdV9lbmNvZGVyX3BoeXNf aXNfcHBzcGxpdChwaHlzX2VuYykgJiYKLQkJIWRwdV9lbmNvZGVyX3BoeXNfY21kX2lzX21hc3Rl cihwaHlzX2VuYykpCisJaWYgKCFkcHVfZW5jb2Rlcl9waHlzX2NtZF9pc19tYXN0ZXIocGh5c19l bmMpKQogCQlnb3RvIHNraXBfZmx1c2g7CiAKIAljdGwgPSBwaHlzX2VuYy0+aHdfY3RsOwpAQCAt OTYzLDEwICs5MDcsNiBAQCBzdGF0aWMgaW50IF9kcHVfZW5jb2Rlcl9waHlzX2NtZF93YWl0X2Zv cl9jdGxfc3RhcnQoCiAJd2FpdF9pbmZvLmF0b21pY19jbnQgPSAmcGh5c19lbmMtPnBlbmRpbmdf Y3Rsc3RhcnRfY250OwogCXdhaXRfaW5mby50aW1lb3V0X21zID0gS0lDS09GRl9USU1FT1VUX01T OwogCi0JLyogc2xhdmUgZW5jb2RlciBkb2Vzbid0IGVuYWJsZSBmb3IgcHBzcGxpdCAqLwotCWlm IChfZHB1X2VuY29kZXJfcGh5c19pc19wcHNwbGl0X3NsYXZlKHBoeXNfZW5jKSkKLQkJcmV0dXJu IDA7Ci0KIAlyZXQgPSBkcHVfZW5jb2Rlcl9oZWxwZXJfd2FpdF9mb3JfaXJxKHBoeXNfZW5jLCBJ TlRSX0lEWF9DVExfU1RBUlQsCiAJCQkmd2FpdF9pbmZvKTsKIAlpZiAocmV0ID09IC1FVElNRURP VVQpIHsKQEAgLTEwNTMsMzkgKzk5Myw2IEBAIHN0YXRpYyBpbnQgZHB1X2VuY29kZXJfcGh5c19j bWRfd2FpdF9mb3JfdmJsYW5rKAogCXJldHVybiByYzsKIH0KIAotc3RhdGljIHZvaWQgZHB1X2Vu Y29kZXJfcGh5c19jbWRfdXBkYXRlX3NwbGl0X3JvbGUoCi0JCXN0cnVjdCBkcHVfZW5jb2Rlcl9w aHlzICpwaHlzX2VuYywKLQkJZW51bSBkcHVfZW5jX3NwbGl0X3JvbGUgcm9sZSkKLXsKLQlzdHJ1 Y3QgZHB1X2VuY29kZXJfcGh5c19jbWQgKmNtZF9lbmM7Ci0JZW51bSBkcHVfZW5jX3NwbGl0X3Jv bGUgb2xkX3JvbGU7Ci0JYm9vbCBpc19wcHNwbGl0OwotCi0JaWYgKCFwaHlzX2VuYykKLQkJcmV0 dXJuOwotCi0JY21kX2VuYyA9IHRvX2RwdV9lbmNvZGVyX3BoeXNfY21kKHBoeXNfZW5jKTsKLQlv bGRfcm9sZSA9IHBoeXNfZW5jLT5zcGxpdF9yb2xlOwotCWlzX3Bwc3BsaXQgPSBfZHB1X2VuY29k ZXJfcGh5c19pc19wcHNwbGl0KHBoeXNfZW5jKTsKLQotCXBoeXNfZW5jLT5zcGxpdF9yb2xlID0g cm9sZTsKLQotCURQVV9ERUJVR19DTURFTkMoY21kX2VuYywgIm9sZCByb2xlICVkIG5ldyByb2xl ICVkXG4iLAotCQkJb2xkX3JvbGUsIHJvbGUpOwotCi0JLyoKLQkgKiBwcHNwbGl0IHNvbG8gbmVl ZHMgdG8gcmVwcm9ncmFtIGJlY2F1c2UgaW50ZiBtYXkgaGF2ZSBzd2FwcGVkIHdpdGhvdXQKLQkg KiByb2xlIGNoYW5naW5nIG9uIGxlZnQtb25seSwgcmlnaHQtb25seSBiYWNrLXRvLWJhY2sgY29t bWl0cwotCSAqLwotCWlmICghKGlzX3Bwc3BsaXQgJiYgcm9sZSA9PSBFTkNfUk9MRV9TT0xPKSAm JgotCQkJKHJvbGUgPT0gb2xkX3JvbGUgfHwgcm9sZSA9PSBFTkNfUk9MRV9TS0lQKSkKLQkJcmV0 dXJuOwotCi0JZHB1X2VuY29kZXJfaGVscGVyX3NwbGl0X2NvbmZpZyhwaHlzX2VuYywgcGh5c19l bmMtPmludGZfaWR4KTsKLQlfZHB1X2VuY29kZXJfcGh5c19jbWRfcGluZ3BvbmdfY29uZmlnKHBo eXNfZW5jKTsKLQlfZHB1X2VuY29kZXJfcGh5c19jbWRfdXBkYXRlX2ZsdXNoX21hc2socGh5c19l bmMpOwotfQotCiBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX2NtZF9wcmVwYXJlX2NvbW1p dCgKIAkJc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQogewpAQCAtMTE5MSw3ICsx MDk4LDYgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c19jbWRfaW5pdF9vcHMoCiAJb3Bz LT5uZWVkc19zaW5nbGVfZmx1c2ggPSBkcHVfZW5jb2Rlcl9waHlzX2NtZF9uZWVkc19zaW5nbGVf Zmx1c2g7CiAJb3BzLT5od19yZXNldCA9IGRwdV9lbmNvZGVyX2hlbHBlcl9od19yZXNldDsKIAlv cHMtPmlycV9jb250cm9sID0gZHB1X2VuY29kZXJfcGh5c19jbWRfaXJxX2NvbnRyb2w7Ci0Jb3Bz LT51cGRhdGVfc3BsaXRfcm9sZSA9IGRwdV9lbmNvZGVyX3BoeXNfY21kX3VwZGF0ZV9zcGxpdF9y b2xlOwogCW9wcy0+cmVzdG9yZSA9IGRwdV9lbmNvZGVyX3BoeXNfY21kX2VuYWJsZV9oZWxwZXI7 CiAJb3BzLT5wcmVwYXJlX2lkbGVfcGMgPSBkcHVfZW5jb2Rlcl9waHlzX2NtZF9wcmVwYXJlX2lk bGVfcGM7CiAJb3BzLT5pc19hdXRvcmVmcmVzaF9lbmFibGVkID0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfdmlkLmMgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5jCmluZGV4IGQ2Yjcy YTMuLmI2ODA3MTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9lbmNvZGVyX3BoeXNfdmlkLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2VuY29kZXJfcGh5c192aWQuYwpAQCAtMzU0LDIwICszNTQsNiBAQCBzdGF0aWMgdm9pZCBk cHVfZW5jb2Rlcl9waHlzX3ZpZF91bmRlcnJ1bl9pcnEodm9pZCAqYXJnLCBpbnQgaXJxX2lkeCkK IAkJCXBoeXNfZW5jKTsKIH0KIAotc3RhdGljIGJvb2wgX2RwdV9lbmNvZGVyX3BoeXNfaXNfcHBz cGxpdChzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpCi17Ci0JZW51bSBkcHVfcm1f dG9wb2xvZ3lfbmFtZSB0b3BvbG9neTsKLQotCWlmICghcGh5c19lbmMpCi0JCXJldHVybiBmYWxz ZTsKLQotCXRvcG9sb2d5ID0gZHB1X2Nvbm5lY3Rvcl9nZXRfdG9wb2xvZ3lfbmFtZShwaHlzX2Vu Yy0+Y29ubmVjdG9yKTsKLQlpZiAodG9wb2xvZ3kgPT0gRFBVX1JNX1RPUE9MT0dZX1BQU1BMSVQp Ci0JCXJldHVybiB0cnVlOwotCi0JcmV0dXJuIGZhbHNlOwotfQotCiBzdGF0aWMgYm9vbCBfZHB1 X2VuY29kZXJfcGh5c19pc19kdWFsX2N0bChzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19l bmMpCiB7CiAJZW51bSBkcHVfcm1fdG9wb2xvZ3lfbmFtZSB0b3BvbG9neTsKQEAgLTM4NSw4ICsz NzEsNyBAQCBzdGF0aWMgYm9vbCBfZHB1X2VuY29kZXJfcGh5c19pc19kdWFsX2N0bChzdHJ1Y3Qg ZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMpCiBzdGF0aWMgYm9vbCBkcHVfZW5jb2Rlcl9waHlz X3ZpZF9uZWVkc19zaW5nbGVfZmx1c2goCiAJCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlz X2VuYykKIHsKLQlyZXR1cm4gcGh5c19lbmMgJiYgKF9kcHVfZW5jb2Rlcl9waHlzX2lzX3Bwc3Bs aXQocGh5c19lbmMpIHx8Ci0JCV9kcHVfZW5jb2Rlcl9waHlzX2lzX2R1YWxfY3RsKHBoeXNfZW5j KSk7CisJcmV0dXJuIChwaHlzX2VuYyAmJiBfZHB1X2VuY29kZXJfcGh5c19pc19kdWFsX2N0bChw aHlzX2VuYykpOwogfQogCiBzdGF0aWMgdm9pZCBfZHB1X2VuY29kZXJfcGh5c192aWRfc2V0dXBf aXJxX2h3X2lkeCgKQEAgLTYwOSw5ICs1OTQsNyBAQCBzdGF0aWMgaW50IF9kcHVfZW5jb2Rlcl9w aHlzX3ZpZF93YWl0X2Zvcl92YmxhbmsoCiAJd2FpdF9pbmZvLnRpbWVvdXRfbXMgPSBLSUNLT0ZG X1RJTUVPVVRfTVM7CiAKIAlpZiAoIWRwdV9lbmNvZGVyX3BoeXNfdmlkX2lzX21hc3RlcihwaHlz X2VuYykpIHsKLQkJLyogc2lnbmFsIGRvbmUgZm9yIHNsYXZlIHZpZGVvIGVuY29kZXIsIHVubGVz cyBpdCBpcyBwcC1zcGxpdCAqLwotCQlpZiAoIV9kcHVfZW5jb2Rlcl9waHlzX2lzX3Bwc3BsaXQo cGh5c19lbmMpICYmCi0JCQlub3RpZnkgJiYgcGh5c19lbmMtPnBhcmVudF9vcHMuaGFuZGxlX2Zy YW1lX2RvbmUpCisJCWlmIChub3RpZnkgJiYgcGh5c19lbmMtPnBhcmVudF9vcHMuaGFuZGxlX2Zy YW1lX2RvbmUpCiAJCQlwaHlzX2VuYy0+cGFyZW50X29wcy5oYW5kbGVfZnJhbWVfZG9uZSgKIAkJ CQkJcGh5c19lbmMtPnBhcmVudCwgcGh5c19lbmMsCiAJCQkJCURQVV9FTkNPREVSX0ZSQU1FX0VW RU5UX0RPTkUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2h3X2NhdGFsb2cuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRh bG9nLmMKaW5kZXggMTRlNjZjYS4uOGU3NzljMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5jCkBAIC00Myw3ICs0Myw3IEBACiAjZGVmaW5lIFBJ TkdQT05HX1NETTg0NV9NQVNLIEJJVChEUFVfUElOR1BPTkdfRElUSEVSKQogCiAjZGVmaW5lIFBJ TkdQT05HX1NETTg0NV9TUExJVF9NQVNLIFwKLQkoUElOR1BPTkdfU0RNODQ1X01BU0sgfCBCSVQo RFBVX1BJTkdQT05HX1NQTElUKSB8IEJJVChEUFVfUElOR1BPTkdfVEUyKSkKKwkoUElOR1BPTkdf U0RNODQ1X01BU0sgfCBCSVQoRFBVX1BJTkdQT05HX1RFMikpCiAKICNkZWZpbmUgV0IyX1NETTg0 NV9NQVNLIFwKIAkoQklUKERQVV9XQl9MSU5FX01PREUpIHwgQklUKERQVV9XQl9UUkFGRklDX1NI QVBFUikgfCBCSVQoRFBVX1dCX0NEUCkgfFwKQEAgLTExOSw4ICsxMTksNyBAQAogCXsKIAkubmFt ZSA9ICJjdGxfMCIsIC5pZCA9IENUTF8wLAogCS5iYXNlID0gMHgyMDAwLCAubGVuID0gMHhFNCwK LQkuZmVhdHVyZXMgPSBCSVQoRFBVX0NUTF9TUExJVF9ESVNQTEFZKSB8Ci0JCUJJVChEUFVfQ1RM X1BJTkdQT05HX1NQTElUKQorCS5mZWF0dXJlcyA9IEJJVChEUFVfQ1RMX1NQTElUX0RJU1BMQVkp CiAJfSwKIAl7CiAJLm5hbWUgPSAiY3RsXzEiLCAuaWQgPSBDVExfMSwKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRhbG9nLmggYi9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdfY2F0YWxvZy5oCmluZGV4IGNlZmYzYjcuLjM5YmVj MGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od19jYXRh bG9nLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3X2NhdGFsb2cu aApAQCAtMjE0LDEyICsyMTQsMTAgQEAgZW51bSB7CiAvKioKICAqIENUTCBzdWItYmxvY2tzCiAg KiBARFBVX0NUTF9TUExJVF9ESVNQTEFZICAgICAgIENUTCBzdXBwb3J0cyB2aWRlbyBtb2RlIHNw bGl0IGRpc3BsYXkKLSAqIEBEUFVfQ1RMX1BJTkdQT05HX1NQTElUICAgICAgQ1RMIHN1cHBvcnRz IHBpbmdwb25nIHNwbGl0CiAgKiBARFBVX0NUTF9NQVgKICAqLwogZW51bSB7CiAJRFBVX0NUTF9T UExJVF9ESVNQTEFZID0gMHgxLAotCURQVV9DVExfUElOR1BPTkdfU1BMSVQsCiAJRFBVX0NUTF9N QVgKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9o d190b3AuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od190b3AuYwppbmRl eCA2MGU0YmVmLi44ZjdmOTMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfaHdfdG9wLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2h3X3RvcC5jCkBAIC04MCwxMSArODAsNiBAQCBzdGF0aWMgdm9pZCBkcHVfaHdfc2V0dXBfc3Bs aXRfcGlwZShzdHJ1Y3QgZHB1X2h3X21kcCAqbWRwLAogCQkJCWxvd2VyX3BpcGUgfD0gRkxEX0lO VEZfMV9TV19UUkdfTVVYOwogCQkJZWxzZQogCQkJCWxvd2VyX3BpcGUgfD0gRkxEX0lOVEZfMl9T V19UUkdfTVVYOwotCi0JCQkvKiBmcmVlIHJ1biAqLwotCQkJaWYgKGNmZy0+cHBfc3BsaXRfc2xh dmUgIT0gSU5URl9NQVgpCi0JCQkJbG93ZXJfcGlwZSA9IEZMRF9TTUFSVF9QQU5FTF9GUkVFX1JV TjsKLQogCQkJdXBwZXJfcGlwZSA9IGxvd2VyX3BpcGU7CiAJCX0gZWxzZSB7CiAJCQlpZiAoY2Zn LT5pbnRmID09IElOVEZfMikgewpAQCAtMTAzLDMzICs5OCw2IEBAIHN0YXRpYyB2b2lkIGRwdV9o d19zZXR1cF9zcGxpdF9waXBlKHN0cnVjdCBkcHVfaHdfbWRwICptZHAsCiAJRFBVX1JFR19XUklU RShjLCBTUExJVF9ESVNQTEFZX0VOLCBjZmctPmVuICYgMHgxKTsKIH0KIAotc3RhdGljIHZvaWQg ZHB1X2h3X3NldHVwX3BwX3NwbGl0KHN0cnVjdCBkcHVfaHdfbWRwICptZHAsCi0JCXN0cnVjdCBz cGxpdF9waXBlX2NmZyAqY2ZnKQotewotCXUzMiBwcGJfY29uZmlnID0gMHgwOwotCXUzMiBwcGJf Y29udHJvbCA9IDB4MDsKLQotCWlmICghbWRwIHx8ICFjZmcpCi0JCXJldHVybjsKLQotCWlmIChj ZmctPmVuICYmIGNmZy0+cHBfc3BsaXRfc2xhdmUgIT0gSU5URl9NQVgpIHsKLQkJcHBiX2NvbmZp ZyB8PSAoY2ZnLT5wcF9zcGxpdF9zbGF2ZSAtIElOVEZfMCArIDEpIDw8IDIwOwotCQlwcGJfY29u ZmlnIHw9IEJJVCgxNik7IC8qIHNwbGl0IGVuYWJsZSAqLwotCQlwcGJfY29udHJvbCA9IEJJVCg1 KTsgLyogaG9yeiBzcGxpdCovCi0JfQotCWlmIChjZmctPnBwX3NwbGl0X2luZGV4KSB7Ci0JCURQ VV9SRUdfV1JJVEUoJm1kcC0+aHcsIFBQQjBfQ09ORklHLCAweDApOwotCQlEUFVfUkVHX1dSSVRF KCZtZHAtPmh3LCBQUEIwX0NOVEwsIDB4MCk7Ci0JCURQVV9SRUdfV1JJVEUoJm1kcC0+aHcsIFBQ QjFfQ09ORklHLCBwcGJfY29uZmlnKTsKLQkJRFBVX1JFR19XUklURSgmbWRwLT5odywgUFBCMV9D TlRMLCBwcGJfY29udHJvbCk7Ci0JfSBlbHNlIHsKLQkJRFBVX1JFR19XUklURSgmbWRwLT5odywg UFBCMF9DT05GSUcsIHBwYl9jb25maWcpOwotCQlEUFVfUkVHX1dSSVRFKCZtZHAtPmh3LCBQUEIw X0NOVEwsIHBwYl9jb250cm9sKTsKLQkJRFBVX1JFR19XUklURSgmbWRwLT5odywgUFBCMV9DT05G SUcsIDB4MCk7Ci0JCURQVV9SRUdfV1JJVEUoJm1kcC0+aHcsIFBQQjFfQ05UTCwgMHgwKTsKLQl9 Ci19Ci0KIHN0YXRpYyB2b2lkIGRwdV9od19zZXR1cF9jZG1fb3V0cHV0KHN0cnVjdCBkcHVfaHdf bWRwICptZHAsCiAJCXN0cnVjdCBjZG1fb3V0cHV0X2NmZyAqY2ZnKQogewpAQCAtMzQ5LDcgKzMx Nyw2IEBAIHN0YXRpYyB2b2lkIF9zZXR1cF9tZHBfb3BzKHN0cnVjdCBkcHVfaHdfbWRwX29wcyAq b3BzLAogCQl1bnNpZ25lZCBsb25nIGNhcCkKIHsKIAlvcHMtPnNldHVwX3NwbGl0X3BpcGUgPSBk cHVfaHdfc2V0dXBfc3BsaXRfcGlwZTsKLQlvcHMtPnNldHVwX3BwX3NwbGl0ID0gZHB1X2h3X3Nl dHVwX3BwX3NwbGl0OwogCW9wcy0+c2V0dXBfY2RtX291dHB1dCA9IGRwdV9od19zZXR1cF9jZG1f b3V0cHV0OwogCW9wcy0+c2V0dXBfY2xrX2ZvcmNlX2N0cmwgPSBkcHVfaHdfc2V0dXBfY2xrX2Zv cmNlX2N0cmw7CiAJb3BzLT5nZXRfZGFuZ2VyX3N0YXR1cyA9IGRwdV9od19nZXRfZGFuZ2VyX3N0 YXR1czsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od190 b3AuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9od190b3AuaAppbmRleCAx NDcwZDBmLi41NDI5Y2Q1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfaHdfdG9wLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2h3 X3RvcC5oCkBAIC00MSw4ICs0MSw2IEBAIHN0cnVjdCB0cmFmZmljX3NoYXBlcl9jZmcgewogICog QGVuICAgICAgICA6IEVuYWJsZS9kaXNhYmxlIGR1YWwgcGlwZSBjb25mZ3VyYXRpb24KICAqIEBt b2RlICAgICAgOiBQYW5lbCBpbnRlcmZhY2UgbW9kZQogICogQGludGYgICAgICA6IEludGVyZmFj ZSBpZCBmb3IgbWFpbiBjb250cm9sIHBhdGgKLSAqIEBwcF9zcGxpdF9zbGF2ZTogU2xhdmUgaW50 ZXJmYWNlIGZvciBwaW5nIHBvbmcgc3BsaXQsIElOVEZfTUFYIHRvIGRpc2FibGUKLSAqIEBwcF9z cGxpdF9pZHg6ICAgUGluZyBwb25nIGluZGV4IGZvciBwaW5nIHBvbmcgc3BsaXQKICAqIEBzcGxp dF9mbHVzaF9lbjogQWxsb3dzIGJvdGggdGhlIHBhdGhzIHRvIGJlIGZsdXNoZWQgd2hlbiBtYXN0 ZXIgcGF0aCBpcwogICogICAgICAgICAgICAgIGZsdXNoZWQKICAqLwpAQCAtNTAsOCArNDgsNiBA QCBzdHJ1Y3Qgc3BsaXRfcGlwZV9jZmcgewogCWJvb2wgZW47CiAJZW51bSBkcHVfaW50Zl9tb2Rl IG1vZGU7CiAJZW51bSBkcHVfaW50ZiBpbnRmOwotCWVudW0gZHB1X2ludGYgcHBfc3BsaXRfc2xh dmU7Ci0JdTMyIHBwX3NwbGl0X2luZGV4OwogCWJvb2wgc3BsaXRfZmx1c2hfZW47CiB9OwogCkBA IC0xMDksMTMgKzEwNSw2IEBAIHN0cnVjdCBkcHVfaHdfbWRwX29wcyB7CiAJdm9pZCAoKnNldHVw X3NwbGl0X3BpcGUpKHN0cnVjdCBkcHVfaHdfbWRwICptZHAsCiAJCQlzdHJ1Y3Qgc3BsaXRfcGlw ZV9jZmcgKnApOwogCi0JLyoqIHNldHVwX3BwX3NwbGl0KCkgOiBDb25maWd1cmUgcHAgc3BsaXQg cmVsYXRlZCByZWdpc3RlcnMKLQkgKiBAbWRwICA6IG1kcCB0b3AgY29udGV4dCBkcml2ZXIKLQkg KiBAY2ZnICA6IHVwcGVyIGFuZCBsb3dlciBwYXJ0IG9mIHBpcGUgY29uZmlndXJhdGlvbgotCSAq LwotCXZvaWQgKCpzZXR1cF9wcF9zcGxpdCkoc3RydWN0IGRwdV9od19tZHAgKm1kcCwKLQkJCXN0 cnVjdCBzcGxpdF9waXBlX2NmZyAqY2ZnKTsKLQogCS8qKgogCSAqIHNldHVwX2NkbV9vdXRwdXQo KSA6IFNldHVwIHNlbGVjdGlvbiBjb250cm9sIG9mIHRoZSBjZG0gZGF0YSBwYXRoCiAJICogQG1k cCAgOiBtZHAgdG9wIGNvbnRleHQgZHJpdmVyCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfaHdpby5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2h3aW8uaAppbmRleCBiODg3MDgyLi41YjJiYzliIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaHdpby5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9od2lvLmgKQEAgLTM2LDEwICszNiw2IEBACiAjZGVmaW5lIERTUFBfSUdD X0NPTE9SMF9SQU1fTFVUTiAgICAgICAgMHgzMDAKICNkZWZpbmUgRFNQUF9JR0NfQ09MT1IxX1JB TV9MVVROICAgICAgICAweDMwNAogI2RlZmluZSBEU1BQX0lHQ19DT0xPUjJfUkFNX0xVVE4gICAg ICAgIDB4MzA4Ci0jZGVmaW5lIFBQQjBfQ05UTCAgICAgICAgICAgICAgICAgICAgICAgMHgzMzAK LSNkZWZpbmUgUFBCMF9DT05GSUcgICAgICAgICAgICAgICAgICAgICAweDMzNAotI2RlZmluZSBQ UEIxX0NOVEwgICAgICAgICAgICAgICAgICAgICAgIDB4MzM4Ci0jZGVmaW5lIFBQQjFfQ09ORklH ICAgICAgICAgICAgICAgICAgICAgMHgzM0MKICNkZWZpbmUgSFdfRVZFTlRTX0NUTCAgICAgICAg ICAgICAgICAgICAweDM3QwogI2RlZmluZSBDTEtfQ1RSTDMgICAgICAgICAgICAgICAgICAgICAg IDB4M0E4CiAjZGVmaW5lIENMS19TVEFUVVMzICAgICAgICAgICAgICAgICAgICAgMHgzQUMKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmMKaW5kZXggMTNlZmJlYi4uYzhjMTJkMyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmMKQEAgLTUwLDcgKzUwLDYgQEAg c3RydWN0IGRwdV9ybV90b3BvbG9neV9kZWYgewogCXsgICBEUFVfUk1fVE9QT0xPR1lfU0lOR0xF UElQRSwgICAgICAgICAgIDEsIDAsIDEsIDEsIGZhbHNlIH0sCiAJeyAgIERQVV9STV9UT1BPTE9H WV9EVUFMUElQRSwgICAgICAgICAgICAgMiwgMCwgMiwgMiwgdHJ1ZSAgfSwKIAl7ICAgRFBVX1JN X1RPUE9MT0dZX0RVQUxQSVBFXzNETUVSR0UsICAgICAyLCAwLCAxLCAxLCBmYWxzZSB9LAotCXsg ICBEUFVfUk1fVE9QT0xPR1lfUFBTUExJVCwgICAgICAgICAgICAgIDEsIDAsIDIsIDEsIHRydWUg IH0sCiB9OwogCiAvKioKQEAgLTUzMSw3ICs1MzAsNiBAQCBzdGF0aWMgYm9vbCBfZHB1X3JtX2No ZWNrX2xtX2FuZF9nZXRfY29ubmVjdGVkX2Jsa3MoCiAJCXN0cnVjdCBkcHVfcm1faHdfYmxrICpw cmltYXJ5X2xtKQogewogCWNvbnN0IHN0cnVjdCBkcHVfbG1fY2ZnICpsbV9jZmcgPSB0b19kcHVf aHdfbWl4ZXIobG0tPmh3KS0+Y2FwOwotCWNvbnN0IHN0cnVjdCBkcHVfcGluZ3BvbmdfY2ZnICpw cF9jZmc7CiAJc3RydWN0IGRwdV9ybV9od19pdGVyIGl0ZXI7CiAJYm9vbCBpc192YWxpZF9kc3Bw LCBpc192YWxpZF9kcywgcmV0OwogCkBAIC02NTAsMTUgKzY0OCw2IEBAIHN0YXRpYyBib29sIF9k cHVfcm1fY2hlY2tfbG1fYW5kX2dldF9jb25uZWN0ZWRfYmxrcygKIAkJcmV0dXJuIGZhbHNlOwog CX0KIAotCXBwX2NmZyA9IHRvX2RwdV9od19waW5ncG9uZygoKnBwKS0+aHcpLT5jYXBzOwotCWlm ICgocmVxcy0+dG9wb2xvZ3ktPnRvcF9uYW1lID09IERQVV9STV9UT1BPTE9HWV9QUFNQTElUKSAm JgotCQkJISh0ZXN0X2JpdChEUFVfUElOR1BPTkdfU1BMSVQsICZwcF9jZmctPmZlYXR1cmVzKSkp IHsKLQkJRFBVX0RFQlVHKCJwcCAlZCBkb2Vzbid0IHN1cHBvcnQgcHBzcGxpdFxuIiwgcHBfY2Zn LT5pZCk7Ci0JCSpkc3BwID0gTlVMTDsKLQkJKmRzID0gTlVMTDsKLQkJcmV0dXJuIGZhbHNlOwot CX0KLQogCXJldHVybiB0cnVlOwogfQogCkBAIC03NDIsMjYgKzczMSw2IEBAIHN0YXRpYyBpbnQg X2RwdV9ybV9yZXNlcnZlX2xtcygKIAkJCQlkc1tpXSA/IGRzW2ldLT5pZCA6IDApOwogCX0KIAot CWlmIChyZXFzLT50b3BvbG9neS0+dG9wX25hbWUgPT0gRFBVX1JNX1RPUE9MT0dZX1BQU1BMSVQp IHsKLQkJLyogcmVzZXJ2ZSBhIGZyZWUgUElOR1BPTkdfU0xBVkUgYmxvY2sgKi8KLQkJcmMgPSAt RU5BVkFJTDsKLQkJZHB1X3JtX2luaXRfaHdfaXRlcigmaXRlcl9pLCAwLCBEUFVfSFdfQkxLX1BJ TkdQT05HKTsKLQkJd2hpbGUgKF9kcHVfcm1fZ2V0X2h3X2xvY2tlZChybSwgJml0ZXJfaSkpIHsK LQkJCWNvbnN0IHN0cnVjdCBkcHVfaHdfcGluZ3BvbmcgKnBwID0KLQkJCQkJdG9fZHB1X2h3X3Bp bmdwb25nKGl0ZXJfaS5ibGstPmh3KTsKLQkJCWNvbnN0IHN0cnVjdCBkcHVfcGluZ3BvbmdfY2Zn ICpwcF9jZmcgPSBwcC0+Y2FwczsKLQotCQkJaWYgKCEodGVzdF9iaXQoRFBVX1BJTkdQT05HX1NM QVZFLCAmcHBfY2ZnLT5mZWF0dXJlcykpKQotCQkJCWNvbnRpbnVlOwotCQkJaWYgKFJFU0VSVkVE X0JZX09USEVSKGl0ZXJfaS5ibGssIHJzdnApKQotCQkJCWNvbnRpbnVlOwotCi0JCQlpdGVyX2ku YmxrLT5yc3ZwX254dCA9IHJzdnA7Ci0JCQlyYyA9IDA7Ci0JCQlicmVhazsKLQkJfQotCX0KLQog CXJldHVybiByYzsKIH0KIApAQCAtNzgwLDIyICs3NDksMTggQEAgc3RhdGljIGludCBfZHB1X3Jt X3Jlc2VydmVfY3RscygKIAl3aGlsZSAoX2RwdV9ybV9nZXRfaHdfbG9ja2VkKHJtLCAmaXRlcikp IHsKIAkJY29uc3Qgc3RydWN0IGRwdV9od19jdGwgKmN0bCA9IHRvX2RwdV9od19jdGwoaXRlci5i bGstPmh3KTsKIAkJdW5zaWduZWQgbG9uZyBmZWF0dXJlcyA9IGN0bC0+Y2Fwcy0+ZmVhdHVyZXM7 Ci0JCWJvb2wgaGFzX3NwbGl0X2Rpc3BsYXksIGhhc19wcHNwbGl0OworCQlib29sIGhhc19zcGxp dF9kaXNwbGF5OwogCiAJCWlmIChSRVNFUlZFRF9CWV9PVEhFUihpdGVyLmJsaywgcnN2cCkpCiAJ CQljb250aW51ZTsKIAogCQloYXNfc3BsaXRfZGlzcGxheSA9IEJJVChEUFVfQ1RMX1NQTElUX0RJ U1BMQVkpICYgZmVhdHVyZXM7Ci0JCWhhc19wcHNwbGl0ID0gQklUKERQVV9DVExfUElOR1BPTkdf U1BMSVQpICYgZmVhdHVyZXM7CiAKIAkJRFBVX0RFQlVHKCJjdGwgJWQgY2FwcyAweCVsWFxuIiwg aXRlci5ibGstPmlkLCBmZWF0dXJlcyk7CiAKIAkJaWYgKHRvcC0+bmVlZHNfc3BsaXRfZGlzcGxh eSAhPSBoYXNfc3BsaXRfZGlzcGxheSkKIAkJCWNvbnRpbnVlOwogCi0JCWlmICh0b3AtPnRvcF9u YW1lID09IERQVV9STV9UT1BPTE9HWV9QUFNQTElUICYmICFoYXNfcHBzcGxpdCkKLQkJCWNvbnRp bnVlOwotCiAJCWN0bHNbaV0gPSBpdGVyLmJsazsKIAkJRFBVX0RFQlVHKCJjdGwgJWQgbWF0Y2hc biIsIGl0ZXIuYmxrLT5pZCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9ybS5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmgK aW5kZXggM2RiNjFiNS4uOGE2Y2JjZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X3JtLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X3JtLmgKQEAgLTI2LDE0ICsyNiwxMiBAQAogICogQERQVV9STV9UT1BPTE9HWV9TSU5HTEVQSVBF OiAgICAgICAgICAgMSBMTSwgMSBQUCwgMSBJTlRGL1dCCiAgKiBARFBVX1JNX1RPUE9MT0dZX0RV QUxQSVBFOiAgICAgICAgICAgICAyIExNLCAyIFBQLCAyIElOVEYvV0IKICAqIEBEUFVfUk1fVE9Q T0xPR1lfRFVBTFBJUEVfM0RNRVJHRTogICAgIDIgTE0sIDIgUFAsIDNETXV4LCAxIElOVEYvV0IK LSAqIEBEUFVfUk1fVE9QT0xPR1lfUFBTUExJVDogICAgICAgICAgICAgIDEgTE0sIDIgUFBzLCAy IElOVEYvV0IKICAqLwogZW51bSBkcHVfcm1fdG9wb2xvZ3lfbmFtZSB7CiAJRFBVX1JNX1RPUE9M T0dZX05PTkUgPSAwLAogCURQVV9STV9UT1BPTE9HWV9TSU5HTEVQSVBFLAogCURQVV9STV9UT1BP TE9HWV9EVUFMUElQRSwKIAlEUFVfUk1fVE9QT0xPR1lfRFVBTFBJUEVfM0RNRVJHRSwKLQlEUFVf Uk1fVE9QT0xPR1lfUFBTUExJVCwKIAlEUFVfUk1fVE9QT0xPR1lfTUFYLAogfTsKIAotLSAKVGhl IFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9mIHRoZSBDb2Rl IEF1cm9yYSBGb3J1bSwKYSBMaW51eCBGb3VuZGF0aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdAoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5v IG1haWxpbmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg==