From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sibi S Subject: [PATCH 2/5] drm/msm/dsi: add implementation for helper functions Date: Mon, 12 Mar 2018 18:53:11 +0530 Message-ID: <1520860994-23334-3-git-send-email-sibis@codeaurora.org> References: <1520860994-23334-1-git-send-email-sibis@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1520860994-23334-1-git-send-email-sibis@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: architt@codeaurora.org, robdclark@gmail.com Cc: linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, Sibi S , dri-devel@lists.freedesktop.org List-Id: linux-arm-msm@vger.kernel.org QWRkIGRzaSBob3N0IGhlbHBlciBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbiBmb3IgRFNJIHYyCmFu ZCBEU0kgNkcgMS54IGNvbnRyb2xsZXJzCgpTaWduZWQtb2ZmLWJ5OiBTaWJpIFMgPHNpYmlzQGNv ZGVhdXJvcmEub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaS5oICAgICAgfCAg MTUgKysrCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfY2ZnLmMgIHwgIDQ0ICsrKysrLS0K IGRyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9ob3N0LmMgfCAyNTAgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLQogMyBmaWxlcyBjaGFuZ2VkLCAyOTggaW5zZXJ0aW9ucygr KSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kv ZHNpLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2kuaAppbmRleCA4MGJlODNlLi5kZmEw NDlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2kuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2kuaApAQCAtMTgzLDYgKzE4MywyMSBAQCBpbnQgbXNtX2Rz aV9ob3N0X21vZGVzZXRfaW5pdChzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCwKIGludCBtc21f ZHNpX2hvc3RfaW5pdChzdHJ1Y3QgbXNtX2RzaSAqbXNtX2RzaSk7CiBpbnQgbXNtX2RzaV9ydW50 aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KTsKIGludCBtc21fZHNpX3J1bnRpbWVfcmVz dW1lKHN0cnVjdCBkZXZpY2UgKmRldik7CitpbnQgZHNpX2xpbmtfY2xrX2VuYWJsZV82ZyhzdHJ1 Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCk7CitpbnQgZHNpX2xpbmtfY2xrX2VuYWJsZV92Mihz dHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCk7Cit2b2lkIGRzaV9saW5rX2Nsa19kaXNhYmxl XzZnKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KTsKK3ZvaWQgZHNpX2xpbmtfY2xrX2Rp c2FibGVfdjIoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpOworaW50IGRzaV90eF9idWZf YWxsb2NfNmcoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QsIGludCBzaXplKTsKK2ludCBk c2lfdHhfYnVmX2FsbG9jX3YyKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0LCBpbnQgc2l6 ZSk7Cit2b2lkICpkc2lfdHhfYnVmX2dldF82ZyhzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9z dCk7Cit2b2lkICpkc2lfdHhfYnVmX2dldF92MihzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9z dCk7Cit2b2lkIGRzaV90eF9idWZfcHV0XzZnKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0 KTsKK2ludCBkc2lfZG1hX2Jhc2VfZ2V0XzZnKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0 LCB1aW50NjRfdCAqaW92YSk7CitpbnQgZHNpX2RtYV9iYXNlX2dldF92MihzdHJ1Y3QgbXNtX2Rz aV9ob3N0ICptc21faG9zdCwgdWludDY0X3QgKmlvdmEpOworaW50IGRzaV9jbGtfaW5pdF92Mihz dHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCk7CitpbnQgZHNpX2Nsa19pbml0XzZnX3YyKHN0 cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KTsKK2ludCBkc2lfY2FsY19jbGtfcmF0ZV92Mihz dHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCk7CitpbnQgZHNpX2NhbGNfY2xrX3JhdGVfNmco c3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpOwogCiAvKiBkc2kgcGh5ICovCiBzdHJ1Y3Qg bXNtX2RzaV9waHk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfY2Zn LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfY2ZnLmMKaW5kZXggMDMyN2JiNS4uZGM1 MWFhYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2NmZy5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9jZmcuYwpAQCAtMTM2LDIwICsxMzYsNDYgQEAK IAkubnVtX2RzaSA9IDIsCiB9OwogCitjb25zdCBzdGF0aWMgc3RydWN0IG1zbV9kc2lfaG9zdF9j Zmdfb3BzIG1zbV9kc2lfdjJfaG9zdF9vcHMgPSB7CisJLmxpbmtfY2xrX2VuYWJsZSA9IGRzaV9s aW5rX2Nsa19lbmFibGVfdjIsCisJLmxpbmtfY2xrX2Rpc2FibGUgPSBkc2lfbGlua19jbGtfZGlz YWJsZV92MiwKKwkuY2xrX2luaXRfdmVyID0gZHNpX2Nsa19pbml0X3YyLAorCS50eF9idWZfYWxs b2MgPSBkc2lfdHhfYnVmX2FsbG9jX3YyLAorCS50eF9idWZfZ2V0ID0gZHNpX3R4X2J1Zl9nZXRf djIsCisJLnR4X2J1Zl9wdXQgPSBOVUxMLAorCS5kbWFfYmFzZV9nZXQgPSBkc2lfZG1hX2Jhc2Vf Z2V0X3YyLAorCS5jYWxjX2Nsa19yYXRlID0gZHNpX2NhbGNfY2xrX3JhdGVfdjIsCit9OworCitj b25zdCBzdGF0aWMgc3RydWN0IG1zbV9kc2lfaG9zdF9jZmdfb3BzIG1zbV9kc2lfNmdfaG9zdF9v cHMgPSB7CisJLmxpbmtfY2xrX2VuYWJsZSA9IGRzaV9saW5rX2Nsa19lbmFibGVfNmcsCisJLmxp bmtfY2xrX2Rpc2FibGUgPSBkc2lfbGlua19jbGtfZGlzYWJsZV82ZywKKwkuY2xrX2luaXRfdmVy ID0gTlVMTCwKKwkudHhfYnVmX2FsbG9jID0gZHNpX3R4X2J1Zl9hbGxvY182ZywKKwkudHhfYnVm X2dldCA9IGRzaV90eF9idWZfZ2V0XzZnLAorCS50eF9idWZfcHV0ID0gZHNpX3R4X2J1Zl9wdXRf NmcsCisJLmRtYV9iYXNlX2dldCA9IGRzaV9kbWFfYmFzZV9nZXRfNmcsCisJLmNhbGNfY2xrX3Jh dGUgPSBkc2lfY2FsY19jbGtfcmF0ZV82ZywKK307CiBzdGF0aWMgY29uc3Qgc3RydWN0IG1zbV9k c2lfY2ZnX2hhbmRsZXIgZHNpX2NmZ19oYW5kbGVyc1tdID0gewotCXtNU01fRFNJX1ZFUl9NQUpP Ul9WMiwgTVNNX0RTSV9WMl9WRVJfTUlOT1JfODA2NCwgJmFwcTgwNjRfZHNpX2NmZ30sCisJe01T TV9EU0lfVkVSX01BSk9SX1YyLCBNU01fRFNJX1YyX1ZFUl9NSU5PUl84MDY0LAorCQkmYXBxODA2 NF9kc2lfY2ZnLCAmbXNtX2RzaV92Ml9ob3N0X29wc30sCiAJe01TTV9EU0lfVkVSX01BSk9SXzZH LCBNU01fRFNJXzZHX1ZFUl9NSU5PUl9WMV8wLAotCQkJCQkJJm1zbTg5NzRfYXBxODA4NF9kc2lf Y2ZnfSwKKwkJJm1zbTg5NzRfYXBxODA4NF9kc2lfY2ZnLCAmbXNtX2RzaV82Z19ob3N0X29wc30s CiAJe01TTV9EU0lfVkVSX01BSk9SXzZHLCBNU01fRFNJXzZHX1ZFUl9NSU5PUl9WMV8xLAotCQkJ CQkJJm1zbTg5NzRfYXBxODA4NF9kc2lfY2ZnfSwKKwkJJm1zbTg5NzRfYXBxODA4NF9kc2lfY2Zn LCAmbXNtX2RzaV82Z19ob3N0X29wc30sCiAJe01TTV9EU0lfVkVSX01BSk9SXzZHLCBNU01fRFNJ XzZHX1ZFUl9NSU5PUl9WMV8xXzEsCi0JCQkJCQkmbXNtODk3NF9hcHE4MDg0X2RzaV9jZmd9LAor CQkmbXNtODk3NF9hcHE4MDg0X2RzaV9jZmcsICZtc21fZHNpXzZnX2hvc3Rfb3BzfSwKIAl7TVNN X0RTSV9WRVJfTUFKT1JfNkcsIE1TTV9EU0lfNkdfVkVSX01JTk9SX1YxXzIsCi0JCQkJCQkmbXNt ODk3NF9hcHE4MDg0X2RzaV9jZmd9LAotCXtNU01fRFNJX1ZFUl9NQUpPUl82RywgTVNNX0RTSV82 R19WRVJfTUlOT1JfVjFfMywgJm1zbTg5OTRfZHNpX2NmZ30sCi0Je01TTV9EU0lfVkVSX01BSk9S XzZHLCBNU01fRFNJXzZHX1ZFUl9NSU5PUl9WMV8zXzEsICZtc204OTE2X2RzaV9jZmd9LAotCXtN U01fRFNJX1ZFUl9NQUpPUl82RywgTVNNX0RTSV82R19WRVJfTUlOT1JfVjFfNF8xLCAmbXNtODk5 Nl9kc2lfY2ZnfSwKLQl7TVNNX0RTSV9WRVJfTUFKT1JfNkcsIE1TTV9EU0lfNkdfVkVSX01JTk9S X1YyXzJfMSwgJnNkbTg0NV9kc2lfY2ZnfSwKKwkJJm1zbTg5NzRfYXBxODA4NF9kc2lfY2ZnLCAm bXNtX2RzaV82Z19ob3N0X29wc30sCisJe01TTV9EU0lfVkVSX01BSk9SXzZHLCBNU01fRFNJXzZH X1ZFUl9NSU5PUl9WMV8zLAorCQkmbXNtODk5NF9kc2lfY2ZnLCAmbXNtX2RzaV82Z19ob3N0X29w c30sCisJe01TTV9EU0lfVkVSX01BSk9SXzZHLCBNU01fRFNJXzZHX1ZFUl9NSU5PUl9WMV8zXzEs CisJCSZtc204OTE2X2RzaV9jZmcsICZtc21fZHNpXzZnX2hvc3Rfb3BzfSwKKwl7TVNNX0RTSV9W RVJfTUFKT1JfNkcsIE1TTV9EU0lfNkdfVkVSX01JTk9SX1YxXzRfMSwKKwkJJm1zbTg5OTZfZHNp X2NmZywgJm1zbV9kc2lfNmdfaG9zdF9vcHN9LAorCXtNU01fRFNJX1ZFUl9NQUpPUl82RywgTVNN X0RTSV82R19WRVJfTUlOT1JfVjJfMl8xLAorCQkmc2RtODQ1X2RzaV9jZmcsICZtc21fZHNpXzZn X2hvc3Rfb3BzfSwKIH07CiAKIGNvbnN0IHN0cnVjdCBtc21fZHNpX2NmZ19oYW5kbGVyICptc21f ZHNpX2NmZ19nZXQodTMyIG1ham9yLCB1MzIgbWlub3IpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vbXNtL2RzaS9kc2lfaG9zdC5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2hv c3QuYwppbmRleCA3YTAzYTk0Li5mN2EwNjZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2RzaS9kc2lfaG9zdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9ob3N0 LmMKQEAgLTMzMSw2ICszMzEsNTQgQEAgc3RhdGljIGludCBkc2lfcmVndWxhdG9yX2luaXQoc3Ry dWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCiAJcmV0dXJuIDA7CiB9CiAKK2ludCBkc2lfY2xr X2luaXRfdjIoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCit7CisJc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldiA9IG1zbV9ob3N0LT5wZGV2OworCWludCByZXQgPSAwOworCisJbXNt X2hvc3QtPnNyY19jbGsgPSBtc21fY2xrX2dldChwZGV2LCAic3JjIik7CisKKwlpZiAoSVNfRVJS KG1zbV9ob3N0LT5zcmNfY2xrKSkgeworCQlyZXQgPSBQVFJfRVJSKG1zbV9ob3N0LT5zcmNfY2xr KTsKKwkJcHJfZXJyKCIlczogY2FuJ3QgZmluZCBzcmMgY2xvY2suIHJldD0lZFxuIiwKKwkJCV9f ZnVuY19fLCByZXQpOworCQltc21faG9zdC0+c3JjX2NsayA9IE5VTEw7CisJCXJldHVybiByZXQ7 CisJfQorCisJbXNtX2hvc3QtPmVzY19jbGtfc3JjID0gY2xrX2dldF9wYXJlbnQobXNtX2hvc3Qt PmVzY19jbGspOworCWlmICghbXNtX2hvc3QtPmVzY19jbGtfc3JjKSB7CisJCXJldCA9IC1FTk9E RVY7CisJCXByX2VycigiJXM6IGNhbid0IGdldCBlc2MgY2xvY2sgcGFyZW50LiByZXQ9JWRcbiIs CisJCQlfX2Z1bmNfXywgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwltc21faG9zdC0+ZHNp X2Nsa19zcmMgPSBjbGtfZ2V0X3BhcmVudChtc21faG9zdC0+c3JjX2Nsayk7CisJaWYgKCFtc21f aG9zdC0+ZHNpX2Nsa19zcmMpIHsKKwkJcmV0ID0gLUVOT0RFVjsKKwkJcHJfZXJyKCIlczogY2Fu J3QgZ2V0IHNyYyBjbG9jayBwYXJlbnQuIHJldD0lZFxuIiwKKwkJCV9fZnVuY19fLCByZXQpOwor CX0KKworCXJldHVybiByZXQ7Cit9CisKK2ludCBkc2lfY2xrX2luaXRfNmdfdjIoc3RydWN0IG1z bV9kc2lfaG9zdCAqbXNtX2hvc3QpCit7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9 IG1zbV9ob3N0LT5wZGV2OworCWludCByZXQgPSAwOworCisJbXNtX2hvc3QtPmJ5dGVfaW50Zl9j bGsgPSBtc21fY2xrX2dldChwZGV2LCAiYnl0ZV9pbnRmIik7CisJaWYgKElTX0VSUihtc21faG9z dC0+Ynl0ZV9pbnRmX2NsaykpIHsKKwkJcmV0ID0gUFRSX0VSUihtc21faG9zdC0+Ynl0ZV9pbnRm X2Nsayk7CisJCXByX2VycigiJXM6IGNhbid0IGZpbmQgYnl0ZV9pbnRmIGNsb2NrLiByZXQ9JWRc biIsCisJCQlfX2Z1bmNfXywgcmV0KTsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCiBzdGF0aWMg aW50IGRzaV9jbGtfaW5pdChzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKIHsKIAlzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gbXNtX2hvc3QtPnBkZXY7CkBAIC00OTcsNyArNTQ1 LDcgQEAgaW50IG1zbV9kc2lfcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQogCXJl dHVybiBkc2lfYnVzX2Nsa19lbmFibGUobXNtX2hvc3QpOwogfQogCi1zdGF0aWMgaW50IGRzaV9s aW5rX2Nsa19lbmFibGVfNmcoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCitpbnQgZHNp X2xpbmtfY2xrX2VuYWJsZV82ZyhzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKIHsKIAlp bnQgcmV0OwogCkBAIC01NjUsNyArNjEzLDcgQEAgc3RhdGljIGludCBkc2lfbGlua19jbGtfZW5h YmxlXzZnKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQogCXJldHVybiByZXQ7CiB9CiAK LXN0YXRpYyBpbnQgZHNpX2xpbmtfY2xrX2VuYWJsZV92MihzdHJ1Y3QgbXNtX2RzaV9ob3N0ICpt c21faG9zdCkKK2ludCBkc2lfbGlua19jbGtfZW5hYmxlX3YyKHN0cnVjdCBtc21fZHNpX2hvc3Qg Km1zbV9ob3N0KQogewogCWludCByZXQ7CiAKQEAgLTY0Myw2ICs2OTEsMjMgQEAgc3RhdGljIGlu dCBkc2lfbGlua19jbGtfZW5hYmxlKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQogCQly ZXR1cm4gZHNpX2xpbmtfY2xrX2VuYWJsZV92Mihtc21faG9zdCk7CiB9CiAKK3ZvaWQgZHNpX2xp bmtfY2xrX2Rpc2FibGVfNmcoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCit7CisJY2xr X2Rpc2FibGVfdW5wcmVwYXJlKG1zbV9ob3N0LT5lc2NfY2xrKTsKKwljbGtfZGlzYWJsZV91bnBy ZXBhcmUobXNtX2hvc3QtPnBpeGVsX2Nsayk7CisJaWYgKG1zbV9ob3N0LT5ieXRlX2ludGZfY2xr KQorCQljbGtfZGlzYWJsZV91bnByZXBhcmUobXNtX2hvc3QtPmJ5dGVfaW50Zl9jbGspOworCWNs a19kaXNhYmxlX3VucHJlcGFyZShtc21faG9zdC0+Ynl0ZV9jbGspOworfQorCit2b2lkIGRzaV9s aW5rX2Nsa19kaXNhYmxlX3YyKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQoreworCWNs a19kaXNhYmxlX3VucHJlcGFyZShtc21faG9zdC0+cGl4ZWxfY2xrKTsKKwljbGtfZGlzYWJsZV91 bnByZXBhcmUobXNtX2hvc3QtPnNyY19jbGspOworCWNsa19kaXNhYmxlX3VucHJlcGFyZShtc21f aG9zdC0+ZXNjX2Nsayk7CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKG1zbV9ob3N0LT5ieXRlX2Ns ayk7Cit9CisKIHN0YXRpYyB2b2lkIGRzaV9saW5rX2Nsa19kaXNhYmxlKHN0cnVjdCBtc21fZHNp X2hvc3QgKm1zbV9ob3N0KQogewogCWNvbnN0IHN0cnVjdCBtc21fZHNpX2NmZ19oYW5kbGVyICpj ZmdfaG5kID0gbXNtX2hvc3QtPmNmZ19obmQ7CkBAIC02NjEsNiArNzI2LDk0IEBAIHN0YXRpYyB2 b2lkIGRzaV9saW5rX2Nsa19kaXNhYmxlKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQog CX0KIH0KIAoraW50IGRzaV9jYWxjX2Nsa19yYXRlXzZnKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1z bV9ob3N0KQoreworCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gbXNtX2hvc3QtPm1v ZGU7CisJdTggbGFuZXMgPSBtc21faG9zdC0+bGFuZXM7CisJdTMyIGJwcCA9IGRzaV9nZXRfYnBw KG1zbV9ob3N0LT5mb3JtYXQpOworCXUzMiBwY2xrX3JhdGU7CisKKwlpZiAoIW1vZGUpIHsKKwkJ cHJfZXJyKCIlczogbW9kZSBub3Qgc2V0XG4iLCBfX2Z1bmNfXyk7CisJCXJldHVybiAtRUlOVkFM OworCX0KKworCXBjbGtfcmF0ZSA9IG1vZGUtPmNsb2NrICogMTAwMDsKKwlpZiAobGFuZXMgPiAw KSB7CisJCW1zbV9ob3N0LT5ieXRlX2Nsa19yYXRlID0gKHBjbGtfcmF0ZSAqIGJwcCkgLyAoOCAq IGxhbmVzKTsKKwl9IGVsc2UgeworCQlwcl9lcnIoIiVzOiBmb3JjaW5nIG1kc3NfZHNpIGxhbmVz IHRvIDFcbiIsIF9fZnVuY19fKTsKKwkJbXNtX2hvc3QtPmJ5dGVfY2xrX3JhdGUgPSAocGNsa19y YXRlICogYnBwKSAvIDg7CisJfQorCisJREJHKCJwY2xrPSVkLCBiY2xrPSVkIiwgcGNsa19yYXRl LCBtc21faG9zdC0+Ynl0ZV9jbGtfcmF0ZSk7CisKKwltc21faG9zdC0+ZXNjX2Nsa19yYXRlID0g Y2xrX2dldF9yYXRlKG1zbV9ob3N0LT5lc2NfY2xrKTsKKworCXJldHVybiAwOworfQorCitpbnQg ZHNpX2NhbGNfY2xrX3JhdGVfdjIoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCit7CisJ c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSBtc21faG9zdC0+bW9kZTsKKwl1OCBsYW5l cyA9IG1zbV9ob3N0LT5sYW5lczsKKwl1MzIgYnBwID0gZHNpX2dldF9icHAobXNtX2hvc3QtPmZv cm1hdCk7CisJdTMyIHBjbGtfcmF0ZTsKKwl1bnNpZ25lZCBpbnQgZXNjX21oeiwgZXNjX2RpdjsK Kwl1bnNpZ25lZCBsb25nIGJ5dGVfbWh6OworCisJaWYgKCFtb2RlKSB7CisJCXByX2VycigiJXM6 IG1vZGUgbm90IHNldFxuIiwgX19mdW5jX18pOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlw Y2xrX3JhdGUgPSBtb2RlLT5jbG9jayAqIDEwMDA7CisJaWYgKGxhbmVzID4gMCkgeworCQltc21f aG9zdC0+Ynl0ZV9jbGtfcmF0ZSA9IChwY2xrX3JhdGUgKiBicHApIC8gKDggKiBsYW5lcyk7CisJ fSBlbHNlIHsKKwkJcHJfZXJyKCIlczogZm9yY2luZyBtZHNzX2RzaSBsYW5lcyB0byAxXG4iLCBf X2Z1bmNfXyk7CisJCW1zbV9ob3N0LT5ieXRlX2Nsa19yYXRlID0gKHBjbGtfcmF0ZSAqIGJwcCkg LyA4OworCX0KKworCURCRygicGNsaz0lZCwgYmNsaz0lZCIsIHBjbGtfcmF0ZSwgbXNtX2hvc3Qt PmJ5dGVfY2xrX3JhdGUpOworCisJbXNtX2hvc3QtPnNyY19jbGtfcmF0ZSA9IChwY2xrX3JhdGUg KiBicHApIC8gODsKKworCS8qCisJICogZXNjIGNsb2NrIGlzIGJ5dGUgY2xvY2sgZm9sbG93ZWQg YnkgYSA0IGJpdCBkaXZpZGVyLAorCSAqIHdlIG5lZWQgdG8gZmluZCBhbiBlc2NhcGUgY2xvY2sg ZnJlcXVlbmN5IHdpdGhpbiB0aGUKKwkgKiBtaXBpIERTSSBzcGVjIHJhbmdlIHdpdGhpbiB0aGUg bWF4aW11bSBkaXZpZGVyIGxpbWl0CisJICogV2UgaXRlcmF0ZSBoZXJlIGJldHdlZW4gYW4gZXNj YXBlIGNsb2NrIGZyZXF1ZW5jZXkKKwkgKiBiZXR3ZWVuIDIwIE1oeiB0byA1IE1oeiBhbmQgcGlj ayB1cCB0aGUgZmlyc3Qgb25lCisJICogdGhhdCBjYW4gYmUgc3VwcG9ydGVkIGJ5IG91ciBkaXZp ZGVyCisJICovCisKKwlieXRlX21oeiA9IG1zbV9ob3N0LT5ieXRlX2Nsa19yYXRlIC8gMTAwMDAw MDsKKworCWZvciAoZXNjX21oeiA9IDIwOyBlc2NfbWh6ID49IDU7IGVzY19taHotLSkgeworCQll c2NfZGl2ID0gRElWX1JPVU5EX1VQKGJ5dGVfbWh6LCBlc2NfbWh6KTsKKworCQkvKgorCQkgKiBU T0RPOiBJZGVhbGx5LCB3ZSBzaG91bGRuJ3Qga25vdyB3aGF0IHNvcnQgb2YgZGl2aWRlcgorCQkg KiBpcyBhdmFpbGFibGUgaW4gbW1zc19jYywgd2UncmUganVzdCBhc3N1bWluZyB0aGF0CisJCSAq IGl0J2xsIGFsd2F5cyBiZSBhIDQgYml0IGRpdmlkZXIuIE5lZWQgdG8gY29tZSB1cCB3aXRoCisJ CSAqIGEgYmV0dGVyIHdheSBoZXJlLgorCQkgKi8KKwkJaWYgKGVzY19kaXYgPj0gMSAmJiBlc2Nf ZGl2IDw9IDE2KQorCQkJYnJlYWs7CisJfQorCisJaWYgKGVzY19taHogPCA1KQorCQlyZXR1cm4g LUVJTlZBTDsKKworCW1zbV9ob3N0LT5lc2NfY2xrX3JhdGUgPSBtc21faG9zdC0+Ynl0ZV9jbGtf cmF0ZSAvIGVzY19kaXY7CisKKwlEQkcoImVzYz0lZCwgc3JjPSVkIiwgbXNtX2hvc3QtPmVzY19j bGtfcmF0ZSwKKwkJbXNtX2hvc3QtPnNyY19jbGtfcmF0ZSk7CisKKwlyZXR1cm4gMDsKK30KKwog c3RhdGljIGludCBkc2lfY2FsY19jbGtfcmF0ZShzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9z dCkKIHsKIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9IG1zbV9ob3N0LT5tb2RlOwpA QCAtMTAwOCw2ICsxMTYxLDU5IEBAIHN0YXRpYyB2b2lkIGRzaV93YWl0NHZpZGVvX2VuZ19idXN5 KHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQogCX0KIH0KIAoraW50IGRzaV90eF9idWZf YWxsb2NfNmcoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QsIGludCBzaXplKQoreworCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBtc21faG9zdC0+ZGV2OworCXN0cnVjdCBtc21fZHJtX3By aXZhdGUgKnByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCWludCByZXQ7CisJdWludDY0X3QgaW92 YTsKKworCW1zbV9ob3N0LT50eF9nZW1fb2JqID0gbXNtX2dlbV9uZXcoZGV2LCBzaXplLCBNU01f Qk9fVU5DQUNIRUQpOworCWlmIChJU19FUlIobXNtX2hvc3QtPnR4X2dlbV9vYmopKSB7CisJCXJl dCA9IFBUUl9FUlIobXNtX2hvc3QtPnR4X2dlbV9vYmopOworCQlwcl9lcnIoIiVzOiBmYWlsZWQg dG8gYWxsb2NhdGUgZ2VtLCAlZFxuIiwKKwkJCV9fZnVuY19fLCByZXQpOworCQltc21faG9zdC0+ dHhfZ2VtX29iaiA9IE5VTEw7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0ID0gbXNtX2dlbV9n ZXRfaW92YShtc21faG9zdC0+dHhfZ2VtX29iaiwKKwkJCXByaXYtPmttcy0+YXNwYWNlLCAmaW92 YSk7CisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJaWYgKHJldCkgeworCQlw cl9lcnIoIiVzOiBmYWlsZWQgdG8gZ2V0IGlvdmEsICVkXG4iLCBfX2Z1bmNfXywgcmV0KTsKKwkJ cmV0dXJuIHJldDsKKwl9CisKKwlpZiAoaW92YSAmIDB4MDcpIHsKKwkJcHJfZXJyKCIlczogYnVm IE5PVCA4IGJ5dGVzIGFsaWduZWRcbiIsIF9fZnVuY19fKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJ fQorCisJbXNtX2hvc3QtPnR4X3NpemUgPSBtc21faG9zdC0+dHhfZ2VtX29iai0+c2l6ZTsKKwor CXJldHVybiAwOworfQorCitpbnQgZHNpX3R4X2J1Zl9hbGxvY192MihzdHJ1Y3QgbXNtX2RzaV9o b3N0ICptc21faG9zdCwgaW50IHNpemUpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG1z bV9ob3N0LT5kZXY7CisJaW50IHJldDsKKworCW1zbV9ob3N0LT50eF9idWYgPSBkbWFfYWxsb2Nf Y29oZXJlbnQoZGV2LT5kZXYsIHNpemUsCisJCQkJCSZtc21faG9zdC0+dHhfYnVmX3BhZGRyLCBH RlBfS0VSTkVMKTsKKwlpZiAoIW1zbV9ob3N0LT50eF9idWYpIHsKKwkJcmV0ID0gLUVOT01FTTsK KwkJcHJfZXJyKCIlczogZmFpbGVkIHRvIGFsbG9jYXRlIHR4IGJ1ZiwgJWRcbiIsCisJCQlfX2Z1 bmNfXywgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwltc21faG9zdC0+dHhfc2l6ZSA9IHNp emU7CisKKwlyZXR1cm4gMDsKK30KKwogLyogZHNpX2NtZCAqLwogc3RhdGljIGludCBkc2lfdHhf YnVmX2FsbG9jKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0LCBpbnQgc2l6ZSkKIHsKQEAg LTEwNzIsNiArMTI3OCwyMSBAQCBzdGF0aWMgdm9pZCBkc2lfdHhfYnVmX2ZyZWUoc3RydWN0IG1z bV9kc2lfaG9zdCAqbXNtX2hvc3QpCiAJCQltc21faG9zdC0+dHhfYnVmX3BhZGRyKTsKIH0KIAor dm9pZCAqZHNpX3R4X2J1Zl9nZXRfNmcoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCit7 CisJcmV0dXJuIG1zbV9nZW1fZ2V0X3ZhZGRyKG1zbV9ob3N0LT50eF9nZW1fb2JqKTsKK30KKwor dm9pZCAqZHNpX3R4X2J1Zl9nZXRfdjIoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCit7 CisJcmV0dXJuIG1zbV9ob3N0LT50eF9idWY7Cit9CisKK3ZvaWQgZHNpX3R4X2J1Zl9wdXRfNmco c3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCit7CisJbXNtX2dlbV9wdXRfdmFkZHIobXNt X2hvc3QtPnR4X2dlbV9vYmopOworfQorCiAvKgogICogcHJlcGFyZSBjbWQgYnVmZmVyIHRvIGJl IHR4ZWQKICAqLwpAQCAtMTE3Myw2ICsxMzk0LDMxIEBAIHN0YXRpYyBpbnQgZHNpX2xvbmdfcmVh ZF9yZXNwKHU4ICpidWYsIGNvbnN0IHN0cnVjdCBtaXBpX2RzaV9tc2cgKm1zZykKIAlyZXR1cm4g bXNnLT5yeF9sZW47CiB9CiAKK2ludCBkc2lfZG1hX2Jhc2VfZ2V0XzZnKHN0cnVjdCBtc21fZHNp X2hvc3QgKm1zbV9ob3N0LCB1aW50NjRfdCAqZG1hX2Jhc2UpCit7CisJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IG1zbV9ob3N0LT5kZXY7CisJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7CisJdWludDY0X3QgKippb3ZhOworCWludCByZXQ7CisKKwlpZiAo IWRtYV9iYXNlKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlvdmEgPSAmZG1hX2Jhc2U7CisJcmV0 ID0gbXNtX2dlbV9nZXRfaW92YShtc21faG9zdC0+dHhfZ2VtX29iaiwKKwkJCQlwcml2LT5rbXMt PmFzcGFjZSwgKmlvdmEpOworCXJldHVybiByZXQ7Cit9CisKK2ludCBkc2lfZG1hX2Jhc2VfZ2V0 X3YyKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0LCB1aW50NjRfdCAqZG1hX2Jhc2UpCit7 CisJaWYgKCFkbWFfYmFzZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkqZG1hX2Jhc2UgPSBtc21f aG9zdC0+dHhfYnVmX3BhZGRyOworCXJldHVybiAwOworfQorCiBzdGF0aWMgaW50IGRzaV9jbWRf ZG1hX3R4KHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0LCBpbnQgbGVuKQogewogCWNvbnN0 IHN0cnVjdCBtc21fZHNpX2NmZ19oYW5kbGVyICpjZmdfaG5kID0gbXNtX2hvc3QtPmNmZ19obmQ7 Ci0tIApUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2Yg dGhlIENvZGUgQXVyb3JhIEZvcnVtLAphIExpbnV4IEZvdW5kYXRpb24gQ29sbGFib3JhdGl2ZSBQ cm9qZWN0CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpk cmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK