From: Sibi Sankar Subject: [PATCH v3 3/3] drm/msm/dsi: replace version checks with helper functions Date: Mon, 9 Apr 2018 20:04:34 +0530 Message-ID: <20180409143434.28269-4-sibis@codeaurora.org> References: <20180409143434.28269-1-sibis@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180409143434.28269-1-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, jcrouse@codeaurora.org Cc: linux-arm-msm@vger.kernel.org, Sibi Sankar , dri-devel@lists.freedesktop.org List-Id: linux-arm-msm@vger.kernel.org UmVwbGFjZSB2ZXJzaW9uIGNoZWNrcyB3aXRoIHRoZSBoZWxwZXIgZnVuY3Rpb25zIGJvdW5kIHRv CmNmZ19oYW5kbGVyIGZvciBEU0kgdjIsIERTSSA2RyAxLnggYW5kIERTSSA2RyB2Mi4wKyBjb250 cm9sbGVycwoKU2lnbmVkLW9mZi1ieTogU2liaSBTYW5rYXIgPHNpYmlzQGNvZGVhdXJvcmEub3Jn PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9ob3N0LmMgfCAyNDIgKysrKystLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDI5IGluc2VydGlv bnMoKyksIDIxMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2RzaS9kc2lfaG9zdC5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2hvc3QuYwppbmRl eCA0NmU5OTJmNzA2ZDguLmQ4MmU2NzNhMWM3ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L21zbS9kc2kvZHNpX2hvc3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2lfaG9z dC5jCkBAIC00MjYsMTkgKzQyNiw2IEBAIHN0YXRpYyBpbnQgZHNpX2Nsa19pbml0KHN0cnVjdCBt c21fZHNpX2hvc3QgKm1zbV9ob3N0KQogCQlnb3RvIGV4aXQ7CiAJfQogCi0JaWYgKGNmZ19obmQt Pm1ham9yID09IE1TTV9EU0lfVkVSX01BSk9SXzZHICYmCi0JICAgIGNmZ19obmQtPm1pbm9yID49 IE1TTV9EU0lfNkdfVkVSX01JTk9SX1YyXzJfMSkgewotCQltc21faG9zdC0+Ynl0ZV9pbnRmX2Ns ayA9IG1zbV9jbGtfZ2V0KHBkZXYsICJieXRlX2ludGYiKTsKLQkJaWYgKElTX0VSUihtc21faG9z dC0+Ynl0ZV9pbnRmX2NsaykpIHsKLQkJCXJldCA9IFBUUl9FUlIobXNtX2hvc3QtPmJ5dGVfaW50 Zl9jbGspOwotCQkJcHJfZXJyKCIlczogY2FuJ3QgZmluZCBieXRlX2ludGYgY2xvY2suIHJldD0l ZFxuIiwKLQkJCSAgICAgICAgX19mdW5jX18sIHJldCk7Ci0JCQlnb3RvIGV4aXQ7Ci0JCX0KLQl9 IGVsc2UgewotCQltc21faG9zdC0+Ynl0ZV9pbnRmX2NsayA9IE5VTEw7Ci0JfQotCiAJbXNtX2hv c3QtPmJ5dGVfY2xrX3NyYyA9IGNsa19nZXRfcGFyZW50KG1zbV9ob3N0LT5ieXRlX2Nsayk7CiAJ aWYgKCFtc21faG9zdC0+Ynl0ZV9jbGtfc3JjKSB7CiAJCXJldCA9IC1FTk9ERVY7CkBAIC00NTMs MzEgKzQ0MCw4IEBAIHN0YXRpYyBpbnQgZHNpX2Nsa19pbml0KHN0cnVjdCBtc21fZHNpX2hvc3Qg Km1zbV9ob3N0KQogCQlnb3RvIGV4aXQ7CiAJfQogCi0JaWYgKGNmZ19obmQtPm1ham9yID09IE1T TV9EU0lfVkVSX01BSk9SX1YyKSB7Ci0JCW1zbV9ob3N0LT5zcmNfY2xrID0gbXNtX2Nsa19nZXQo cGRldiwgInNyYyIpOwotCQlpZiAoSVNfRVJSKG1zbV9ob3N0LT5zcmNfY2xrKSkgewotCQkJcmV0 ID0gUFRSX0VSUihtc21faG9zdC0+c3JjX2Nsayk7Ci0JCQlwcl9lcnIoIiVzOiBjYW4ndCBmaW5k IHNyYyBjbG9jay4gcmV0PSVkXG4iLAotCQkJCV9fZnVuY19fLCByZXQpOwotCQkJbXNtX2hvc3Qt PnNyY19jbGsgPSBOVUxMOwotCQkJZ290byBleGl0OwotCQl9Ci0KLQkJbXNtX2hvc3QtPmVzY19j bGtfc3JjID0gY2xrX2dldF9wYXJlbnQobXNtX2hvc3QtPmVzY19jbGspOwotCQlpZiAoIW1zbV9o b3N0LT5lc2NfY2xrX3NyYykgewotCQkJcmV0ID0gLUVOT0RFVjsKLQkJCXByX2VycigiJXM6IGNh bid0IGdldCBlc2MgY2xvY2sgcGFyZW50LiByZXQ9JWRcbiIsCi0JCQkJX19mdW5jX18sIHJldCk7 Ci0JCQlnb3RvIGV4aXQ7Ci0JCX0KLQotCQltc21faG9zdC0+ZHNpX2Nsa19zcmMgPSBjbGtfZ2V0 X3BhcmVudChtc21faG9zdC0+c3JjX2Nsayk7Ci0JCWlmICghbXNtX2hvc3QtPmRzaV9jbGtfc3Jj KSB7Ci0JCQlyZXQgPSAtRU5PREVWOwotCQkJcHJfZXJyKCIlczogY2FuJ3QgZ2V0IHNyYyBjbG9j ayBwYXJlbnQuIHJldD0lZFxuIiwKLQkJCQlfX2Z1bmNfXywgcmV0KTsKLQkJfQotCX0KKwlpZiAo Y2ZnX2huZC0+b3BzLT5jbGtfaW5pdF92ZXIpCisJCXJldCA9IGNmZ19obmQtPm9wcy0+Y2xrX2lu aXRfdmVyKG1zbV9ob3N0KTsKIGV4aXQ6CiAJcmV0dXJuIHJldDsKIH0KQEAgLTY4MSwxNiArNjQ1 LDYgQEAgaW50IGRzaV9saW5rX2Nsa19lbmFibGVfdjIoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNt X2hvc3QpCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCBkc2lfbGlua19jbGtfZW5hYmxl KHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQotewotCWNvbnN0IHN0cnVjdCBtc21fZHNp X2NmZ19oYW5kbGVyICpjZmdfaG5kID0gbXNtX2hvc3QtPmNmZ19obmQ7Ci0KLQlpZiAoY2ZnX2hu ZC0+bWFqb3IgPT0gTVNNX0RTSV9WRVJfTUFKT1JfNkcpCi0JCXJldHVybiBkc2lfbGlua19jbGtf ZW5hYmxlXzZnKG1zbV9ob3N0KTsKLQllbHNlCi0JCXJldHVybiBkc2lfbGlua19jbGtfZW5hYmxl X3YyKG1zbV9ob3N0KTsKLX0KLQogdm9pZCBkc2lfbGlua19jbGtfZGlzYWJsZV82ZyhzdHJ1Y3Qg bXNtX2RzaV9ob3N0ICptc21faG9zdCkKIHsKIAljbGtfZGlzYWJsZV91bnByZXBhcmUobXNtX2hv c3QtPmVzY19jbGspOwpAQCAtNzA4LDI0ICs2NjIsNiBAQCB2b2lkIGRzaV9saW5rX2Nsa19kaXNh YmxlX3YyKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0KQogCWNsa19kaXNhYmxlX3VucHJl cGFyZShtc21faG9zdC0+Ynl0ZV9jbGspOwogfQogCi1zdGF0aWMgdm9pZCBkc2lfbGlua19jbGtf ZGlzYWJsZShzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCkKLXsKLQljb25zdCBzdHJ1Y3Qg bXNtX2RzaV9jZmdfaGFuZGxlciAqY2ZnX2huZCA9IG1zbV9ob3N0LT5jZmdfaG5kOwotCi0JaWYg KGNmZ19obmQtPm1ham9yID09IE1TTV9EU0lfVkVSX01BSk9SXzZHKSB7Ci0JCWNsa19kaXNhYmxl X3VucHJlcGFyZShtc21faG9zdC0+ZXNjX2Nsayk7Ci0JCWNsa19kaXNhYmxlX3VucHJlcGFyZSht c21faG9zdC0+cGl4ZWxfY2xrKTsKLQkJaWYgKG1zbV9ob3N0LT5ieXRlX2ludGZfY2xrKQotCQkJ Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKG1zbV9ob3N0LT5ieXRlX2ludGZfY2xrKTsKLQkJY2xrX2Rp c2FibGVfdW5wcmVwYXJlKG1zbV9ob3N0LT5ieXRlX2Nsayk7Ci0JfSBlbHNlIHsKLQkJY2xrX2Rp c2FibGVfdW5wcmVwYXJlKG1zbV9ob3N0LT5waXhlbF9jbGspOwotCQljbGtfZGlzYWJsZV91bnBy ZXBhcmUobXNtX2hvc3QtPnNyY19jbGspOwotCQljbGtfZGlzYWJsZV91bnByZXBhcmUobXNtX2hv c3QtPmVzY19jbGspOwotCQljbGtfZGlzYWJsZV91bnByZXBhcmUobXNtX2hvc3QtPmJ5dGVfY2xr KTsKLQl9Ci19Ci0KIGludCBkc2lfY2FsY19jbGtfcmF0ZV82ZyhzdHJ1Y3QgbXNtX2RzaV9ob3N0 ICptc21faG9zdCkKIHsKIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9IG1zbV9ob3N0 LT5tb2RlOwpAQCAtODA0LDczICs3NDAsNiBAQCBpbnQgZHNpX2NhbGNfY2xrX3JhdGVfdjIoc3Ry dWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQg ZHNpX2NhbGNfY2xrX3JhdGUoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QpCi17Ci0Jc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSBtc21faG9zdC0+bW9kZTsKLQljb25zdCBzdHJ1 Y3QgbXNtX2RzaV9jZmdfaGFuZGxlciAqY2ZnX2huZCA9IG1zbV9ob3N0LT5jZmdfaG5kOwotCXU4 IGxhbmVzID0gbXNtX2hvc3QtPmxhbmVzOwotCXUzMiBicHAgPSBkc2lfZ2V0X2JwcChtc21faG9z dC0+Zm9ybWF0KTsKLQl1MzIgcGNsa19yYXRlOwotCi0JaWYgKCFtb2RlKSB7Ci0JCXByX2Vycigi JXM6IG1vZGUgbm90IHNldFxuIiwgX19mdW5jX18pOwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0K LQlwY2xrX3JhdGUgPSBtb2RlLT5jbG9jayAqIDEwMDA7Ci0JaWYgKGxhbmVzID4gMCkgewotCQlt c21faG9zdC0+Ynl0ZV9jbGtfcmF0ZSA9IChwY2xrX3JhdGUgKiBicHApIC8gKDggKiBsYW5lcyk7 Ci0JfSBlbHNlIHsKLQkJcHJfZXJyKCIlczogZm9yY2luZyBtZHNzX2RzaSBsYW5lcyB0byAxXG4i LCBfX2Z1bmNfXyk7Ci0JCW1zbV9ob3N0LT5ieXRlX2Nsa19yYXRlID0gKHBjbGtfcmF0ZSAqIGJw cCkgLyA4OwotCX0KLQotCURCRygicGNsaz0lZCwgYmNsaz0lZCIsIHBjbGtfcmF0ZSwgbXNtX2hv c3QtPmJ5dGVfY2xrX3JhdGUpOwotCi0JbXNtX2hvc3QtPmVzY19jbGtfcmF0ZSA9IGNsa19nZXRf cmF0ZShtc21faG9zdC0+ZXNjX2Nsayk7Ci0KLQlpZiAoY2ZnX2huZC0+bWFqb3IgPT0gTVNNX0RT SV9WRVJfTUFKT1JfVjIpIHsKLQkJdW5zaWduZWQgaW50IGVzY19taHosIGVzY19kaXY7Ci0JCXVu c2lnbmVkIGxvbmcgYnl0ZV9taHo7Ci0KLQkJbXNtX2hvc3QtPnNyY19jbGtfcmF0ZSA9IChwY2xr X3JhdGUgKiBicHApIC8gODsKLQotCQkvKgotCQkgKiBlc2MgY2xvY2sgaXMgYnl0ZSBjbG9jayBm b2xsb3dlZCBieSBhIDQgYml0IGRpdmlkZXIsCi0JCSAqIHdlIG5lZWQgdG8gZmluZCBhbiBlc2Nh cGUgY2xvY2sgZnJlcXVlbmN5IHdpdGhpbiB0aGUKLQkJICogbWlwaSBEU0kgc3BlYyByYW5nZSB3 aXRoaW4gdGhlIG1heGltdW0gZGl2aWRlciBsaW1pdAotCQkgKiBXZSBpdGVyYXRlIGhlcmUgYmV0 d2VlbiBhbiBlc2NhcGUgY2xvY2sgZnJlcXVlbmNleQotCQkgKiBiZXR3ZWVuIDIwIE1oeiB0byA1 IE1oeiBhbmQgcGljayB1cCB0aGUgZmlyc3Qgb25lCi0JCSAqIHRoYXQgY2FuIGJlIHN1cHBvcnRl ZCBieSBvdXIgZGl2aWRlcgotCQkgKi8KLQotCQlieXRlX21oeiA9IG1zbV9ob3N0LT5ieXRlX2Ns a19yYXRlIC8gMTAwMDAwMDsKLQotCQlmb3IgKGVzY19taHogPSAyMDsgZXNjX21oeiA+PSA1OyBl c2NfbWh6LS0pIHsKLQkJCWVzY19kaXYgPSBESVZfUk9VTkRfVVAoYnl0ZV9taHosIGVzY19taHop OwotCi0JCQkvKgotCQkJICogVE9ETzogSWRlYWxseSwgd2Ugc2hvdWxkbid0IGtub3cgd2hhdCBz b3J0IG9mIGRpdmlkZXIKLQkJCSAqIGlzIGF2YWlsYWJsZSBpbiBtbXNzX2NjLCB3ZSdyZSBqdXN0 IGFzc3VtaW5nIHRoYXQKLQkJCSAqIGl0J2xsIGFsd2F5cyBiZSBhIDQgYml0IGRpdmlkZXIuIE5l ZWQgdG8gY29tZSB1cCB3aXRoCi0JCQkgKiBhIGJldHRlciB3YXkgaGVyZS4KLQkJCSAqLwotCQkJ aWYgKGVzY19kaXYgPj0gMSAmJiBlc2NfZGl2IDw9IDE2KQotCQkJCWJyZWFrOwotCQl9Ci0KLQkJ aWYgKGVzY19taHogPCA1KQotCQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQkJbXNtX2hvc3QtPmVzY19j bGtfcmF0ZSA9IG1zbV9ob3N0LT5ieXRlX2Nsa19yYXRlIC8gZXNjX2RpdjsKLQotCQlEQkcoImVz Yz0lZCwgc3JjPSVkIiwgbXNtX2hvc3QtPmVzY19jbGtfcmF0ZSwKLQkJCW1zbV9ob3N0LT5zcmNf Y2xrX3JhdGUpOwotCX0KLQotCXJldHVybiAwOwotfQotCiBzdGF0aWMgdm9pZCBkc2lfaW50cl9j dHJsKHN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9ob3N0LCB1MzIgbWFzaywgaW50IGVuYWJsZSkK IHsKIAl1MzIgaW50cjsKQEAgLTExODYsNTUgKzEwNTUsNiBAQCBpbnQgZHNpX3R4X2J1Zl9hbGxv Y192MihzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCwgaW50IHNpemUpCiAJcmV0dXJuIDA7 CiB9CiAKLS8qIGRzaV9jbWQgKi8KLXN0YXRpYyBpbnQgZHNpX3R4X2J1Zl9hbGxvYyhzdHJ1Y3Qg bXNtX2RzaV9ob3N0ICptc21faG9zdCwgaW50IHNpemUpCi17Ci0Jc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IG1zbV9ob3N0LT5kZXY7Ci0Jc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRl di0+ZGV2X3ByaXZhdGU7Ci0JY29uc3Qgc3RydWN0IG1zbV9kc2lfY2ZnX2hhbmRsZXIgKmNmZ19o bmQgPSBtc21faG9zdC0+Y2ZnX2huZDsKLQlpbnQgcmV0OwotCXVpbnQ2NF90IGlvdmE7Ci0KLQlp ZiAoY2ZnX2huZC0+bWFqb3IgPT0gTVNNX0RTSV9WRVJfTUFKT1JfNkcpIHsKLQkJbXNtX2hvc3Qt PnR4X2dlbV9vYmogPSBtc21fZ2VtX25ldyhkZXYsIHNpemUsIE1TTV9CT19VTkNBQ0hFRCk7Ci0J CWlmIChJU19FUlIobXNtX2hvc3QtPnR4X2dlbV9vYmopKSB7Ci0JCQlyZXQgPSBQVFJfRVJSKG1z bV9ob3N0LT50eF9nZW1fb2JqKTsKLQkJCXByX2VycigiJXM6IGZhaWxlZCB0byBhbGxvY2F0ZSBn ZW0sICVkXG4iLAotCQkJCV9fZnVuY19fLCByZXQpOwotCQkJbXNtX2hvc3QtPnR4X2dlbV9vYmog PSBOVUxMOwotCQkJcmV0dXJuIHJldDsKLQkJfQotCi0JCXJldCA9IG1zbV9nZW1fZ2V0X2lvdmEo bXNtX2hvc3QtPnR4X2dlbV9vYmosCi0JCQkJcHJpdi0+a21zLT5hc3BhY2UsICZpb3ZhKTsKLQkJ bXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JCWlmIChyZXQpIHsKLQkJCXByX2Vy cigiJXM6IGZhaWxlZCB0byBnZXQgaW92YSwgJWRcbiIsIF9fZnVuY19fLCByZXQpOwotCQkJcmV0 dXJuIHJldDsKLQkJfQotCi0JCWlmIChpb3ZhICYgMHgwNykgewotCQkJcHJfZXJyKCIlczogYnVm IE5PVCA4IGJ5dGVzIGFsaWduZWRcbiIsIF9fZnVuY19fKTsKLQkJCXJldHVybiAtRUlOVkFMOwot CQl9Ci0KLQkJbXNtX2hvc3QtPnR4X3NpemUgPSBtc21faG9zdC0+dHhfZ2VtX29iai0+c2l6ZTsK LQl9IGVsc2UgewotCQltc21faG9zdC0+dHhfYnVmID0gZG1hX2FsbG9jX2NvaGVyZW50KGRldi0+ ZGV2LCBzaXplLAotCQkJCQkmbXNtX2hvc3QtPnR4X2J1Zl9wYWRkciwgR0ZQX0tFUk5FTCk7Ci0J CWlmICghbXNtX2hvc3QtPnR4X2J1ZikgewotCQkJcmV0ID0gLUVOT01FTTsKLQkJCXByX2Vycigi JXM6IGZhaWxlZCB0byBhbGxvY2F0ZSB0eCBidWYsICVkXG4iLAotCQkJCV9fZnVuY19fLCByZXQp OwotCQkJcmV0dXJuIHJldDsKLQkJfQotCi0JCW1zbV9ob3N0LT50eF9zaXplID0gc2l6ZTsKLQl9 Ci0KLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIHZvaWQgZHNpX3R4X2J1Zl9mcmVlKHN0cnVjdCBt c21fZHNpX2hvc3QgKm1zbV9ob3N0KQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBtc21f aG9zdC0+ZGV2OwpAQCAtMTI4OSwxNSArMTEwOSwxMSBAQCBzdGF0aWMgaW50IGRzaV9jbWRfZG1h X2FkZChzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCwKIAkJcmV0dXJuIC1FSU5WQUw7CiAJ fQogCi0JaWYgKGNmZ19obmQtPm1ham9yID09IE1TTV9EU0lfVkVSX01BSk9SXzZHKSB7Ci0JCWRh dGEgPSBtc21fZ2VtX2dldF92YWRkcihtc21faG9zdC0+dHhfZ2VtX29iaik7Ci0JCWlmIChJU19F UlIoZGF0YSkpIHsKLQkJCXJldCA9IFBUUl9FUlIoZGF0YSk7Ci0JCQlwcl9lcnIoIiVzOiBnZXQg dmFkZHIgZmFpbGVkLCAlZFxuIiwgX19mdW5jX18sIHJldCk7Ci0JCQlyZXR1cm4gcmV0OwotCQl9 Ci0JfSBlbHNlIHsKLQkJZGF0YSA9IG1zbV9ob3N0LT50eF9idWY7CisJZGF0YSA9IGNmZ19obmQt Pm9wcy0+dHhfYnVmX2dldChtc21faG9zdCk7CisJaWYgKElTX0VSUihkYXRhKSkgeworCQlyZXQg PSBQVFJfRVJSKGRhdGEpOworCQlwcl9lcnIoIiVzOiBnZXQgdmFkZHIgZmFpbGVkLCAlZFxuIiwg X19mdW5jX18sIHJldCk7CisJCXJldHVybiByZXQ7CiAJfQogCiAJLyogTVNNIHNwZWNpZmljIGNv bW1hbmQgZm9ybWF0IGluIG1lbW9yeSAqLwpAQCAtMTMxOCw4ICsxMTM0LDggQEAgc3RhdGljIGlu dCBkc2lfY21kX2RtYV9hZGQoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QsCiAJaWYgKHBh Y2tldC5zaXplIDwgbGVuKQogCQltZW1zZXQoZGF0YSArIHBhY2tldC5zaXplLCAweGZmLCBsZW4g LSBwYWNrZXQuc2l6ZSk7CiAKLQlpZiAoY2ZnX2huZC0+bWFqb3IgPT0gTVNNX0RTSV9WRVJfTUFK T1JfNkcpCi0JCW1zbV9nZW1fcHV0X3ZhZGRyKG1zbV9ob3N0LT50eF9nZW1fb2JqKTsKKwlpZiAo Y2ZnX2huZC0+b3BzLT50eF9idWZfcHV0KQorCQljZmdfaG5kLT5vcHMtPnR4X2J1Zl9wdXQobXNt X2hvc3QpOwogCiAJcmV0dXJuIGxlbjsKIH0KQEAgLTEzOTAsMjEgKzEyMDYsMTQgQEAgaW50IGRz aV9kbWFfYmFzZV9nZXRfdjIoc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QsIHVpbnQ2NF90 ICpkbWFfYmFzZSkKIHN0YXRpYyBpbnQgZHNpX2NtZF9kbWFfdHgoc3RydWN0IG1zbV9kc2lfaG9z dCAqbXNtX2hvc3QsIGludCBsZW4pCiB7CiAJY29uc3Qgc3RydWN0IG1zbV9kc2lfY2ZnX2hhbmRs ZXIgKmNmZ19obmQgPSBtc21faG9zdC0+Y2ZnX2huZDsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gbXNtX2hvc3QtPmRldjsKLQlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKIAlpbnQgcmV0OwogCXVpbnQ2NF90IGRtYV9iYXNlOwogCWJvb2wgdHJpZ2dl cmVkOwogCi0JaWYgKGNmZ19obmQtPm1ham9yID09IE1TTV9EU0lfVkVSX01BSk9SXzZHKSB7Ci0J CXJldCA9IG1zbV9nZW1fZ2V0X2lvdmEobXNtX2hvc3QtPnR4X2dlbV9vYmosCi0JCQkJcHJpdi0+ a21zLT5hc3BhY2UsICZkbWFfYmFzZSk7Ci0JCWlmIChyZXQpIHsKLQkJCXByX2VycigiJXM6IGZh aWxlZCB0byBnZXQgaW92YTogJWRcbiIsIF9fZnVuY19fLCByZXQpOwotCQkJcmV0dXJuIHJldDsK LQkJfQotCX0gZWxzZSB7Ci0JCWRtYV9iYXNlID0gbXNtX2hvc3QtPnR4X2J1Zl9wYWRkcjsKKwly ZXQgPSBjZmdfaG5kLT5vcHMtPmRtYV9iYXNlX2dldChtc21faG9zdCwgJmRtYV9iYXNlKTsKKwlp ZiAocmV0KSB7CisJCXByX2VycigiJXM6IGZhaWxlZCB0byBnZXQgaW92YTogJWRcbiIsIF9fZnVu Y19fLCByZXQpOworCQlyZXR1cm4gcmV0OwogCX0KIAogCXJlaW5pdF9jb21wbGV0aW9uKCZtc21f aG9zdC0+ZG1hX2NvbXApOwpAQCAtMjA0Miw2ICsxODUxLDcgQEAgaW50IG1zbV9kc2lfaG9zdF9t b2Rlc2V0X2luaXQoc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3QsCiAJCQkJCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IG1zbV9kc2lfaG9zdCAqbXNtX2hvc3QgPSB0b19tc21f ZHNpX2hvc3QoaG9zdCk7CisJY29uc3Qgc3RydWN0IG1zbV9kc2lfY2ZnX2hhbmRsZXIgKmNmZ19o bmQgPSBtc21faG9zdC0+Y2ZnX2huZDsKIAlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0g bXNtX2hvc3QtPnBkZXY7CiAJaW50IHJldDsKIApAQCAtMjA2Miw3ICsxODcyLDcgQEAgaW50IG1z bV9kc2lfaG9zdF9tb2Rlc2V0X2luaXQoc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3QsCiAJfQog CiAJbXNtX2hvc3QtPmRldiA9IGRldjsKLQlyZXQgPSBkc2lfdHhfYnVmX2FsbG9jKG1zbV9ob3N0 LCBTWl80Syk7CisJcmV0ID0gY2ZnX2huZC0+b3BzLT50eF9idWZfYWxsb2MobXNtX2hvc3QsIFNa XzRLKTsKIAlpZiAocmV0KSB7CiAJCXByX2VycigiJXM6IGFsbG9jIHR4IGdlbSBvYmogZmFpbGVk LCAlZFxuIiwgX19mdW5jX18sIHJldCk7CiAJCXJldHVybiByZXQ7CkBAIC0yMTIwLDYgKzE5MzAs NyBAQCBpbnQgbXNtX2RzaV9ob3N0X3hmZXJfcHJlcGFyZShzdHJ1Y3QgbWlwaV9kc2lfaG9zdCAq aG9zdCwKIAkJCQljb25zdCBzdHJ1Y3QgbWlwaV9kc2lfbXNnICptc2cpCiB7CiAJc3RydWN0IG1z bV9kc2lfaG9zdCAqbXNtX2hvc3QgPSB0b19tc21fZHNpX2hvc3QoaG9zdCk7CisJY29uc3Qgc3Ry dWN0IG1zbV9kc2lfY2ZnX2hhbmRsZXIgKmNmZ19obmQgPSBtc21faG9zdC0+Y2ZnX2huZDsKIAog CS8qIFRPRE86IG1ha2Ugc3VyZSBkc2lfY21kX21kcCBpcyBpZGxlLgogCSAqIFNpbmNlIERTSTZH IHYxLjIuMCwgd2UgY2FuIHNldCBEU0lfVFJJR19DVFJMLkJMT0NLX0RNQV9XSVRISU5fRlJBTUUK QEAgLTIxMzIsNyArMTk0Myw3IEBAIGludCBtc21fZHNpX2hvc3RfeGZlcl9wcmVwYXJlKHN0cnVj dCBtaXBpX2RzaV9ob3N0ICpob3N0LAogCSAqIG1kcCBjbG9jayBuZWVkIHRvIGJlIGVuYWJsZWQg dG8gcmVjZWl2ZSBkc2kgaW50ZXJydXB0CiAJICovCiAJcG1fcnVudGltZV9nZXRfc3luYygmbXNt X2hvc3QtPnBkZXYtPmRldik7Ci0JZHNpX2xpbmtfY2xrX2VuYWJsZShtc21faG9zdCk7CisJY2Zn X2huZC0+b3BzLT5saW5rX2Nsa19lbmFibGUobXNtX2hvc3QpOwogCiAJLyogVE9ETzogdm90ZSBm b3IgYnVzIGJhbmR3aWR0aCAqLwogCkBAIC0yMTUzLDYgKzE5NjQsNyBAQCB2b2lkIG1zbV9kc2lf aG9zdF94ZmVyX3Jlc3RvcmUoc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3QsCiAJCQkJY29uc3Qg c3RydWN0IG1pcGlfZHNpX21zZyAqbXNnKQogewogCXN0cnVjdCBtc21fZHNpX2hvc3QgKm1zbV9o b3N0ID0gdG9fbXNtX2RzaV9ob3N0KGhvc3QpOworCWNvbnN0IHN0cnVjdCBtc21fZHNpX2NmZ19o YW5kbGVyICpjZmdfaG5kID0gbXNtX2hvc3QtPmNmZ19obmQ7CiAKIAlkc2lfaW50cl9jdHJsKG1z bV9ob3N0LCBEU0lfSVJRX01BU0tfQ01EX0RNQV9ET05FLCAwKTsKIAlkc2lfd3JpdGUobXNtX2hv c3QsIFJFR19EU0lfQ1RSTCwgbXNtX2hvc3QtPmRtYV9jbWRfY3RybF9yZXN0b3JlKTsKQEAgLTIx NjIsNyArMTk3NCw3IEBAIHZvaWQgbXNtX2RzaV9ob3N0X3hmZXJfcmVzdG9yZShzdHJ1Y3QgbWlw aV9kc2lfaG9zdCAqaG9zdCwKIAogCS8qIFRPRE86IHVudm90ZSBmb3IgYnVzIGJhbmR3aWR0aCAq LwogCi0JZHNpX2xpbmtfY2xrX2Rpc2FibGUobXNtX2hvc3QpOworCWNmZ19obmQtPm9wcy0+bGlu a19jbGtfZGlzYWJsZShtc21faG9zdCk7CiAJcG1fcnVudGltZV9wdXRfYXV0b3N1c3BlbmQoJm1z bV9ob3N0LT5wZGV2LT5kZXYpOwogfQogCkBAIC0yMzI2LDcgKzIxMzgsNiBAQCBpbnQgbXNtX2Rz aV9ob3N0X3NldF9zcmNfcGxsKHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LAogCXN0cnVjdCBt c21fZHNpX3BsbCAqc3JjX3BsbCkKIHsKIAlzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCA9 IHRvX21zbV9kc2lfaG9zdChob3N0KTsKLQljb25zdCBzdHJ1Y3QgbXNtX2RzaV9jZmdfaGFuZGxl ciAqY2ZnX2huZCA9IG1zbV9ob3N0LT5jZmdfaG5kOwogCXN0cnVjdCBjbGsgKmJ5dGVfY2xrX3By b3ZpZGVyLCAqcGl4ZWxfY2xrX3Byb3ZpZGVyOwogCWludCByZXQ7CiAKQEAgLTIzNTIsMTQgKzIx NjMsMTYgQEAgaW50IG1zbV9kc2lfaG9zdF9zZXRfc3JjX3BsbChzdHJ1Y3QgbWlwaV9kc2lfaG9z dCAqaG9zdCwKIAkJZ290byBleGl0OwogCX0KIAotCWlmIChjZmdfaG5kLT5tYWpvciA9PSBNU01f RFNJX1ZFUl9NQUpPUl9WMikgeworCWlmIChtc21faG9zdC0+ZHNpX2Nsa19zcmMpIHsKIAkJcmV0 ID0gY2xrX3NldF9wYXJlbnQobXNtX2hvc3QtPmRzaV9jbGtfc3JjLCBwaXhlbF9jbGtfcHJvdmlk ZXIpOwogCQlpZiAocmV0KSB7CiAJCQlwcl9lcnIoIiVzOiBjYW4ndCBzZXQgcGFyZW50IHRvIGRz aV9jbGtfc3JjLiByZXQ9JWRcbiIsCiAJCQkJX19mdW5jX18sIHJldCk7CiAJCQlnb3RvIGV4aXQ7 CiAJCX0KKwl9CiAKKwlpZiAobXNtX2hvc3QtPmVzY19jbGtfc3JjKSB7CiAJCXJldCA9IGNsa19z ZXRfcGFyZW50KG1zbV9ob3N0LT5lc2NfY2xrX3NyYywgYnl0ZV9jbGtfcHJvdmlkZXIpOwogCQlp ZiAocmV0KSB7CiAJCQlwcl9lcnIoIiVzOiBjYW4ndCBzZXQgcGFyZW50IHRvIGVzY19jbGtfc3Jj LiByZXQ9JWRcbiIsCkBAIC0yMzg5LDkgKzIyMDIsMTAgQEAgdm9pZCBtc21fZHNpX2hvc3RfZ2V0 X3BoeV9jbGtfcmVxKHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LAogCXN0cnVjdCBtc21fZHNp X3BoeV9jbGtfcmVxdWVzdCAqY2xrX3JlcSkKIHsKIAlzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21f aG9zdCA9IHRvX21zbV9kc2lfaG9zdChob3N0KTsKKwljb25zdCBzdHJ1Y3QgbXNtX2RzaV9jZmdf aGFuZGxlciAqY2ZnX2huZCA9IG1zbV9ob3N0LT5jZmdfaG5kOwogCWludCByZXQ7CiAKLQlyZXQg PSBkc2lfY2FsY19jbGtfcmF0ZShtc21faG9zdCk7CisJcmV0ID0gY2ZnX2huZC0+b3BzLT5jYWxj X2Nsa19yYXRlKG1zbV9ob3N0KTsKIAlpZiAocmV0KSB7CiAJCXByX2VycigiJXM6IHVuYWJsZSB0 byBjYWxjIGNsayByYXRlLCAlZFxuIiwgX19mdW5jX18sIHJldCk7CiAJCXJldHVybjsKQEAgLTI0 NTUsNiArMjI2OSw3IEBAIGludCBtc21fZHNpX2hvc3RfcG93ZXJfb24oc3RydWN0IG1pcGlfZHNp X2hvc3QgKmhvc3QsCiAJCQlzdHJ1Y3QgbXNtX2RzaV9waHlfc2hhcmVkX3RpbWluZ3MgKnBoeV9z aGFyZWRfdGltaW5ncykKIHsKIAlzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCA9IHRvX21z bV9kc2lfaG9zdChob3N0KTsKKwljb25zdCBzdHJ1Y3QgbXNtX2RzaV9jZmdfaGFuZGxlciAqY2Zn X2huZCA9IG1zbV9ob3N0LT5jZmdfaG5kOwogCWludCByZXQgPSAwOwogCiAJbXV0ZXhfbG9jaygm bXNtX2hvc3QtPmRldl9tdXRleCk7CkBAIC0yNDczLDcgKzIyODgsNyBAQCBpbnQgbXNtX2RzaV9o b3N0X3Bvd2VyX29uKHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpob3N0LAogCX0KIAogCXBtX3J1bnRp bWVfZ2V0X3N5bmMoJm1zbV9ob3N0LT5wZGV2LT5kZXYpOwotCXJldCA9IGRzaV9saW5rX2Nsa19l bmFibGUobXNtX2hvc3QpOworCXJldCA9IGNmZ19obmQtPm9wcy0+bGlua19jbGtfZW5hYmxlKG1z bV9ob3N0KTsKIAlpZiAocmV0KSB7CiAJCXByX2VycigiJXM6IGZhaWxlZCB0byBlbmFibGUgbGlu ayBjbG9ja3MuIHJldD0lZFxuIiwKIAkJICAgICAgIF9fZnVuY19fLCByZXQpOwpAQCAtMjUwMCw3 ICsyMzE1LDcgQEAgaW50IG1zbV9kc2lfaG9zdF9wb3dlcl9vbihzdHJ1Y3QgbWlwaV9kc2lfaG9z dCAqaG9zdCwKIAlyZXR1cm4gMDsKIAogZmFpbF9kaXNhYmxlX2NsazoKLQlkc2lfbGlua19jbGtf ZGlzYWJsZShtc21faG9zdCk7CisJY2ZnX2huZC0+b3BzLT5saW5rX2Nsa19kaXNhYmxlKG1zbV9o b3N0KTsKIAlwbV9ydW50aW1lX3B1dF9hdXRvc3VzcGVuZCgmbXNtX2hvc3QtPnBkZXYtPmRldik7 CiBmYWlsX2Rpc2FibGVfcmVnOgogCWRzaV9ob3N0X3JlZ3VsYXRvcl9kaXNhYmxlKG1zbV9ob3N0 KTsKQEAgLTI1MTIsNiArMjMyNyw3IEBAIGludCBtc21fZHNpX2hvc3RfcG93ZXJfb24oc3RydWN0 IG1pcGlfZHNpX2hvc3QgKmhvc3QsCiBpbnQgbXNtX2RzaV9ob3N0X3Bvd2VyX29mZihzdHJ1Y3Qg bWlwaV9kc2lfaG9zdCAqaG9zdCkKIHsKIAlzdHJ1Y3QgbXNtX2RzaV9ob3N0ICptc21faG9zdCA9 IHRvX21zbV9kc2lfaG9zdChob3N0KTsKKwljb25zdCBzdHJ1Y3QgbXNtX2RzaV9jZmdfaGFuZGxl ciAqY2ZnX2huZCA9IG1zbV9ob3N0LT5jZmdfaG5kOwogCiAJbXV0ZXhfbG9jaygmbXNtX2hvc3Qt PmRldl9tdXRleCk7CiAJaWYgKCFtc21faG9zdC0+cG93ZXJfb24pIHsKQEAgLTI1MjYsNyArMjM0 Miw3IEBAIGludCBtc21fZHNpX2hvc3RfcG93ZXJfb2ZmKHN0cnVjdCBtaXBpX2RzaV9ob3N0ICpo b3N0KQogCiAJcGluY3RybF9wbV9zZWxlY3Rfc2xlZXBfc3RhdGUoJm1zbV9ob3N0LT5wZGV2LT5k ZXYpOwogCi0JZHNpX2xpbmtfY2xrX2Rpc2FibGUobXNtX2hvc3QpOworCWNmZ19obmQtPm9wcy0+ bGlua19jbGtfZGlzYWJsZShtc21faG9zdCk7CiAJcG1fcnVudGltZV9wdXRfYXV0b3N1c3BlbmQo Jm1zbV9ob3N0LT5wZGV2LT5kZXYpOwogCiAJZHNpX2hvc3RfcmVndWxhdG9yX2Rpc2FibGUobXNt X2hvc3QpOwotLSAKVGhlIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlzIGEgbWVt YmVyIG9mIHRoZSBDb2RlIEF1cm9yYSBGb3J1bSwKYSBMaW51eCBGb3VuZGF0aW9uIENvbGxhYm9y YXRpdmUgUHJvamVjdAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVsCg==