From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sibi S Subject: Re: [PATCH v2 2/3] drm/msm/dsi: add implementation for helper functions Date: Mon, 26 Mar 2018 22:46:28 +0530 Message-ID: <0f2f9566-8601-71f8-71ad-809a3ef79ac2@codeaurora.org> References: <20180319194103.2454-1-sibis@codeaurora.org> <20180319194103.2454-3-sibis@codeaurora.org> <20180319202348.GE28808@jcrouse-lnx.qualcomm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180319202348.GE28808@jcrouse-lnx.qualcomm.com> Content-Language: en-US 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, dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org List-Id: linux-arm-msm@vger.kernel.org SGkgSm9yZGFuLApUaGFua3MgZm9yIHRoZSByZXZpZXcuCgpPbiAwMy8yMC8yMDE4IDAxOjUzIEFN LCBKb3JkYW4gQ3JvdXNlIHdyb3RlOgo+IE9uIFR1ZSwgTWFyIDIwLCAyMDE4IGF0IDAxOjExOjAy QU0gKzA1MzAsIFNpYmkgUyB3cm90ZToKPj4gQWRkIGRzaSBob3N0IGhlbHBlciBmdW5jdGlvbiBp bXBsZW1lbnRhdGlvbiBmb3IgRFNJIHYyCj4+IERTSSA2RyAxLnggYW5kIERTSSA2RyB2Mi4wKyBj b250cm9sbGVycwo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBTaWJpIFMgPHNpYmlzQGNvZGVhdXJvcmEu b3JnPgo+PiAtLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2kuaCAgICAgIHwgIDE1 ICsrKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9jZmcuYyAgfCAgNTYgKysrKysr Ky0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2hvc3QuYyB8IDIzNiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4+ICAgMyBmaWxlcyBjaGFuZ2VkLCAyOTYg aW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2RzaS9kc2kuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaS5oCj4+ IGluZGV4IDgwYmU4M2U4ZmRlYy4uZGZhMDQ5ZDg3NmJkIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2RzaS9kc2kuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9k c2kuaAo+PiBAQCAtMTgzLDYgKzE4MywyMSBAQCBpbnQgbXNtX2RzaV9ob3N0X21vZGVzZXRfaW5p dChzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCwKPj4gICBpbnQgbXNtX2RzaV9ob3N0X2luaXQo c3RydWN0IG1zbV9kc2kgKm1zbV9kc2kpOwo+PiAgIGludCBtc21fZHNpX3J1bnRpbWVfc3VzcGVu ZChzdHJ1Y3QgZGV2aWNlICpkZXYpOwo+PiAgIGludCBtc21fZHNpX3J1bnRpbWVfcmVzdW1lKHN0 cnVjdCBkZXZpY2UgKmRldik7Cj4+ICtpbnQgZHNpX2xpbmtfY2xrX2VuYWJsZV82ZyhzdHJ1Y3Qg bXNtX2RzaV9ob3N0ICptc21faG9zdCk7Cj4+ICtpbnQgZHNpX2xpbmtfY2xrX2VuYWJsZV92Mihz dHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCk7Cj4+ICt2b2lkIGRzaV9saW5rX2Nsa19kaXNh YmxlXzZnKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KTsKPj4gK3ZvaWQgZHNpX2xpbmtf Y2xrX2Rpc2FibGVfdjIoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpOwo+PiAraW50IGRz aV90eF9idWZfYWxsb2NfNmcoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QsIGludCBzaXpl KTsKPj4gK2ludCBkc2lfdHhfYnVmX2FsbG9jX3YyKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9o b3N0LCBpbnQgc2l6ZSk7Cj4+ICt2b2lkICpkc2lfdHhfYnVmX2dldF82ZyhzdHJ1Y3QgbXNtX2Rz aV9ob3N0ICptc21faG9zdCk7Cj4+ICt2b2lkICpkc2lfdHhfYnVmX2dldF92MihzdHJ1Y3QgbXNt X2RzaV9ob3N0ICptc21faG9zdCk7Cj4+ICt2b2lkIGRzaV90eF9idWZfcHV0XzZnKHN0cnVjdCBt c21fZHNpX2hvc3QgKm1zbV9ob3N0KTsKPj4gK2ludCBkc2lfZG1hX2Jhc2VfZ2V0XzZnKHN0cnVj dCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0LCB1aW50NjRfdCAqaW92YSk7Cj4+ICtpbnQgZHNpX2Rt YV9iYXNlX2dldF92MihzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCwgdWludDY0X3QgKmlv dmEpOwo+PiAraW50IGRzaV9jbGtfaW5pdF92MihzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9z dCk7Cj4+ICtpbnQgZHNpX2Nsa19pbml0XzZnX3YyKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9o b3N0KTsKPj4gK2ludCBkc2lfY2FsY19jbGtfcmF0ZV92MihzdHJ1Y3QgbXNtX2RzaV9ob3N0ICpt c21faG9zdCk7Cj4+ICtpbnQgZHNpX2NhbGNfY2xrX3JhdGVfNmcoc3RydWN0IG1zbV9kc2lfaG9z dCAqbXNtX2hvc3QpOwo+PiAgIAo+PiAgIC8qIGRzaSBwaHkgKi8KPj4gICBzdHJ1Y3QgbXNtX2Rz aV9waHk7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfY2ZnLmMg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfY2ZnLmMKPj4gaW5kZXggMDMyN2JiNTRiMDFi Li5kY2RmYjFiYjU0ZjkgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2Rz aV9jZmcuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfY2ZnLmMKPj4gQEAg LTEzNiwyMCArMTM2LDU4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbXNtX2RzaV9jb25maWcgc2Rt ODQ1X2RzaV9jZmcgPSB7Cj4+ICAgCS5udW1fZHNpID0gMiwKPj4gICB9Owo+PiAgIAo+PiArY29u c3Qgc3RhdGljIHN0cnVjdCBtc21fZHNpX2hvc3RfY2ZnX29wcyBtc21fZHNpX3YyX2hvc3Rfb3Bz ID0gewo+PiArCS5saW5rX2Nsa19lbmFibGUgPSBkc2lfbGlua19jbGtfZW5hYmxlX3YyLAo+PiAr CS5saW5rX2Nsa19kaXNhYmxlID0gZHNpX2xpbmtfY2xrX2Rpc2FibGVfdjIsCj4+ICsJLmNsa19p bml0X3ZlciA9IGRzaV9jbGtfaW5pdF92MiwKPj4gKwkudHhfYnVmX2FsbG9jID0gZHNpX3R4X2J1 Zl9hbGxvY192MiwKPj4gKwkudHhfYnVmX2dldCA9IGRzaV90eF9idWZfZ2V0X3YyLAo+PiArCS50 eF9idWZfcHV0ID0gTlVMTCwKPj4gKwkuZG1hX2Jhc2VfZ2V0ID0gZHNpX2RtYV9iYXNlX2dldF92 MiwKPj4gKwkuY2FsY19jbGtfcmF0ZSA9IGRzaV9jYWxjX2Nsa19yYXRlX3YyLAo+PiArfTsKPj4g Kwo+PiArY29uc3Qgc3RhdGljIHN0cnVjdCBtc21fZHNpX2hvc3RfY2ZnX29wcyBtc21fZHNpXzZn X2hvc3Rfb3BzID0gewo+PiArCS5saW5rX2Nsa19lbmFibGUgPSBkc2lfbGlua19jbGtfZW5hYmxl XzZnLAo+PiArCS5saW5rX2Nsa19kaXNhYmxlID0gZHNpX2xpbmtfY2xrX2Rpc2FibGVfNmcsCj4+ ICsJLmNsa19pbml0X3ZlciA9IE5VTEwsCj4+ICsJLnR4X2J1Zl9hbGxvYyA9IGRzaV90eF9idWZf YWxsb2NfNmcsCj4+ICsJLnR4X2J1Zl9nZXQgPSBkc2lfdHhfYnVmX2dldF82ZywKPj4gKwkudHhf YnVmX3B1dCA9IGRzaV90eF9idWZfcHV0XzZnLAo+PiArCS5kbWFfYmFzZV9nZXQgPSBkc2lfZG1h X2Jhc2VfZ2V0XzZnLAo+PiArCS5jYWxjX2Nsa19yYXRlID0gZHNpX2NhbGNfY2xrX3JhdGVfNmcs Cj4+ICt9Owo+PiArCj4+ICtjb25zdCBzdGF0aWMgc3RydWN0IG1zbV9kc2lfaG9zdF9jZmdfb3Bz IG1zbV9kc2lfNmdfdjJfaG9zdF9vcHMgPSB7Cj4+ICsJLmxpbmtfY2xrX2VuYWJsZSA9IGRzaV9s aW5rX2Nsa19lbmFibGVfNmcsCj4+ICsJLmxpbmtfY2xrX2Rpc2FibGUgPSBkc2lfbGlua19jbGtf ZGlzYWJsZV82ZywKPj4gKwkuY2xrX2luaXRfdmVyID0gZHNpX2Nsa19pbml0XzZnX3YyLAo+PiAr CS50eF9idWZfYWxsb2MgPSBkc2lfdHhfYnVmX2FsbG9jXzZnLAo+PiArCS50eF9idWZfZ2V0ID0g ZHNpX3R4X2J1Zl9nZXRfNmcsCj4+ICsJLnR4X2J1Zl9wdXQgPSBkc2lfdHhfYnVmX3B1dF82ZywK Pj4gKwkuZG1hX2Jhc2VfZ2V0ID0gZHNpX2RtYV9iYXNlX2dldF82ZywKPj4gKwkuY2FsY19jbGtf cmF0ZSA9IGRzaV9jYWxjX2Nsa19yYXRlXzZnLAo+PiArfTsKPj4gKwo+PiAgIHN0YXRpYyBjb25z dCBzdHJ1Y3QgbXNtX2RzaV9jZmdfaGFuZGxlciBkc2lfY2ZnX2hhbmRsZXJzW10gPSB7Cj4+IC0J e01TTV9EU0lfVkVSX01BSk9SX1YyLCBNU01fRFNJX1YyX1ZFUl9NSU5PUl84MDY0LCAmYXBxODA2 NF9kc2lfY2ZnfSwKPj4gKwl7TVNNX0RTSV9WRVJfTUFKT1JfVjIsIE1TTV9EU0lfVjJfVkVSX01J Tk9SXzgwNjQsCj4+ICsJCSZhcHE4MDY0X2RzaV9jZmcsICZtc21fZHNpX3YyX2hvc3Rfb3BzfSwK Pj4gICAJe01TTV9EU0lfVkVSX01BSk9SXzZHLCBNU01fRFNJXzZHX1ZFUl9NSU5PUl9WMV8wLAo+ PiAtCQkJCQkJJm1zbTg5NzRfYXBxODA4NF9kc2lfY2ZnfSwKPj4gKwkJJm1zbTg5NzRfYXBxODA4 NF9kc2lfY2ZnLCAmbXNtX2RzaV82Z19ob3N0X29wc30sCj4+ICAgCXtNU01fRFNJX1ZFUl9NQUpP Ul82RywgTVNNX0RTSV82R19WRVJfTUlOT1JfVjFfMSwKPj4gLQkJCQkJCSZtc204OTc0X2FwcTgw ODRfZHNpX2NmZ30sCj4+ICsJCSZtc204OTc0X2FwcTgwODRfZHNpX2NmZywgJm1zbV9kc2lfNmdf aG9zdF9vcHN9LAo+PiAgIAl7TVNNX0RTSV9WRVJfTUFKT1JfNkcsIE1TTV9EU0lfNkdfVkVSX01J Tk9SX1YxXzFfMSwKPj4gLQkJCQkJCSZtc204OTc0X2FwcTgwODRfZHNpX2NmZ30sCj4+ICsJCSZt c204OTc0X2FwcTgwODRfZHNpX2NmZywgJm1zbV9kc2lfNmdfaG9zdF9vcHN9LAo+PiAgIAl7TVNN X0RTSV9WRVJfTUFKT1JfNkcsIE1TTV9EU0lfNkdfVkVSX01JTk9SX1YxXzIsCj4+IC0JCQkJCQkm bXNtODk3NF9hcHE4MDg0X2RzaV9jZmd9LAo+PiAtCXtNU01fRFNJX1ZFUl9NQUpPUl82RywgTVNN X0RTSV82R19WRVJfTUlOT1JfVjFfMywgJm1zbTg5OTRfZHNpX2NmZ30sCj4+IC0Je01TTV9EU0lf VkVSX01BSk9SXzZHLCBNU01fRFNJXzZHX1ZFUl9NSU5PUl9WMV8zXzEsICZtc204OTE2X2RzaV9j Zmd9LAo+PiAtCXtNU01fRFNJX1ZFUl9NQUpPUl82RywgTVNNX0RTSV82R19WRVJfTUlOT1JfVjFf NF8xLCAmbXNtODk5Nl9kc2lfY2ZnfSwKPj4gLQl7TVNNX0RTSV9WRVJfTUFKT1JfNkcsIE1TTV9E U0lfNkdfVkVSX01JTk9SX1YyXzJfMSwgJnNkbTg0NV9kc2lfY2ZnfSwKPj4gKwkJJm1zbTg5NzRf YXBxODA4NF9kc2lfY2ZnLCAmbXNtX2RzaV82Z19ob3N0X29wc30sCj4+ICsJe01TTV9EU0lfVkVS X01BSk9SXzZHLCBNU01fRFNJXzZHX1ZFUl9NSU5PUl9WMV8zLAo+PiArCQkmbXNtODk5NF9kc2lf Y2ZnLCAmbXNtX2RzaV82Z19ob3N0X29wc30sCj4+ICsJe01TTV9EU0lfVkVSX01BSk9SXzZHLCBN U01fRFNJXzZHX1ZFUl9NSU5PUl9WMV8zXzEsCj4+ICsJCSZtc204OTE2X2RzaV9jZmcsICZtc21f ZHNpXzZnX2hvc3Rfb3BzfSwKPj4gKwl7TVNNX0RTSV9WRVJfTUFKT1JfNkcsIE1TTV9EU0lfNkdf VkVSX01JTk9SX1YxXzRfMSwKPj4gKwkJJm1zbTg5OTZfZHNpX2NmZywgJm1zbV9kc2lfNmdfaG9z dF9vcHN9LAo+PiArCXtNU01fRFNJX1ZFUl9NQUpPUl82RywgTVNNX0RTSV82R19WRVJfTUlOT1Jf VjJfMl8xLAo+PiArCQkmc2RtODQ1X2RzaV9jZmcsICZtc21fZHNpXzZnX3YyX2hvc3Rfb3BzfSwK Pj4gICB9Owo+PiAgIAo+PiAgIGNvbnN0IHN0cnVjdCBtc21fZHNpX2NmZ19oYW5kbGVyICptc21f ZHNpX2NmZ19nZXQodTMyIG1ham9yLCB1MzIgbWlub3IpCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2RzaS9kc2lfaG9zdC5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNp X2hvc3QuYwo+PiBpbmRleCA3YTAzYTk0ODk3MDguLjc4ZWE0NTQwZjBlZSAxMDA2NDQKPj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2hvc3QuYwo+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL2RzaS9kc2lfaG9zdC5jCj4+IEBAIC0zMzEsNiArMzMxLDU0IEBAIHN0YXRpYyBp bnQgZHNpX3JlZ3VsYXRvcl9pbml0KHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQo+PiAg IAlyZXR1cm4gMDsKPj4gICB9Cj4+ICAgCj4+ICtpbnQgZHNpX2Nsa19pbml0X3YyKHN0cnVjdCBt c21fZHNpX2hvc3QgKm1zbV9ob3N0KQo+PiArewo+PiArCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYgPSBtc21faG9zdC0+cGRldjsKPj4gKwlpbnQgcmV0ID0gMDsKPj4gKwo+PiArCW1zbV9o b3N0LT5zcmNfY2xrID0gbXNtX2Nsa19nZXQocGRldiwgInNyYyIpOwo+PiArCj4+ICsJaWYgKElT X0VSUihtc21faG9zdC0+c3JjX2NsaykpIHsKPj4gKwkJcmV0ID0gUFRSX0VSUihtc21faG9zdC0+ c3JjX2Nsayk7Cj4+ICsJCXByX2VycigiJXM6IGNhbid0IGZpbmQgc3JjIGNsb2NrLiByZXQ9JWRc biIsCj4+ICsJCQlfX2Z1bmNfXywgcmV0KTsKPj4gKwkJbXNtX2hvc3QtPnNyY19jbGsgPSBOVUxM Owo+PiArCQlyZXR1cm4gcmV0Owo+PiArCX0KPj4gKwo+PiArCW1zbV9ob3N0LT5lc2NfY2xrX3Ny YyA9IGNsa19nZXRfcGFyZW50KG1zbV9ob3N0LT5lc2NfY2xrKTsKPj4gKwlpZiAoIW1zbV9ob3N0 LT5lc2NfY2xrX3NyYykgewo+PiArCQlyZXQgPSAtRU5PREVWOwo+PiArCQlwcl9lcnIoIiVzOiBj YW4ndCBnZXQgZXNjIGNsb2NrIHBhcmVudC4gcmV0PSVkXG4iLAo+PiArCQkJX19mdW5jX18sIHJl dCk7Cj4+ICsJCXJldHVybiByZXQ7Cj4+ICsJfQo+PiArCj4+ICsJbXNtX2hvc3QtPmRzaV9jbGtf c3JjID0gY2xrX2dldF9wYXJlbnQobXNtX2hvc3QtPnNyY19jbGspOwo+PiArCWlmICghbXNtX2hv c3QtPmRzaV9jbGtfc3JjKSB7Cj4+ICsJCXJldCA9IC1FTk9ERVY7Cj4+ICsJCXByX2VycigiJXM6 IGNhbid0IGdldCBzcmMgY2xvY2sgcGFyZW50LiByZXQ9JWRcbiIsCj4+ICsJCQlfX2Z1bmNfXywg cmV0KTsKPj4gKwl9Cj4+ICsKPj4gKwlyZXR1cm4gcmV0Owo+PiArfQo+PiArCj4+ICtpbnQgZHNp X2Nsa19pbml0XzZnX3YyKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQo+PiArewo+PiAr CXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSBtc21faG9zdC0+cGRldjsKPj4gKwlpbnQg cmV0ID0gMDsKPj4gKwo+PiArCW1zbV9ob3N0LT5ieXRlX2ludGZfY2xrID0gbXNtX2Nsa19nZXQo cGRldiwgImJ5dGVfaW50ZiIpOwo+PiArCWlmIChJU19FUlIobXNtX2hvc3QtPmJ5dGVfaW50Zl9j bGspKSB7Cj4+ICsJCXJldCA9IFBUUl9FUlIobXNtX2hvc3QtPmJ5dGVfaW50Zl9jbGspOwo+PiAr CQlwcl9lcnIoIiVzOiBjYW4ndCBmaW5kIGJ5dGVfaW50ZiBjbG9jay4gcmV0PSVkXG4iLAo+PiAr CQkJX19mdW5jX18sIHJldCk7Cj4+ICsJfQo+PiArCj4+ICsJcmV0dXJuIHJldDsKPj4gK30KPj4g Kwo+PiAgIHN0YXRpYyBpbnQgZHNpX2Nsa19pbml0KHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9o b3N0KQo+PiAgIHsKPj4gICAJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IG1zbV9ob3N0 LT5wZGV2Owo+PiBAQCAtNDk3LDcgKzU0NSw3IEBAIGludCBtc21fZHNpX3J1bnRpbWVfcmVzdW1l KHN0cnVjdCBkZXZpY2UgKmRldikKPj4gICAJcmV0dXJuIGRzaV9idXNfY2xrX2VuYWJsZShtc21f aG9zdCk7Cj4+ICAgfQo+PiAgIAo+PiAtc3RhdGljIGludCBkc2lfbGlua19jbGtfZW5hYmxlXzZn KHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQo+PiAraW50IGRzaV9saW5rX2Nsa19lbmFi bGVfNmcoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCj4+ICAgewo+PiAgIAlpbnQgcmV0 Owo+PiAgIAo+PiBAQCAtNTY1LDcgKzYxMyw3IEBAIHN0YXRpYyBpbnQgZHNpX2xpbmtfY2xrX2Vu YWJsZV82ZyhzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKPj4gICAJcmV0dXJuIHJldDsK Pj4gICB9Cj4+ICAgCj4+IC1zdGF0aWMgaW50IGRzaV9saW5rX2Nsa19lbmFibGVfdjIoc3RydWN0 IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCj4+ICtpbnQgZHNpX2xpbmtfY2xrX2VuYWJsZV92Mihz dHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKPj4gICB7Cj4+ICAgCWludCByZXQ7Cj4+ICAg Cj4+IEBAIC02NDMsNiArNjkxLDIzIEBAIHN0YXRpYyBpbnQgZHNpX2xpbmtfY2xrX2VuYWJsZShz dHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKPj4gICAJCXJldHVybiBkc2lfbGlua19jbGtf ZW5hYmxlX3YyKG1zbV9ob3N0KTsKPj4gICB9Cj4+ICAgCj4+ICt2b2lkIGRzaV9saW5rX2Nsa19k aXNhYmxlXzZnKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQo+PiArewo+PiArCWNsa19k aXNhYmxlX3VucHJlcGFyZShtc21faG9zdC0+ZXNjX2Nsayk7Cj4+ICsJY2xrX2Rpc2FibGVfdW5w cmVwYXJlKG1zbV9ob3N0LT5waXhlbF9jbGspOwo+PiArCWlmIChtc21faG9zdC0+Ynl0ZV9pbnRm X2NsaykKPj4gKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKG1zbV9ob3N0LT5ieXRlX2ludGZfY2xr KTsKPj4gKwljbGtfZGlzYWJsZV91bnByZXBhcmUobXNtX2hvc3QtPmJ5dGVfY2xrKTsKPj4gK30K Pj4gKwo+PiArdm9pZCBkc2lfbGlua19jbGtfZGlzYWJsZV92MihzdHJ1Y3QgbXNtX2RzaV9ob3N0 ICptc21faG9zdCkKPj4gK3sKPj4gKwljbGtfZGlzYWJsZV91bnByZXBhcmUobXNtX2hvc3QtPnBp eGVsX2Nsayk7Cj4+ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKG1zbV9ob3N0LT5zcmNfY2xrKTsK Pj4gKwljbGtfZGlzYWJsZV91bnByZXBhcmUobXNtX2hvc3QtPmVzY19jbGspOwo+PiArCWNsa19k aXNhYmxlX3VucHJlcGFyZShtc21faG9zdC0+Ynl0ZV9jbGspOwo+PiArfQo+PiArCj4+ICAgc3Rh dGljIHZvaWQgZHNpX2xpbmtfY2xrX2Rpc2FibGUoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hv c3QpCj4+ICAgewo+PiAgIAljb25zdCBzdHJ1Y3QgbXNtX2RzaV9jZmdfaGFuZGxlciAqY2ZnX2hu ZCA9IG1zbV9ob3N0LT5jZmdfaG5kOwo+PiBAQCAtNjYxLDYgKzcyNiw5NCBAQCBzdGF0aWMgdm9p ZCBkc2lfbGlua19jbGtfZGlzYWJsZShzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKPj4g ICAJfQo+PiAgIH0KPj4gICAKPj4gK2ludCBkc2lfY2FsY19jbGtfcmF0ZV82ZyhzdHJ1Y3QgbXNt X2RzaV9ob3N0ICptc21faG9zdCkKPj4gK3sKPj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq bW9kZSA9IG1zbV9ob3N0LT5tb2RlOwo+PiArCXU4IGxhbmVzID0gbXNtX2hvc3QtPmxhbmVzOwo+ PiArCXUzMiBicHAgPSBkc2lfZ2V0X2JwcChtc21faG9zdC0+Zm9ybWF0KTsKPj4gKwl1MzIgcGNs a19yYXRlOwo+PiArCj4+ICsJaWYgKCFtb2RlKSB7Cj4+ICsJCXByX2VycigiJXM6IG1vZGUgbm90 IHNldFxuIiwgX19mdW5jX18pOwo+PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4gKwl9Cj4gCj4gQXMg ZmFyIGFzIEkgY2FuIHRlbGwgZnJvbSBwYXRjaCAzLzMgdGhlIGNhbGNfY2xrX3JhdGUoKSBmdW5j dGlvbiBob29rIGlzIG9ubHkKPiBjYWxsZWQgb25jZSBhbmQgbW9kZV9ob3N0IGlzIGd1YXJhbnRl ZWQgdG8gYmUgbm90IG51bGwuIEkgZG9uJ3QgdGhpbmsgdGhpcyBjaGVjawo+IGlzIG5lZWRlZC4K CnllcyBzaG91bGQgd29yayBmaW5lCgo+IAo+PiArCXBjbGtfcmF0ZSA9IG1vZGUtPmNsb2NrICog MTAwMDsKPj4gKwlpZiAobGFuZXMgPiAwKSB7Cj4+ICsJCW1zbV9ob3N0LT5ieXRlX2Nsa19yYXRl ID0gKHBjbGtfcmF0ZSAqIGJwcCkgLyAoOCAqIGxhbmVzKTsKPj4gKwl9IGVsc2Ugewo+PiArCQlw cl9lcnIoIiVzOiBmb3JjaW5nIG1kc3NfZHNpIGxhbmVzIHRvIDFcbiIsIF9fZnVuY19fKTsKPj4g KwkJbXNtX2hvc3QtPmJ5dGVfY2xrX3JhdGUgPSAocGNsa19yYXRlICogYnBwKSAvIDg7Cj4+ICsJ fQo+PiArCj4+ICsJREJHKCJwY2xrPSVkLCBiY2xrPSVkIiwgcGNsa19yYXRlLCBtc21faG9zdC0+ Ynl0ZV9jbGtfcmF0ZSk7Cj4+ICsKPj4gKwltc21faG9zdC0+ZXNjX2Nsa19yYXRlID0gY2xrX2dl dF9yYXRlKG1zbV9ob3N0LT5lc2NfY2xrKTsKPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiAr Cj4+ICtpbnQgZHNpX2NhbGNfY2xrX3JhdGVfdjIoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hv c3QpCj4+ICt7Cj4+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSBtc21faG9zdC0+ bW9kZTsKPj4gKwl1OCBsYW5lcyA9IG1zbV9ob3N0LT5sYW5lczsKPj4gKwl1MzIgYnBwID0gZHNp X2dldF9icHAobXNtX2hvc3QtPmZvcm1hdCk7Cj4+ICsJdTMyIHBjbGtfcmF0ZTsKPj4gKwl1bnNp Z25lZCBpbnQgZXNjX21oeiwgZXNjX2RpdjsKPj4gKwl1bnNpZ25lZCBsb25nIGJ5dGVfbWh6Owo+ PiArCj4+ICsJaWYgKCFtb2RlKSB7Cj4+ICsJCXByX2VycigiJXM6IG1vZGUgbm90IHNldFxuIiwg X19mdW5jX18pOwo+PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4gKwl9Cj4+Cj4gT3IgdGhpcy4KPiAK Pj4gKwlwY2xrX3JhdGUgPSBtb2RlLT5jbG9jayAqIDEwMDA7Cj4+ICsJaWYgKGxhbmVzID4gMCkg ewo+PiArCQltc21faG9zdC0+Ynl0ZV9jbGtfcmF0ZSA9IChwY2xrX3JhdGUgKiBicHApIC8gKDgg KiBsYW5lcyk7Cj4+ICsJfSBlbHNlIHsKPj4gKwkJcHJfZXJyKCIlczogZm9yY2luZyBtZHNzX2Rz aSBsYW5lcyB0byAxXG4iLCBfX2Z1bmNfXyk7Cj4+ICsJCW1zbV9ob3N0LT5ieXRlX2Nsa19yYXRl ID0gKHBjbGtfcmF0ZSAqIGJwcCkgLyA4Owo+PiArCX0KPj4gKwo+PiArCURCRygicGNsaz0lZCwg YmNsaz0lZCIsIHBjbGtfcmF0ZSwgbXNtX2hvc3QtPmJ5dGVfY2xrX3JhdGUpOwo+PiArCj4+ICsJ bXNtX2hvc3QtPnNyY19jbGtfcmF0ZSA9IChwY2xrX3JhdGUgKiBicHApIC8gODsKPj4gKwo+PiAr CS8qCj4+ICsJICogZXNjIGNsb2NrIGlzIGJ5dGUgY2xvY2sgZm9sbG93ZWQgYnkgYSA0IGJpdCBk aXZpZGVyLAo+PiArCSAqIHdlIG5lZWQgdG8gZmluZCBhbiBlc2NhcGUgY2xvY2sgZnJlcXVlbmN5 IHdpdGhpbiB0aGUKPj4gKwkgKiBtaXBpIERTSSBzcGVjIHJhbmdlIHdpdGhpbiB0aGUgbWF4aW11 bSBkaXZpZGVyIGxpbWl0Cj4+ICsJICogV2UgaXRlcmF0ZSBoZXJlIGJldHdlZW4gYW4gZXNjYXBl IGNsb2NrIGZyZXF1ZW5jZXkKPj4gKwkgKiBiZXR3ZWVuIDIwIE1oeiB0byA1IE1oeiBhbmQgcGlj ayB1cCB0aGUgZmlyc3Qgb25lCj4+ICsJICogdGhhdCBjYW4gYmUgc3VwcG9ydGVkIGJ5IG91ciBk aXZpZGVyCj4+ICsJICovCj4+ICsKPj4gKwlieXRlX21oeiA9IG1zbV9ob3N0LT5ieXRlX2Nsa19y YXRlIC8gMTAwMDAwMDsKPj4gKwo+PiArCWZvciAoZXNjX21oeiA9IDIwOyBlc2NfbWh6ID49IDU7 IGVzY19taHotLSkgewo+PiArCQllc2NfZGl2ID0gRElWX1JPVU5EX1VQKGJ5dGVfbWh6LCBlc2Nf bWh6KTsKPj4gKwo+PiArCQkvKgo+PiArCQkgKiBUT0RPOiBJZGVhbGx5LCB3ZSBzaG91bGRuJ3Qg a25vdyB3aGF0IHNvcnQgb2YgZGl2aWRlcgo+PiArCQkgKiBpcyBhdmFpbGFibGUgaW4gbW1zc19j Yywgd2UncmUganVzdCBhc3N1bWluZyB0aGF0Cj4+ICsJCSAqIGl0J2xsIGFsd2F5cyBiZSBhIDQg Yml0IGRpdmlkZXIuIE5lZWQgdG8gY29tZSB1cCB3aXRoCj4+ICsJCSAqIGEgYmV0dGVyIHdheSBo ZXJlLgo+PiArCQkgKi8KPj4gKwkJaWYgKGVzY19kaXYgPj0gMSAmJiBlc2NfZGl2IDw9IDE2KQo+ PiArCQkJYnJlYWs7Cj4+ICsJfQo+PiArCj4+ICsJaWYgKGVzY19taHogPCA1KQo+PiArCQlyZXR1 cm4gLUVJTlZBTDsKPj4gKwo+PiArCW1zbV9ob3N0LT5lc2NfY2xrX3JhdGUgPSBtc21faG9zdC0+ Ynl0ZV9jbGtfcmF0ZSAvIGVzY19kaXY7Cj4+ICsKPj4gKwlEQkcoImVzYz0lZCwgc3JjPSVkIiwg bXNtX2hvc3QtPmVzY19jbGtfcmF0ZSwKPj4gKwkJbXNtX2hvc3QtPnNyY19jbGtfcmF0ZSk7Cj4+ ICsKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiAgIHN0YXRpYyBpbnQgZHNpX2NhbGNfY2xr X3JhdGUoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCj4+ICAgewo+PiAgIAlzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9IG1zbV9ob3N0LT5tb2RlOwo+PiBAQCAtMTAwOCw2ICsx MTYxLDQ5IEBAIHN0YXRpYyB2b2lkIGRzaV93YWl0NHZpZGVvX2VuZ19idXN5KHN0cnVjdCBtc21f ZHNpX2hvc3QgKm1zbV9ob3N0KQo+PiAgIAl9Cj4+ICAgfQo+PiAgIAo+PiAraW50IGRzaV90eF9i dWZfYWxsb2NfNmcoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QsIGludCBzaXplKQo+PiAr ewo+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBtc21faG9zdC0+ZGV2Owo+PiArCXN0cnVj dCBtc21fZHJtX3ByaXZhdGUgKnByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+PiArCWludCByZXQ7 Cj4+ICsJdWludDY0X3QgaW92YTsKPj4gKwo+PiArCW1zbV9ob3N0LT50eF9nZW1fb2JqID0gbXNt X2dlbV9uZXcoZGV2LCBzaXplLCBNU01fQk9fVU5DQUNIRUQpOwo+PiArCWlmIChJU19FUlIobXNt X2hvc3QtPnR4X2dlbV9vYmopKSB7Cj4+ICsJCXJldCA9IFBUUl9FUlIobXNtX2hvc3QtPnR4X2dl bV9vYmopOwo+PiArCQlwcl9lcnIoIiVzOiBmYWlsZWQgdG8gYWxsb2NhdGUgZ2VtLCAlZFxuIiwK Pj4gKwkJCV9fZnVuY19fLCByZXQpOwo+PiArCQltc21faG9zdC0+dHhfZ2VtX29iaiA9IE5VTEw7 Cj4+ICsJCXJldHVybiByZXQ7Cj4+ICsJfQo+PiArCj4+ICsJcmV0ID0gbXNtX2dlbV9nZXRfaW92 YShtc21faG9zdC0+dHhfZ2VtX29iaiwKPj4gKwkJCXByaXYtPmttcy0+YXNwYWNlLCAmaW92YSk7 Cj4+ICsJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CgpTZWVtcyBsaWtlIHN0dWN0 X211dGV4IHVubG9jayB3YXNuJ3QgcmVtb3ZlZCB3aGVuIHRoZXkgbWlncmF0ZWQgdG8gdGhlIApu ZXcgbXNtX2dlbV9uZXcgYW5kIG1zbV9nZW1fZ2V0X2lvdmEgZnJvbSB0aGUgcHJldmlvdXMgbG9j ayBiYXNlZCBmdW5jdGlvbnM/Cgo+PiArCWlmIChyZXQpIHsKPj4gKwkJcHJfZXJyKCIlczogZmFp bGVkIHRvIGdldCBpb3ZhLCAlZFxuIiwgX19mdW5jX18sIHJldCk7Cj4+ICsJCXJldHVybiByZXQ7 Cj4+ICsJfQo+IAo+IEknbSBub3Qgc3VyZSBpZiB5b3UgYWxzbyBuZWVkIHRvIHZtYXAgdGhpcyBh dCBzb21lIHBvaW50LCBidXQgd2UgaGF2ZSBhIGhhbmR5Cj4gaGVscGVyIGZ1bmN0aW9uIGZvciBp bi1rZXJuZWwgZ2VtIG9iamVjdHMgdG8gYXV0b21hdGUgYSBiaXQgb2YgdGhpczoKPiAKCndlIGV2 ZW50dWFsbHkgZG8gYSBtc21fZ2VtX2dldF92YWRkciBzbyBtc21fZ2VtX2tlcm5lbF9uZXcgc2Vl bXMKbGlrZSBhIGdvb2QgZml0IHdoaWNoIHdpbGwgYWxzbyBoZWxwIHRvIHJlbW92ZSBvbmUgYWRk aXRpb25hbCBoZWxwZXIKZnVuY3Rpb24gOikKCj4gdm9pZCAqbXNtX2dlbV9rZXJuZWxfbmV3KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVpbnQzMl90IHNpemUsCj4gICAgICAgICAgICAgICAgICB1 aW50MzJfdCBmbGFncywgc3RydWN0IG1zbV9nZW1fYWRkcmVzc19zcGFjZSAqYXNwYWNlLAo+IAkJ c3RydWN0IGRybV9nZW1fb2JqZWN0ICoqYm8sIHVpbnQ2NF90ICppb3ZhKTsKPiAKPiBKb3JkYW4K PiAKCi0tIApRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLgpRdWFsY29tbSBJbm5vdmF0 aW9uIENlbnRlciwgSW5jLCBpcyBhIG1lbWJlciBvZiBDb2RlIEF1cm9yYSBGb3J1bSwKYSBMaW51 eCBGb3VuZGF0aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdApfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwK